From 1e8a5bd940edcc3ef0cc25dbfbaf4a1768d3d929 Mon Sep 17 00:00:00 2001 From: Dylan Martin Date: Mon, 27 Jul 2026 15:28:29 -0500 Subject: [PATCH] fix(ui): keep message copy action inside compact conversations Generated-By: PostHog Code Task-Id: 11e8a530-136e-44e6-af1f-3eb6a0ee49c0 --- .../session-update/AgentMessage.test.tsx | 25 +++++++++++++++++++ .../session-update/AgentMessage.tsx | 4 +-- 2 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 packages/ui/src/features/sessions/components/session-update/AgentMessage.test.tsx diff --git a/packages/ui/src/features/sessions/components/session-update/AgentMessage.test.tsx b/packages/ui/src/features/sessions/components/session-update/AgentMessage.test.tsx new file mode 100644 index 0000000000..e348c697ad --- /dev/null +++ b/packages/ui/src/features/sessions/components/session-update/AgentMessage.test.tsx @@ -0,0 +1,25 @@ +import { Theme } from "@radix-ui/themes"; +import { render, screen } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { describe, expect, it, vi } from "vitest"; +import { AgentMessage } from "./AgentMessage"; + +describe("AgentMessage", () => { + it("keeps the copy action inside the message rail", async () => { + const writeText = vi.fn().mockResolvedValue(undefined); + Object.assign(navigator, { clipboard: { writeText } }); + + render( + + + , + ); + + const copyButton = screen.getByLabelText("Copy message"); + expect(copyButton.parentElement).toHaveClass("right-1"); + expect(copyButton.parentElement).not.toHaveClass("left-full"); + + await userEvent.click(copyButton); + expect(writeText).toHaveBeenCalledWith("Assistant response"); + }); +}); diff --git a/packages/ui/src/features/sessions/components/session-update/AgentMessage.tsx b/packages/ui/src/features/sessions/components/session-update/AgentMessage.tsx index 56f13bb11a..d6fc8cdf4b 100644 --- a/packages/ui/src/features/sessions/components/session-update/AgentMessage.tsx +++ b/packages/ui/src/features/sessions/components/session-update/AgentMessage.tsx @@ -70,7 +70,7 @@ export const AgentMessage = memo(function AgentMessage({ }, [content]); return ( - + {isStreaming ? ( )} - +