Spaces:
Running
Running
| # Contributing to lerobot.js | |
| Thanks for your interest in contributing! This guide will help you get started. | |
| ## π Quick Start | |
| ```bash | |
| # Clone and setup | |
| git clone https://github.com/timpietrusky/lerobot.js.git | |
| cd lerobot.js | |
| pnpm install | |
| # Run demo | |
| pnpm dev | |
| # Build packages | |
| pnpm --filter "@lerobot/web" run build | |
| ``` | |
| ## π¦ Package Structure | |
| - **`packages/web/`** - Browser package (`@lerobot/web` on npm) | |
| - **`examples/robot-control-web/`** - Demo application (deployed to HF Spaces) | |
| - **`src/cli/`** - Node.js CLI tool | |
| - **`src/lerobot/node/`** - Node.js library | |
| ## π Making Changes | |
| ### 1. Development Workflow | |
| ```bash | |
| # Make your changes to packages/web/ or other code | |
| # Test your changes | |
| pnpm dev # for demo | |
| pnpm --filter "@lerobot/web" run build # for package | |
| # Run any relevant tests | |
| ``` | |
| ### 2. Creating a Changeset | |
| **For any changes to `packages/web/`:** | |
| ```bash | |
| # Describe your changes | |
| pnpm changeset | |
| ``` | |
| - **Select package**: `@lerobot/web` | |
| - **Version type**: | |
| - `patch` (0.1.1 β 0.1.2) - Bug fixes | |
| - `minor` (0.1.1 β 0.2.0) - New features | |
| - `major` (0.1.1 β 1.0.0) - Breaking changes | |
| - **Summary**: Clear description for changelog | |
| ### 3. Submit Pull Request | |
| ```bash | |
| git add . | |
| git commit -m "feat: your change description" | |
| git push origin your-branch | |
| ``` | |
| Create a PR with: | |
| - Clear description of changes | |
| - Reference any related issues | |
| - Include changeset if modifying `@lerobot/web` | |
| ## π Release Process | |
| ### Automated Releases (Recommended) | |
| 1. **Changeset added** β PR merged to `main` | |
| 2. **GitHub Actions** creates Release PR automatically | |
| 3. **Maintainer merges** Release PR | |
| 4. **Package published** to npm with GitHub release | |
| ### Manual Testing | |
| ```bash | |
| # Preview version changes (safe) | |
| pnpm changeset:version | |
| # Publish manually (only for emergencies) | |
| pnpm changeset:publish | |
| ``` | |
| ## π Code Standards | |
| ### TypeScript | |
| - Use strict TypeScript settings | |
| - Export types explicitly | |
| - Document public APIs with JSDoc | |
| ### Code Style | |
| - Follow existing patterns | |
| - Use meaningful variable names | |
| - Add comments for complex logic | |
| - **NO explanation comments** in code (see `docs/conventions.md`) | |
| ### Commit Messages | |
| - `feat:` - New features | |
| - `fix:` - Bug fixes | |
| - `docs:` - Documentation | |
| - `chore:` - Maintenance | |
| - `refactor:` - Code restructuring | |
| ## π§ͺ Testing | |
| ### Manual Testing | |
| ```bash | |
| # Test demo locally | |
| pnpm dev | |
| # Test CLI | |
| pnpm cli:find-port | |
| pnpm cli:calibrate | |
| # Test package build | |
| pnpm --filter "@lerobot/web" run build | |
| ``` | |
| ### Hardware Testing | |
| - Use SO-100 leader/follower arms when available | |
| - Test calibration, teleoperation, port discovery | |
| - Verify WebSerial API compatibility | |
| ## π Documentation | |
| ### Update Documentation For: | |
| - New functions in `@lerobot/web` | |
| - CLI command changes | |
| - Hardware support additions | |
| - Breaking changes | |
| ### Files to Update: | |
| - `packages/web/README.md` - Package documentation | |
| - `README.md` - Main project overview | |
| - JSDoc comments for new APIs | |
| ## π Bug Reports | |
| Include: | |
| - Steps to reproduce | |
| - Expected vs actual behavior | |
| - Browser/Node.js version | |
| - Hardware setup (if relevant) | |
| - Error messages/console output | |
| ## π‘ Feature Requests | |
| - Explain the use case | |
| - Provide examples if possible | |
| - Consider backward compatibility | |
| - Discuss implementation approach | |
| ## π― Areas for Contribution | |
| ### High Priority | |
| - New robot hardware support | |
| - Browser compatibility improvements | |
| - Performance optimizations | |
| - Documentation improvements | |
| ### Medium Priority | |
| - Additional calibration methods | |
| - UI/UX enhancements | |
| - CLI tool features | |
| - Testing infrastructure | |
| ### Advanced | |
| - WebRTC integration | |
| - Computer vision features | |
| - Machine learning integration | |
| - Protocol implementations | |
| ## π§ Development Tips | |
| ### Common Commands | |
| ```bash | |
| # Install dependencies | |
| pnpm install | |
| # Start demo development | |
| pnpm dev | |
| # Build everything | |
| pnpm build | |
| # Create changeset | |
| pnpm changeset | |
| # Work with specific package | |
| pnpm --filter "@lerobot/web" run build | |
| ``` | |
| ### Debugging | |
| - Use browser DevTools for WebSerial issues | |
| - Check console for hardware communication errors | |
| - Use `console.log` for motor position debugging | |
| - Test with different hardware configurations | |
| ## π Getting Help | |
| - **Issues**: Use GitHub issues for bugs/features | |
| - **Discussions**: Use GitHub discussions for questions | |
| - **Hardware**: Check hardware documentation in `docs/` | |
| ## π Recognition | |
| All contributors will be recognized in releases and project documentation. Thank you for helping make robotics more accessible! π€β¨ | |