Fix v4.0.0 release fallout: install.sh assets, AUR key fail-fast, docs - #194
Conversation
The v4.0.0 stable release exposed three issues: - scripts/install.sh still fetched the v3 asset scheme (bare fizzy-<os>-<arch> binaries + per-platform SHA256SUMS files), which no longer exists. Rewrite for the GoReleaser layout: download fizzy_<ver>_<os>_<arch>.tar.gz (.zip on Windows), verify against the single checksums.txt, extract the binary. Verified live against v4.0.0 on darwin-arm64, linux-amd64 (container + native Arch). - The aur-publish job failed with SSH "invalid format" because the stored AUR_KEY secret content isn't a parseable key. Harden publish-aur.sh: strip CRs when writing the key and fail fast with ssh-keygen -y and a clear remediation message instead of dying mid-clone. The generated PKGBUILD/.SRCINFO were build-tested with makepkg in an Arch container (package installs, binary and completions land correctly). - Docs: README now points Homebrew installs at the published basecamp/tap/fizzy cask (the robzolkos tap instructions and stale "not yet released" warning are gone). RELEASING.md corrects the secret inventory — all release credentials live in the release environment, not repository level — documents the multi-line secret pitfall that broke AUR_KEY, and adds the stable-release-before- tap-migration ordering runbook.
Sensitive Change Detection (shadow mode)This PR modifies control-plane files:
|
There was a problem hiding this comment.
Pull request overview
This PR addresses v4.0.0 release follow-ups by fixing the curl | bash installer to match the new GoReleaser asset layout, making AUR publishing fail fast with a clear SSH key validation error, and updating release/docs guidance to reflect the current distribution setup.
Tip
If you aren't ready for review, convert to a draft PR.
Click "Convert to draft" or run gh pr ready --undo.
Click "Ready for review" or run gh pr ready to reengage.
Changes:
- Update
scripts/install.shto download versioned archives, verify againstchecksums.txt, and extract/install the binary. - Add early
AUR_KEYnormalization + validation toscripts/publish-aur.shto avoid mid-job failures. - Refresh release/docs guidance (
RELEASING.md,README.md) for the current Homebrew/AUR secrets and install paths.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| scripts/publish-aur.sh | Normalizes and validates AUR_KEY before attempting AUR git operations. |
| scripts/install.sh | Switches installer to GoReleaser archive assets + checksums.txt verification and extraction. |
| RELEASING.md | Updates secret inventory guidance and documents AUR/tap migration steps. |
| README.md | Updates Homebrew install instructions and clarifies RC distribution. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Match the archive name as an exact awk field (tolerating the optional binary-mode "*" prefix) instead of an unanchored regex grep, and fail zip extraction with a clear message when neither unzip nor a zip-capable tar is available rather than letting GNU tar error obscurely.
Redirect stdin from /dev/null so a passphrase-protected key fails the check immediately instead of blocking CI on a passphrase prompt.
Fail with the remediation command instead of set -u's unbound-variable error when the secret is missing.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.
Comments suppressed due to low confidence (1)
scripts/publish-aur.sh:90
- With
set -u, this block will exit with an unhelpfulAUR_KEY: unbound variableerror when the secret is missing, before the new fail-fast validation runs. Add an explicit check for an empty/unset AUR_KEY so CI fails with a clear remediation message.
sha256sums = $SHA256
pkgname = fizzy-cli
EOF
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.
Comments suppressed due to low confidence (1)
scripts/publish-aur.sh:98
- This remediation command also omits
-R basecamp/fizzy-cli. Including the repo makes the guidance unambiguous and consistent with the release docs.
echo "ERROR: AUR_KEY is not a valid unencrypted SSH private key." \
"Re-store it with newlines intact: gh secret set AUR_KEY --env release < keyfile"
Include -R basecamp/fizzy-cli in the publish-aur.sh error messages and note that RELEASE_CLIENT_ID is set with gh variable set, not gh secret set.
* Document the Fizzy 3.x Homebrew upgrade path #194 replaced the stale Homebrew block but did not carry over upgrade instructions, so there is currently no guidance in this repo for users on the robzolkos/fizzy-cli tap. The order matters and is not obvious. A cask will not overwrite a bin/fizzy symlink owned by a formula, so installing the cask while the formula is still linked silently skips the binary; uninstalling the formula afterwards then leaves no fizzy on PATH at all. brew unlink first avoids that, mirroring what Homebrew's own automatic migration does (unlink, cleanup, install --cask). Also notes that brew migrate fizzy-cli, which Homebrew prints in its migration output, is a no-op for a formula-to-cask move. Retitles the section macOS and Linux, since the generated cask ships on_linux blocks for amd64 and arm64. * Clarify that Homebrew never auto-taps third-party taps Verified on Homebrew 6.0.13: a fully-qualified reference to an untapped third-party tap does not tap it. $ brew info robzolkos/fizzy-cli/fizzy-cli Error: No available formula or cask with the name "...". This command requires the tap robzolkos/fizzy-cli. If you trust this tap, tap it explicitly and then try again: brew tap robzolkos/fizzy-cli So the brew tap step is required, not optional. Reworded to say so explicitly for both the migration and direct-install cases.
Follow-ups from the v4.0.0 stable release (run 30305193571).
What broke
scripts/install.shis broken in production. v4.0.0 becamelatest, and the installer still fetches the v3 asset scheme (fizzy-<os>-<arch>bare binaries +SHA256SUMS-<os>-<arch>.txt), which GoReleaser no longer publishes. Everycurl | bashinstall currently 404s.aur-publishjob failed withLoad key "/home/runner/.ssh/aur": invalid format— the storedAUR_KEYsecret content is not a parseable OpenSSH key (likely flattened newlines). This was the first run to ever exercise it.Changes
fizzy_<ver>_<os>_<arch>.tar.gz(.zipon Windows), verifies against the singlechecksums.txt, extracts the binary. Fixed as soon as this merges, since the installer is served from the repo.printf | tr -d '\r'and validates it withssh-keygen -yimmediately, failing with a clear remediation message (gh secret set AUR_KEY --env release < keyfile) instead of dying mid-clone.brew install --cask basecamp/tap/fizzy(cask is live inbasecamp/homebrew-tap); dropped the robzolkos tap instructions and the stale "not yet released" warning.RELEASE_CLIENT_ID/RELEASE_APP_PRIVATE_KEY/AUR_KEYlive in thereleaseenvironment, not repository level;HOMEBREW_TAP_TOKENis minted per-run by thecli-release-botApp), documented the multi-line secret pitfall, fixed the AUR setup steps to include local key validation, and added a tap-migration ordering runbook.Verification
fizzy version 4.0.0.makepkgbuilds 4.0.0 from the source tarball,.SRCINFOmatchesmakepkg --printsrcinfo, the installed package runs and ships completions + license. (The PKGBUILD had never been exercised — the AUR job always died at SSH.)AUR_KEY: PKGBUILD generation completes, then the script exits with the clear error.Not in this PR (pending @robzolkos)
AUR_KEYfrom a validated key file andgh run rerun 30305193571 --failed.robzolkos/homebrew-fizzy-cli.Summary by cubic
Fixes v4.0.0 installs by switching the installer to GoReleaser archives with exact filename checksum matching and safer extraction. Hardens AUR publishing with fail-fast, non-interactive key checks; updates Homebrew docs and release secret setup.
Bug Fixes
scripts/install.shto downloadfizzy_<ver>_<os>_<arch>.tar.gz(Windows.zip), verify againstchecksums.txtby exact archive name (tolerates leading*), extract withunzipor zip-capabletar, and error clearly if neither is available.scripts/publish-aur.shto preserve newlines and strip CRs when writingAUR_KEY, validate non-interactively withssh-keygen -y(stdin from/dev/null) to fail fast on invalid or passphrase-protected keys, and guard missingAUR_KEYwith a copy-pasteable remediation (gh secret set AUR_KEY --env release -R basecamp/fizzy-cli < keyfile).Docs
brew install --cask basecamp/tap/fizzy; prereleases are available from Releases.releaseenvironment; adds exactghcommands with-R basecamp/fizzy-cli(multi-line secret example included), notesRELEASE_CLIENT_IDusesgh variable set, documents multi-line secret pitfalls and AUR key validation, and adds tap migration ordering.Written for commit 6d7268c. Summary will update on new commits.