Skip to content

Releasing

Keys edited this page Jul 31, 2026 · 2 revisions

Releasing

Releases are automated by release-plz. Routine releases should not be tagged or published by hand.

Before merge

Use Conventional Commits and include ! or a BREAKING CHANGE: footer for an incompatible public JavaScript API change. Run:

npm ci
npm run validate
npm run build
npm run benchmark
git diff --exit-code -- javascripts/shell.min.js wasm/shell.wasm

Commit generated browser artifacts when their sources change. Manual updates must also commit the regenerated pack and preserve its pinned provenance and license data.

Automated flow

  1. Main-branch commits are validated, built, benchmarked, and checked for stale generated artifacts.
  2. release-plz derives SemVer from Conventional Commits and maintains the release PR, Cargo version, and changelog.
  3. Merging the release PR creates the v<version> tag and GitHub release.
  4. The workflow attaches javascripts/shell.min.js and wasm/shell.wasm to the release.

release-plz.toml is the release policy source of truth. The project is git-only: npm and Cargo publishing are disabled. Version-pinned GitHub tags, release assets, and the GitHub-backed CDN URL in the release body are the distribution contract. Branch names are single words; automated release branches use the releaseplz prefix.

Major-line names

SemVer tags stay machine-readable. Human release titles add one verb-animal codename for the whole major line: v0 is Hatch Koala and v1 is Boot Koala. Change the release and release-PR title templates only when a new major line begins; patch and minor releases keep the same codename.

Clone this wiki locally