Files
orca/mobile/app.json
T
Jinwoo-HandOrca b4310ba78f chore(mobile): App Store prep — privacy manifest and remove debug logs
Two small pre-submission changes for the eventual public iOS App Store
release of Orca Mobile:

1. mobile/app.json — declare an iOS privacy manifest via the
   expo.ios.privacyManifests field. On 'npx expo prebuild' Expo merges
   our declarations with the SDK packages' bundled manifests and
   writes mobile/ios/Orca/PrivacyInfo.xcprivacy. Apple has required
   this since May 2024 and rejects builds without it.

   Required-reason API categories declared:
   - NSPrivacyAccessedAPICategoryUserDefaults (CA92.1) — AsyncStorage
     and React Native UserDefaults reads, all inside the app's own
     container.
   - NSPrivacyAccessedAPICategoryFileTimestamp (C617.1) — RN core's
     file-mtime reads in cache-invalidation paths.
   - NSPrivacyAccessedAPICategorySystemBootTime (35F9.1) — boost's
     monotonic-clock initialization.

   NSPrivacyTracking is false. NSPrivacyTrackingDomains and
   NSPrivacyCollectedDataTypes are empty — verified against
   mobile/package.json which has no analytics, crash reporting, or
   tracking SDKs.

2. Removed all 9 [mobile-fit] console.log calls left over from the
   presence-lock / scrollback-hydration debugging sessions (8 in
   mobile/app/h/[hostId]/session/[worktreeId].tsx, 1 in
   src/main/runtime/orca-runtime.ts). They were never gated behind
   __DEV__ and would run in shipped App Store builds. Strings only
   contained opaque handles and viewport dims, no PII or tokens —
   but no reason to keep verbose diagnostics in user-facing builds.

Tests: presence-lock + mobile-subscribe-integration + fit-override-
integration all green (39/39). Lint, tc:node, tc:web clean.

Co-authored-by: Orca <help@stably.ai>
2026-05-05 22:04:49 -04:00

81 lines
2.1 KiB
JSON

{
"expo": {
"name": "Orca",
"slug": "orca-mobile",
"version": "0.0.4",
"orientation": "portrait",
"icon": "./assets/icon.png",
"userInterfaceStyle": "automatic",
"scheme": "orca",
"newArchEnabled": true,
"splash": {
"image": "./assets/splash-icon.png",
"resizeMode": "contain",
"backgroundColor": "#111111"
},
"ios": {
"supportsTablet": true,
"bundleIdentifier": "com.stably.orca.mobile",
"buildNumber": "5",
"infoPlist": {
"NSLocalNetworkUsageDescription": "Orca connects to the desktop app on your local network.",
"NSAppTransportSecurity": {
"NSAllowsLocalNetworking": true
}
},
"privacyManifests": {
"NSPrivacyTracking": false,
"NSPrivacyTrackingDomains": [],
"NSPrivacyCollectedDataTypes": [],
"NSPrivacyAccessedAPITypes": [
{
"NSPrivacyAccessedAPIType": "NSPrivacyAccessedAPICategoryUserDefaults",
"NSPrivacyAccessedAPITypeReasons": ["CA92.1"]
},
{
"NSPrivacyAccessedAPIType": "NSPrivacyAccessedAPICategoryFileTimestamp",
"NSPrivacyAccessedAPITypeReasons": ["C617.1"]
},
{
"NSPrivacyAccessedAPIType": "NSPrivacyAccessedAPICategorySystemBootTime",
"NSPrivacyAccessedAPITypeReasons": ["35F9.1"]
}
]
}
},
"android": {
"adaptiveIcon": {
"foregroundImage": "./assets/adaptive-icon.png",
"backgroundColor": "#111111"
},
"usesCleartextTraffic": true,
"allowBackup": false,
"package": "com.stably.orca.mobile"
},
"plugins": [
"expo-router",
[
"expo-splash-screen",
{
"image": "./assets/splash-icon.png",
"backgroundColor": "#111111"
}
],
[
"expo-camera",
{
"cameraPermission": "Allow Orca to use the camera for QR code scanning."
}
],
[
"expo-build-properties",
{
"android": {
"usesCleartextTraffic": true
}
}
]
]
}
}