diff --git a/ui/src/pages/ProjectWorkspaceDetail.test.tsx b/ui/src/pages/ProjectWorkspaceDetail.test.tsx index e33871fe0a2..43438f21503 100644 --- a/ui/src/pages/ProjectWorkspaceDetail.test.tsx +++ b/ui/src/pages/ProjectWorkspaceDetail.test.tsx @@ -235,4 +235,22 @@ describe("ProjectWorkspaceDetail changes tab", () => { "/projects/paperclip-app/workspaces/workspace-1?tab=changes&diffView=head&baseRef=origin%2Fmain", ); }); + + it("opens the Changes tab in working-tree mode when no upstream ref is known", async () => { + mockProjectsApi.get.mockResolvedValue(project({ + workspaces: [projectWorkspace({ defaultRef: null, repoRef: null })], + primaryWorkspace: projectWorkspace({ defaultRef: null, repoRef: null }), + codebase: null, + })); + + await render(); + + await act(async () => { + (container.querySelector('[data-tab-value="changes"]') as HTMLButtonElement).click(); + }); + + expect(mockNavigate).toHaveBeenCalledWith( + "/projects/paperclip-app/workspaces/workspace-1?tab=changes&diffView=working-tree", + ); + }); }); diff --git a/ui/src/pages/ProjectWorkspaceDetail.tsx b/ui/src/pages/ProjectWorkspaceDetail.tsx index 5e671dd013d..af6fc270632 100644 --- a/ui/src/pages/ProjectWorkspaceDetail.tsx +++ b/ui/src/pages/ProjectWorkspaceDetail.tsx @@ -428,11 +428,11 @@ export function ProjectWorkspaceDetail() { const handleTabChange = (tab: ProjectWorkspaceTab) => { const workspacePath = projectWorkspaceUrl(project, routeWorkspaceId); if (tab === "changes") { + const baseRef = upstreamBaseRef(workspace); const params = new URLSearchParams({ tab: "changes", - diffView: "head", + diffView: baseRef ? "head" : "working-tree", }); - const baseRef = upstreamBaseRef(workspace); if (baseRef) params.set("baseRef", baseRef); navigate(`${workspacePath}?${params.toString()}`); return;