Skip to content

Packaging (macOS): Mac App Store build (sandboxed 'lite' app) #74

Description

@jozef2svrcek

Track a Mac App Store–distributable build of LPDO, for discoverability (the App Store is the one macOS storefront with real reach). This is a separate product from the Developer ID .pkg (#68) — it is not a repackage.

Why separate / why hard

MAS requires the App Sandbox, which is incompatible with LPDO's current architecture. A MAS build must:

  • Run the server in-process (or as a sandboxed XPC/SMAppService agent) — cannot spawn the chess-db binary as a subprocess the way the desktop build does.
  • Keep the database inside the app container (~/Library/Containers/com.specure.lpdo/Data/…) — not ~/.chess-db, /var/lib/lpdo, or /Library/Application Support/LPDO.
  • Drop the CLI on PATH — no writing to /usr/local/bin; no installer scripts; no system daemon.
  • Use different signing/distributionApple Distribution + Mac Installer Distribution via App Store Connect/Transporter, not Developer ID.

SMAppService.agent (per-user login helper) is MAS-permitted, but it does not lift the sandbox — the sandbox (container-only data, no subprocess, no CLI) is the real constraint.

Scope of work (when prioritized)

  • Sandbox entitlements + an in-process/XPC server design (a meaningful rearchitecture of the desktop client/server split, macOS-only).
  • DB relocated into the app container; migration story for users coming from the .pkg/.dmg.
  • App Store Connect setup, review, and the commission/review-latency implications.
  • Decide the feature line of the 'lite' build (GUI + in-context server; no CLI; remote-server management likely the only CLI-ish feature, via the existing --remote proxy).

Relationship to other macOS work

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