Keep changes as small, coherent vertical slices. Before editing a subsystem, read its ADRs and the current upstream Smithay source. New behaviour must include focused tests and documentation for public interfaces.
feat/<short-description> # new capabilities
fix/<short-description> # bug fixes
docs/<short-description> # documentation only
refactor/<short-description> # no behaviour change
Follow Conventional Commits (feat:, fix:, docs:, refactor:, test:, chore:).
Keep the subject line ≤ 72 characters. Reference an ADR if a decision is involved.
- All contributions must pass:
cargo fmt --all --check,cargo check --workspace --all-targets,cargo clippy --workspace --all-targets --all-features -- -D warnings,cargo test --workspace. - Do not claim a runtime path works without running it.
- Every
unsafeblock requires a// SAFETY:comment and an explicit review of whether a safe alternative exists. - New Wayland protocols require an entry in
docs/architecture/protocol-matrix.md. - New dependencies require an entry in
docs/architecture/dependency-matrix.md.
- Unit tests live in
#[cfg(test)]modules within source files. - Integration tests live in
tests/. - The nested smoke test requires a host display; CI runs it under
xvfb-run.