This commit is contained in:
snowspeeder committed 2026-08-31 19:50:46 -04:00
1 parent c9c25f86eb
commit 40aaf4fea7
56 files changed
+5683 -179

No files matched your search

+28 -16
View File
@@ -182,26 +182,38 @@ Web parity checklist (vs /Users/shane/dev/hope-voice-api/web/app.js):
- [ ] Web-only: drag-to-seek on waveform (iOS uses slider — acceptable)
- [ ] Web-only: keyboard shortcuts (N/A on iOS)
## Project status (final, 2026-08-30)
## Project status (updated 2026-08-31)
All 10 phases complete. Full web parity achieved and verified in simulator to the extent
the environment allows.
All 10 phases implemented. Simulator verification covers the core paths listed below,
but **full web parity is not yet complete** — several areas remain pending device
qualification, server-side changes, or a separate UI redesign task.
**Verified in simulator:** token auth + LiveKit connect (with retry), agent_ready, state
machine driven by remote audio, text-mode transcripts (user + agent finals), voice/model
pickers with sync-on-join + persistence, media reconciliation/UI/Range proxy/polling/
reporting, media search/library/delete/add-stream, background tasks panel with real
task_events, stale-room guards, error states, accessibility labels. Zero build warnings.
**Verified in simulator (historical + current):** token auth + LiveKit connect (with
retry), agent_ready, state machine driven by remote audio, text-mode transcripts (user +
agent finals), voice/model pickers with sync-on-join + persistence, media
reconciliation/UI/Range proxy/polling/reporting, media search/library/delete/add-stream,
background tasks panel with real task_events, stale-room guards, error states,
accessibility labels.
**Device-only (see docs/DEVICE_TESTING.md):** mic capture with real speech (sim returns
-4010), live listening/thinking/barge-in states from local audio, wake lock on physical
screen-off, audible media playback, audio interruption behavior, mic-denied fallback UX.
**Pending device qualification (see docs/DEVICE_TESTING.md):** mic capture with real
speech (sim returns -4010), live listening/barge-in states from local audio, wake lock
on physical screen-off, audible media playback, audio interruption behavior,
mic-denied fallback UX.
**Open server-side items (not app bugs):**
1. iOS-decodable media format — library tracks are webm; AVPlayer can't decode it (-11828).
Server must serve m4a/aac/mp3 for audible playback on iOS. No client change needed.
2. Cert pin rotation — the self-signed cert regenerates at container start, breaking the
SHA-256 pin in TLSPinning.swift. Re-export the hash after each server restart (README).
**Pending / blocked:**
- UI redesign (Hope visual identity, agent visualizer bars, app icon, reduced-motion,
transcript VoiceOver semantics) — specified in `ui-ux-spec.md`, not yet implemented.
This is a separate scoped task, not part of the current correctness pass.
- Supported-format media playback — library tracks are webm; AVPlayer can't decode it
(-11828). Server must serve m4a/aac/mp3 for audible playback on iOS.
- Cert pin rotation — the self-signed cert regenerates at container start, breaking the
SHA-256 pin in TLSPinning.swift. Re-export the hash after each server restart (README).
**Correctness corrections (iteration 01–04):** transcript dedupe symmetry + time-bounding,
terminal failure cleanup, text-mode mic invariant, media interruption pause/resume,
HTTP 206 total length, resource loader hardening, TLS pin scoping, conversation state
inference alignment, stale media publish guards, server config semantics, visible
history/clear, model picker copy. See `.artifacts/` for detailed reports.
## Subagent notes
- Small context model: keep prompts self-contained, point at this file + UPDATE_PATH.md