mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-03 13:22:14 +00:00
4.4 KiB
4.4 KiB
title, summary, read_when
| title | summary | read_when | ||
|---|---|---|---|---|
| Release Policy | Public release channels, version naming, and cadence |
|
Release Policy
OpenClaw has three public release lanes:
- stable: tagged releases that publish to npm
betaby default, or to npmlatestwhen explicitly requested - beta: prerelease tags that publish to npm
beta - dev: the moving head of
main
Version naming
- Stable release version:
YYYY.M.D- Git tag:
vYYYY.M.D
- Git tag:
- Stable correction release version:
YYYY.M.D-N- Git tag:
vYYYY.M.D-N
- Git tag:
- Beta prerelease version:
YYYY.M.D-beta.N- Git tag:
vYYYY.M.D-beta.N
- Git tag:
- Do not zero-pad month or day
latestmeans the current promoted stable npm releasebetameans the current beta install target- Stable and stable correction releases publish to npm
betaby default; release operators can targetlatestexplicitly, or promote a vetted beta build later - Every OpenClaw release ships the npm package and macOS app together
Release cadence
- Releases move beta-first
- Stable follows only after the latest beta is validated
- Detailed release procedure, approvals, credentials, and recovery notes are maintainer-only
Release preflight
- Run
pnpm build && pnpm ui:buildbeforepnpm release:checkso the expecteddist/*release artifacts and Control UI bundle exist for the pack validation step - Run
pnpm release:checkbefore every tagged release - Run
RELEASE_TAG=vYYYY.M.D node --import tsx scripts/openclaw-npm-release-check.ts(or the matching beta/correction tag) before approval - After npm publish, run
node --import tsx scripts/openclaw-npm-postpublish-verify.ts YYYY.M.D(or the matching beta/correction version) to verify the published registry install path in a fresh temp prefix - Maintainer release automation now uses preflight-then-promote:
- real npm publish must pass a successful npm
preflight_run_id - stable npm releases default to
beta - stable npm publish can target
latestexplicitly via workflow input - stable npm promotion from
betatolatestis still available as a separate manual workflow step - public
macOS Releaseis validation-only - real private mac publish must pass successful private mac
preflight_run_idandvalidate_run_id - the real publish paths promote prepared artifacts instead of rebuilding them again
- real npm publish must pass a successful npm
- For stable correction releases like
YYYY.M.D-N, the post-publish verifier also checks the same temp-prefix upgrade path fromYYYY.M.DtoYYYY.M.D-Nso release corrections cannot silently leave older global installs on the base stable payload - npm release preflight fails closed unless the tarball includes both
dist/control-ui/index.htmland a non-emptydist/control-ui/assets/payload so we do not ship an empty browser dashboard again - If the release work touched CI planning, extension timing manifests, or fast
test matrices, regenerate and review the planner-owned
checks-fast-extensionsshard plan vianode scripts/ci-write-manifest-outputs.mjs --workflow cibefore approval so release notes do not describe a stale CI layout - Stable macOS release readiness also includes the updater surfaces:
- the GitHub release must end up with the packaged
.zip,.dmg, and.dSYM.zip appcast.xmlonmainmust point at the new stable zip after publish- the packaged app must keep a non-debug bundle id, a non-empty Sparkle feed
URL, and a
CFBundleVersionat or above the canonical Sparkle build floor for that release version
- the GitHub release must end up with the packaged
Public references
.github/workflows/openclaw-npm-release.yml.github/workflows/openclaw-npm-promote-beta.ymlscripts/openclaw-npm-release-check.tsscripts/package-mac-dist.shscripts/make_appcast.sh
Maintainers use the private release docs in
openclaw/maintainers/release/README.md
for the actual runbook.