Summary
Publish the native macOS PerchApp menu bar app as a GitHub Release artifact and update the one-line installer so it can automatically install/update the app alongside the perch CLI.
Current state:
- v0.1.0 publishes only CLI binaries and checksums.
- install.sh installs the CLI and agent /perch commands, then only opens PerchApp if it already exists locally.
- Features such as menu bar grouping by project path exist in source, but normal one-line install users do not receive a PerchApp binary.
Goals
- Release PerchApp for macOS as a downloadable artifact.
- Make the one-line installer install/update PerchApp automatically by default on macOS.
- Preserve existing Perch storage at ~/.config/perch/.
- Keep the CLI install flow non-interactive and idempotent.
Proposed Release Artifacts
Minimum viable artifacts:
- PerchApp-aarch64-apple-darwin.zip
- PerchApp-aarch64-apple-darwin.zip.sha256
- PerchApp-x86_64-apple-darwin.zip
- PerchApp-x86_64-apple-darwin.zip.sha256
Preferred contents:
- A proper Perch.app bundle if feasible.
- If bundle packaging is not ready, a zipped PerchApp executable is acceptable as an MVP, installed under ~/.local/share/perch/PerchApp or similar.
Future hardening:
- Sign and notarize .app bundle.
- DMG packaging.
- cosign/GitHub artifact attestations.
Installer Behavior
Update install.sh to:
- Install the perch CLI as it does today.
- Detect macOS architecture.
- Download matching PerchApp artifact and .sha256 from latest GitHub Release.
- Verify SHA-256 before unpacking/installing.
- Install app to a stable location, e.g. one of:
- /Applications/Perch.app if permissions allow and user opts in.
- ~/Applications/Perch.app as default for app bundle.
- ~/.local/share/perch/PerchApp if shipping raw executable MVP.
- Open the installed app after successful install unless disabled.
- Print clear summary and troubleshooting hints.
Suggested environment flags:
PERCH_INSTALL_APP=1 # default on macOS once artifacts exist
PERCH_INSTALL_APP=0 # skip app install
PERCH_APP_INSTALL_DIR=... # override destination
CLI Integration
This pairs with issue #6:
- perch menubar start
- perch menubar stop
- perch menubar status
- perch menubar login enable|disable|status
Once the app is installed by install.sh, these commands can reliably find the installed app path.
Non-goals
- Do not delete or migrate ~/.config/perch/sessions.json.
- Do not require Rust/Swift toolchains on user machines.
- Do not require signing/notarization for the MVP unless needed by macOS Gatekeeper behavior.
Acceptance Criteria
- GitHub Release workflow builds PerchApp for macOS arm64 and x86_64 or documents a universal build choice.
- Release includes app artifacts and .sha256 files.
- install.sh downloads and verifies the matching app artifact.
- install.sh installs the app to a stable user-accessible location.
- install.sh opens the installed app after install by default.
- PERCH_INSTALL_APP=0 skips app installation.
- Re-running installer updates app idempotently without deleting Perch storage.
- README documents CLI + menu bar app installation behavior.
- Tests cover app artifact download/checksum/install path selection where practical.
Reactions are currently unavailable
Summary
Publish the native macOS PerchApp menu bar app as a GitHub Release artifact and update the one-line installer so it can automatically install/update the app alongside the perch CLI.
Current state:
Goals
Proposed Release Artifacts
Minimum viable artifacts:
Preferred contents:
Future hardening:
Installer Behavior
Update install.sh to:
Suggested environment flags:
CLI Integration
This pairs with issue #6:
Once the app is installed by install.sh, these commands can reliably find the installed app path.
Non-goals
Acceptance Criteria