feat(task-board): ✨ Improve composer task board long lists - #145
Conversation
…ollable task list Introduce a `variant` prop to `TaskBoardCard` for a compact "composer" layout that limits height and enables internal scrolling. The component now shows a progress summary (e.g., "2/8 completed", "1 failed") and the current active task when the list is long or the variant is set to composer. - Add `variant` and `compactThreshold` props to `TaskBoardCard` - Implement `showSummary` logic to display task completion and failure counts - Display the active task description when available - Constrain composer task boards with `max-h-[min(32vh,280px)]` and enable vertical scrolling via `overflow-y-auto` - Move `errorDetail` inside the task description span and display as a block element - Update `RuntimeThreadSurface` to use the composer variant and apply height/max-height constraints - Add unit tests for default, long-list, and composer variant behaviors Closes: #457
AI Code Review SummaryPR: #145 (feat(task-board): ✨ Improve composer task board long lists) Overall AssessmentDetected 1 actionable findings, prioritize CRITICAL/HIGH before merge. Major Findings by Severity
Actionable Suggestions
Potential Risks
Test Suggestions
File-Level Coverage Notes
Inline Downgraded Items (processed but not inline)
Coverage Status
Uncovered list:
No-patch covered list:
Runtime/Budget
|
| const failedCount = board.tasks.filter((task: TaskItemDto) => task.stage === "failed").length; | ||
| const activeTask = board.tasks.find((task: TaskItemDto) => task.id === board.activeTaskId) ?? getActiveTask(board); | ||
| const isLongList = totalCount > compactThreshold; | ||
| const showSummary = isComposerVariant || isLongList || collapsed; |
There was a problem hiding this comment.
[MEDIUM] showSummary logic causes summary to appear unexpectedly when collapsed
showSummary is true whenever collapsed is true, regardless of board length or variant. This may show a summary row even for short default-variant boards that were previously at their natural collapsed state.
Suggestion: Consider limiting collapsed summary to long lists or composer variant only: const showSummary = isComposerVariant || isLongList || (collapsed && (isComposerVariant || isLongList)); or keep it intentional if UX calls for it, but document the behavior.
Risk: Unintended UI noise / summary row appearing for short default boards when clicked to collapse.
Confidence: 0.85
Summary
Test Plan
🤖 Generated with TiyCode