From 0742227028434862152ad80ec775ca8b2ccdefde Mon Sep 17 00:00:00 2001 From: ChiragArora31 Date: Wed, 29 Apr 2026 07:02:16 +0530 Subject: [PATCH 1/3] fix(web): use client navigation for project dashboards --- packages/web/src/components/ProjectSidebar.tsx | 4 +++- .../components/__tests__/ProjectSidebar.test.tsx | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/web/src/components/ProjectSidebar.tsx b/packages/web/src/components/ProjectSidebar.tsx index 8164f7c87b..2b6c9a2b86 100644 --- a/packages/web/src/components/ProjectSidebar.tsx +++ b/packages/web/src/components/ProjectSidebar.tsx @@ -477,8 +477,10 @@ function ProjectSidebarInner({ { + if (e.metaKey || e.ctrlKey || e.shiftKey || e.button === 1) return; + e.preventDefault(); e.stopPropagation(); - onMobileClose?.(); + navigate(projectHref); }} className="project-sidebar__proj-action" aria-label={`Open ${project.name} dashboard`} diff --git a/packages/web/src/components/__tests__/ProjectSidebar.test.tsx b/packages/web/src/components/__tests__/ProjectSidebar.test.tsx index 0691c9f8a3..0082bb3821 100644 --- a/packages/web/src/components/__tests__/ProjectSidebar.test.tsx +++ b/packages/web/src/components/__tests__/ProjectSidebar.test.tsx @@ -95,6 +95,21 @@ describe("ProjectSidebar", () => { expect(dashboardLink).toHaveAttribute("href", "/projects/project-2"); }); + it("uses client navigation for the per-row dashboard button", () => { + render( + , + ); + + fireEvent.click(screen.getByRole("link", { name: /Open Project Two dashboard/ })); + + expect(mockPush).toHaveBeenCalledWith("/projects/project-2"); + }); + it("project toggle expands/collapses without navigating", () => { render( Date: Wed, 29 Apr 2026 07:06:51 +0530 Subject: [PATCH 2/3] Update packages/web/src/components/ProjectSidebar.tsx Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> --- packages/web/src/components/ProjectSidebar.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/web/src/components/ProjectSidebar.tsx b/packages/web/src/components/ProjectSidebar.tsx index 2b6c9a2b86..485ddad69f 100644 --- a/packages/web/src/components/ProjectSidebar.tsx +++ b/packages/web/src/components/ProjectSidebar.tsx @@ -477,7 +477,7 @@ function ProjectSidebarInner({ { - if (e.metaKey || e.ctrlKey || e.shiftKey || e.button === 1) return; +if (e.metaKey || e.ctrlKey || e.shiftKey) return; e.preventDefault(); e.stopPropagation(); navigate(projectHref); From b1dc572fe022a4aa2bac6218c80541c741dca7d4 Mon Sep 17 00:00:00 2001 From: ChiragArora31 Date: Sun, 17 May 2026 04:56:06 +0530 Subject: [PATCH 3/3] fix(web): remove unreachable sidebar click guard Co-authored-by: Cursor --- packages/web/src/components/ProjectSidebar.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/web/src/components/ProjectSidebar.tsx b/packages/web/src/components/ProjectSidebar.tsx index 306c174674..3a778da84d 100644 --- a/packages/web/src/components/ProjectSidebar.tsx +++ b/packages/web/src/components/ProjectSidebar.tsx @@ -471,7 +471,7 @@ function ProjectSidebarInner({ key={session.id} href={sessionHref} onClick={(e) => { - if (e.metaKey || e.ctrlKey || e.shiftKey || e.button === 1) return; + if (e.metaKey || e.ctrlKey || e.shiftKey) return; e.preventDefault(); navigate(sessionHref, session); }} @@ -564,7 +564,7 @@ function ProjectSidebarInner({ { - if (e.metaKey || e.ctrlKey || e.shiftKey || e.button === 1) return; + if (e.metaKey || e.ctrlKey || e.shiftKey) return; e.preventDefault(); navigate(projectHref); }} @@ -636,7 +636,7 @@ function ProjectSidebarInner({ href={projectHref} prefetch={false} onClick={(e) => { -if (e.metaKey || e.ctrlKey || e.shiftKey) return; + if (e.metaKey || e.ctrlKey || e.shiftKey) return; e.preventDefault(); e.stopPropagation(); navigate(projectHref); @@ -851,7 +851,7 @@ if (e.metaKey || e.ctrlKey || e.shiftKey) return; { - if (e.metaKey || e.ctrlKey || e.shiftKey || e.button === 1) return; + if (e.metaKey || e.ctrlKey || e.shiftKey) return; e.preventDefault(); navigate(sessionHref, session); }}