Skip to Content
HygieneSemantic Release

Semantic Release

Automated semver tagging and changelog generation, driven by Conventional Commits. You write commits in the standard format; the release pipeline reads them, picks the next version, cuts the tag, publishes the GitHub Release, and prepends the entry to CHANGELOG.md. No manual version negotiation.

How a release happens

The release.yml workflow runs on every push to main. It reads the commit history since the last tag, computes the next version per the bump rules below, creates the git tag, publishes the GitHub Release, and writes the release notes into CHANGELOG.md.

The bump rules

Commit typeSemver bumpExample
fix:PATCH (1.2.3 → 1.2.4)fix(auth): handle empty JWT payload
feat:MINOR (1.2.3 → 1.3.0)feat(api): add bulk export endpoint
feat!: or fix!: (any type with !)MAJOR (1.2.3 → 2.0.0)feat(api)!: remove deprecated v1 routes
docs:, chore:, refactor:, test:, build:, ci:No releaseDoesn’t trigger a tag on its own. Bundled into the next feat/fix.

If a release run finds no feat or fix commits since the last tag, no release is cut. Doc-only and chore-only batches don’t churn the version.

A BREAKING CHANGE: footer in the commit body also triggers a MAJOR bump — equivalent to the ! notation. Both forms are honored.

How the changelog stays current

CHANGELOG.md lives at the repo root. Every release writes a new section at the top with the version, date, and grouped commit list (Added / Changed / Fixed / Removed). The Changelog page on this site reads from that file at build time, so the live release log is always one push behind reality and never goes stale by hand.

Downstream propagation

A framework release also signals downstream variant forks. Forks running /upgrade poll the upstream release feed; when a new tag is detected, they fetch the changed files (respecting .gembaflow-overrides) and open a sync PR. See Framework SDLC → sync paths for the propagation mechanics.

Where to go next

  • If you want to see what shipped in each release: Changelog.
  • If you’re contributing upstream: Framework SDLC covers how releases interact with downstream forks.
  • If you’re writing a commit right now: Conventional Commits is the format reference.
Last updated on