openclaw - 💡(How to fix) Fix [Bug]: Webchat spinner never stops after assistant reply - turn-complete signal not emitted

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

In webchat (Control UI), the typing indicator (spinner) never stops after the assistant finishes replying. The turn-complete signal is not emitted to the frontend via WebSocket. The UI only updates when the user sends a new message. This affects ALL sessions globally. Additionally, context tokens drop dramatically every turn (e.g. 126k→58k→98k→58k) despite auto-compaction threshold being 750k and no compaction logs appearing.

Root Cause

In webchat (Control UI), the typing indicator (spinner) never stops after the assistant finishes replying. The turn-complete signal is not emitted to the frontend via WebSocket. The UI only updates when the user sends a new message. This affects ALL sessions globally. Additionally, context tokens drop dramatically every turn (e.g. 126k→58k→98k→58k) despite auto-compaction threshold being 750k and no compaction logs appearing.

Code Example

Gateway logs show NO auto-compaction triggered. OpenViking afterTurn commits succeed. Context tokens drop 126.8k->72.4k->98.8k->58.3k every turn without compaction. No stuck session warnings. Gateway running normally.
RAW_BUFFERClick to expand / collapse

Bug type

Regression (worked before, now fails)

Beta release blocker

No

Summary

In webchat (Control UI), the typing indicator (spinner) never stops after the assistant finishes replying. The turn-complete signal is not emitted to the frontend via WebSocket. The UI only updates when the user sends a new message. This affects ALL sessions globally. Additionally, context tokens drop dramatically every turn (e.g. 126k→58k→98k→58k) despite auto-compaction threshold being 750k and no compaction logs appearing.

Steps to reproduce

  1. Open webchat (Control UI or native app)
  2. Send any message to the assistant
  3. Wait for the assistant to finish replying
  4. Observe: spinner continues spinning indefinitely
  5. Send another message
  6. Observe: UI finally updates and shows the previous reply

Expected behavior

Spinner should stop immediately when assistant finishes replying. Turn-complete signal should be sent to webchat frontend via WebSocket. Context should not drop dramatically every turn when far below compaction threshold (750k).

Actual behavior

Spinner spins forever after assistant reply completes. UI only refreshes when user sends next message. Context tokens drop pattern: 126.8k -> 72.4k -> 98.8k -> 58.3k (every turn). Auto-compaction logs show NO compaction triggered (threshold 750k not reached). OpenViking autoCapture disabled/enabled with no change. Issue persists across all sessions (global, not session-specific).

OpenClaw version

2026.5.27

Operating system

Windows 10 (10.0.26200)

Install method

npm global

Model

openrouter/qwen3.7-max

Provider / routing chain

OpenClaw -> openrouter -> qwen3.7-max

Additional provider/model setup details

Plugins: OpenViking (remote mode, autoCapture=true, autoRecall=true, baseUrl=http://192.168.3.30:1933). Compaction: mode=safeguard, keepRecentTokens=750000, maxHistoryShare=0.75, memoryFlush.enabled=true. Context pruning: mode=cache-ttl, ttl=168h, keepLastAssistants=100. OpenViking context-engine: assemble=archive+active+auto-recall, afterTurn=auto-capture.

Logs, screenshots, and evidence

Gateway logs show NO auto-compaction triggered. OpenViking afterTurn commits succeed. Context tokens drop 126.8k->72.4k->98.8k->58.3k every turn without compaction. No stuck session warnings. Gateway running normally.

Impact and severity

Affected: All webchat users. Severity: High - every webchat interaction affected. Frequency: Always (100% reproducible). Consequence: Users must manually refresh or send dummy messages to see replies. Blocks normal workflow.

Additional information

Ruled out: OpenViking autoCapture (disabled with no change), auto-compaction (no logs, threshold 750k far from reached), session-specific issue (confirmed global), heartbeat polling (already disabled). Hypothesis: something in global post-turn pipeline (context-engine afterTurn, ingestBatch, or other plugin hooks) blocks turn-complete signal emission to webchat frontend.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

Spinner should stop immediately when assistant finishes replying. Turn-complete signal should be sent to webchat frontend via WebSocket. Context should not drop dramatically every turn when far below compaction threshold (750k).

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

openclaw - 💡(How to fix) Fix [Bug]: Webchat spinner never stops after assistant reply - turn-complete signal not emitted