Voice exit leaves hidden overlay owning the thread; primary UI remains thinking
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
Voice exit leaves hidden overlay owning the thread; primary UI remains thinking
Desktop package: OpenAI.Codex 26.903.9818.0, running as ChatGPT.exe on Windows. Built-in Check for Updates reports up to date.
User impact: after ending voice, the main UI can remain thinking indefinitely and submitted text/replies appear missing. Force-quit/relaunch recovers it. Repeated during the same day.
Observed sequence on September 10, 2026 (UTC):
- 20:05:10: avatarOverlay became thread owner; primary changed owner to follower.
- 21:07:15: thread/realtime/stop succeeded.
- No later ownership transition released the overlay in that desktop run.
- 21:09 onward: hidden avatarOverlay sent turn/steer requests that returned "no active turn to steer"; built-in fallback immediately started new turns successfully.
- Persisted session confirms completed final answers at 21:07:20, 21:09:15, 21:10:04, 21:10:26, and 21:11:12.
- Navigating away/back at 21:10 did not transfer ownership: primary re-entered as follower of the same hidden overlay.
- After relaunch, primary became owner at 21:11:34. Subsequent turns completed normally; no no-active-turn failures appeared in the new run.
Important: the no-active-turn fallback itself works. Backend computation is not hung in these examples. The evidence points to thread ownership/state synchronization between the hidden avatar overlay and main window after realtime stop. Exact causal code defect is not established.
Suggested investigation: ownership lifecycle and final turn-state propagation after realtime stop, including owner release/transfer and primary rehydration from persisted completed turns.
Acceptance test: start voice from an existing thread, end it, send text, confirm exactly one completed answer appears and persists, with no permanent thinking indicator or force-quit. Repeat across several voice-end cycles. Include the floating overlay path.
This report contains no raw conversation, credentials, private thread identifiers, usernames, or full logs.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Trace the ownership lifecycle around realtime stop, hidden avatarOverlay ownership, primary-window rehydration, and persisted completed turns. Reproduce the floating-overlay path by ending voice, then sending text across several cycles. Done means one completed answer persists each time, the primary UI stops thinking, ownership transfers correctly, and no force-quit is needed.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- desktop
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100