Thanks for your interest in contributing! Polyphony is in early alpha and we welcome bug reports, feature ideas, and pull requests.
- Fork and clone the repo
- Install Rust (stable toolchain)
- Install just (task runner)
- Run
cargo buildto verify everything compiles
We use conventional commits:
feat|fix|docs|style|refactor|test|chore(scope): description
just format # rustfmt
just lint # clippy
cargo test # run the test suiteFix any issues before pushing — this avoids wasted CI round-trips.
- No
unwrap()orexpect()in non-test code. Use typed errors (thiserror/anyhow). - No shelling out to external CLIs (
gh,gitviaCommand::new) for operations that Rust crates can handle. Useoctocrab,reqwest, etc. - Tests are required for every feature, bug fix, and behavior change.
- Workspace dependencies — all versions live in the root
Cargo.tomlunder[workspace.dependencies]. Subcrates use{ workspace = true }. - Keep files under ~800 lines. Split by domain when they grow.
Don't add manual CHANGELOG.md entries. The changelog is generated from commit history via git-cliff.
Open a GitHub issue. Include steps to reproduce, expected vs actual behavior, and your OS/Rust version.
By contributing, you agree that your contributions will be licensed under the MIT License.