Skip to content

feat(web): add extensible command palette #2514

feat(web): add extensible command palette

feat(web): add extensible command palette #2514

Triggered via pull request March 15, 2026 12:02
Status Failure
Total duration 3m 2s
Artifacts

ci.yml

on: pull_request
Format, Lint, Typecheck, Test, Browser Test, Build
2m 49s
Format, Lint, Typecheck, Test, Browser Test, Build
Release Smoke
13s
Release Smoke
Fit to window
Zoom out
Zoom in

Annotations

3 errors
Format, Lint, Typecheck, Test, Browser Test, Build
Process completed with exit code 1.
[chromium] src/components/ChatView.browser.tsx > ChatView timeline estimator parity (full app) > searches projects by path and opens a new thread using the default env mode: apps/web/src/components/ChatView.browser.tsx#L1377
Error: strict mode violation: getByText('Docs Portal') resolved to 2 elements: 1) <span class="flex-1 truncate text-xs font-medium text-foreground/90">Docs Portal</span> aka page.getByText('Docs Portal') 2) <span class="truncate text-sm text-foreground">Docs Portal</span> aka getByTestId('command-palette').getByText('Docs Portal') ❯ toBeInTheDocument src/components/ChatView.browser.tsx:1377:58 Caused by: Caused by: Error: Matcher did not succeed in time. ❯ src/components/ChatView.browser.tsx:1377:6
[chromium] src/components/ChatView.browser.tsx > ChatView timeline estimator parity (full app) > does not match thread actions from contextual project names: apps/web/src/components/ChatView.browser.tsx#L1323
Error: strict mode violation: getByText('Project') resolved to 11 elements: 1) <span class="text-[10px] font-medium uppercase tracking-wider text-muted-foreground/60">Projects</span> aka page.getByText('Projects') 2) <span class="flex-1 truncate text-xs font-medium text-foreground/90">Project</span> aka locator('button').filter({ hasText: 'Project' }).locator('span') 3) <span data-slot="badge" class="relative inline-flex items-center justify-center gap-1 whitespace-nowrap rounded-sm border font-medium outline-none transition-shadow focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-64 [&_svg:not([class*='opacity-'])]:opacity-80 [&_svg:not([class*='size-'])]:size-3.5 sm:[&_svg:not([class*='size-'])]:size-3 [&_svg]:pointer-events-none [&_svg]:shrink-0 [button&,a&]…>Project</span> aka locator('header').getByText('Project') 4) <span class="truncate text-sm text-foreground">Add project</span> aka getByText('Add project') 5) <span class="truncate text-muted-foreground/70 text-xs">Browse filesystem and add a project directory</span> aka getByText('Browse filesystem and add a') 6) <div id="base-ui-_r_144_" data-slot="command-group-label" class="px-2 py-1.5 font-medium text-muted-foreground text-xs">Projects</div> aka getByTestId('command-palette').getByText('Projects', { exact: true }) 7) <span class="truncate text-sm text-foreground">Project</span> aka getByTestId('command-palette').getByText('Project', { exact: true }) 8) <span class="truncate text-muted-foreground/70 text-xs">/repo/project</span> aka getByText('/repo/project') 9) <span class="truncate text-muted-foreground/70 text-xs">Project · #main · Current thread</span> aka getByText('Project · #main · Current') 10) <div role="status" aria-live="polite" aria-atomic="true" data-slot="command-empty" class="not-empty:p-2 text-center text-muted-foreground sm:text-sm not-empty:py-6 py-10 text-sm">No matching commands, projects, or threads.</div> aka getByText('No matching commands,') ... ❯ toBeInTheDocument src/components/ChatView.browser.tsx:1323:54 Caused by: Caused by: Error: Matcher did not succeed in time. ❯ src/components/ChatView.browser.tsx:1323:6