Skip to content

[TUI] Assistant messages don't render until /verbose on/off — handleChatEvent early-returns skip requestRender(true) #86871

@darconadalabarga

Description

@darconadalabarga

Summary

In OpenClaw 5.22, streamed assistant messages occasionally finish but never paint to screen in the TUI. The workaround is toggling /verbose on then /verbose off, which forces a full repaint.

Root cause

handleChatEvent in the TUI bundle has three early-return paths (lines 2949, 2960, 2972 in tui-LVkXuSWn.js) that call tui.requestRender() without the true flag. The pi-tui differential renderer (requestRender() without args) compares against previousLines and sometimes computes no visible diff, skipping the paint entirely. requestRender(true) resets diff state and forces a full repaint.

The three early-return cases are:

  • state === "final" with no message + local BTW run (line 2949)
  • state === "final" with no message (line 2960)
  • state === "final" with a command message (line 2972)

Workaround (local patch)

Change all three tui.requestRender() calls inside handleChatEvent to tui.requestRender(true).

This bug has also been reported upstream against pi-tui: earendil-works/pi#4970

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions