hermes - 💡(How to fix) Fix fix(tui): /voice off does not clear TTS state, and status bar missing TTS indicator

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…

Root Cause

The voice.toggle handler in tui_gateway/server.py only sets HERMES_VOICE="0" on off, but never clears HERMES_VOICE_TTS. Since the tts action branch requires _voice_mode_enabled() (which reads HERMES_VOICE), the user is deadlocked — TTS is ON but cannot be toggled off because voice mode is OFF.

Fix Action

Fix

  • Add voiceTts state + setVoiceTts setter
  • Thread through all voice context interfaces
  • Sync from voice.toggle RPC response in slash handler
  • Display [tts] suffix in status bar: voice on [tts] / voice off

Code Example

/voice tts      → TTS ON
/voice off      → voice disabled, but TTS env var unchanged
/voice tts      → rejected: "enable voice mode first: /voice on"
RAW_BUFFERClick to expand / collapse

Bug 1: /voice off does not clear HERMES_VOICE_TTS

In TUI mode (hermes --tui), running /voice tts then /voice off leaves TTS stuck ON:

/voice tts      → TTS ON
/voice off      → voice disabled, but TTS env var unchanged
/voice tts      → rejected: "enable voice mode first: /voice on"

The voice.toggle handler in tui_gateway/server.py only sets HERMES_VOICE="0" on off, but never clears HERMES_VOICE_TTS. Since the tts action branch requires _voice_mode_enabled() (which reads HERMES_VOICE), the user is deadlocked — TTS is ON but cannot be toggled off because voice mode is OFF.

Fix

Clear os.environ["HERMES_VOICE_TTS"] = "0" in the off branch.

Bug 2: TUI status bar does not show TTS state

The status bar only displays voice on or voice off with no indication of whether TTS speech output is active. The frontend (useMainApp.ts) tracks voiceEnabled, voiceRecording, and voiceProcessing, but has no voiceTts state — even though the voice.toggle RPC response already includes tts: true/false.

Fix

  • Add voiceTts state + setVoiceTts setter
  • Thread through all voice context interfaces
  • Sync from voice.toggle RPC response in slash handler
  • Display [tts] suffix in status bar: voice on [tts] / voice off

Changes

4 files, +15/-4 lines

  • tui_gateway/server.py: clear HERMES_VOICE_TTS on voice off
  • ui-tui/src/app/useMainApp.ts: voiceTts state + status bar display
  • ui-tui/src/app/slash/commands/session.ts: sync tts from RPC response
  • ui-tui/src/app/interfaces.ts: add setVoiceTts to voice context types

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

hermes - 💡(How to fix) Fix fix(tui): /voice off does not clear TTS state, and status bar missing TTS indicator