Files
opencode-mobile/distribution/fdroid-submission/metadata.yml
Den c9a57901c4 fix(ci): CUA smoke true-E2E with local opencode server (#15) (#18)
* chore: repoint OpenCode links to agentlabs.cc/opencode

agentlabs.cc/opencode and /opencode/privacy are now live (200). Repoint
README, distribution listings (Play/App Store/F-Droid/IzzyOnDroid/iOS),
docs, and in-app privacy links (settings + telemetry consent) from
www.vibebrowser.app/opencode to the canonical agentlabs.cc hub.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(ci): run local opencode server for CUA smoke true-E2E (#15)

GitHub-hosted runners can't reach the Tailscale dev server
(100.108.64.76:4096), so the CUA smoke always failed at session creation.

- Install opencode-ai and run `opencode serve` on the runner host; the
  Android emulator reaches it via 10.0.2.2. OPENCODE_URL now points there.
- Healthcheck /global/health before launching the app; dump server log on
  failure for diagnosis.
- Add --only-connect-scenario to the smoke script and run just the
  connect-and-verify-sessions path in CI: deterministic, needs no model
  backend. The scenario now creates a session if the list is empty, so a
  fresh server still yields a non-empty list.

This makes the smoke a true E2E and also exercises the #10 sessions-list
rendering path against a real server.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(ci): emulator smoke script is dash, not bash — drop brace-group healthcheck

android-emulator-runner runs the script: block under /usr/bin/sh (dash). The
multi-line `|| { ...; }` healthcheck was a dash syntax error (end of file
unexpected), failing the step before the smoke ran. Replace with a non-fatal
one-line re-check; the server was already health-gated in the prior step.

* docs(tasks): record smoke CI round 1 failure + dash fix

---------

Co-authored-by: engineer <engineer@opencode.ai>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-01 15:32:06 -07:00

108 lines
4.2 KiB
YAML

# F-Droid metadata for ai.opencode.mobile
# Target file path in fdroiddata: metadata/ai.opencode.mobile.yml
#
# BEFORE FILING THE MR:
# 1. Replace <SIGNING_KEY_SHA256_FINGERPRINT> with the actual colon-separated hex fingerprint
# (found in distribution/SIGNING-KEY-FINGERPRINTS.md)
# 2. Replace <FIRST_GITHUB_RELEASE_TAG> with the first tag that has a signed APK attached
# (e.g. v0.2.4)
# 3. Verify the build steps produce a matching APK against AllowedAPKSigningKeys
#
# Do NOT file this MR until:
# - First Google Play release is live (establishes signing key in production use)
# - Sentry opt-in gate is merged to main (anti-feature Tracking avoided)
# - You have the exact colon-separated SHA-256 key fingerprint confirmed
Categories:
- Development
License: MIT
AuthorName: VIBE TECHNOLOGIES, LLC
AuthorEmail: support@vibebrowser.app
WebSite: https://agentlabs.cc/opencode
SourceCode: https://github.com/dzianisv/opencode-mobile
IssueTracker: https://github.com/dzianisv/opencode-mobile/issues
Changelog: https://github.com/dzianisv/opencode-mobile/releases
Summary: Drive your self-hosted AI coding agent from your phone
Description: |-
OpenCode Mobile is a free, open-source (MIT) client for the opencode AI coding
agent (sst/opencode). Connect to your self-hosted opencode server and drive
AI-powered coding sessions from your phone — no proprietary backend, no mandatory
accounts, no tracking by default.
'''Key features'''
* Multiple connection types — local network, secure tunnels (Cloudflare, ngrok),
or any self-hosted opencode instance
* Biometric unlock — fingerprint / PIN to keep your sessions private
* Real-time streaming chat — watch your AI agent think and respond live
* File diff viewer — see exactly what code changes the agent proposes
* Multi-session management — start, resume, and switch between coding sessions
* Tool call approval — review and approve agent actions before they run
'''Self-hosted first'''
The app requires your own opencode server. Your AI traffic goes directly to your
backend (Claude, GPT, Gemini, local models — your choice). No middleman required.
An optional hosted backend ("opencode Cloud") is planned as a future paid service,
but the client is always free and fully functional without it.
'''Crash reporting'''
Sentry crash reporting is opt-in with default OFF. Code, prompts, and AI responses
never leave your own server.
'''Anti-features'''
NonFreeNet: the opencode server you connect to may connect to proprietary AI
services (OpenAI, Anthropic, Google). The app itself contains no proprietary
network code.
AntiFeatures:
NonFreeNet:
en-US: >-
The app connects to a user-self-hosted opencode server which may in turn
connect to proprietary AI services (OpenAI API, Anthropic API, Google Gemini).
The app itself is fully open source and does not require any specific provider.
RepoType: git
Repo: https://github.com/dzianisv/opencode-mobile
Builds:
- versionName: '0.3.1'
versionCode: 2
commit: v0.3.1
subdir: android
sudo:
- apt-get update
- apt-get install -y nodejs npm
init:
- npm install --prefix .. --legacy-peer-deps
- npx --prefix .. expo prebuild --platform android --non-interactive
gradle:
- release
ndk: 26.1.10909125
# Node 20+ required for Expo SDK 52+
# prebuild regenerates android/ from app.json + package.json
# The signed AAB/APK is then compared against AllowedAPKSigningKeys
prebuild:
- cd .. && npm install --legacy-peer-deps
- cd .. && npx expo prebuild --platform android --non-interactive
# AllowedAPKSigningKeys pins our release signing key.
# F-Droid will serve our pre-signed APK rather than re-signing with their key.
# This requires reproducible builds (identical output across machines).
AllowedAPKSigningKeys: 0c259d94e0ffea5d6319614b229d4b6bdc22de1f56e38e76948398d2df6aa099
AutoUpdateMode: Version v%v
UpdateCheckMode: Tags
UpdateCheckData: https://raw.githubusercontent.com/dzianisv/opencode-mobile/main/app.json|"version":\s*"([^"]+)"|.|.
CurrentVersion: '0.3.1'
CurrentVersionCode: 2