ADR-0078: Multi-line tabs flow into packed, justified rows
- Status: Accepted
- Date: 2026-09-08
- Deciders: jka
- Decision: D78
Context
Multi-line tab mode (ADR-0057) placed tabs with grid. Grid forces equal column
widths across rows, so short tabs left gaps, and the widened columns made rows wider
than the width calculation assumed, clipping the last tab of a row.
Decision
Each visual row is a frame, and tabs are packed into it left to right with pack -in,
which respects each tab's natural width. A new row starts before a tab would overflow.
Rows are then justified like a paragraph: every row except the last expands its tabs
to fill the width; the last row keeps natural widths.
Because pack -in does not reparent, the row frames are siblings of the tabs and must
be lowered beneath them; otherwise their backgrounds cover the tabs. A test asserts
the stacking order.
Consequences
- Rows are tight and fill the strip without clipping.
- Width calculation remains analytic, so layout is still synchronous and testable without a display.