Skip to content

Commit 776e61d

Browse files
committed
update to build proc
1 parent 28aebb2 commit 776e61d

10 files changed

Lines changed: 706 additions & 88 deletions

File tree

bun.lock

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/mobile-voice/AGENTS.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,46 @@ Run all commands from `packages/mobile-voice`.
123123
- Rebuild the dev client after native module additions or changes.
124124
- For optional native capability usage, prefer runtime fallback paths instead of hard crashes.
125125

126+
## Expo Native Config (EAS)
127+
128+
- Treat `packages/mobile-voice/app.json` as the source of truth for iOS native metadata in EAS cloud builds.
129+
- Do not rely on manual edits in `ios/mobilevoice/Info.plist`, entitlements files, or `PrivacyInfo.xcprivacy`; for this package they are generated outputs.
130+
- Keep generated native folders untracked in git (`/ios`, `/android`) to avoid mixed CNG/bare behavior during EAS builds.
131+
- Put App Store compliance and permission metadata in app config using these fields:
132+
- `expo.ios.infoPlist` for Info.plist keys (usage strings, ATS, Bonjour, and related keys).
133+
- `expo.ios.config.usesNonExemptEncryption` for export-compliance encryption declaration.
134+
- `expo.ios.entitlements` for iOS entitlements.
135+
- `expo.ios.privacyManifests` for Apple privacy manifest declarations.
136+
- Keep `app.json` entries explicit and review-friendly:
137+
- Permission descriptions should be complete, product-specific sentences.
138+
- Compliance keys should be set intentionally rather than relying on implicit defaults.
139+
- Preserve existing JSON style in this package (concise arrays and stable key grouping).
140+
- After native config changes, verify resolved config with `bunx expo config --type prebuild --json` and check the resulting `ios` fields.
141+
142+
Example shape:
143+
144+
```json
145+
{
146+
"expo": {
147+
"ios": {
148+
"infoPlist": {
149+
"NSCameraUsageDescription": "...",
150+
"NSMicrophoneUsageDescription": "..."
151+
},
152+
"config": {
153+
"usesNonExemptEncryption": false
154+
},
155+
"entitlements": {
156+
"com.apple.developer.kernel.extended-virtual-addressing": true
157+
},
158+
"privacyManifests": {
159+
"NSPrivacyAccessedAPITypes": []
160+
}
161+
}
162+
}
163+
}
164+
```
165+
126166
## Common Pitfalls
127167

128168
- Black screen + "No script URL provided" often means a stale dev client binary.

packages/mobile-voice/app.json

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,17 @@
1010
"ios": {
1111
"icon": "./assets/images/icon.png",
1212
"bundleIdentifier": "com.anomalyco.mobilevoice",
13+
"config": {
14+
"usesNonExemptEncryption": false
15+
},
1316
"entitlements": {
1417
"com.apple.developer.kernel.extended-virtual-addressing": true
1518
},
1619
"infoPlist": {
17-
"NSMicrophoneUsageDescription": "This app needs microphone access for live speech-to-text dictation.",
20+
"NSMicrophoneUsageDescription": "Control uses the microphone while you hold Record to turn your speech into text for an OpenCode session.",
21+
"NSCameraUsageDescription": "Control uses the camera to scan the OpenCode pairing QR code shown on your computer.",
22+
"NSLocalNetworkUsageDescription": "Control uses your local network to discover and connect to OpenCode servers running on your computer.",
23+
"NSBonjourServices": ["_http._tcp."],
1824
"NSAppTransportSecurity": {
1925
"NSAllowsLocalNetworking": true,
2026
"NSExceptionDomains": {
@@ -23,8 +29,7 @@
2329
"NSExceptionAllowsInsecureHTTPLoads": true
2430
}
2531
}
26-
},
27-
"ITSAppUsesNonExemptEncryption": false
32+
}
2833
}
2934
},
3035
"android": {
@@ -40,7 +45,10 @@
4045
"android.permission.FOREGROUND_SERVICE",
4146
"android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK",
4247
"android.permission.RECORD_AUDIO",
43-
"android.permission.MODIFY_AUDIO_SETTINGS"
48+
"android.permission.MODIFY_AUDIO_SETTINGS",
49+
"android.permission.ACCESS_NETWORK_STATE",
50+
"android.permission.ACCESS_WIFI_STATE",
51+
"android.permission.CHANGE_WIFI_MULTICAST_STATE"
4452
],
4553
"predictiveBackGestureEnabled": false
4654
},

packages/mobile-voice/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
"react-native-screens": "~4.23.0",
5151
"react-native-web": "~0.21.0",
5252
"react-native-worklets": "0.7.2",
53+
"react-native-zeroconf": "0.14.0",
5354
"whisper.rn": "0.5.5"
5455
},
5556
"devDependencies": {

0 commit comments

Comments
 (0)