Skip to content

Publish PerchApp and install it from the one-line installer #7

@Jing-yilin

Description

@Jing-yilin

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:

  1. Install the perch CLI as it does today.
  2. Detect macOS architecture.
  3. Download matching PerchApp artifact and .sha256 from latest GitHub Release.
  4. Verify SHA-256 before unpacking/installing.
  5. 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.
  6. Open the installed app after successful install unless disabled.
  7. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions