Files
kandev/docs/plans/sidebar-task-row-presentation/task-02-render-configured-task-rows.md
T
2026-08-24 23:33:49 +00:00

90 lines
4.0 KiB
Markdown

---
id: "02-render-configured-task-rows"
title: "Render configured task rows"
status: complete
wave: 2
depends_on: ["01-persist-task-row-presentation"]
plan: "plan.md"
spec: "../../specs/ui/requirements/sidebar-task-row-presentation.md"
---
# Task 02: Render Configured Task Rows
## Acceptance
- Sidebar rows apply the effective view's detail visibility, order, details toggle, and right-side
choice without changing Kanban cards or the rich task list.
- Relative time and repository suppression follow the spec, and missing values reserve no space.
- A moved provider status remains the single interactive indicator and coexists with the task menu.
## Verification
```bash
cd apps && pnpm install --frozen-lockfile
cd apps && pnpm --filter @kandev/web test -- --run components/task/task-item.test.tsx components/task/task-item-repository.test.tsx components/task/task-item.mr-guard.test.tsx components/task/task-row-presentation.test.ts
cd apps/web && pnpm run typecheck
cd apps && pnpm --filter @kandev/web lint -- components/task/task-item.tsx components/task/task-item-stats-row.tsx components/task/task-item-leading-badges.tsx components/task/task-contribution-icons.tsx components/task/task-row-presentation.ts
```
## Files Likely Touched
- `apps/web/components/task/task-item.tsx`
- `apps/web/components/task/task-item-stats-row.tsx`
- `apps/web/components/task/task-item-leading-badges.tsx`
- `apps/web/components/task/task-contribution-icons.tsx`
- `apps/web/components/task/task-row-presentation.ts`
- `apps/web/components/task/task-switcher-row.tsx`
- `apps/web/components/task/task-switcher.tsx`
- Focused tests beside these files
## Dependencies
Task 01.
## Parallelism
`parallel-safe` with Task 03 after Task 01. This task owns task-row rendering and contribution-icon
placement. Task 03 owns the settings surface.
## Inputs
- The display rules in the sidebar task-row presentation spec.
- The normalized effective presentation from Task 01.
- Existing time selection, repository grouping suppression, contribution indicators,
`TaskRowMetadata`, queue indicators, and task-menu behavior.
## TDD Sequence
1. Add pure resolver tests for ordered visible details, relative-time deduplication, repository
grouping, and missing trailing data. Record the expected failures.
2. Add render tests for details enabled and disabled, queue and plugin metadata, each trailing
choice, and one moved contribution indicator.
3. Add a keyboard test that opens the provider summary and the task menu as separate targets.
4. Implement presentation plumbing and the pure resolver.
5. Split configurable details from appended queue and debug indicators and gate the full metadata
block with `details_enabled`.
6. Generalize the trailing slot and move, rather than duplicate, the change-request indicator.
7. Run focused tests, typecheck, and changed-file lint. Record exact results.
## Risks
- Moving the icon can mount two tooltip state owners or remove the focused node. Render one location
from one resolved placement.
- Hiding metadata can leave vertical gaps if title-container spacing remains unconditional.
- The row menu can cover an interactive provider indicator if it reuses the passive-value overlay.
- Subtask toggles also occupy the trailing area and must remain reachable.
## Output Contract
Report RED failures, rendering and focus changes, files changed, exact unit, typecheck, and lint
results, mobile-impact notes, blockers, risks, and synchronized task and plan status.
## Results
RED rendering tests covered ordered details, grouping suppression, details hiding, trailing choices,
provider-status placement, missing values, and menu coexistence. The effective presentation is now
threaded through sidebar rows, with plugin and queue/debug metadata gated by the details master
toggle and one provider indicator rendered in its selected location. Task-row coverage passed with
78 tests across 5 files; the final focused cleanup set passed with 60 tests across 5 files; typecheck
and changed-file ESLint passed.