Monorepo for Aesthetic.Computer aesthetic.computer
4
fork

Configure Feed

Select the types of activity you want to include in your feed.

ios: PROGRESS.md notes for 1.1 (2)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

+59
+59
apple/PROGRESS.md
··· 1 + # Aesthetic Computer iOS — Progress 2 + 3 + Per-submission notes for the iOS app and iMessage extension in this directory. 4 + Append a new section on top for each App Store build. 5 + 6 + --- 7 + 8 + ## 1.1 (2) — 2026-04-23 9 + 10 + First update since 1.0 (1) shipped as RC4 in late 2024. Focus: per-device push 11 + notifications, replacing the slow topic-broadcast model. 12 + 13 + ### Shipped 14 + - **FCM device-token bridge.** `MessagingDelegate` hands the token to the WebView 15 + via `evaluateJavaScript(window.iOSReceivePushToken(...))` with retry until the 16 + AC runtime is ready. The runtime POSTs `/api/register-push-token` against the 17 + logged-in user so the backend can target individual devices. 18 + - **`tell` command.** `tell @handle message` from the AC prompt calls `/api/tell`, 19 + which writes to the `tells` Mongo collection and sends a direct-token FCM push 20 + (sub-second latency vs. minutes for topic broadcasts). Deliberately one-way 21 + for v1 — no reply UI, no thread. 22 + - **Firebase iOS SDK 10.19 → 11.15.** 10.19's prebuilt xcframeworks were missing 23 + `CFBundleShortVersionString` / `MinimumOSVersion` in their Info.plists, which 24 + Apple's submission validator began rejecting in late 2024. Dropped the 25 + now-removed `FirebaseAnalyticsSwift` product (merged into `FirebaseAnalytics` 26 + in 11.x). 27 + - **Account-deletion cascade.** `delete-erase-and-forget-me` now clears 28 + `push-tokens` and `tells` alongside existing `moods` cleanup. 29 + 30 + ### Wiring summary 31 + - iOS: `apple/aesthetic.computer/aesthetic_computerApp.swift` — `deliverPushTokenToWebView` 32 + - Runtime: `system/public/aesthetic.computer/bios.mjs` — `window.iOSReceivePushToken`, 33 + `iOSTryRegisterPushToken`, `iOSUnregisterPushToken` 34 + - Runtime: `system/public/aesthetic.computer/boot.mjs` — login-drain + logout-unregister hooks 35 + - Backend: `system/netlify/functions/register-push-token.mjs`, `tell.mjs` 36 + - Prompt: `system/public/aesthetic.computer/disks/prompt.mjs` (`tell` handler) 37 + 38 + ### Build/submission notes 39 + - Bundle IDs: `aesthetic.computer` (main), `aesthetic.computer.aesthetic` (iMessage ext). 40 + - Team: `FB5948YR3S`. Apple ID for distribution: `me@jas.life`. 41 + - App-specific password lives at `aesthetic-computer-vault/apple/app-specific-password.env.gpg`. 42 + - CLI archive + export + upload works via `xcodebuild archive -allowProvisioningUpdates` 43 + → `xcodebuild -exportArchive` → `xcrun altool --upload-app`. See `/tmp/ac-ios-*.log` 44 + from this session for reference commands. 45 + - Submit-for-review (What's New, export compliance, etc.) still manual in App Store 46 + Connect — requires an ASC API key `.p8` to automate. Drop one in 47 + `aesthetic-computer-vault/apple/appstoreconnect/` next time to close the loop. 48 + 49 + ### Known gaps / candidates for 1.2 50 + - `tells` inbox piece — right now the push notification *is* the UI. A 51 + `tells.mjs` piece + deep-link from the notification tap-through (Swift already 52 + forwards `userInfo["piece"]` → `iOSAppSwitchPiece`) would show the conversation 53 + log. 54 + - `mood` notifications still go via FCM topic (`mood.mjs:346`). Convert to 55 + per-follower direct sends once a follower graph exists. 56 + - App Store screenshots are stale — proposal: extend `oven/` with an `app-shots.mjs` 57 + driving `xcrun simctl` across the required device sizes to auto-capture a 58 + curated set of pieces. 59 + - ASC API key for unattended "Submit for Review" (see above).