From 4646c07e23fcdf49d47145b0dcc5104eb020d294 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Tue, 20 Oct 2026 04:01:23 -0400 Subject: [PATCH] fix(app): drop the server from the session header breadcrumb The breadcrumb now shows only the project and worktree for every session. The location card still names the server. --- .../app/e2e/regression/session-header.spec.ts | 12 ++++++------ .../src/session/session-identity-header.tsx | 18 ++---------------- 2 files changed, 8 insertions(+), 22 deletions(-) diff --git a/packages/app/e2e/regression/session-header.spec.ts b/packages/app/e2e/regression/session-header.spec.ts index 52c3628efac..f648f336e31 100644 --- a/packages/app/e2e/regression/session-header.spec.ts +++ b/packages/app/e2e/regression/session-header.spec.ts @@ -153,8 +153,6 @@ test.describe("location", () => { await openSession(page, workspace) await expect(trigger(page).locator('[data-slot="session-location-project"]')).toHaveText("Location") await expect(trigger(page).locator('[data-slot="session-location-worktree"]')).toHaveText("quiet-falcon") - // The current server is never named in the breadcrumb. - await expect(trigger(page).locator('[data-slot="session-location-server"]')).toHaveCount(0) await trigger(page).click() const card = page.locator('[data-slot="session-location-card"]') await expect(card.locator('[data-slot="session-location-path"]')).toHaveText(worktree) @@ -163,16 +161,16 @@ test.describe("location", () => { await expect.poll(() => page.evaluate(() => navigator.clipboard.readText())).toBe(worktree) }) - test("names a session's server when it is not the current one", async ({ page }) => { + test("names another server only in the card, not the breadcrumb", async ({ page }) => { await mockWorkspace(page, { name: "Location", sessions: [] }) await mockRemoteServer(page, { name: "apollo", - directory: "/srv/apollo/project", + directory: "/srv/remote/project", sessions: [ { id: "ses_remote", title: "Remote session", - directory: "/srv/apollo/project", + directory: "/srv/remote/project", slug: "ses_remote", version: "dev", time: { created: 1, updated: 1 }, @@ -181,8 +179,10 @@ test.describe("location", () => { }) await seed(page, { tabs: [{ session: "ses_remote", server: REMOTE_SERVER }] }) await page.goto(sessionHref("ses_remote", REMOTE_SERVER)) - await expect(trigger(page).locator('[data-slot="session-location-server"]')).toHaveText("apollo") await expect(trigger(page).locator('[data-slot="session-location-project"]')).toHaveText("project") + await expect(trigger(page)).not.toContainText("apollo") + await trigger(page).click() + await expect(page.locator('[data-slot="session-location-card"]').getByText("apollo", { exact: true })).toBeVisible() }) test("shows the location bar under the mobile view tabs", async ({ page }) => { diff --git a/packages/app/src/session/session-identity-header.tsx b/packages/app/src/session/session-identity-header.tsx index eea84f107a1..fb70a701bbc 100644 --- a/packages/app/src/session/session-identity-header.tsx +++ b/packages/app/src/session/session-identity-header.tsx @@ -49,8 +49,8 @@ export function SessionTitleHeader(props: ParentProps) { } /** - * Where the session runs: the server (only when it is not the current one), the project and its worktree. Opens a card - * with the full path and the location's actions. + * Where the session runs: the project and its worktree. Opens a card with the server, the full path and the location's + * actions. */ export function SessionLocation(props: { project?: Omit @@ -79,7 +79,6 @@ export function SessionLocation(props: { return root ? getFilename(root) : undefined }) - const remote = () => (servers.current(server.conn) ? undefined : servers.label(server.conn)) const git = () => !!props.project?.vcs const branch = () => @@ -151,19 +150,6 @@ export function SessionLocation(props: { data-slot="session-location-trigger" class="flex h-6 min-w-0 max-w-[60%] shrink items-center gap-1.5 rounded-md ps-1 pe-2 text-start text-[13px] font-[440] leading-[var(--line-height-compact)] tracking-[-0.04px] text-v2-text-text-muted transition-colors hover:bg-v2-overlay-simple-overlay-hover hover:text-v2-text-text-base focus-visible:bg-v2-overlay-simple-overlay-hover focus-visible:text-v2-text-text-base focus-visible:outline-none data-[expanded]:bg-v2-overlay-simple-overlay-hover data-[expanded]:text-v2-text-text-base" > - - {(name) => ( - <> - - - - {name()} - - - - - )} -