4.3 KiB
id, title, status, wave, depends_on, plan, requirements, acceptance_criteria, system_design
| id | title | status | wave | depends_on | plan | requirements | acceptance_criteria | system_design | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 01-sidebar-task-focus | Strengthen active sidebar task focus | done | 1 | plan.md |
|
|
|
Task 01: Strengthen active sidebar task focus
Summary
Give the active shared task row a stronger theme-aware background with only a top and bottom active-task border. Preserve the user's task-color marker when a color is assigned, omit the default marker when no color is assigned, and preserve existing row state attributes, the separate multi-selection ring, and current desktop/mobile interaction behavior.
In scope
- Update the active branch of
taskItemRowClassNameintask-item.tsx. - Keep the task-color
SelectionBarvisible only when a task color is set. - Add desktop and mobile E2E assertions for colored and uncolored active rows.
Out of scope
- Task-color data, APIs, persistence, or picker UI.
- Changes to task selection, task actions, task metadata, or mobile layout.
Acceptance
- An active desktop row has the stronger background with 1px top and bottom borders only, while an inactive row does not.
- Active rows retain their custom color marker when set, render no default
leading marker when uncolored, and retain existing
data-active/aria-currentsemantics. - The mobile task-switcher shows the same active treatment without horizontal overflow or loss of the row's primary tap behavior.
Verification
cd apps && pnpm --filter @kandev/web test -- components/task/task-item.test.tsx
cd apps/web && pnpm run typecheck
cd apps/web && pnpm e2e:run --project chromium tests/task/sidebar-task-open.spec.ts
cd apps/web && pnpm e2e:run --project mobile-chrome tests/task/mobile-sidebar-task-actions.spec.ts -- --grep "active task"
Files likely touched
apps/web/components/task/task-item.tsxapps/web/e2e/tests/task/sidebar-task-open.spec.tsapps/web/e2e/tests/task/mobile-sidebar-task-actions.spec.ts
Dependencies
None.
Risks
- Tailwind utility order could let the generic hover class override the active surface. Keep active and active-hover utilities together in the selected branch and verify the rendered row.
- The horizontal border must not add side borders or affect the existing multi-selection ring or current row padding.
Parallelism
sequential
Inputs
- Sidebar Task Focus Requirements
- Sidebar Task Focus System Design
- Existing shared row path in
task-switcher-row.tsxand mobile path insession-task-switcher-sheet.tsx.
Results
Implemented the shared active-row surface without an active-task ring in
TaskItem, while preserving the custom task-color marker and existing
multi-selection ring. The desktop and mobile E2E flows now assert the
background-only treatment for a red task color.
- Red desktop E2E failed on the expected old
bg-primary/10class. - Focused
TaskItemsuite: 49 tests passed. - Web typecheck passed.
- Desktop sidebar E2E: 2 tests passed.
- Mobile active-task E2E: 1 test passed, including the no-horizontal-overflow assertion.
For the background-only comparison variant, the desktop regression first failed on the existing active ring, then desktop and mobile E2E passed after removing that ring. The focused unit test suite (49 tests), typecheck, lint, and specification checks also passed.
For the top-and-bottom border comparison variant, the desktop regression first failed on the missing top border, then passed after adding the horizontal border utilities. The mobile assertion is run against the same shared row styling.
For the conditional marker refinement, the desktop regression first failed on
the default marker in an uncolored active row. SelectionBar now renders only
when a supported task color is assigned. Desktop E2E passed with 2 tests, and
the mobile colored and uncolored active-row flows passed with 2 tests, including
the no-horizontal-overflow assertions. The focused unit suite (49 tests), web
typecheck, web lint, and specification checks also passed.