-
-
Notifications
You must be signed in to change notification settings - Fork 52.7k
Description
Description
When the AI model responds with NO_REPLY (silent reply), the webchat UI briefly displays a chat bubble that then becomes empty/near-empty — appearing as a small visual artifact (a "dot" or "stain") in the conversation.
Steps to Reproduce
- Open the webchat control UI
- Send a message that the model would reasonably not reply to (e.g., just "top" or a single word with no clear question)
- The model responds with
NO_REPLY - A small empty bubble/artifact appears in the chat
Expected Behavior
No bubble should be rendered when the model's final reply is NO_REPLY. The message should be completely suppressed from the UI.
Actual Behavior
A small visual artifact (empty or near-empty bubble) remains visible in the chat.
Root Cause Analysis
During streaming, the webchat client receives tokens via WebSocket as they are generated. When the model starts outputting NO_REPLY, the client creates a message bubble in the DOM. The backend then detects the silent reply token and suppresses delivery — but the already-created bubble persists in the UI with empty/minimal content.
The bubble rendering logic in the Lit-based webchat does handle empty messages:
return !f && !l && !u ? v : r`...` // returns 'nothing' when no text, no media, no attachmentsHowever, this check appears to not trigger correctly for messages that were created during streaming and then had their content stripped.
Suggested Fix
When a streaming message completes and the final content is empty (or matches NO_REPLY/HEARTBEAT_OK), the webchat client should remove the bubble from the DOM entirely.
Environment
- OpenClaw version: 2026.2.9
- Channel: webchat (control-ui)
- Browser: Chrome (latest)