This document defines who may cut releases and how. It is policy, not a how-to for day-to-day development.
Only repository administrators may create version tags and publish releases.
- Only an admin may create a release tag (
v*-tauri) or publish a GitHub Release. - Contributors (including AI agents) must not create release tags, publish releases, or trigger release automation. If a release is needed, request an admin to cut it — open an issue or ping a maintainer with the target version and the channel (Beta or Stable).
- Release automation (CI workflows that build, sign, and publish artifacts, and the auto-updater feed) must be admin-triggered only. Tag-triggered pipelines are considered admin-triggered because only admins may push the triggering tag.
Two channels; the branch name equals the channel name:
beta— default development branch and the Beta channel.main— the Stable channel (正式版). Always releasable; only maintainers mergebeta → main.
Release tags (created by an admin only):
- Stable release: push tag
v<version>-tauri. - Beta release: push tag
v<version>-beta-tauri(published as a GitHub pre-release; never auto-updates Stable users).
A release fails CI unless five files carry the same version. Bump them together
with 1-app/scripts/bump-version.sh <X.Y.Z>:
openless-all/app/package.jsonopenless-all/app/package-lock.json(root and nestedpackages."")openless-all/app/src-tauri/tauri.conf.jsonopenless-all/app/src-tauri/Cargo.tomlopenless-all/app/src-tauri/Cargo.lock(thename = "openless"block)
The script takes a plain X.Y.Z; for a -beta suffix, edit the files by hand.
- Branch is the intended channel (
betafor Beta,mainfor Stable). - All five version files match (version-sync gate green).
- CI is green on the commit being tagged.
- Then, and only then, push the release tag.
- Land work on
betavia PRs (open PRs againstbeta, nevermain). - For a Stable release, a maintainer merges
beta → main. - An admin bumps the version (five-file sync), verifies CI is green, and pushes the release tag — which is the only thing that triggers the publish/auto-update pipeline.