Skip to content

fix(mobile): release iPhone voice session when leaving a thread - #51

Closed
macodev00 wants to merge 42 commits into
mainfrom
cursor/ios-voice-release-on-dispose-868b
Closed

macodev00 wants to merge 42 commits into
mainfrom
cursor/ios-voice-release-on-dispose-868b

Conversation

@macodev00

Copy link
Copy Markdown
Owner

What Changed

Leaving a thread while iPhone dictation is preparing, recording, or transcribing no longer blocks the next microphone tap with "Another voice recording is already active."

Cancel and dispose mark the shared voice session abandoned. The next start waits until the in-flight Apple call and its audio cleanup finish, then records. A session that is still active is still rejected.

Why

dispose() and cancel() aborted the controller but left the shared session lock held until AppleTranscription.prepare() / .transcribe() returned. Those calls cannot be interrupted, so the next Thread screen failed to start dictation. Releasing the lock immediately is unsafe: releaseRecording() is process-wide, and a late cleanup would tear down the replacement recording.

Fixes pingdotgg#13743

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • No UI changes (logic-only; screenshots and video do not apply)

Grok 4.7 in Cursor.

Open in Web Open in Cursor 

aaditagrawal and others added 30 commits September 25, 2026 16:04
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
)

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
…rotocol variables (pingdotgg#13492)

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…and WSL backends (pingdotgg#13641)

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
…gg#13705)

Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…13701)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…13685)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…gdotgg#13684)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…gdotgg#13698)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…equests (pingdotgg#13704)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…gg#13694)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ingdotgg#13688)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
pingdotgg#13693)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…oading it twice (pingdotgg#13683)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… in memory (pingdotgg#13686)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…he whole thread list (pingdotgg#13691)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
t3dotgg and others added 12 commits September 25, 2026 20:38
…ngdotgg#13697)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…dotgg#13689)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
pingdotgg#13669)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…irectory (pingdotgg#13695)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Leaving a thread mid-dictation kept the shared voice lock until the native Apple call finished, so the next microphone tap failed with "already active." Cancel and dispose mark that session abandoned. The next start waits for the in-flight call and audio cleanup, then records. A session that is still active is still rejected.

Fixes pingdotgg#13743
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Sep 26, 2026
@macodev00 macodev00 closed this Sep 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: iPhone voice input says a transcription is already active after leaving a thread mid-dictation instead of cancelling it