Thanks for contributing to Chatify.
-
Install stable Rust toolchain.
-
Clone the repository.
-
Build binaries:
cargo check --workspace --bins --locked
Run the local CI-equivalent gate before opening a pull request or calling a task complete:
.\scripts\ci-local.ps1This script mirrors the GitHub Actions quality gates and does not rewrite tracked files. It runs the release target inventory check, workspace compile, format check, Clippy, workspace tests, protocol contract gates, and feature-gated bridge builds.
For a release-readiness summary with branch, commit, dirty-worktree status, and gate durations, run:
.\scripts\release-readiness.ps1release-readiness.ps1 fails when tracked worktree changes are present. Use
-AllowDirty only when intentionally validating uncommitted local work. Add
-Json when automation needs a structured report.
After pushing a branch or opening a PR, verify the GitHub Actions result before calling the work complete. At minimum, inspect the CI workflow; also inspect CodeQL and Windows package smoke when those workflows run.
Equivalent manual commands:
- cargo fmt --all --check
- cargo clippy --workspace --all-targets --all-features --locked -- -D warnings
- cargo test --locked --test message_contracts auth_contract_returns_expected_fields
- cargo test --locked --test message_contracts compatibility_contract_client_bootstrap_flow_stays_stable
- cargo test --locked --test message_contracts protocol_contract_advertises_backward_compatible_version
- cargo test --workspace --all-targets --locked
Optional feature check for Discord bridge:
- cargo check --features discord-bridge --bin discord_bot --locked
- cargo check -p chatify-client --features bridge-client --locked
- Create a focused branch from main.
- Keep each commit scoped to one concern.
- Use clear commit messages in imperative style.
- Avoid mixing refactors and behavior changes in one commit.
- Explain what changed and why.
- Include testing evidence.
- Call out protocol or schema changes explicitly.
- Update README and docs when behavior changes.
- Link or summarize the relevant GitHub Actions result after pushing.
- Prefer small functions with clear names.
- Avoid duplicated logic; extract helpers.
- Keep runtime-critical paths explicit and easy to trace.
- Preserve backward compatibility unless a breaking change is intentional.