qwen-code/docs/design/web-shell/webshell-voice-button-visibility.md
Heyang Wang 9223de3517
docs(web-shell): organize design documents by feature area (#8304)
Group the existing Web Shell design materials under a dedicated directory
so related specifications and supporting assets are easier to navigate.

- Move Web Shell design documents into the web-shell directory
- Keep pane header action screenshots alongside their design notes
- Normalize selected filenames to use the web-shell spelling

Co-authored-by: heyang.why <heyang.why@alibaba-inc.com>
2026-08-01 14:32:20 +00:00

1.3 KiB

WebShell Voice Button Visibility

Summary

The WebShell voice button is visible only when the workspace explicitly enables voice, the embedding host allows the voice toolbar action, and the daemon advertises the voice_transcribe capability.

Decision

The host toolbar filter remains the outer gate. When the host allows voice, VoiceButton reads the existing /workspace/voice status and accepts only enabled: true. A missing capability avoids the status request entirely.

The status is fail-closed: the button stays hidden while the request is pending or after it fails. Each settings event invalidates the previous result and starts a fresh request. Results are tied to the workspace client and settings version so a late response cannot re-enable a stale configuration.

If a previously enabled gate becomes invalid during an active capture, the capture is aborted before the control remains hidden so the microphone and voice connection are released.

Boundaries

Voice model selection, available model discovery, and voice mode do not affect button visibility. Invalid model configuration continues to use the existing capture error path after the user clicks the button.

This change does not add a WebShell prop, daemon endpoint, SDK type, or configuration field.