The v0.4.15 release commit (f564869) bumped package.json and app.json
`expo.version` but left `android/app/build.gradle` at versionCode 41 /
versionName "0.4.14" and app.json `android.versionCode` at 41. Consequences,
all observed on tag v0.4.15:
- `npm run check:versions` fails, so the F-Droid publish (run 31820921979)
died at its first step and the `release` job in build.yml never ran — no
GitHub release exists for v0.4.15. That is the source the new in-app update
check polls, so the mechanism this release exists to ship had nothing to
find.
- versionCode 41 is v0.4.14's. F-Droid and every direct-APK install key
upgrades off versionCode, so even a successful publish would not have been
offered to the 0.4.10/0.4.14 cohort. Play was unaffected only because the
publish workflow overrides the code with run_number+100.
Fix is the missing half of the release bump: versionCode 42 / versionName
0.4.15, plus the changelog files named after the code (distribution/ for the
record, fastlane/ for F-Droid).
check-version-parity.mjs now also requires distribution/changelogs/<code>.txt
to exist and to describe the version being released, and the fastlane copy to
exist. A stale versionCode is otherwise internally consistent and silent;
verified it discriminates — code 41 with version 0.4.15 fails, 42 passes.
Tests: npm test 320 pass.
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.15",
|
|
"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": 42,
|
|
"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
|
|
}
|
|
}
|
|
}
|