* fix(sessions): use active connection client directly, remove roots filter Root cause A: loadSessions was calling clientForDirectory(serverHome) which scoped the session list to /home/azureuser — a different project than the server's active CWD. Sessions in the current project (e.g. opencode-mobile) were never returned. Root cause B: roots:true filtered out sessions that have a parentID (sub-task / AUTO-REVIEW sessions), hiding valid sessions from the list. Fix: use connState.client directly (the connection's active directory) and drop the roots filter so all sessions for that project are visible. Also adds a verify_session_list CUA smoke scenario that navigates back to the sessions tab after creating a session and asserts the list is non-empty — covering the regression path that was previously untested. * fix(sessions): fetch serverHome in addConnection so loadSessions shows correct sessions Root cause: addConnection() built the HTTP client but never fetched serverHome (only loadConnections and setActiveConnection did). When the user adds a new connection (fresh install / first sign-in), serverHome = null, so loadSessions fell through to connState.client (the server's CWD). On this dev server the CWD is the deploy directory — 11 old May-19 sessions that are not the user's recent work sessions. Fix: addConnection now fetches currentProject + serverHome via the same Promise.all as setActiveConnection, before calling set(). This ensures loadSessions immediately uses clientForDirectory(serverHome) → the global project → the user's actual recent parent sessions. Also adds --opencode-url flag to the CUA smoke script, which appends a connect_and_verify_sessions scenario that reproduces the regression: python scripts/android-cua-smoke.py --opencode-url http://100.108.64.76:4096 * fix(sessions): recover home scope after fresh connect Resolve stale deploy-only session list by recovering server home during first load and keeping regression coverage in default Android CUA smoke and CI. * chore(release): bump version to 0.4.0
83 lines
2.8 KiB
JSON
83 lines
2.8 KiB
JSON
{
|
|
"expo": {
|
|
"name": "OpenCode",
|
|
"slug": "opencode-mobile",
|
|
"version": "0.4.0",
|
|
"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": 3,
|
|
"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
|
|
}
|
|
}
|
|
}
|