Skip to content

Releasing

moderniselife edited this page Sep 22, 2026 · 1 revision

Releasing

Push a tag like tui-v1.2.3 and .github/workflows/release.yml ships everything: GoReleaser binaries + checksums + the Homebrew TUI cask, the signed Prism.app.zip, five platform wheels on PyPI, the npm package, a Winget submission PR, and the tap's Prism.app cask update.

One-time setup

1. Homebrew tap repo

Create the empty repo moderniselife/homebrew-prism on GitHub (public). Both casks (prism-tui, prism) live there, pushed by automation.

2. Repository secrets

All four live in the same place:

prism repo → Settings → Secrets and variables → Actions → New repository secret

Secret Where the value comes from
TAP_GITHUB_TOKEN github.com/settings/tokens → Generate new token (classic) → repo scope. Writes the tap repo.
NPM_TOKEN npmjs.com → avatar → Access Tokens → Generate New Token (Publish).
PYPI_API_TOKEN pypi.org → Account settings → API tokens → Add API token (scope it to the prism-tui project after first upload).
WINGET_TOKEN github.com/settings/tokens → Generate new token (classic) → public_repo scope.

You can verify names (never values) anytime with:

gh secret list --repo moderniselife/prism

3. Winget first submission (manual, once)

The automation refuses brand-new packages, so v1 goes in by hand. Prerequisites: a published tui-v* release (for the public zip URL), the winget-pkgs fork, and komac (brew install komac):

komac new --id ModerniseLife.PrismTUI \
  --version 1.2.3 \
  --urls https://github.com/moderniselife/prism/releases/download/tui-v1.2.3/prism-tui-windows-amd64.zip
# review the generated manifests, then:
komac submit --token "$WINGET_TOKEN"

From the second release on, the workflow opens the winget-pkgs PR itself.

Cutting a release

git tag tui-v1.2.3 && git push origin tui-v1.2.3

Watch the Release workflow; on green, all channels carry the new version.

Clone this wiki locally