Skip to content

feat: grouped issue display with bordered tables#2

Merged
erikreinert merged 3 commits intomainfrom
feature/grouped-issues
Feb 19, 2026
Merged

feat: grouped issue display with bordered tables#2
erikreinert merged 3 commits intomainfrom
feature/grouped-issues

Conversation

@erikreinert
Copy link
Member

@erikreinert erikreinert commented Feb 19, 2026

Summary

  • Add grouped table rendering that organizes child issues under their parent with bordered title boxes connected to child data tables via box-drawing characters
  • Batch-fetch parent issues excluded by filters so children still display under the correct group header with sub-issue progress indicators (e.g., "2/3 done")
  • Wire up RenderGroupedTable as the default list renderer (non-tree mode), with RenderTable retained for --tree mode
  • Add comprehensive test coverage for grouped rendering (standalone fallback, multiple groups, filtered parents, progress display, ordering, edge cases) and DB parent-fetching patterns

Test plan

  • Run go test ./internal/render/... to verify grouped table rendering tests pass
  • Run go test ./internal/db/... to verify parent-fetching pattern tests pass
  • Run docket issue list and verify issues with parents display in bordered groups
  • Run docket issue list --tree and verify tree mode still works as before
  • Run docket issue list --json and verify JSON output is unchanged (flat)
  • Verify filtered lists (e.g., docket issue list --status todo) correctly fetch and display parent headers for excluded parents

Add progress-fetching logic to the issue list command that collects all
parent issue IDs (from both the parentMap of filter-excluded parents and
parents present in the result set) and calls GetBatchSubIssueProgress in
a single batch query. The result is stored as a map[int]SubIssueProgress
for the grouped renderer to display done/total counts on parent headers.
The query only runs in human-readable mode when parent issues exist.
Use RenderGroupedTable as the default list renderer (non-tree mode),
replacing the flat table. Refactor grouped output to use box-drawing
borders (┌├└) that connect parent title headers to child tables,
add title truncation to fit terminal width, and extract helper
functions (buildParentTitle, buildTitleBox, colorTableInnerWidth).

Add comprehensive tests for RenderGroupedTable covering grouping,
progress display, filtered parents, standalone fallback, ordering,
and edge cases. Add DB test for the parent-fetching pattern used
by the CLI to resolve filtered-out parents.
@erikreinert erikreinert self-assigned this Feb 19, 2026
@erikreinert erikreinert merged commit 31502e2 into main Feb 19, 2026
9 checks passed
@erikreinert erikreinert deleted the feature/grouped-issues branch February 19, 2026 20:14
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

Comments