Skip to content

Webchat: ghost bubble artifact when model replies with NO_REPLY during streaming #15060

@fredfokan

Description

@fredfokan

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

  1. Open the webchat control UI
  2. Send a message that the model would reasonably not reply to (e.g., just "top" or a single word with no clear question)
  3. The model responds with NO_REPLY
  4. 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 attachments

However, 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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions