From 50391b2fb70836e01eac264ec7a3a5c0481f7211 Mon Sep 17 00:00:00 2001 From: Xubin Ren <52506698+Re-bin@users.noreply.github.com> Date: Sat, 15 Aug 2026 17:14:03 +0800 Subject: [PATCH] fix(webui): keep actions hidden while turn id resolves --- .../src/components/thread/ThreadMessages.tsx | 2 +- webui/src/tests/thread-messages.test.tsx | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/webui/src/components/thread/ThreadMessages.tsx b/webui/src/components/thread/ThreadMessages.tsx index 8ed3286d4..fcd516086 100644 --- a/webui/src/components/thread/ThreadMessages.tsx +++ b/webui/src/components/thread/ThreadMessages.tsx @@ -147,7 +147,7 @@ export function ThreadMessages({ unit.type === "activity" ? liveActivityClusterIndices.has(index) : isStreaming && ( - unit.message.turnId + unit.message.turnId && activeTurnId !== null ? unit.message.turnId === activeTurnId : index > currentTurnStartIndex ) diff --git a/webui/src/tests/thread-messages.test.tsx b/webui/src/tests/thread-messages.test.tsx index d2e48b19d..e9198d072 100644 --- a/webui/src/tests/thread-messages.test.tsx +++ b/webui/src/tests/thread-messages.test.tsx @@ -1171,6 +1171,27 @@ describe("ThreadMessages", () => { .not.toBeInTheDocument(); }); + it("falls back to the latest user boundary while the active turn id is pending", () => { + const { container } = render( + , + ); + + expect(container.querySelectorAll('[data-assistant-footer] [aria-label="Copy"]')) + .toHaveLength(1); + expect(container.querySelectorAll('[data-assistant-footer] [aria-label="Fork"]')) + .toHaveLength(1); + }); + it("shows copy on adjacent assistant text slices", () => { const messages: UIMessage[] = [ { id: "a1", role: "assistant", content: "part one", createdAt: 1 },