Strengthen the active task treatment in the shared sidebar row so the current
task remains easy to identify when a user assigns it a custom color. The work
is one sequential frontend slice: update the shared row presentation, then
prove the desktop sidebar and mobile task-switcher surfaces.
Scope
In scope
Add a stronger theme-aware active-row surface with only top and bottom
active-task borders.
Preserve the existing task-color marker when a color is assigned, with no
default left marker for uncolored tasks, and preserve all activation
semantics.
Verify the shared treatment in desktop and mobile task switchers.
Out of scope
Task-color picker or persistence changes.
Active-task state, task/session data, or API changes.
New mobile navigation or task-row interaction patterns.
Technical approach
Update taskItemRowClassName in apps/web/components/task/task-item.tsx
so the existing isSelected state adds the active surface and horizontal
borders. Keep SelectionBar conditional on an assigned task color and keep
the multi-selection ring unchanged.
Keep TaskRowItem and MobileTaskList data flow unchanged because both
already reach the shared TaskItem with active-task state.
Extend the existing desktop sidebar-open Playwright flow and mobile sidebar
task-action flow to assert the active row's visible state and preserve the
mobile no-overflow check.
Tests
apps/web/components/task/task-item.test.tsx remains a focused regression
check for the shared row's existing state and action behavior. No React
component test is added solely for static class markup.
The desktop E2E flow maps to AC-UI-SIDEBAR-TASK-FOCUS-001.1 and
AC-UI-SIDEBAR-TASK-FOCUS-001.2, with its uncolored active-row assertion
covering AC-UI-SIDEBAR-TASK-FOCUS-001.5.
The mobile E2E flow maps to AC-UI-SIDEBAR-TASK-FOCUS-001.3 and
AC-UI-SIDEBAR-TASK-FOCUS-001.4, with the uncolored active-row flow also
covering AC-UI-SIDEBAR-TASK-FOCUS-001.5.
E2E tests
apps/web/e2e/tests/task/sidebar-task-open.spec.ts shall assert the active
row's data-active state, background, top-and-bottom-only borders, and no
leading marker when opening an uncolored task.
apps/web/e2e/tests/task/mobile-sidebar-task-actions.spec.ts shall assert
the same active treatment inside the mobile task sheet for colored and
uncolored tasks, and keep its document-horizontal-overflow assertion.