* chore(release): v0.4.13 (versionCode 40) — waitlist retry queue reaches users
Ships 2f81d34 (#165): failed waitlist signups are persisted on-device and
retried on app foreground instead of silently falling back to mailto.
Until this Play release, no user is running that fix.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
* fix(waitlist): stamp the app version into the mailto escape hatch
AGE-100 asks for the post-release mailto count "split by app version where the
mail body allows it". It did not allow it: the body was "Sign me up!\n\nEmail: x"
and nothing else, so a mail from an unreachable pre-v0.4.8 sideload is byte-identical
to one from a current build whose retry queue leaked. Those two readings have
opposite meanings — the first is the known permanent cohort, the second is a defect.
Now the escape hatch appends "App: OpenCode Mobile v<version>" (app.json, same
source Sentry uses). Absence of the line == pre-v0.4.13 build. waitlist.ts stays
free of react-native/JSON imports; the screen injects the version.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
---------
Co-authored-by: engineer <engineer@macbookpro.lan>
Co-authored-by: Paperclip <noreply@paperclip.ing>
91 lines
3.0 KiB
JSON
91 lines
3.0 KiB
JSON
{
|
|
"expo": {
|
|
"name": "OpenCode",
|
|
"slug": "opencode-mobile",
|
|
"version": "0.4.13",
|
|
"orientation": "portrait",
|
|
"scheme": "opencode",
|
|
"userInterfaceStyle": "automatic",
|
|
"icon": "./assets/icon.png",
|
|
"splash": {
|
|
"image": "./assets/splash-icon.png",
|
|
"resizeMode": "contain",
|
|
"backgroundColor": "#0F172A"
|
|
},
|
|
"ios": {
|
|
"supportsTablet": true,
|
|
"bundleIdentifier": "cc.agentlabs.opencode",
|
|
"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.",
|
|
"NSLocalNetworkUsageDescription": "OpenCode uses your local network to connect to self-hosted OpenCode servers running on your LAN.",
|
|
"NSAppTransportSecurity": {
|
|
"NSAllowsArbitraryLoads": true,
|
|
"NSAllowsArbitraryLoadsInWebContent": false
|
|
},
|
|
"ITSAppUsesNonExemptEncryption": false
|
|
}
|
|
},
|
|
"android": {
|
|
"package": "cc.agentlabs.opencode",
|
|
"versionCode": 40,
|
|
"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",
|
|
{
|
|
"organization": "vibetechnologies",
|
|
"project": "opencode-mobile"
|
|
}
|
|
],
|
|
[
|
|
"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."
|
|
}
|
|
],
|
|
"expo-localization"
|
|
],
|
|
"experiments": {
|
|
"typedRoutes": true,
|
|
"reactCompiler": true
|
|
}
|
|
}
|
|
}
|