From 258dcee4c68b26c5b69c36a10089160f14813815 Mon Sep 17 00:00:00 2001 From: UtkarshUsername Date: Mon, 13 Apr 2026 23:12:22 +0530 Subject: [PATCH] Restore thread title tooltip in sidebar - Add the full thread title to sidebar row tooltips - Suppress the tooltip while a thread is being renamed --- apps/web/src/components/ChatView.browser.tsx | 22 +++++++++++++++++++- apps/web/src/components/Sidebar.tsx | 1 + 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/apps/web/src/components/ChatView.browser.tsx b/apps/web/src/components/ChatView.browser.tsx index 0b49f1d7da..e63559b733 100644 --- a/apps/web/src/components/ChatView.browser.tsx +++ b/apps/web/src/components/ChatView.browser.tsx @@ -57,6 +57,7 @@ vi.mock("../lib/gitStatusState", () => ({ })); const THREAD_ID = "thread-browser-test" as ThreadId; +const THREAD_TITLE = "Browser test thread"; const ARCHIVED_SECONDARY_THREAD_ID = "thread-secondary-project-archived" as ThreadId; const PROJECT_ID = "project-1" as ProjectId; const SECOND_PROJECT_ID = "project-2" as ProjectId; @@ -288,7 +289,7 @@ function createSnapshotForTargetUser(options: { { id: THREAD_ID, projectId: PROJECT_ID, - title: "Browser test thread", + title: THREAD_TITLE, modelSelection: { provider: "codex", model: "gpt-5", @@ -3083,6 +3084,25 @@ describe("ChatView timeline estimator parity (full app)", () => { } }); + it("exposes the full thread title on the sidebar row tooltip", async () => { + const mounted = await mountChatView({ + viewport: DEFAULT_VIEWPORT, + snapshot: createSnapshotForTargetUser({ + targetMessageId: "msg-user-thread-tooltip-target" as MessageId, + targetText: "thread tooltip target", + }), + }); + + try { + const threadRow = page.getByTestId(`thread-row-${THREAD_ID}`); + + await expect.element(threadRow).toBeInTheDocument(); + await expect.element(threadRow).toHaveAttribute("title", THREAD_TITLE); + } finally { + await mounted.cleanup(); + } + }); + it("shows the confirm archive action after clicking the archive button", async () => { localStorage.setItem( "t3code:client-settings:v1", diff --git a/apps/web/src/components/Sidebar.tsx b/apps/web/src/components/Sidebar.tsx index 2495429efd..727f4c1750 100644 --- a/apps/web/src/components/Sidebar.tsx +++ b/apps/web/src/components/Sidebar.tsx @@ -609,6 +609,7 @@ const SidebarThreadRow = memo(function SidebarThreadRow(props: SidebarThreadRowP size="sm" isActive={isActive} data-testid={`thread-row-${thread.id}`} + title={renamingThreadKey === threadKey ? undefined : thread.title} className={`${resolveThreadRowClassName({ isActive, isSelected,