4.0 KiB
| id | slug | title | status | kind | priority | labels | created_at | updated_at | assignee | legacy_ticket | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 20260528-163238-multi-pod-view-section-layout | multi-pod-view-section-layout | Polish multi-Pod view section layout | closed | task | P2 |
|
2026-05-28T16:32:38Z | 2026-05-28T16:49:25Z | null | null |
Background
20260527-000023-multi-pod-view-ui implemented the initial tui --multi dashboard. The current layout should be polished before building more interaction on top of it.
The desired list shape is sectioned by Pod state rather than a flat row list. The list area should visually emphasize live work first and keep closed/stopped history compact.
Target shape:
--pending---
a
b
--working---
c
d
--closed--
# only a few rows
The blank area between working and closed is intentional: the live sections should occupy the available vertical space, while the closed section stays compact at the bottom.
There is also a visual defect where the input-area separator and the list-area separator produce two adjacent separators. The multi-Pod view should have a single clean boundary between the Pod list/dashboard and the composer/input area.
Requirements
- Change
tui --multilist layout to explicit sections:pending: live Pods that are idle/waiting and ready for input.working: live Pods that are running/processing, plus paused Pods if a separate paused section is not introduced.closed: stopped/restorable history entries.
- Render section headers even when a section is empty only if that makes the view easier to understand; otherwise empty sections may be hidden. The choice should be consistent and tested/snapshotted where practical.
- Allocate vertical space so that:
- live sections (
pending+working) take the main flexible area. closedis pinned near the bottom of the list/dashboard area.closedshows only a small fixed number of rows initially, with 3 visible rows as the target.- excess height appears as blank space above the
closedsection rather than expanding closed history.
- live sections (
- Keep selection/navigation sane across sections.
- Selection should move through visible rows in display order.
- Direct send eligibility remains based on the selected
PodListEntryaction state. - Hidden closed rows must not accidentally become selected unless scrolling/paging for closed entries is explicitly implemented.
- Fix the double-separator defect between the Pod list/dashboard and the composer/input area.
- There should be one visual boundary, not two adjacent horizontal rules/borders.
- Do not introduce the same double-border issue between section headers and rows.
- Preserve existing
tui --multibehavior outside layout.tui --multiCLI entrypoint and conflicts remain unchanged.- Composer contents are preserved across selection changes.
- Direct send to selected idle live Pod remains supported.
- running/paused/stopped targets remain safely disabled unless separately implemented.
Acceptance criteria
tui --multirenders Pod rows grouped intopending,working, and compactclosedsections.- The closed section is limited to about 3 visible rows and is visually anchored below the flexible live area.
- The blank/flexible space is placed above
closed, not below it and not by expanding closed history. - The boundary between list/dashboard and composer has a single separator/border.
- Selection and direct-send target mapping still use the underlying
PodListEntryand remain correct after sectioning. - Focused tests cover section classification, closed-row limiting, selection over visible section rows, and composer separator layout state where practical.
cargo fmt --checkcargo test -p tui multi --no-default-featuresor equivalent focused tests.cargo check -p tui -p client -p pod
Out of scope
- Reopening the completed
multi-pod-view-uiticket. - Adding per-section scrolling unless needed for a minimal correct implementation.
- Changing
PodListdiscovery/visibility semantics. - Changing direct-send delivery semantics.
- Adding new CLI flags.