diff --git a/webui/src/components/CliAppMentionText.tsx b/webui/src/components/CliAppMentionText.tsx index e20a5ebd9..f7f6029d3 100644 --- a/webui/src/components/CliAppMentionText.tsx +++ b/webui/src/components/CliAppMentionText.tsx @@ -162,7 +162,7 @@ export function SessionMentionToken({ variant: "composer" | "message"; }) { const testIdPrefix = variant === "composer" ? "composer" : "message"; - return ( + const token = ( ); + if (variant === "composer") return token; + return ( + + {token} + + ); } export function CliAppMentionToken({ diff --git a/webui/src/tests/message-bubble.test.tsx b/webui/src/tests/message-bubble.test.tsx index 6f2f46302..6f2621a94 100644 --- a/webui/src/tests/message-bubble.test.tsx +++ b/webui/src/tests/message-bubble.test.tsx @@ -530,6 +530,7 @@ describe("MessageBubble", () => { const token = screen.getByTestId("message-session-mention-收费设计"); expect(token).toHaveTextContent("@收费设计"); expect(token).toHaveAttribute("title", "Session: 收费设计"); + expect(token.closest("a")).toHaveAttribute("href", "#/chat/websocket%3Apricing"); }); it("copies completed assistant replies from the action row", async () => { diff --git a/webui/src/tests/thread-composer.test.tsx b/webui/src/tests/thread-composer.test.tsx index 6706b5caa..66b351591 100644 --- a/webui/src/tests/thread-composer.test.tsx +++ b/webui/src/tests/thread-composer.test.tsx @@ -1564,9 +1564,9 @@ describe("ThreadComposer", () => { fireEvent.keyDown(input, { key: "Tab" }); expect(input).toHaveValue("参考 @收费设计 "); - expect(screen.getByTestId("composer-session-mention-收费设计")).toHaveTextContent( - "@收费设计", - ); + const mention = screen.getByTestId("composer-session-mention-收费设计"); + expect(mention).toHaveTextContent("@收费设计"); + expect(mention.closest("a")).toBeNull(); fireEvent.click(screen.getByRole("button", { name: "Send message" }));