Skip to content

Control UI: Sent message briefly disappears then reappears (sometimes stays hidden) #67412

@roamer-remote

Description

@roamer-remote

Description

When sending a message in the Control UI (webchat), after pressing Enter/Send, the just-typed message briefly disappears from the chat view — the interface flashes blank for a moment — then the message reappears. In some cases, the message does not reappear at all, making it look as if the message was lost (though the agent does receive and process it).

Steps to Reproduce

  1. Open Control UI in a browser (e.g. Safari on macOS, connected via remote node)
  2. Type a message in the chat input
  3. Press Enter or click Send
  4. Observe: the sent message vanishes from the chat view momentarily
  5. The message flashes back after a brief delay, or in some cases stays invisible

Expected Behavior

The sent message should remain visible in the chat view after sending, with a smooth transition to a "pending/sent" state. No flash or disappearance should occur.

Actual Behavior

  • The message disappears immediately on send
  • A visible flash/blank gap occurs
  • The message sometimes reappears after a short delay
  • Intermittently, the message does not reappear at all (remains invisible until page refresh or next incoming message)

Environment

Item Value
OpenClaw version 2026.4.14 (323493f)
OS (Gateway host) Ubuntu 25.10 (x86_64)
Node.js v22.22.2
Gateway bind loopback (127.0.0.1:18789)
Remote node MacBook Pro (macOS, app 2026.4.14 build 2026041490)
Browser Safari (macOS, via remote node)
Channel webchat / Control UI
Control UI config gateway.controlUi.allowInsecureAuth=true

Additional Context

  • The issue is reproducible consistently (disappearance + flash). The "message stays hidden" case is intermittent but occurs several times per session.
  • The agent does receive and respond to the message correctly — this is purely a UI rendering issue.
  • The flash pattern suggests a race condition between the optimistic local message render and the server acknowledgment/refresh cycle: the local message is removed from the input, the UI re-renders from the server state before the message is persisted, causing the blank gap.
  • Suggested fix: render the user's sent message optimistically and keep it in the local state until the server state confirms it, rather than clearing and re-fetching.

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