fix(ui): prevent reading indicator from sticking after assistant response

This commit is contained in:
clawsweeper
2026-05-18 17:18:09 +00:00
parent ae4a0122b7
commit 44bea55110
2 changed files with 18 additions and 0 deletions

View File

@@ -45,6 +45,7 @@ Docs: https://docs.openclaw.ai
### Fixes
- Agents/image generation: allow distinct `image_generate` prompts to start separate session-backed background tasks while same-prompt retries still return the active task status. (#83614) Thanks @Elarwei001.
- Control UI: stop the chat reading indicator from sticking after an assistant response finishes. (#83515) Thanks @njuboy11.
- Skills: reject empty or whitespace-only skill names and descriptions during quick validation. (#27061)
- Sessions: skip trailing custom transcript entries when checking tail assistant replies so embedded CLI gap-fill does not duplicate canonical assistant output. (#83635) Thanks @yaoyi1222.
- Memory Wiki: keep `wiki_lint` tool output path-safe by reporting vault-internal lint reports as relative paths in tool text and details while preserving absolute report paths for CLI/file callers. (#83439) Thanks @LLagoon3.

View File

@@ -503,6 +503,23 @@ describe("chat loading skeleton", () => {
expect(container.querySelector(".chat-reading-indicator")).not.toBeNull();
});
it("does not keep the reading indicator after an assistant response has rendered", () => {
const container = renderChatView({
canAbort: true,
messages: [
{
role: "assistant",
content: "Finished answer",
timestamp: 1,
},
],
stream: null,
});
expect(container.querySelector(".chat-reading-indicator")).toBeNull();
expect(container.querySelector(".chat-group")?.textContent?.trim()).toBe("Finished answer");
});
it("keeps existing messages visible without the skeleton during a background reload", () => {
const container = renderChatView({
loading: true,