This project uses Conventional Commits + Cocogitto for versioning and changelog generation.
Install Cocogitto:
cargo install cocogittoInstall the repository hooks:
cog install-hook --allYou also need Zig 0.16.0 available on your PATH:
zig versionAll commits must follow the Conventional Commits format:
<type>: <short description>
feat: new functionality = minor version bumpfix: bug fix = patch version bumphotfix: urgent fix = patch version bump
Examples:
feat: add streaming parser
fix: handle empty input
hotfix: guard panic in release mode
Breaking changes use !:
feat!: redesign public API
Use these prefixes:
feat/<name>fix/<name>hotfix/<name>
Branch names are for humans only.
Versioning is based on commit messages, not branch names.
- Use squash merge
- Final commit message must follow Conventional Commits
- CI must pass
- Run the local checks before opening a PR:
zig fmt .
zig build test
zig build -Doptimize=ReleaseSafeReleases are created from main:
cog bump --autoThis will:
- determine the next version from commits
- update
build.zig.zon - update
CHANGELOG.md - create a release commit
- create a git tag such as
v0.1.0 - push
main - push the new tag
- Do not edit
CHANGELOG.mdmanually - Do not bump versions manually
- Do not create release tags manually unless recovering from a failed release