Skip to content

feat(task-board): ✨ Improve composer task board long lists - #145

Merged
jorben merged 1 commit into
masterfrom
feat/taskitem-display-limit
Apr 28, 2026
Merged

feat(task-board): ✨ Improve composer task board long lists#145
jorben merged 1 commit into
masterfrom
feat/taskitem-display-limit

Conversation

@jorben

@jorben jorben commented Apr 28, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add a composer variant for task board cards with bounded height and internal task-list scrolling.
  • Show compact progress details, current task, and failed-task count for long or composer task boards.
  • Add unit coverage for constrained composer rendering, long-list summaries, and short-list compatibility.

Test Plan

  • npm run typecheck
  • npm run test:unit
  • Manually smoke test the desktop UI with short, long, and failed active task boards.

🤖 Generated with TiyCode

…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
@github-actions

github-actions Bot commented Apr 28, 2026

Copy link
Copy Markdown

AI Code Review Summary

PR: #145 (feat(task-board): ✨ Improve composer task board long lists)
Preferred language: English

Overall Assessment

Detected 1 actionable findings, prioritize CRITICAL/HIGH before merge.

Major Findings by Severity

  • MEDIUM (1)
    • src/modules/workbench-shell/ui/task-board-card.tsx:115 - showSummary logic causes summary to appear unexpectedly when collapsed

Actionable Suggestions

  • Revisit showSummary derivation to avoid displaying summary for short default-variant boards when collapsed manually.
  • Align completedCount logic with isBoardCompleted or document the convention to avoid drift.
  • Conditionalize min-h-0 to composer variant only to avoid future layout surprises.
  • Expand the test suite to cover short-board collapsed summary and real overflow scrolling.
  • Confirm that the hardcoded max-h-[min(36vh,320px)] works well across display densities (retina, 1080p, ultrawide) and does not cause overflow/scroll usability issues.

Potential Risks

  • ShowSummary always true when collapsed may introduce a UX regression for boards that previously had no summary line.
  • Scroll containment class tests pass only on class presence, so runtime scroll behavior could break silently.
  • The new max-height constraint could introduce vertical clipping of task board content on some screen sizes if content is taller than 36vh/320px.
  • If TaskBoardCard does not handle variant="composer" gracefully (e.g., falls back to defaults), visual regressions are possible.

Test Suggestions

  • Test collapsed short default board does not show summary if not intended.
  • Test progress bar complete state when board.status is completed but some tasks are still pending.
  • Test composer variant with many tasks to confirm overflow scrolling actually works.
  • Add a visual regression test or manual check for the composer variant of the task board card.
  • Test with many tasks to verify overflow behavior within the constrained container.

File-Level Coverage Notes

  • src/modules/workbench-shell/ui/task-board-card.tsx: Generally well-structured additions; summary logic has a potential edge case with the collapsed state, and some layout CSS needs review for default variant safety. (patch is feature-complete, clean, and well-typed)
  • src/modules/workbench-shell/ui/task-board-card.test.tsx: Good test additions for new functionality; missing a few edge-case assertions for collapsed default boards and overflow behavior.
  • src/modules/workbench-shell/ui/runtime-thread-surface.tsx: The changes are low-risk improvements: adding height constraints and a variant prop for the composer context. The diff is minimal and focused.

Inline Downgraded Items (processed but not inline)

  • None

Coverage Status

  • Target files: 3
  • Covered files: 3
  • Uncovered files: 0
  • No-patch/binary covered as file-level: 0
  • Findings with unknown confidence (N/A): 0

Uncovered list:

  • None

No-patch covered list:

  • None

Runtime/Budget

  • Rounds used: 1/4
  • Planned batches: 2
  • Executed batches: 2
  • Sub-agent runs: 2
  • Planner calls: 1
  • Reviewer calls: 2
  • Model calls: 3/64
  • Structured-output summary-only degradation: NO

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated PR review completed.

  • Findings kept: 1
  • Findings with unknown confidence: 0
  • Inline comments attempted: 1
  • Target files: 3
  • Covered files: 3
  • Uncovered files: 0
    See the summary comment for detailed analysis and coverage details.

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;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[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

[From SubAgent: general]

@jorben
jorben merged commit 42fec2a into master Apr 28, 2026
6 checks passed
@jorben
jorben deleted the feat/taskitem-display-limit branch April 28, 2026 04:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant