From e29f381aab7ae0d75a533e8777c811f4002f494d Mon Sep 17 00:00:00 2001 From: Dennis V <2119348+dzianisv@users.noreply.github.com> Date: Tue, 23 Jun 2026 15:36:35 +0000 Subject: [PATCH] =?UTF-8?q?docs(tdd):=20correct=20stale=20references=20?= =?UTF-8?q?=E2=80=94=20clarify=20path.get()/serverHome,=20add=20speech.ts,?= =?UTF-8?q?=20fix=20version=20note?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - §4: path.get() is still live (feeds serverHome → directory switcher ~ expansion); only the dead session-scoping plumbing (sessionScope.ts) was removed in 472ff8d. Clarify rather than delete, since the call site is not dead. - §2: document src/lib/speech.ts (experimental voice input; PRD §7 scope caveat). - §7: app.json and package.json versions are kept in sync since v0.4.6 (both 0.4.6). Refs #43 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- docs/tdd.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/tdd.md b/docs/tdd.md index 3dca015..584ee98 100644 --- a/docs/tdd.md +++ b/docs/tdd.md @@ -37,6 +37,7 @@ src/ │ ├── diagnostics.ts Active connection probes + crash report builder + share │ ├── logbuffer.ts 200-line ring buffer mirroring console output │ ├── notifications.ts Notification setup + categories + dedupe +│ ├── speech.ts Voice input via expo-speech-recognition (experimental; PRD §7 lists voice beyond OS dictation as out-of-scope for v0.x) │ └── types.ts Re-exported model/connection types └── stores/ ├── auth.ts Biometric state @@ -73,7 +74,7 @@ scripts/ E2E test rig (LLM-driven CUA Android smoke) 1. `loadConnections()` reads stored connections from SecureStore at startup. 2. Active connection (if any) builds a `Client` via `createClient({ baseUrl, directory, auth })`. -3. `client.project.current()` and `client.path.get()` fill in project + server-home metadata; failures are non-fatal (server might be offline). +3. `client.project.current()` and `client.path.get()` fill in project + server-home metadata; failures are non-fatal (server might be offline). `serverHome` is still consumed by the directory switcher for `~` expansion — but the former *session-scoping* use of this metadata (`sessionScope.ts`, which always resolved to the default client) was dead and removed in `472ff8d`. 4. The `useEffect` in `_layout.tsx` keyed on `client` starts the SSE event loop the moment a client exists, and stops it when the user removes/changes the connection. 5. **Active diagnostics on failure.** When a connection is added or tested and fails, `src/lib/diagnostics.ts:probeConnection` runs three parallel probes (health, server-root, public-internet) and classifies the cause (`tls-error`, `timeout`, `no-internet`, `server-unreachable`, `health-failed`, `malformed-url`, `unknown`). The result drives both the UI alert and the Sentry capture. @@ -163,7 +164,7 @@ A test for this would feed a basic-auth URL into a fake event and assert the scr ## 7. Versioning & Releases -- Single source of version: `app.json` → `expo.version` (e.g. `0.2.3`). `package.json` version is unused. +- Single source of truth for the human-facing version is `app.json` → `expo.version` (e.g. `0.4.6`). Since v0.4.6 the `package.json` `version` is kept in sync with it (both are bumped together on release); earlier builds left `package.json` untouched. - Git tag `v` triggers `.github/workflows/build.yml` which builds an APK and creates a GitHub Release. - Sentry `release` is set to `opencode-mobile@` so source maps (uploaded by `sentry-cli` during build) line up with reported stack frames.