release
Bump version, commit, tag, and create a draft GitHub Release. Use when the user asks to "release", "bump version", "tag a release", or "publish".
Instructions
Determine the new version. Read the current version from
python/pyproject.tomland increment the patch number automatically. If the user specifies a version explicitly, use that instead.Run the bump script:
python3 tools/bump-version <new_version> --checkThis updates all Cargo.toml files, pyproject.toml, CHANGELOG, README, docs, and lib.rs references.
--checkverifiescargo checkpasses.The bump script adds a
## <new_version>section toCHANGELOG.mdwith a*No changes yet.*placeholder. Do NOT edit the CHANGELOG before running bump-version; it will create a duplicate section.Write the CHANGELOG. After bump-version runs, replace the
*No changes yet.*placeholder inCHANGELOG.mdwith real entries. Usegit logto find commits since the previous release tag.Focus on user-visible changes only:
- New features, new CLI flags, new API surface
- Bug fixes that affected users
- Breaking changes or renamed options
- Documentation improvements (briefly)
Do NOT include:
- Internal refactors, code cleanup, clippy fixes
- CI/release pipeline plumbing
- Changes to dev tooling or build scripts
Keep entries concise, with one line per change and no sub-bullets.
Commit on a release branch and open a PR.
mainis protected and rejects direct pushes, so the bump must land via PR.git checkout -b release-<new_version> git add -A git commit -m "$(cat <<'EOF' synq: bump version to <new_version> EOF )" git push -u origin HEAD gh pr create --title "synq: bump version to <new_version>" --body "$(cat <<'EOF' ## Motivation Cut the <new_version> release. ## Changes - Bumps version to <new_version> across all Cargo.toml / pyproject.toml / integration manifests / README / docs. - Adds <new_version> CHANGELOG entry. Release notes: <paste the CHANGELOG entries for this version here> EOF )"Stop and wait for the user to merge the PR before continuing. Do not attempt to merge it yourself; the user decides when the release goes out.
After the PR merges, fast-forward local main and tag the merge commit:
git checkout main git pull origin main git tag v<new_version> git push origin v<new_version>Create a draft GitHub Release. Read CHANGELOG.md to get the release notes for this version. Ask the user if they want to edit the notes or if the CHANGELOG content is sufficient.
gh release create v<new_version> --draft --title "v<new_version>" \ --notes "$(release notes here)"The tag must already exist on the remote before
gh release createwill work, which is why we push it first.Pushing the tag triggers build workflows that upload artifacts to the draft release:
release.yml: cargo-dist builds CLI binaries, Homebrew tap, installerspublish-crates.yml: publishes to crates.iovscode-extension.yml: builds VS Code .vsix artifactsrelease-amalgamation.yml: C source amalgamation archiverelease-clib.yml: prebuilt C shared library archive
Report the draft release URL to the user and remind them to publish the release manually once the builds complete and look good.