hermes - 💡(How to fix) Fix [Bug]: TUI rendering collapses after WeChat Input voice-to-text input

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

  • #21257 (fix for fullReset scrollback loop) is included in this build but does not prevent this issue
  • This appears to be a new variant of the rendering loop bug — triggered specifically by rapid character injection from IME-based voice input, not normal keyboard input
  • Suspected root cause: when WeChat Input streams recognized text rapidly, the Ink rendering cycle's state flag may not properly gate the screen refresh, causing the next frame to render without fully clearing the previous buffer
  • Originally reported together with the CJK cursor offset bug in #35272; splitting per maintainer's suggestion
RAW_BUFFERClick to expand / collapse

Bug Description

After using WeChat Input (微信输入法) voice-to-text to input a message in hermes --tui, the TUI rendering begins to collapse progressively. Unlike macOS built-in dictation (which gets disabled when keyboard focus is on a terminal emulator), WeChat Input works as an IME that streams recognized text character-by-character into the focused terminal window. This rapid character injection triggers a rendering breakdown. The input box disappears behind overlapping text, messages from different turns render on top of each other, and the screen becomes completely unreadable.

To Reproduce

  1. Run hermes --tui
  2. Have a conversation of 5+ turns using normal keyboard input
  3. Activate WeChat Input voice-to-text mode (microphone icon on the IME toolbar)
  4. Speak a Chinese sentence of 10+ words to generate voice-to-text input
  5. Observe text being streamed into the TUI input field character by character
  6. Press Enter to send the message
  7. The rendering starts breaking — text begins to overlap
  8. Continue sending messages — the screen progressively degrades

Expected Behavior

TUI should maintain clean rendering regardless of input method. Each turn should render its content in the correct position without overlapping previous output.

Actual Behavior

  • Input box completely disappears (covered by overlapping text)
  • Message content renders on top of previous turns' output
  • Chinese and English text overlap on the same line
  • Status bar elements fragment and duplicate
  • Screen border lines intersect with text content
  • Old frame buffer is not cleared before the next frame renders
  • After 2-3 more messages, layout completely collapses

Screenshots

Initial stage — overlapping begins, input bar still somewhat visible:

<!-- Drag screenshot here -->

Severe stage — input box gone, full-screen rendering collapse:

<!-- Drag screenshot here -->

Environment

  • Hermes Agent: latest main (4ccd141b, includes #21257)
  • macOS: 26.5
  • Terminal: Terminal.app
  • Input method: WeChat Input (微信输入法) — voice-to-text via microphone (IME-based, not OS-level dictation)

Additional Context

  • #21257 (fix for fullReset scrollback loop) is included in this build but does not prevent this issue
  • This appears to be a new variant of the rendering loop bug — triggered specifically by rapid character injection from IME-based voice input, not normal keyboard input
  • Suspected root cause: when WeChat Input streams recognized text rapidly, the Ink rendering cycle's state flag may not properly gate the screen refresh, causing the next frame to render without fully clearing the previous buffer
  • Originally reported together with the CJK cursor offset bug in #35272; splitting per maintainer's suggestion

Related Issues

  • #35272 (original combined report)
  • #21257 (previous fix for similar scrollback reset issue — does not resolve this variant)

_This work was contributed with assistance from Hermes Agent.

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 [Bug]: TUI rendering collapses after WeChat Input voice-to-text input