Repository navigation
Desktop: voice mode, the one time the mic listens, started from the chat header - #340
Merged
Merged
Conversation
…m the chat header (#253) The owner's model, and the only three words for it: voice mode, the wake word, an interaction. - Voice mode, on and off from a headset button in the chat header (where the host can capture the microphone, a new `microphone` capability), is the only time the mic listens. It replaces the "Always listen" setting and is remembered on this device. The voice bar stands in for the composer while it is on. - In voice mode the wake word starts an interaction; speech without it is ignored. Outside voice mode nothing is heard — no dictation, and the wake word means nothing. - An interaction sends everything said, no wake word again. Each one is a new conversation. It ends 30 s after the assistant's last reply has finished streaming and speaking with nothing said since, and voice mode waits for the wake word again; the assistant's app_end_interaction does the same. - Push-to-talk (Ctrl+Space) is removed. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014L9pxjp1MTSJe5DZG9A9sv
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #253
The flow as diagrams: https://claude.ai/artifact/TJbMdQFqz9NdJPuYcC3u3K
The model (the owner's, agreed in session)
Three words, used the same way in the UI, the code and the docs: voice mode, the wake word, an interaction. Nothing is a "call" or an "interactive mode" any more.
microphonecapability: always in Electron, a secure context in a browser).VoiceModeBar) replaces the message box.app_end_interactiontool ends it the same way.This changes #337's behaviour, merged earlier today: outside voice mode the wake word no longer starts anything.
Tests
New tests, each run first against the unfixed code and failed:
state/voiceMode.test.ts(4): voice mode on waits without an interaction; off ends it and stops the mic; an interaction ending leaves voice mode on; the setting is remembered and restored.ui/chat/voiceMode.test.tsx(9), replacingwakeWord.test.tsx:voiceMode.spec.ts(3), using Chromium's fake mic:After the fix:
settings.spec.ts: 13/13.settings.spec.ts's voice-picker locator is nowgetByRole('combobox', { name: 'Voice' }), becausegetByLabel('Voice')also matched "Start voice mode".npm test: all suites pass.npm run typecheck: clean.Not covered
ort-wasm-simd-threaded.mjsoverfile://). The specs therefore check the controls and state, not real speech.🤖 Generated with Claude Code
https://claude.ai/code/session_014L9pxjp1MTSJe5DZG9A9sv