Versioning is automated by release-please. Releases are driven by Conventional Commits — see CONTRIBUTING.md for the commit format.
- Contributors merge PRs to
mainwith Conventional Commit messages (feat:,fix:,docs:,chore:, … with optional!orBREAKING CHANGE:footer). - On every push to
main, therelease-pleaseworkflow (.github/workflows/release-please.yml) parses commits since the last tag and either opens or updates a single Release PR titledchore(main): release X.Y.Z. - The Release PR contains:
- the next semver bump in
.release-please-manifest.json, and - a generated
CHANGELOG.mdentry grouped by section (Added / Fixed / Changed).
- the next semver bump in
- A maintainer reviews and merges the Release PR.
- release-please creates the
vX.Y.Zgit tag and a GitHub Release with the changelog entry as the release body.
The Release PR is the human gate: no tag is created until it is merged.
| Commit type | Bump |
|---|---|
fix: |
patch |
feat: |
minor |
feat!: / fix!: / BREAKING CHANGE: footer |
major |
docs:, chore:, refactor:, test:, build:, ci:, style: |
none (hidden from changelog) |
Section mapping is defined in release-please-config.json.
The manifest was originally seeded at 1.1.0, with a matching v1.1.0 git tag on
main to give release-please a clean starting point for changelog generation.
That baseline is long established — the manifest now tracks the current release and
both v1.0.0 and v1.1.0 tags exist — so no action is needed here for normal
releases.
- Skip a release for an isolated commit — use a type that is hidden
(
chore:,docs:,ci:, etc.). - Force a specific version — add a
Release-As: X.Y.Zfooter to any commit onmain. release-please will use that version on its next run. - Pre-releases — prefix with
feat:/fix:and set the manifest version to a pre-release identifier (e.g.1.2.0-beta.0); release-please will continue the pre-release track.
PRs are checked by .github/workflows/commitlint.yml
using @commitlint/config-conventional. Each commit on the PR branch must
conform to the Conventional Commits format or the check will fail. When a PR is
merged with Squash and merge, ensure the squashed commit subject is also a
valid Conventional Commit — that subject is what release-please reads.
The bundled themes/flavian-shop/ scaffold maintains its own Version:
header independent of the repository version: it is intended to be copied,
renamed, and customised by consumers, and its version should track the
downstream theme rather than this template. release-please does not touch
theme style.css headers.
release-please-config.json— section mapping, release type, package config, and theextra-filesentries that mirror the version into bothpackage.jsonandpackages/gui/package.json..release-please-manifest.json— current version state.package.json(andpackages/gui/package.json) —versionfield is kept in sync with the manifest by release-please; never hand-edited..github/workflows/release-please.yml— opens / updates the Release PR and tags on merge..github/workflows/commitlint.yml— lints PR commit messages..commitlintrc.json— commitlint ruleset.CHANGELOG.md— generated; existing[1.0.0]entry is preserved.