| Channel | Mechanism | Automatic? |
|---|---|---|
| GitHub Release | GoReleaser via Actions on tag push | Yes |
| Homebrew (homebrew-core) | Homebrew bot detects new release | Yes (24-48h delay) |
npm (@gastown/gt) |
Actions workflow, OIDC trusted publishing | Yes (when org is set up) |
Use the release formula, which handles all steps:
gt mol wisp create gastown-release --var version=X.Y.Zcd gastown/mayor/rig
./scripts/bump-version.sh X.Y.Z --commit --tag --push --install- Update CHANGELOG.md
[Unreleased]section - Update
internal/cmd/info.goversionChangesslice - Run
./scripts/bump-version.sh X.Y.Z(updates version.go, package.json, CHANGELOG header) - Commit, tag, push:
git add -A
git commit -m "chore: Bump version to X.Y.Z"
git tag -a vX.Y.Z -m "Release vX.Y.Z"
git push origin main
git push origin vX.Y.Z- Rebuild locally:
make install # builds, codesigns, installs to ~/.local/bin
gt daemon stop && gt daemon startThe release.yml workflow triggers automatically:
- goreleaser job builds binaries for all platforms and creates the GitHub Release
- publish-npm job publishes to npm (best-effort,
continue-on-error: true)
Homebrew is NOT updated by the workflow. See below.
Gastown is in homebrew-core (not a custom tap). The formula lives at:
https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/g/gastown.rb
Homebrew's BrewTestBot automatically detects new GitHub releases and opens
a PR to homebrew-core. Gastown is on the autobump list — the bot checks
every ~3 hours.
Gastown is on the autobump list, so brew bump-formula-pr will refuse to
submit a manual PR. If the bot hasn't updated after 6+ hours, check
https://github.com/Homebrew/homebrew-core/pulls?q=gastown for stuck PRs.
brew update
brew info gastown # Check version
brew upgrade gastown # Upgrade if installedThe workflow uses OIDC trusted publishing (npm provenance). No NPM_TOKEN
secret is needed — the id-token: write permission on the job generates a
short-lived OIDC token that npm trusts because the GitHub repo is linked to
the npm package.
The @gastown npm organization must exist and be linked to this repo:
- Go to https://www.npmjs.com and create (or join) the
@gastownorg - Under org settings, enable "Require 2FA" and configure trusted publishing
- Link
steveyegge/gastownas a trusted publisher for@gastown/gt
The @gastown npm org was secured by a community member (Ivan Casco Valero,
ivan@ivancasco.com) to prevent scope squatting. Ownership transfer is pending.
Until the org is transferred, npm publish will fail gracefully without blocking
the release (continue-on-error: true in the workflow).
npm view @gastown/gt version
npm install -g @gastown/gt
gt version| File | What changes |
|---|---|
CHANGELOG.md |
New version section with date |
internal/cmd/info.go |
versionChanges entry for gt info --whats-new |
internal/cmd/version.go |
Version constant |
npm-package/package.json |
version field |
flake.nix |
version + vendorHash (only if nix is in PATH) |
The workflow rejects go.mod files with replace directives (they break
go install). Remove the replace directive and commit before tagging.
The @gastown npm org doesn't exist or you don't have publish access.
See the npm section above. The release still succeeds — npm is best-effort.
Gastown is on BrewTestBot's autobump list (checked every ~3h). Check
https://github.com/Homebrew/homebrew-core/pulls?q=gastown for stuck PRs.
Manual brew bump-formula-pr is blocked for autobump formulae.
The .beads/ directory has unstaged changes. This is cosmetic — the version
number is correct. The -dirty comes from git describe seeing any unstaged
modifications.
The bump script reads the current version from version.go and replaces it. If version.go was manually edited to a different version, the script's sed pattern won't match. Fix version.go manually and re-run.