Goal
Make Tuttle installable via brew install --cask tuttle from the official homebrew-cask repository.
Prerequisites
Apple Developer signing + notarization
The current build uses ad-hoc code signing. Official Homebrew Casks must pass macOS Gatekeeper without users manually stripping quarantine.
Stable artifact URLs
Already in place via GitHub Releases:
https://github.com/tuttle-dev/tuttle/releases/download/v{VERSION}/Tuttle-{VERSION}-macOS-arm64.dmg
Cask definition
Submit a PR to homebrew/homebrew-cask with Casks/t/tuttle.rb:
cask "tuttle" do
version "3.8.0"
sha256 "PUT_SHA256_HERE"
url "https://github.com/tuttle-dev/tuttle/releases/download/v#{version}/Tuttle-#{version}-macOS-arm64.dmg"
name "Tuttle"
desc "Painless business planning for freelancers"
homepage "https://github.com/tuttle-dev/tuttle"
livecheck do
url :url
strategy :github_latest
end
app "Tuttle.app"
zap trash: [
"~/.tuttle",
]
end
For multi-arch support, add on_intel / on_arm stanzas with separate SHA and URL.
CI automation
Add a GitHub Actions workflow (or step in pack-electron.yml) that bumps the cask on each release:
Acceptance criteria
Goal
Make Tuttle installable via
brew install --cask tuttlefrom the official homebrew-cask repository.Prerequisites
Apple Developer signing + notarization
The current build uses ad-hoc code signing. Official Homebrew Casks must pass macOS Gatekeeper without users manually stripping quarantine.
CSC_IDENTITY_AUTO_DISCOVERY=falseinjustfile)notarytool(electron-builder supports this natively viaafterSignhook ornotarizeconfig inui/package.json).dmgStable artifact URLs
Already in place via GitHub Releases:
Cask definition
Submit a PR to
homebrew/homebrew-caskwithCasks/t/tuttle.rb:For multi-arch support, add
on_intel/on_armstanzas with separate SHA and URL.CI automation
Add a GitHub Actions workflow (or step in
pack-electron.yml) that bumps the cask on each release:.dmghomebrew/homebrew-caskviadawidd6/action-homebrew-bump-caskor equivalentAcceptance criteria
.dmgpasses Gatekeeper on a clean Macbrew install --cask tuttleinstalls the app to/Applicationsbrew uninstall --cask tuttleremoves it cleanly