sshdb releases are tag-driven by .github/workflows/release.yml. The release workflow builds the platform archives, publishes the GitHub release using the matching CHANGELOG.md section as the release body, updates the Homebrew tap when HOMEBREW_TAP_TOKEN is available, and then commits Cargo.toml back to main first as the release version and then as <version>-dev.
Use this sequence for every release:
- Start from
mainwith a clean worktree. - Land the actual product changes first.
- Update
Cargo.tomlto the release version and updateCHANGELOG.mdfor the same version. - Run
cargo fmt --checkandcargo test. - Commit the release prep itself as
chore: update version to <version> for release. - Create the tag on that exact commit:
git tag -a v<version> -m "v<version>". - Verify the tag points at
HEADbefore pushing:test "$(git rev-parse HEAD)" = "$(git rev-list -n 1 v<version>)" - Push
main, then push the tag:git push origin mainandgit push origin v<version>. - Watch the
ReleaseGitHub Actions workflow until it finishes successfully.
Do not repeat the 0.17.0 mistake: never tag an older commit and assume the workflow will pick up newer release-prep changes. The pushed tag is the release.