Goal
Make a voice conversation survive page navigation and tab refocus within the HAPI web UI, with an unmissable indicator of which session is currently receiving voice.
Spec
docs/plans/2026-06-03-overseer-build-sequence.md Step 1 (primary)
docs/plans/2026-06-03-overseer-framing.md "Persistence across devices is load-bearing infrastructure", "The chrome-button insight"
Acceptance
Out of scope
Dependencies
Suggested PR breakdown
1 PR: voice persistence + receiving-session indicator.
Risks
- Cross-device persistence is genuinely hard (server-side voice session state, multi-client attach, transcript replay, graceful failure when worker sessions die mid-convo). Step 1 only requires within-tab persistence; cold-attach is the MVP target and mid-session live handoff is explicitly post-MVP.
Goal
Make a voice conversation survive page navigation and tab refocus within the HAPI web UI, with an unmissable indicator of which session is currently receiving voice.
Spec
docs/plans/2026-06-03-overseer-build-sequence.mdStep 1 (primary)docs/plans/2026-06-03-overseer-framing.md"Persistence across devices is load-bearing infrastructure", "The chrome-button insight"Acceptance
voiceFocus: { kind: 'session' | 'overseer' | 'fleet', ref?: string }so the later chrome-button move does not require a rewrite.Out of scope
Dependencies
Suggested PR breakdown
1 PR: voice persistence + receiving-session indicator.
Risks