Files
kandev/docs/plans/command-panel-sidebar-task-reveal/task-01-reveal-command-selected-task.md
T
2026-08-05 22:08:57 +01:00

84 lines
3.9 KiB
Markdown

---
id: "01-reveal-command-selected-task"
title: "Reveal command-selected sidebar task"
status: done
wave: 1
depends_on: []
plan: "plan.md"
spec: "../../specs/ui/command-panel-sidebar-task-reveal.md"
---
# Task 01: Reveal command-selected sidebar task
## Acceptance
- The desktop regression test fails before production changes because Cmd+K navigation leaves the
chosen rendered task row outside the overflowing sidebar viewport, then passes after the fix.
- Cmd+K task selection navigates normally and reveals an available row with nearest-block scrolling
without moving focus, scrolling the document, or changing sidebar view/collapse preferences.
- Guarded navigation can outlive the initial reveal retry budget without losing the queued reveal;
a newer selection supersedes an older pending reveal.
- Phone Cmd+K task navigation remains direct and does not target the hidden desktop sidebar.
## Verification
1. `cd apps && pnpm install --frozen-lockfile`
2. RED, before production changes: `cd apps/web && pnpm e2e:run --host --no-build tests/task/sidebar-scroll-preservation.spec.ts --grep "after a delayed settings navigation blocker"`
3. Unit: `cd apps/web && pnpm exec vitest run lib/sidebar/task-navigation.test.ts`
4. Typecheck: `cd apps/web && pnpm exec tsc --noEmit`
5. Build: `cd apps && pnpm --filter @kandev/web build:vite`
6. Desktop GREEN: `cd apps/web && pnpm e2e:run --host --no-build tests/task/sidebar-scroll-preservation.spec.ts`
7. Mobile GREEN: `cd apps/web && pnpm e2e:run --host --no-build --project mobile-chrome tests/task/mobile-command-panel-task-navigation.spec.ts`
Confirm Playwright discovers the expected focused tests before treating either browser command as
evidence. The managed runner performs the required production build and teardown.
## Files likely touched
- `apps/web/lib/sidebar/task-navigation.ts`
- `apps/web/lib/sidebar/task-navigation.test.ts`
- `apps/web/hooks/use-command-panel-task-navigation.ts`
- `apps/web/components/command-panel.tsx`
- `apps/web/components/task/task-item.tsx`
- `apps/web/e2e/tests/task/sidebar-scroll-preservation.spec.ts`
- `apps/web/e2e/tests/task/mobile-command-panel-task-navigation.spec.ts`
## Dependencies
None.
## Parallelism
Sequential; the browser regression, navigation helper, command-panel integration, and responsive
guard form one TDD vertical slice.
## Inputs
- Behavioral contract: `docs/specs/ui/command-panel-sidebar-task-reveal.md`.
- Root-cause trace and frontend design: `plan.md`.
- Retryable navigation precedent: `apps/web/lib/review/navigation.ts` and its unit test.
- Existing overflowing-sidebar fixture: `apps/web/e2e/tests/task/sidebar-scroll-preservation.spec.ts`.
- Mobile composition precedent: `apps/web/components/task/mobile/session-task-switcher-sheet.tsx`.
## Output contract
Report the RED failure, implementation summary, actual files changed, exact test commands and
counts, generated artifact paths, cleanup evidence, blockers, and remaining risks. Mark this task
`done`, check it in `plan.md`, and replace the plan/task verification placeholders only after all
targeted checks pass.
## Results
Implemented the bounded visible-sidebar reveal helper, latest-request cancellation, post-navigation
command-panel queue, task-row marker, and desktop/mobile coverage. The RED supersession unit test
and delayed-blocker desktop regression failed before their respective fixes and passed afterward.
- Unit: 1 file, 9 tests passed; task-navigation hook and command-panel consumers: 3 files, 24 tests passed.
- Typecheck and Vite build: passed.
- Desktop full sidebar-scroll E2E: 8 passed, including delayed guarded navigation and above-viewport reveal.
- Mobile focused E2E: 1 passed under `mobile-chrome`.
- Focused Prettier and ESLint (`--max-warnings 0`): passed.
- `git diff --check`: passed.
- Generated E2E output is disposable and excluded from the change; no security or trust-boundary
changes were introduced.