Skip to content

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

Part of the-ui-works-on-a-phone — Every first-party surface works on a phone, and the primary flow is accepted there.

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.

Searches the titles and descriptions of every page this site publishes.