39 lines
1.4 KiB
Markdown
39 lines
1.4 KiB
Markdown
---
|
|
epic: 7
|
|
story: 7.14
|
|
title: "App Store & Notarization"
|
|
status: draft
|
|
---
|
|
|
|
## Epic 7 — macOS App (Swift/SwiftUI)
|
|
**Goal:** A beautiful, native macOS app that feels like it belongs on the platform.
|
|
|
|
### Story 7.14: App Store & Notarization
|
|
|
|
As a **macOS user**,
|
|
I want CalcPad to be available on the Mac App Store and as a direct download,
|
|
So that I can install it through my preferred distribution channel with confidence that it is safe and verified.
|
|
|
|
**Acceptance Criteria:**
|
|
|
|
**Given** the app is built for distribution
|
|
**When** the build process completes
|
|
**Then** the binary is a Universal Binary supporting both Apple Silicon (arm64) and Intel (x86_64)
|
|
|
|
**Given** the app is submitted to the Mac App Store
|
|
**When** Apple reviews the submission
|
|
**Then** the app passes review because it is properly sandboxed, uses only approved APIs, and declares required entitlements
|
|
|
|
**Given** the app is distributed as a direct download (.dmg)
|
|
**When** the binary is built
|
|
**Then** it is signed with a Developer ID certificate and notarized with Apple
|
|
**And** the Hardened Runtime is enabled
|
|
|
|
**Given** a user downloads the .dmg from the website
|
|
**When** the user opens the app
|
|
**Then** macOS Gatekeeper allows the app to launch without any "unidentified developer" warning
|
|
|
|
**Given** the app uses CalcPad engine via FFI
|
|
**When** the app is sandboxed
|
|
**Then** the Rust dynamic library is embedded within the app bundle and loads correctly under sandbox restrictions
|