BrewBar/RELEASING.md
maxsoch 4da19145a8 document the release process in RELEASING.md
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 06:30:06 +02:00

2.4 KiB

Releasing BrewBar

Version scheme

Semantic versioning, two or three numbers:

  • 1.1, 1.2, … — new features (settings, new menu items, …)
  • 1.0.1, 1.0.2, … — bug fixes only
  • 2.0 — reserved for something that changes how the app fundamentally works

The version lives in MARKETING_VERSION in the Xcode project. Change it in Xcode: target BrewBar → General → Version (this updates Debug and Release together). The git tag and zip filename must match it exactly: version 1.1 → tag v1.1BrewBar-1.1.zip.

Release checklist

  1. Finish and merge the work. Tests green, app manually verified:

    xcodebuild -project BrewBar.xcodeproj -scheme BrewBar -configuration Debug -destination "platform=macOS" test
    
  2. Bump the version in Xcode (see above), commit.

  3. Build and package (from the project root):

    xcodebuild -project BrewBar.xcodeproj -scheme BrewBar -configuration Release -destination "platform=macOS" build SYMROOT=build
    ditto -c -k --sequesterRsrc --keepParent build/Release/BrewBar.app dist/BrewBar-<VERSION>.zip
    shasum -a 256 dist/BrewBar-<VERSION>.zip
    

    ditto (not zip) — it preserves code signatures and Finder metadata.

  4. Update the cask Casks/brewbar.rb: set version and paste the new sha256. Brew refuses any download whose hash doesn't match this value.

  5. Commit and push:

    git add Casks/brewbar.rb BrewBar.xcodeproj/project.pbxproj
    git commit -m "release <VERSION>"
    git push
    
  6. Create the Forgejo release: repo → Releases → New Release.

    • Tag: v<VERSION> (must match the cask URL), target main
    • Attach dist/BrewBar-<VERSION>.zip
    • Title: BrewBar <VERSION>; description: what changed since last release
  7. Upgrade on any machine:

    brew update && brew upgrade --cask brewbar
    

    (brew update pulls the tap, sees the new cask version, upgrade fetches the release zip.)

Notes

  • The app is signed with an Apple Development certificate, not notarized. Installs need --no-quarantine; without it Gatekeeper blocks the app.
  • dist/ and build/ are gitignored — release zips live only in Forgejo releases, never in git.
  • First install on a new machine:
    brew tap maxsoch/brewbar https://forgejo.socheleau.fr/maxsoch/BrewBar.git
    brew install --cask --no-quarantine maxsoch/brewbar/brewbar