Problem
A host tab that stays open across SayPi sign-out or sign-in does not reconcile its running audio provider with the new authentication state, even though a fresh provider lookup can return the correct provider.
Scope and evidence
This concerns the running audio actor and host-audio ownership on Pi and the other supported chat hosts. It is separate from preserving the saved voice (#608), rendering the correct Pi sign-in notice (#607), the catalog invalidation fixed in #456, and the lost audio-element binding fixed in #602. The saved voice should remain a preference throughout an auth transition.
Source audit at d5b28cd394186a31774497224523b85f10155dee found:
The missing subscription also existed before this release work; this is a separate follow-up, not a new regression attributed to #608. The audit establishes the missing handoff in source. An attended sign-out/sign-in playback reproduction has not yet been performed, so the exact audible effect across hosts and browsers still needs verification.
Reproduction / verification
- Add a hermetic integration case using the real output actor, an authenticated context, and a saved remote voice. Initialize the provider through the normal event path.
- Reconcile sign-out through the existing auth-status path without reloading the page or selecting another voice. Compare the actor provider and host-mute ownership with a fresh
getActiveAudioProvider result. The current wiring leaves the actor on its previous provider.
- Repeat from signed-out initialization through sign-in with the saved choice unchanged. Verify the next remote stream is accepted without requiring a second explicit voice selection.
- During an attended host check, repeat the two transitions in an already-open Pi tab, then confirm the relevant behavior on Claude/ChatGPT. Record actual audible output, host mute state, and browser. Run a bounded confirmation turn only when authorized; no unattended account traffic is needed.
Expected: effective provider, actor acceptance, and host-audio ownership agree after auth reconciliation. Actual source path: JWT state and menu presentation can change while the running actor retains the old provider.
Acceptance criteria
- Both auth-transition directions update the effective running provider without a page reload or another voice selection.
- Signed-out Pi can use its native voice; signing in can resume an eligible saved remote voice. Hosts without a usable native fallback do not claim unavailable SayPi playback.
- A saved remote voice survives the transition, and a newer explicit voice choice wins over an older asynchronous reconciliation.
- Hermetic tests exercise the real actor and host-mute seam, including a transition during an outstanding preference read; getter-only assertions are insufficient.
- An attended confirmation records the supported-host behavior and any Chrome/Firefox differences without claiming unperformed checks.
Filed from independent Codex release review. Auth/JWT implementation, if required, remains subject to the repository's existing review and founder-sign-off rules.
Problem
A host tab that stays open across SayPi sign-out or sign-in does not reconcile its running audio provider with the new authentication state, even though a fresh provider lookup can return the correct provider.
Scope and evidence
This concerns the running audio actor and host-audio ownership on Pi and the other supported chat hosts. It is separate from preserving the saved voice (#608), rendering the correct Pi sign-in notice (#607), the catalog invalidation fixed in #456, and the lost audio-element binding fixed in #602. The saved voice should remain a preference throughout an auth transition.
Source audit at
d5b28cd394186a31774497224523b85f10155deefound:saypi:auth:status-changed.audio:changeProvider. No auth-change listener dispatches that update. The voice-menu auth listener refreshes its presentation only.The missing subscription also existed before this release work; this is a separate follow-up, not a new regression attributed to #608. The audit establishes the missing handoff in source. An attended sign-out/sign-in playback reproduction has not yet been performed, so the exact audible effect across hosts and browsers still needs verification.
Reproduction / verification
getActiveAudioProviderresult. The current wiring leaves the actor on its previous provider.Expected: effective provider, actor acceptance, and host-audio ownership agree after auth reconciliation. Actual source path: JWT state and menu presentation can change while the running actor retains the old provider.
Acceptance criteria
Filed from independent Codex release review. Auth/JWT implementation, if required, remains subject to the repository's existing review and founder-sign-off rules.