- build.yml: use production keystore (KEYSTORE_BASE64) on tag pushes, fall back to debug key for PRs/branch builds — build.gradle already reads RELEASE_STORE_FILE env var so no Gradle changes needed - distribution/fdroid-submission/metadata.yml: filled AllowedAPKSigningKeys with actual SHA-256 fingerprint, commit tag updated to v0.3.1, version bumped to 0.3.1 - app.json: bump version 0.2.3 → 0.3.1, versionCode 1 → 2 - Add eas.json + EAS README for iOS App Store builds - Add fastlane/metadata/android for Play Store / F-Droid graphics - Add distribution docs: applestore, fdroid, market, playstore, security, threat-model, opencode-site-deploy Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
83 lines
2.8 KiB
JSON
83 lines
2.8 KiB
JSON
{
|
|
"expo": {
|
|
"name": "OpenCode",
|
|
"slug": "opencode-mobile",
|
|
"version": "0.3.1",
|
|
"orientation": "portrait",
|
|
"scheme": "opencode",
|
|
"userInterfaceStyle": "automatic",
|
|
"icon": "./assets/icon.png",
|
|
"splash": {
|
|
"image": "./assets/splash-icon.png",
|
|
"resizeMode": "contain",
|
|
"backgroundColor": "#0F172A"
|
|
},
|
|
"ios": {
|
|
"supportsTablet": true,
|
|
"bundleIdentifier": "ai.opencode.mobile",
|
|
"buildNumber": "1",
|
|
"entitlements": {
|
|
"aps-environment": "production"
|
|
},
|
|
"infoPlist": {
|
|
"NSFaceIDUsageDescription": "Use Face ID to unlock OpenCode and access your sessions securely.",
|
|
"NSSpeechRecognitionUsageDescription": "OpenCode uses speech recognition so you can dictate prompts to your AI coding agent hands-free.",
|
|
"NSMicrophoneUsageDescription": "OpenCode uses the microphone to capture your voice when using speech-to-text input.",
|
|
"NSPhotoLibraryUsageDescription": "OpenCode can attach images from your photo library to messages to your AI coding agent.",
|
|
"NSCameraUsageDescription": "OpenCode can capture images with your camera and attach them to messages to your AI coding agent.",
|
|
"NSAppTransportSecurity": {
|
|
"NSAllowsArbitraryLoads": true,
|
|
"NSAllowsArbitraryLoadsInWebContent": false
|
|
},
|
|
"ITSAppUsesNonExemptEncryption": false
|
|
}
|
|
},
|
|
"android": {
|
|
"package": "ai.opencode.mobile",
|
|
"versionCode": 2,
|
|
"usesCleartextTraffic": true,
|
|
"adaptiveIcon": {
|
|
"foregroundImage": "./assets/adaptive-icon.png",
|
|
"backgroundColor": "#0F172A"
|
|
}
|
|
},
|
|
"web": {
|
|
"bundler": "metro",
|
|
"output": "static"
|
|
},
|
|
"plugins": [
|
|
"expo-router",
|
|
"expo-secure-store",
|
|
"expo-local-authentication",
|
|
"@sentry/react-native/expo",
|
|
[
|
|
"expo-notifications",
|
|
{
|
|
"icon": "./assets/icon.png",
|
|
"color": "#ffffff",
|
|
"sounds": []
|
|
}
|
|
],
|
|
[
|
|
"expo-image-picker",
|
|
{
|
|
"photosPermission": "OpenCode can attach images from your photo library to messages to your AI coding agent.",
|
|
"cameraPermission": "OpenCode can capture images with your camera and attach them to messages to your AI coding agent.",
|
|
"microphonePermission": false
|
|
}
|
|
],
|
|
[
|
|
"expo-speech-recognition",
|
|
{
|
|
"microphonePermission": "OpenCode uses the microphone to capture your voice when using speech-to-text input.",
|
|
"speechRecognitionPermission": "OpenCode uses speech recognition so you can dictate prompts to your AI coding agent hands-free."
|
|
}
|
|
]
|
|
],
|
|
"experiments": {
|
|
"typedRoutes": true,
|
|
"reactCompiler": true
|
|
}
|
|
}
|
|
}
|