Contributing
Use mise; CI uses the same tasks.
mise install
mise run check # fmt --check + clippy + tests + swiftlint
mise run test # Rust clippy + unit tests
mise run test-e2e # live Iroh network + PTY
mise run preflight # CI-ish, includes iOS build
mise run build
iOS:
mise run setup-ios
mise run build-ios
swift test --package-path ios/ZukoWire
Before PR:
mise run checkis green.- If iOS Swift/build config changed, run
mise run preflightwhere possible. - Keep commits terse and imperative.
- Update
docs/protocol.mdfor wire changes. - Update
docs/host.mdfor CLI/state changes. - Update
docs/roadmap.mdwhen a support tier, priority, or product boundary changes. - Run
zuko doctorafter service/ticket changes; it must remain read-only and avoid printing keys, tickets, or client tokens.
Scope new work
Read the roadmap and design principles first. Core reliability, recovery, diagnostics, and trust management take priority over new clients and streaming modes.
For a new platform, protocol, or background service, describe:
- the Core user problem it solves;
- its intended product tier;
- its trust and resource boundaries;
- how failure and recovery work;
- the tests and ongoing maintenance it requires.
Client authors: start with protocol.md, then
clients.md.
Security reports: use GitHub Security Advisories.