The maintainer/owner runbook for cutting a gistui release. Contributors don't need any of this — see CONTRIBUTING.md.
A release is a vX.Y.Z git tag that matches Cargo.toml's version. Pushing the tag
triggers the full pipeline:
.github/workflows/release.yml— builds and attaches the platform binaries..github/workflows/publish.yml— publishes the crate to crates.io.
The crate is published and the CARGO_REGISTRY_TOKEN secret is configured, so the publish
step runs automatically on tag. release.yml also pushes the downstream package definitions
directly — no manual bump, no waiting on a schedule:
- Homebrew tap —
Formula/gistui.rbregenerated from the new release's per-platform checksums and pushed straight tomain. - Scoop bucket —
bucket/gistui.jsonpatched with the new version/URL/hash and pushed straight tomain.
Both pushes require the HOMEBREW_BUMP_TOKEN repository secret (a PAT scoped to those two
repos); if it's unset, the corresponding step skips itself and logs a message instead of
failing the release.
Packaging stays lean via Cargo.toml exclude (the demo harness, site assets and CI config
are kept out of the published tarball); cargo publish --dry-run validates the tarball.
- Bump
versioninCargo.toml(and refreshCargo.lock); confirmcargo publish --dry-runis clean. - In
CHANGELOG.md, rename the## [Unreleased]section to a dated## [X.Y.Z] — YYYY-MM-DDheading and add its release link reference at the bottom. - Merge to
main(CI gate green). - Tag and push:
git tag vX.Y.Z && git push origin vX.Y.Z. - Verify: the GitHub release has the binaries, crates.io
shows the new version (and docs.rs built), and
Formula/gistui.rb/bucket/gistui.jsonshow a newchore: bump gistui to vX.Y.Zcommit on the tap's / bucket'smain(pushed byrelease.ymlwithin the same run — if either is missing, check that run's "Update Homebrew formula" / "Update Scoop manifest" step and confirmHOMEBREW_BUMP_TOKENis still valid).