Maintainer runbook for shipping Hush. Hush has one release surface: the
Hush-x.y.z.dmg menu-bar app, published through GitHub Releases.
./setup-signing.sh # creates the stable "Hush Self-Signed" identity
gh auth login # for publishing releasesUse the same signing identity for every release. The Accessibility permission is tied to the app's code signature; changing the identity forces users to grant permission again.
Hush is currently self-signed, not Apple-notarized. Public DMG users must clear quarantine after install:
xattr -dr com.apple.quarantine /Applications/Hush.app(Full notarization requires an Apple Developer account + a "Developer ID
Application" certificate. Once you have one, sign with it in build-app.sh and
add an xcrun notarytool step — until then the quarantine note above applies.)
| Place | How it is set |
|---|---|
VERSION file (source of truth) |
./bump-version.sh |
Hush.xcodeproj MARKETING_VERSION / CURRENT_PROJECT_VERSION |
./bump-version.sh (kept in sync) |
App bundle Info.plist version |
stamped at build time by build-app.sh from VERSION |
MARKETING_VERSION is the user-facing version (e.g. 1.6.0); BUILD_VERSION is
a monotonic build counter that bump-version.sh auto-increments.
Replace 1.6.0 with the version being shipped.
-
Land the feature/fix commits.
-
Bump the version (sets marketing version, auto-increments build):
./bump-version.sh 1.6.0 git diff git commit -am "Release v1.6.0 (build N)" -
Publish the DMG + GitHub release:
./release.sh 1.6.0 # or just ./release.sh — defaults to the VERSION fileThis builds and signs the app, packages
build/Hush-1.6.0.dmg, tagsv1.6.0, and creates (or updates) the GitHub release.
./build-dmg.sh 1.6.0
open build/Hush-1.6.0.dmgInstall to Applications, clear quarantine if needed, then verify:
- menu-bar icon (the shush glyph) appears,
- Accessibility prompt opens and, once granted, windowless
.regularapps quit, - whitelisted apps (Finder, Docker, etc.) are left running,
- the popover header logo and recently-quit list render,
- after a rebuild + reinstall, the Accessibility grant persists (stable signature).
./build-app.sh # build the .app only
./build-dmg.sh 1.6.0 # build the .app + package a DMG, no GitHub releasegh release view v1.6.0
curl -I https://github.com/jspw/Hush/releases/download/v1.6.0/Hush-1.6.0.dmgrelease.shreran after a partial publish: it reuses an existingv1.6.0tag/release and re-uploads the DMG with--clobber, so it's safe to rerun.- Users lose Accessibility after updating: the signing identity changed.
Have them remove the old Hush entry from System Settings → Privacy & Security →
Accessibility, relaunch, and grant again. Going forward, always release with
the same
Hush Self-Signedidentity.