Skip to content

Step 1: Voice persistence + receiving-session indicator #21

@heavygee

Description

@heavygee

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

  • Voice conversation survives page navigation within the HAPI web UI.
  • Voice conversation survives tab refocus.
  • Visible indicator on the receiving session card AND a persistent pill in chrome ("voice → session X").
  • Navigating to a different session while voice is active in session A keeps the indicator showing "voice → A"; operator can type into session B at the same time (multi-modal multi-task by design).
  • If the underlying receiving session goes down mid-convo, the voice layer surfaces it ("session A just dropped — end voice or spawn a fresh session?") rather than dying silently.
  • Indicator data model accommodates future states: 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

  • 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    architectureArchitectural / substrate workfleet-overseerFleet attention-arbitration architecturemvpPart of the Overseer MVP acceptance bar (Steps 1-4)voiceVoice conversation / transport surface

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions