From f1476dc7d4e3d7c37c620eb51e6482aa6762c533 Mon Sep 17 00:00:00 2001 From: LukeParkerDev <10430890+Hona@users.noreply.github.com> Date: Thu, 6 Aug 2026 11:53:38 +1000 Subject: [PATCH] fix(app): show rich onboarding tooltip on location trigger hover --- .../app/e2e/regression/workspaces.spec.ts | 15 +------- .../components/prompt-workspace-selector.tsx | 36 +++++++++---------- .../pages/new-session/new-session-view.tsx | 2 -- 3 files changed, 18 insertions(+), 35 deletions(-) diff --git a/packages/app/e2e/regression/workspaces.spec.ts b/packages/app/e2e/regression/workspaces.spec.ts index 92bb667552a..10849961498 100644 --- a/packages/app/e2e/regression/workspaces.spec.ts +++ b/packages/app/e2e/regression/workspaces.spec.ts @@ -78,25 +78,12 @@ test("selects local, new, and existing workspaces from the ready-ish start menu" await expectAppVisible(page.locator('[data-component="prompt-input"]')) const trigger = page.getByRole("button", { name: /^local$/i }) - const intro = page.locator('[data-component="workspace-onboarding-card"]') const dot = page.locator('[data-slot="workspace-onboarding-dot"]') await expect(trigger).toBeVisible() - await expect(intro).toContainText("Isolate sessions with workspaces") await expect(dot).toBeVisible() - await expect - .poll(async () => { - const [triggerBox, introBox] = await Promise.all([trigger.boundingBox(), intro.boundingBox()]) - if (!triggerBox || !introBox) return - return { - right: Math.round(introBox.x + introBox.width - triggerBox.x - triggerBox.width), - top: Math.round(introBox.y - triggerBox.y - triggerBox.height), - } - }) - .toEqual({ right: 0, top: 0 }) await trigger.hover() - await expect(page.getByRole("tooltip")).toContainText("Select where to run session") + await expect(page.getByRole("tooltip")).toContainText("Isolate sessions with workspaces") await trigger.click() - await expect(intro).toBeHidden() await expect(page.getByRole("menuitem", { name: /Local repository/ })).toBeVisible() await page.getByRole("menuitem", { name: /Local repository/ }).click() await expect(dot).toBeVisible() diff --git a/packages/app/src/components/prompt-workspace-selector.tsx b/packages/app/src/components/prompt-workspace-selector.tsx index 55748e04238..8c4bb185fe7 100644 --- a/packages/app/src/components/prompt-workspace-selector.tsx +++ b/packages/app/src/components/prompt-workspace-selector.tsx @@ -11,8 +11,6 @@ export function PromptWorkspaceSelector(props: { workspaces: string[] branch?: string onboarding?: boolean - intro?: boolean - onIntroDismiss?: () => void onChange: (value: string) => void onDone: () => void onViewAll: () => void @@ -39,7 +37,6 @@ export function PromptWorkspaceSelector(props: { const onOpenChange = (open: boolean) => { if (open) { setSearch("") - props.onIntroDismiss?.() return } const action = pending @@ -63,8 +60,23 @@ export function PromptWorkspaceSelector(props: { + + + {language.t("workspace.onboarding.title")} + + + {language.t("workspace.onboarding.description")} + + + ) : ( + language.t("session.new.workspace.trigger.tooltip") + ) + } + contentClass={props.onboarding ? "max-w-[280px]" : undefined} + class="min-w-0" > - - - - - {language.t("workspace.onboarding.title")} - - - {language.t("workspace.onboarding.description")} - - - > diff --git a/packages/app/src/pages/new-session/new-session-view.tsx b/packages/app/src/pages/new-session/new-session-view.tsx index e66bb17d634..3c84b1d58ef 100644 --- a/packages/app/src/pages/new-session/new-session-view.tsx +++ b/packages/app/src/pages/new-session/new-session-view.tsx @@ -72,8 +72,6 @@ export function NewSessionView(props: { workspaces={props.workspace.project.workspaces()} branch={props.workspace.bar.branch()} onboarding={onboardingReady() && !onboarding.used} - intro={showCard()} - onIntroDismiss={() => setOnboarding("cardDismissed", true)} onChange={select} onDone={props.input.restoreFocus} onViewAll={props.workspace.project.openAll}
- {language.t("workspace.onboarding.description")} -