We welcome contributions! Please follow these guidelines when submitting pull requests.
After cloning, enable the git hooks:
mise run enable-git-hooksThis wires ./validate.sh to pre-commit, plus DCO and Conventional Commits checks to commit-msg, so the requirements below run automatically on each commit.
./validate.shRuns the project's validation pipeline.
All commits must be signed with DCO. Use git commit -s to sign your commits.
- Use your real name (no pseudonyms)
- All commits in a PR must be signed
- If the DCO check fails, see the check details page for instructions on fixing unsigned commits
For more about DCO: https://developercertificate.org/
Commit subjects (first line) must follow <type>(<scope>)?!?: <description>. Allowed types: feat, fix, chore, docs. Append ! for breaking changes.
feat: add dark-mode toggle
fix(auth): handle expired token
chore: bump dependencies
feat!: drop legacy API
Other types (refactor, ci, test, etc.) are intentionally rejected — use chore: instead.
For more about Conventional Commits: https://www.conventionalcommits.org/