Skip to content

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

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

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions