I3217 — A wide table on a UI screen is a stacked list below the narrow width, from the same rows
Give the kit's table one narrow projection (each row a card with its labelled cells, the first column its heading) applied by CSS below the declared narrow width, and use it on the Issues, PR Drain and workspace issue tables; a graph's table fallback is shown first at that width.
BLOCKED wave 1 · p2 · implementation profile · parallel safe
Blocked. This issue cannot start until I3214 is done. The status is derived from that, not declared.
Objective
Give the kit's table one narrow projection (each row a card with its labelled cells, the first column its heading) applied by CSS below the declared narrow width, and use it on the Issues, PR Drain and workspace issue tables; a graph's table fallback is shown first at that width.
Why
The 2026-10-08 mobile review named tables, modals and 1400 px graphs inside overflow-x as the dense surfaces that fail on phones. Proposed in ADR 0215 (A phone is the baseline width of every first-party surface, and the primary flow is accepted there before a surface grows) (proposed; it carries no authority until the owner accepts it). Sources: chatgpt-majordomus:c197#1.
Current state
The audit refuses page overflow; scripts/lib/interaction-specs/scroll-region.mjs holds tables that scroll inside their region.
Desired state
One kit class pair renders the same HTML rows as a table or as stacked cards by width; no second markup.
Scope
- share/ui/src/ui.css
- apps/majordomus-cli/src/ui/view.rs
- apps/majordomus-cli/src/ui/issues.rs
- apps/majordomus-cli/src/ui/prs.rs
Out of scope
- Server-side mobile detection
- A separate mobile template
Dependencies
Acceptance criteria
- At the floor width no listed table scrolls horizontally and every cell keeps its column label
- The served HTML is identical at every width
Validation
- scripts/ui audit --only /ui/issues
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib ui::view
Evidence required
- ui_audit_issues_floor_width
Evidence
None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.
Timeline
- started
- —
- verified
- —
- completed
- —
Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.
Canonical record: .ai/repo/project/issues/I3217.yaml. Read it back with majordomus plan show I3217.