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
Summary
Publish the native macOS
PerchAppmenu bar app as a GitHub Release artifact and update the one-line installer so it can automatically install/update the app alongside theperchCLI.Current state:
v0.1.0publishes only CLI binaries and checksums.install.shinstalls the CLI and agent/perchcommands, then only opensPerchAppif it already exists locally.PerchAppbinary.Goals
PerchAppfor macOS as a downloadable artifact.PerchAppautomatically by default on macOS.~/.config/perch/.Proposed Release Artifacts
Minimum viable artifacts:
PerchApp-aarch64-apple-darwin.zipPerchApp-aarch64-apple-darwin.zip.sha256PerchApp-x86_64-apple-darwin.zipPerchApp-x86_64-apple-darwin.zip.sha256Preferred contents:
Perch.appbundle if feasible.PerchAppexecutable is acceptable as an MVP, installed under~/.local/share/perch/PerchAppor similar.Future hardening:
.appbundle.Installer Behavior
Update
install.shto:perchCLI as it does today.PerchAppartifact and.sha256from latest GitHub Release./Applications/Perch.appif permissions allow and user opts in.~/Applications/Perch.appas default for app bundle.~/.local/share/perch/PerchAppif shipping raw executable MVP.Suggested environment flags:
CLI Integration
This pairs with issue #6:
perch menubar startperch menubar stopperch menubar statusperch menubar login enable|disable|statusOnce the app is installed by
install.sh, these commands can reliably find the installed app path.Non-goals
~/.config/perch/sessions.json.Acceptance Criteria
PerchAppfor macOS arm64 and x86_64 or documents a universal build choice..sha256files.install.shdownloads and verifies the matching app artifact.install.shinstalls the app to a stable user-accessible location.install.shopens the installed app after install by default.PERCH_INSTALL_APP=0skips app installation.