openclaw - 💡(How to fix) Fix macOS voice mode: cannot re-activate after 120s timeout without switching windows [1 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#49448Fetched 2026-04-08 00:55:09
View on GitHub
Comments
1
Participants
2
Timeline
1
Reactions
0
Timeline (top)
commented ×1

After the voice session hits the 120-second hard stop timeout, voice mode cannot be re-activated by double-clicking or any button interaction. The only workaround is to switch to a different window and switch back, at which point voice mode works again.

Root Cause

Root Cause (suspected)

Fix Action

Workaround

Switch to another window and back to restore voice mode.

RAW_BUFFERClick to expand / collapse

Bug Report

Version: 2026.3.13 OS: macOS 26 (Darwin 25.3.0, arm64)

Summary

After the voice session hits the 120-second hard stop timeout, voice mode cannot be re-activated by double-clicking or any button interaction. The only workaround is to switch to a different window and switch back, at which point voice mode works again.

Steps to Reproduce

  1. Enable voice mode in the TUI
  2. Speak something to activate the session
  3. Let it time out naturally (do not manually dismiss — wait the full 120 seconds)
  4. Try to re-activate voice mode via double-click / button
  5. Voice mode does not come back

Expected Behavior

Voice mode should restart cleanly after timeout, just as it does after a manual X-dismiss.

Actual Behavior

Voice mode appears dead. Re-activation via double-click does nothing. Workaround: switch focus to a different window and back — this triggers a focus event that refreshes the voice runtime, restoring functionality.

Root Cause (suspected)

The 120s hard stop timeout path does not call VoiceWakeRuntime.refresh() on completion. Manual X-dismiss was hardened to always call refresh (per the voice-overlay docs), but the timeout path appears to have been missed. The window-switch workaround works because focus events trigger a runtime refresh as a side effect.

Workaround

Switch to another window and back to restore voice mode.

extent analysis

Fix Plan

To fix the issue, we need to call VoiceWakeRuntime.refresh() after the 120-second hard stop timeout. Here are the steps:

  • Modify the timeout handler to call VoiceWakeRuntime.refresh() on completion
  • Ensure the refresh method is called regardless of whether the timeout is triggered manually or naturally

Example code:

// Assume 'timeoutHandler' is the function handling the 120-second timeout
timeoutHandler = () => {
  // Existing timeout logic...
  VoiceWakeRuntime.refresh(); // Add this line to refresh the voice runtime
};

Alternatively, if the timeout handler is already defined, you can modify it to include the refresh call:

// If using a setTimeout function
setTimeout(() => {
  // Existing timeout logic...
  VoiceWakeRuntime.refresh(); // Add this line to refresh the voice runtime
}, 120000); // 120-second timeout

Verification

To verify the fix, follow these steps:

  • Enable voice mode in the TUI
  • Speak something to activate the session
  • Let it time out naturally (do not manually dismiss — wait the full 120 seconds)
  • Try to re-activate voice mode via double-click / button
  • Voice mode should restart cleanly and be re-activatable

Extra Tips

  • Ensure that the VoiceWakeRuntime.refresh() method is properly implemented and does not introduce any new issues.
  • Consider adding logging or debugging statements to verify that the refresh method is being called correctly.
  • Review the code to ensure that the timeout handler is properly cleaned up when the voice mode is deactivated or the window is closed.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING