Commit Graph

214 Commits

Author SHA1 Message Date
Dennis V
678750d16f docs: add Bitwarden secrets management instructions to AGENTS.md 2026-05-23 04:02:45 +00:00
Den
30be6636c2 feat(diagnostics): active connect-failure triage + Sentry + in-app share (#2)
* feat(diagnostics): active connect-failure triage + Sentry + in-app share

Replaces the opaque "Connection Failed" / "Network request failed" dead-end
with on-device diagnostics that classify *why* a connect attempt failed.

On failure (quick connect and edit-connection test), the app now:
- runs parallel probes: target /global/health, target root, and a public
  204 endpoint (internet reachability check)
- classifies the cause: malformed-url, no-internet, server-unreachable,
  health-failed, tls-error, timeout
- shows a plain-English summary + a "Share report" button that copies a
  full report (target URL, per-probe results w/ error.cause, device/app
  info, recent log ring-buffer) to the clipboard and opens the share sheet
- captures the same structured context to Sentry (auto-upload), gated on
  EXPO_PUBLIC_SENTRY_DSN so dev/CI builds work without secrets

New: src/lib/logbuffer.ts (ring buffer + logger), src/lib/diagnostics.ts
(regex URL parse — Hermes URL is incomplete — probe + report + share),
src/lib/sentry.ts (no-op-without-DSN wrapper, scrubs basic-auth from URLs).

Wired Sentry.wrap around RootLayout and initSentry() at module load.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* ci(sentry): wire Sentry DSN + source-map upload env into build; bump to 0.2.2

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 17:07:44 -07:00
Den
e9991cb61b fix(connect): fix tailnet 'Connection Failed' (pasted-URL double scheme) + surface real error (#1)
* fix(connect): surface real connection error instead of generic dialog

testConnection swallowed the actual fetch error and returned a bare
boolean, so every failure collapsed to the same "Connection Failed"
text. On-device this made tailnet/LAN connect failures impossible to
diagnose (DNS vs timeout vs 401 vs cleartext all looked identical).

- testConnection now returns { ok, error } with the real error message
- add.tsx and [id].tsx dialogs show the error + target URL, plus a
  Tailscale/MagicDNS hint
- IP field keyboard: decimal-pad -> url, so tailnet hostnames can be
  typed (not just pasted)

Verified backend is healthy and reachable over tailnet (health 200,
port 4096 open in packet filter, cleartext present in shipped v0.2.0
APK), so the failure is client-side and was previously unobservable.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(connect): normalize pasted IP/URL to avoid double scheme

Quick-connect blindly did `http://${ip}:${port}`. Pasting a full URL
(e.g. "http://100.108.64.76:4096", as the clipboard auto-paste offers)
produced "http://http://100.108.64.76:4096:4096" -> malformed URL ->
"Network request failed". This is the real tailnet connect failure:
typing a bare IP worked, pasting the displayed URL did not.

buildUrl now strips an existing http(s) scheme, drops any path, and
lifts a trailing :port out of the host field, so pasted full URLs,
host:port, and bare hosts all resolve to a single well-formed URL.

Reproduced and fixed on the Android emulator (paste full URL: fails
before, connects after).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 04:44:13 -07:00
Ubuntu
d9794a4817 fix(ci): add --legacy-peer-deps to npm install for peer dep conflicts 2026-05-19 09:07:19 +00:00
Ubuntu
5071c445ac docs: add HANDOFF.md with project status and memory notes 2026-05-19 09:06:32 +00:00
Ubuntu
37bb8bfe72 feat(cua): add 'send' action with UI auto-locate, fix coordinate accuracy, both scenarios pass
- Added 'send' action type that uses uiautomator XML to find the rightmost
  clickable element in the bottom input bar (the send button)
- Added screen resolution (1080x2400) to LLM context for better coordinate estimation
- Updated system prompt to instruct model to use 'send' action instead of manual tap
- Updated scenarios with clearer step-by-step instructions
- Both send_message and multi_turn scenarios pass reliably
2026-05-19 08:26:48 +00:00
Ubuntu
5473a488fc feat(ci): add CUA smoke test workflow, improve screenshot reliability, add multi-turn scenario 2026-05-19 07:47:04 +00:00
Ubuntu
7804b7a3b9 fix(cua): add Azure OpenAI support, fix max_tokens → max_completion_tokens, increase screencap timeout 2026-05-19 06:24:29 +00:00
Ubuntu
e08a4a7a36 Fix screenshot capture and add multi-provider support
- Fix adb exec-out binary pipe for screenshot capture
- Add XAI, Azure, and any OpenAI-compatible endpoint support
- Add rate limit retry logic
- Document all supported provider configurations
2026-05-19 02:17:23 +00:00
Ubuntu
4f39967606 Add LLM-powered Android CUA smoke test script
Implements a computer-use agent loop for E2E testing:
screenshot → vision LLM → action → repeat

Supports OpenAI, Gemini, xAI via OpenAI-compatible endpoints.
Inspired by openai/openai-cua-sample-app, MobileAgent, AppAgent.
2026-05-19 01:08:03 +00:00
Ubuntu
10b4ca2ced fix: enable cleartext HTTP traffic on Android (required for Tailscale/LAN connections) 2026-05-18 05:44:53 +00:00
Ubuntu
4ad09eae82 feat: add Play Store publish workflow and signing config 2026-05-17 21:11:43 +00:00
Ubuntu
ca345556e3 fix: generate debug keystore in CI for release signing 2026-05-17 20:09:16 +00:00
Ubuntu
1843a7c37e Initial commit: OpenCode mobile app (extracted from opencode monorepo) 2026-05-17 19:52:54 +00:00