mirror of
https://github.com/awizemann/scarf.git
synced 2026-05-10 18:44:45 +00:00
104 lines
5.7 KiB
Markdown
104 lines
5.7 KiB
Markdown
|
|
# v2.5 TestFlight submission checklist
|
||
|
|
|
||
|
|
Pre-flight steps to take ScarfGo to public TestFlight. Order matters — Apple review wants the privacy URL to resolve at submission time, and the build needs to upload before review can start.
|
||
|
|
|
||
|
|
## 0. Apple Developer Program prerequisites
|
||
|
|
|
||
|
|
- Apple Developer Program enrollment active (team `3Q6X2L86C4`).
|
||
|
|
- iOS Distribution certificate in login Keychain (`Apple Distribution: Alan Wizemann`).
|
||
|
|
- App Store provisioning profile for the iOS bundle ID (auto-managed in Xcode is fine).
|
||
|
|
- App Store Connect access for the team.
|
||
|
|
|
||
|
|
## 1. Privacy policy live
|
||
|
|
|
||
|
|
- [ ] Copy `scarf/docs/PRIVACY_POLICY.md` content into `.gh-pages-worktree/privacy/index.html` (wrap in minimal HTML, or leave as Markdown if GitHub Pages renders Markdown — GitHub Pages with Jekyll does).
|
||
|
|
- [ ] `cd .gh-pages-worktree && git add privacy/index.html && git commit -m "docs(privacy): publish v2.5 policy" && git push`
|
||
|
|
- [ ] Verify https://awizemann.github.io/scarf/privacy/ resolves (give it ~1 min after push).
|
||
|
|
|
||
|
|
The privacy URL is required by App Store Connect before submitting for Beta App Review. Without it the submission button is disabled.
|
||
|
|
|
||
|
|
## 2. Xcode target configuration
|
||
|
|
|
||
|
|
Open `scarf/scarf.xcodeproj`, select the `scarf mobile` target.
|
||
|
|
|
||
|
|
- [ ] Signing & Capabilities → "Automatically manage signing" ON, team set to `3Q6X2L86C4`.
|
||
|
|
- [ ] Capabilities present: Keychain Sharing only. **Push Notifications stays OFF** — `NotificationRouter.apnsEnabled = false` and the entitlement is absent. Match the two: enable both later together.
|
||
|
|
- [ ] Info.plist sanity:
|
||
|
|
- Bundle Identifier matches App Store Connect record.
|
||
|
|
- `LSApplicationCategoryType = public.app-category.developer-tools`.
|
||
|
|
- `NSAppTransportSecurity` allows the SSH ports the app dials? — N/A for SSH (raw TCP); ATS only governs HTTPS. Skip.
|
||
|
|
|
||
|
|
## 3. Version bump
|
||
|
|
|
||
|
|
The version bump runs automatically via `./scripts/release.sh 2.5.0` in Phase G. Do NOT bump `MARKETING_VERSION` / `CURRENT_PROJECT_VERSION` manually before that — the script writes the version commit and reads `CURRENT_PROJECT_VERSION` to compute the next build number.
|
||
|
|
|
||
|
|
## 4. Archive + upload
|
||
|
|
|
||
|
|
- [ ] Xcode → Product → Scheme → `scarf mobile`.
|
||
|
|
- [ ] Destination → "Any iOS Device (arm64)".
|
||
|
|
- [ ] Product → Archive. Wait for build (~3-5 min).
|
||
|
|
- [ ] Organizer opens automatically. Select the archive → Distribute App.
|
||
|
|
- [ ] Distribution method: **App Store Connect**.
|
||
|
|
- [ ] Destination: **Upload**.
|
||
|
|
- [ ] Distribution options: leave defaults (manage versioning automatically; include bitcode if offered = N/A on Xcode 14+; strip Swift symbols ON).
|
||
|
|
- [ ] Re-sign: automatic.
|
||
|
|
- [ ] Upload. Apple processes the binary (~5-15 min); App Store Connect emails when ready.
|
||
|
|
|
||
|
|
## 5. App Store Connect metadata (TestFlight tab)
|
||
|
|
|
||
|
|
Once the binary is processed:
|
||
|
|
|
||
|
|
- [ ] **App information** (one-time, persists across builds):
|
||
|
|
- Subtitle: "On-the-go Hermes companion"
|
||
|
|
- Privacy policy URL: https://awizemann.github.io/scarf/privacy/
|
||
|
|
- Category: Developer Tools
|
||
|
|
- Age rating: 4+ (no restricted content)
|
||
|
|
- [ ] **Test information** (per-build is fine, persists if not changed):
|
||
|
|
- Beta App Description (paragraph): see "Beta description copy" below.
|
||
|
|
- Email: alan@wizemann.com
|
||
|
|
- Beta App Review information: account credentials only if the app required them — N/A (BYO Hermes host).
|
||
|
|
- Marketing URL (optional): https://github.com/awizemann/scarf
|
||
|
|
- [ ] **What to test** (per-build):
|
||
|
|
```
|
||
|
|
v2.5.0 — first public TestFlight build of ScarfGo. Try connecting to a
|
||
|
|
Hermes host (you'll need an SSH-reachable Hermes install). Test:
|
||
|
|
- Onboarding + Add a second server
|
||
|
|
- Project-scoped chat
|
||
|
|
- Session resume from Dashboard
|
||
|
|
- Sessions tab project filter
|
||
|
|
- Forget a server / re-onboard
|
||
|
|
Known limitations: no push, no in-app Settings editor, English only.
|
||
|
|
Report issues via TestFlight feedback.
|
||
|
|
```
|
||
|
|
|
||
|
|
### Beta description copy
|
||
|
|
|
||
|
|
> ScarfGo is the iOS companion to Scarf, the Mac client for the Hermes AI agent. Connect to a Hermes server you operate (Mac, Linux, or any SSH-reachable host) and run sessions, browse memory, manage cron jobs, and resume conversations from your phone. All data stays between your device and your Hermes host — no developer servers in between.
|
||
|
|
|
||
|
|
## 6. Submit for Beta App Review
|
||
|
|
|
||
|
|
- [ ] TestFlight tab → External Testers → Add a public group called "Public Beta".
|
||
|
|
- [ ] Add the new build to the group.
|
||
|
|
- [ ] Click **Submit for Review**.
|
||
|
|
- [ ] Apple's Beta Review queue is typically 24-48h.
|
||
|
|
|
||
|
|
## 7. After approval
|
||
|
|
|
||
|
|
- [ ] Apple issues a public TestFlight URL (`https://testflight.apple.com/join/XXXXXX`).
|
||
|
|
- [ ] Record the URL — needed in Phases E (wiki ScarfGo page) and F (README v2.5 section).
|
||
|
|
- [ ] **DO NOT** publicize it yet. Update wiki + README in branches first; the user (Alan) decides when to push live.
|
||
|
|
|
||
|
|
## Rollback
|
||
|
|
|
||
|
|
If a build breaks on TestFlight:
|
||
|
|
|
||
|
|
- [ ] Disable the build in App Store Connect → TestFlight → Builds → Expire.
|
||
|
|
- [ ] Fix the bug, archive a new build with the same `MARKETING_VERSION` (Apple requires the build number — `CURRENT_PROJECT_VERSION` — to monotonically increase).
|
||
|
|
- [ ] Upload + add to Public Beta group + submit if Apple flagged the prior build for re-review.
|
||
|
|
|
||
|
|
## Open items / future TestFlight builds
|
||
|
|
|
||
|
|
- **Push notifications** — flip `NotificationRouter.apnsEnabled = true` simultaneously with: enabling the Push Notifications capability, generating an APNs auth key, deploying the Hermes-side push sender. Stops being a no-op only when all three exist.
|
||
|
|
- **iPad support** — `.tabViewStyle(.sidebarAdaptable)` is wired but iPad layout hasn't been smoke-tested. Probably free, but verify before flipping the iPad flag in the target.
|
||
|
|
- **Localization** — English only for v1. Mac ships 7 languages; iOS strings are extracted but no translations.
|