Thank you for your interest in contributing to Tincan CLI! We welcome bug reports, feature proposals, documentation improvements, and code contributions from developers of all skill levels.
Please treat everyone in the community with respect, empathy, and professional courtesy.
Browse the GitHub Issues for open tasks:
good first issue: Ideal for new contributors.help wanted: Tasks where community help is actively requested.bug: Confirmed defects needing fixes.enhancement: New features and design proposals.
Claim the issue before you start. Comment on it to say you'd like to take it, and wait until it is assigned to you. That way two people never work on the same thing, and we can point you at the right part of the code before you write any. Pull requests for issues that are unassigned, or assigned to someone else, may be closed.
Something you'd like to change that has no issue yet? Open one first, unless it's a typo or a broken link.
- Fork and clone the repository:
git clone https://github.com/YOUR-USERNAME/tincan-cli.git cd tincan-cli - Create a topic branch off
develop:git checkout develop git pull origin develop git checkout -b feature/my-feature-name
- Install build dependencies (Opus, pkg-config, ALSA/CoreAudio).
- Run tests:
cargo test cargo clippy --all-targets
main: Stable production releases.develop: Integration branch for upcoming releases (PR target).feature/*: New feature development.fix/*: Bug fixes.docs/*: Documentation and wiki updates.
- Keep PRs focused on a single logical change.
- Ensure all automated unit & integration tests pass (
cargo test). - Format code with
cargo fmt. - Write clear commit messages. Do NOT include AI co-author tags or automated bot signatures.
- Rust Edition: Rust 2024 edition (
rust-version = 1.91). - Error Handling: Use
anyhowfor top-level error propagation and specific error enums for library modules. - Async Runtime: Use
tokiomulti-threaded runtime. - Audio Code Style: Keep lock-free audio ring buffers isolated from async/blocking calls to guarantee real-time audio safety.