Release checklist (RepoBar)
May 21, 2026 · View on GitHub
✅ Standard Release Flow (RepoBar/VibeTunnel parity)
-
Version + changelog
- Update
version.env(MARKETING_VERSION,BUILD_NUMBER). - Finalize the top section in
CHANGELOG.md(no “Unreleased”; header must start with the version).
- Update
-
Run the full release script
Scripts/release.sh- Builds, signs, notarizes, generates appcast entry + HTML notes from
CHANGELOG.md, publishes GitHub release, tags/pushes. - Shared release helper is resolved by
Scripts/mac-release; setMAC_RELEASE_TOOLor keepagent-scriptsnext to this repo.
-
Sparkle UX verification
- About → “Check for Updates…”
- Menu only shows “Update ready, restart now?” once the update is downloaded.
- Sparkle dialog shows formatted release notes (not escaped HTML).
- Verify the released app does not include
RepoBarTokenStore=file. - Verify
keychain-access-groupsis present only if the app is signed with a matching provisioning profile. Otherwise leaveREPOBAR_SKIP_KEYCHAIN_GROUPSat the release default (1) to avoid AMFI launch failures.
Manual steps (only when re-running pieces)
-
Debug smoke build/tests
Scripts/compile_and_run.sh- Debug bundles use file-backed auth (
RepoBarTokenStore=file) so local launches do not prompt for Keychain access.
-
Package + notarize
Scripts/package_app.sh [debug|release]- Optional notarization:
NOTARIZE=1 NOTARY_PROFILE="Xcode Notary" Scripts/package_app.sh release - Verify:
spctl --assess --verbose .build/release/RepoBar.app - Inspect release auth storage:
plutil -p .build/release/RepoBar.app/Contents/Info.plist | rg RepoBarTokenStoreshould print nothing.
-
Release notes (markdown)
Scripts/generate-release-notes.sh <version> > RELEASE_NOTES.md
-
Post-publish asset check
Scripts/check-release-assets.sh <tag>(zip + dSYM present)