From 808da0a5ccfdb814aed3b7009aedfc927c1117de Mon Sep 17 00:00:00 2001
From: pzep1 <205442808+pzep1@users.noreply.github.com>
Date: Thu, 16 Jul 2026 15:24:24 +0100
Subject: [PATCH] fix(web): keep message actions visible
---
.../components/chat/MessagesTimeline.test.tsx | 33 +++++++++++++++++++
.../src/components/chat/MessagesTimeline.tsx | 4 +--
2 files changed, 35 insertions(+), 2 deletions(-)
diff --git a/apps/web/src/components/chat/MessagesTimeline.test.tsx b/apps/web/src/components/chat/MessagesTimeline.test.tsx
index 0957e025311..ca5ee8d7928 100644
--- a/apps/web/src/components/chat/MessagesTimeline.test.tsx
+++ b/apps/web/src/components/chat/MessagesTimeline.test.tsx
@@ -218,6 +218,23 @@ function buildUserTimelineEntry(text: string) {
};
}
+function buildAssistantTimelineEntry(text: string) {
+ return {
+ id: "entry-2",
+ kind: "message" as const,
+ createdAt: MESSAGE_CREATED_AT,
+ message: {
+ id: MessageId.make("message-2"),
+ role: "assistant" as const,
+ text,
+ turnId: null,
+ createdAt: MESSAGE_CREATED_AT,
+ updatedAt: MESSAGE_CREATED_AT,
+ streaming: false,
+ },
+ };
+}
+
describe("MessagesTimeline", () => {
it("uses LegendList isNearEnd when deciding whether the live edge is visible", async () => {
const {
@@ -407,6 +424,22 @@ describe("MessagesTimeline", () => {
expect(markup).toContain('data-user-message-footer="true"');
});
+ it("keeps message actions visible when their row is not hovered", async () => {
+ const { MessagesTimeline } = await import("./MessagesTimeline");
+ const markup = renderToStaticMarkup(
+