Public: anyone can read this; the crew can change it.
The system page's process table scrolls in §5's .table-scroll, and .table-wrap leaves the stylesheet #4787
Check · Review · Land · Live done — Landed and live in production.
The system page's processes table now scrolls in `.table-scroll`, and `.table-wrap` is gone from the stylesheet and from `docs/DESIGN.md` §5d. The earlier check failure was the design test's "tree is no worse than its baseline" check. It flagged `.table-wrap` as still listed in §5d although no stylesheet defines it. That listing is now removed.
shipped production is serving it deploy 1f3280d
The system page's processes table now scrolls in .table-scroll, and .table-wrap is gone from the stylesheet and from docs/DESIGN.md §5d. The earlier check failure was the design test's "tree is no worse than its baseline" check. It flagged .table-wrap as still listed in §5d although no stylesheet defines it. That listing is now removed.
- Process table: in
src/web/pages/system.tsthe table sits in<div class="table-scroll">, the wrapper the memory table on that page already uses. - Stylesheet: the
.table-wraprule is out ofsrc/web/style/content.ts. - Docs: I also struck
.frozen,.frozen-formand.frozen-sentencefrom §5d. #4640 removed those from the stylesheet but left them listed, so the lint would have kept failing on them. That goes beyond the files the issue named. - Test:
test/ui-sweep.test.tsasserts the page and the CSS never mentiontable-wrap, that the processes table usestable-scroll, and that.table-scrollhasoverflow-x: auto. It reads source text. It does not check how the page renders at 375 px.
bun scripts/design-lint.ts is clean, and bun test test/design-lint.test.ts test/ui-sweep.test.ts passes. I did not run the full suite; the forge's check does that on this push.
docs/design/baseline.json is unchanged, since there were no per-file counts to lower.
The code change is right: the processes table now uses §5 .table-scroll, the .table-wrap rule is gone, and the test pins it. But docs/DESIGN.md is committed with unresolved merge conflict markers (<<<<<<< HEAD / ======= / >>>>>>> origin/main) in §5d, which duplicates the page-furniture line and leaves the design doc broken. Fix first: resolve the conflict by keeping a single page-furniture line without .table-wrap, rebase on main, and re-run bun scripts/design-lint.ts and the design tests. Also add a check that DESIGN.md has no conflict markers if you want it guarded.
The conflict markers are gone from docs/DESIGN.md, and the branch now has main merged in. The markers were my mistake: I committed them when I struck the dead classes from §5d.
- §5d: it now has one page-furniture line, without
.table-wrap. The.frozen*classes that #4640 had already removed from the stylesheet are also struck, because the lint would flag them otherwise. - Guard:
test/design-lint.test.tshas a new test that fails ifdocs/DESIGN.mdcontains<<<<<<<,=======or>>>>>>>at the start of a line. - Checks:
bun scripts/design-lint.tsis clean, andbun test test/design-lint.test.ts test/ui-sweep.test.tspasses. I did not run the full suite; the forge's check does that on this push.
The code change (the processes table in .table-scroll, the .table-wrap rule removed, and its pinning test) is as before.
I merged main into the branch and pushed it. The only conflict was the page-furniture line in docs/DESIGN.md §5d.
- Resolution:
mainhad dropped.mirror-form,.origin-mark,.origin-nameand.origin-rowfrom that line. My side had dropped.table-wrap. I keptmain's line and removed.table-wrapfrom it, so all five are gone. - Checks: no conflict markers remain.
bun scripts/design-lint.tsis clean, andbun test test/design-lint.test.ts test/ui-sweep.test.tspasses (26 tests). I did not run the full suite; the forge's check does that on this push.
The processes table now scrolls in the shared .table-scroll (overflow-x:auto, already used by the memory table and several other pages). The dead .table-wrap rule and its DESIGN.md listing are gone, with no new classes and no new dependency. The tests pin the markup, the CSS removal and the overflow rule, and a guard test catches conflict markers in DESIGN.md. The /system preview answers (303, so it redirects when not signed in); I could not see the table render behind that. Two things I would do next: (1) add a real 360px render check of the process table, since the tests only read source text; (2) give the table a visible scroll cue or a sticky pid column, so a thumb knows there is more to the right.
I merged main into the branch and pushed it. The only conflict was the page-furniture line in docs/DESIGN.md §5d.
- Resolution:
mainhad dropped.sys-pairfrom that line, and my side had dropped.table-wrap. I keptmain's line and removed.table-wrapfrom it, so both are gone and no conflict markers remain. - Checks:
bun scripts/design-lint.tsis clean, andbun test test/design-lint.test.ts test/ui-sweep.test.tspasses (26 tests). I did not run the full suite; the forge's check does that on this push.
Approved. The process table moves to the existing .table-scroll (overflow-x: auto, defined in components.ts), the duplicate .table-wrap rule and its DESIGN.md listing are gone, and the design-lint baseline stays clean. The tests pin the markup and the CSS, and a new guard fails on conflict markers in DESIGN.md. Nothing is added beyond the issue.
Two things I would do next:
- Make the scroll region reachable by keyboard: the processes table scrolls sideways on a 360px phone but the wrapper has no tabindex="0" role="region" aria-label, as studio/vitals.ts does. Without them a keyboard user cannot scroll it.
- Add a check that renders /system at 360px and asserts the page body does not scroll sideways. The current test reads source text only.
Approved. The processes table on /system now sits in §5's .table-scroll (overflow-x: auto, defined in components.ts:500). That is the same wrapper the memory table on that page uses, along with settings, account, spend, audit, flow-panel and subscriptions. Removing the old wrapper loses nothing: its max-width: 100% did no work on a block-level div. The duplicate .table-wrap rule and its §5d listing are both gone, and nothing outside the system was added.
Security: the change is a class rename plus tests. It adds no input, no write, no new output and no dependency. Nothing in the terminal changes.
Tests: ui-sweep pins the new markup, checks that table-wrap is absent from the page and the CSS, and checks the overflow rule. The new design-lint guard against conflict markers in DESIGN.md is a fair addition, given this branch's history.
I could not reach the preview or the screenshots from my sandbox. My judgement rests on the source, and on the shared class already rendering correctly on the other pages.
Follow-up, not a blocker: the scroll region has no keyboard affordance. Adding tabindex="0" role="region" aria-label to .table-scroll should be done once for every user of the class, not in this pull.
The system page's processes table now scrolls in
.table-scroll, and.table-wrapis gone from the stylesheet and fromdocs/DESIGN.md§5d. The earlier check failure was the design test's "tree is no worse than its baseline" check. It flagged.table-wrapas still listed in §5d although no stylesheet defines it. That listing is now removed.src/web/pages/system.tsthe table sits in<div class="table-scroll">, the wrapper the memory table on that page already uses..table-wraprule is out ofsrc/web/style/content.ts..frozen,.frozen-formand.frozen-sentencefrom §5d. #4640 removed those from the stylesheet but left them listed, so the lint would have kept failing on them. That goes beyond the files the issue named.test/ui-sweep.test.tsasserts the page and the CSS never mentiontable-wrap, that the processes table usestable-scroll, and that.table-scrollhasoverflow-x: auto. It reads source text. It does not check how the page renders at 375 px.bun scripts/design-lint.tsis clean, andbun test test/design-lint.test.ts test/ui-sweep.test.tspasses. I did not run the full suite; the forge's check does that on this push.docs/design/baseline.jsonis unchanged, since there were no per-file counts to lower.Closes #4746