docs/platforms/mac/voicewake.md
swabbleTriggerWords). On match it starts capture, shows the overlay with partial text, and auto-sends after silence.VoiceWakeRuntime.VoiceWakeOverlayController with committed/volatile coloring.Previously, if the overlay got stuck visible and you manually closed it, Voice Wake could appear “dead” because the runtime’s restart attempt could be blocked by overlay visibility and no subsequent restart was scheduled.
Hardening:
VoiceWakeRuntime.refresh(...) via VoiceSessionCoordinator, so manual X-dismiss always resumes listening..flagsChanged monitor for right Option (keyCode 61 + .option). We only observe events (no swallowing).VoicePushToTalk: starts Speech immediately, streams partials to the overlay, and calls VoiceWakeForwarder on release.NSSound-loadable file (e.g. MP3/WAV/AIFF) for each event or choose No Sound.VoiceWakeForwarder.prefixedTranscript(_:) prepends the machine hint before sending. Shared between wake-word and push-to-talk paths.triggerVoiceEars(ttl:nil)); they drop after release.