What shipped
Closes the last manual step in the release workflow. When a PR bumping VERSION merges to main, GitHub Actions tags vX.Y.Z and creates the GitHub Release automatically — using the matching ## X.Y.Z section of CHANGELOG.md as the release body.
- NEW
.github/workflows/release.yml — triggers on push: main with paths: [VERSION]. Idempotent (skips silently if tag exists). Concurrency-guarded.
- CHANGED
bin/bstack release tag — no longer blocks on untracked tracked files; only modified/staged tracked files trigger the dirty-tree precondition.
Self-validated: this PR's own merge triggered release.yml which auto-published v0.3.1.
PR
PR #30 merged 2026-05-18.
Release
v0.3.1 — Auto-release on merge-to-main
What shipped
Closes the last manual step in the release workflow. When a PR bumping VERSION merges to main, GitHub Actions tags
vX.Y.Zand creates the GitHub Release automatically — using the matching## X.Y.Zsection of CHANGELOG.md as the release body..github/workflows/release.yml— triggers onpush: mainwithpaths: [VERSION]. Idempotent (skips silently if tag exists). Concurrency-guarded.bin/bstackrelease tag— no longer blocks on untracked tracked files; only modified/staged tracked files trigger the dirty-tree precondition.Self-validated: this PR's own merge triggered release.yml which auto-published v0.3.1.
PR
PR #30 merged 2026-05-18.
Release
v0.3.1 — Auto-release on merge-to-main