# Regular release (next patch version)
just release
# Patch release
just release patch
# Minor release
just release 0.4.0
# Any explicit version
just release 1.0.0This creates a version-bump/<version> PR that bumps all version manifests, regenerates lockfiles, and appends a changelog entry. Merge the PR to trigger the build automatically.
Re-running just release with the same version is safe — it detects the existing branch and PR, resets to current main, regenerates the changelog with any new commits, and updates the PR in place.
-
just releaseruns locally onmain— computes the next version, creates (or reuses) aversion-bump/<version>branch, bumps versions in all manifests, regenerates lockfiles, generates a changelog entry, commits, pushes, and opens (or updates) a PR. -
Merge the PR — the
auto-tag-on-release-pr-mergeworkflow detects theversion-bump/*branch merge and pushes av<version>tag. -
Tag triggers
release.yml— the existing release workflow builds, signs, notarizes, and publishes the desktop app for macOS and Linux.
| Command | Version | Example |
|---|---|---|
just release |
Next patch | 0.3.0 → 0.3.1 |
just release patch |
Next patch | 0.3.0 → 0.3.1 |
just release 0.4.0 |
Explicit minor | 0.3.1 → 0.4.0 |
just release 1.0.0 |
Explicit | 1.0.0 |
just bump-version <version> updates these files:
| File | Field |
|---|---|
desktop/package.json |
"version" |
desktop/src-tauri/tauri.conf.json |
"version" |
desktop/src-tauri/Cargo.toml |
version (under [package]) |
mobile/pubspec.yaml |
version: (preserves build number) |
It also regenerates pnpm-lock.yaml, desktop/src-tauri/Cargo.lock, and mobile/pubspec.lock.
If the automated flow isn't suitable (e.g., building from a non-main ref):
- Go to Actions > Release in the GitHub UI
- Click Run workflow
- Provide the semver version (no
vprefix) and the ref to build from
After the OSS release ships, trigger an internal build via the sprout-releases Buildkite pipeline. See the sprout-releases README for the full step-by-step instructions and input field reference.
Each release produces two GitHub releases:
-
v<version>— the user-facing release with the.dmginstaller (macOS). -
buzz-desktop-latest— a rolling pre-release for the Tauri auto-updater containinglatest.json, the signed.tar.gzarchive, and its.sigsignature.
The release workflow builds two separate macOS DMGs — Apple
Silicon (darwin-aarch64, the release job) and Intel
(darwin-x86_64, the release-macos-x64 job) — plus Linux .deb and
.AppImage. Both macOS DMGs are codesigned, notarized, and attached to
the same v<version> release. Intel users download the _x64.dmg.
-
Write access to the
block/sproutGitHub repository -
ghCLI authenticated (gh auth status) -
The following GitHub Actions secrets must be configured:
Secret Purpose BUZZ_UPDATER_PUBLIC_KEYTauri updater public key (minisign) TAURI_SIGNING_PRIVATE_KEYTauri updater private key TAURI_SIGNING_PRIVATE_KEY_PASSWORDPassword for the private key
Switch to main and pull latest before running just release.
Commit or stash your changes before running just release.
Re-run just release from an up-to-date main. It resets the branch to current main, regenerates the changelog and PR body to include the new commits, and force-pushes the updated branch.
The version string must be valid semver: MAJOR.MINOR.PATCH with an optional pre-release suffix. Do not include a v prefix.
Verify that the buzz-desktop-latest release exists and contains a
valid latest.json. The auto-updater manifest currently lists
darwin-aarch64 only, so Intel and Linux users do not yet receive
auto-updates — they download new versions manually from the release
page. (Adding their entries to latest.json is a follow-up.)