with one click
release
// Cut a release of genlayer-cli. Bumps version, updates CHANGELOG, tags, pushes — CI then publishes to npm and creates the GitHub Release. Use when a human asks "release v0.39.x" or "ship a new version".
// Cut a release of genlayer-cli. Bumps version, updates CHANGELOG, tags, pushes — CI then publishes to npm and creates the GitHub Release. Use when a human asks "release v0.39.x" or "ship a new version".
| name | release |
| description | Cut a release of genlayer-cli. Bumps version, updates CHANGELOG, tags, pushes — CI then publishes to npm and creates the GitHub Release. Use when a human asks "release v0.39.x" or "ship a new version". |
This repo follows a branch-per-major release model. There is no auto-bump on push. A release happens when a human (or you on their behalf) runs scripts/release.sh on the target stable branch.
User asks anything like:
If they ask "publish to npm directly" — refuse and point at this flow. The repo doesn't have an unprotected npm push path; the tag is the only release entry point.
v0.39 (current stable). When v0.40 opens (a major bump in semver-zero terms), the previous v0.39 stays read-only for back-ports.v0.39.2, v0.39.3, ...0.39 → 0.40 IS a major bump. scripts/release.sh refuses both minor and major keywords without --allow-major.v0.40) — not tagging on the current one.CHANGELOG.md is updated in the release commit (release-it via @release-it/conventional-changelog).publish.yml fires on the tag push and does the npm publish + GitHub Release.Confirm intent with the user.
Switch to the target branch + sync.
git checkout v0.39
git pull --ff-only origin v0.39
Verify the head is shippable.
gh run list --branch v0.39 --commit "$(git rev-parse HEAD)" --limit 1
git log "$(git describe --tags --abbrev=0)..HEAD" --oneline
Run the release script.
scripts/release.sh <X.Y.Z> # or patch
Bumps package.json, prepends CHANGELOG.md, commits, tags vX.Y.Z, pushes branch + tag. Does NOT publish to npm — CI handles that.
Watch the publish workflow.
gh run watch
If publish.yml fails (typical: tag/package.json mismatch, NPM_TOKEN, provenance), report verbatim and stop.
Confirm on npm.
npm view genlayer dist-tags
(Yes — the npm package name is genlayer, not @genlayer/cli.)
--allow-major. Those are major bumps in semver-zero and belong on a new branch.main — main is retired.staging branch — the beta-channel flow was retired with the auto-bump. If you need a pre-release, tag v0.39.2-beta.0 directly via the script with explicit version.package.json to bump the version — the script keeps everything in lockstep.publish.yml failed — fix the underlying issue, delete the bad tag, re-cut via the script.npm deprecate "genlayer@<X.Y.Z>" "broken release; install <X.Y.Z+1> or later"
The previous flow auto-bumped on every push to main (and staging for betas). Trade-off:
BREAKING CHANGE footers in PR bodies.