Public: anyone can read this; the crew can change it.
/resilience shows the nightly drill's output as plain lines, not a boxed card #9981
Check · Review · Land · Live done — Landed and live in production.
The nightly drill's output at `/resilience/nightly/:job` now shows as plain muted mono lines instead of a boxed card, like the rest of /resilience.
shipped production is serving it deploy f21b126
The nightly drill's output at /resilience/nightly/:job now shows as plain muted mono lines instead of a boxed card, like the rest of /resilience.
src/web/pages/resilience.ts:pre#nightly-outputnow usesmuted monoinstead ofcard mono, and keepstabindex="0"andaria-label="Output". The page now has a small style,NIGHTLY_OUTPUT_CSS, passed asstyleCssthe same wayRESILIENCE_CSSis:max-width: 100%; overflow-x: auto; scrollbar-width: thin; margin: 0. That keeps the output from boxing and makes a long line scroll sideways inside thepreinstead of the page on a phone.src/web/style/content.tsis unchanged.test/resilience-language.test.ts: a new test writes a flake-hunt log with a 400-character line and fetches/resilience/nightly/flake-huntas an admin. It checks that there is noclass="cardinside<main>, that theprekeeps itstabindexandaria-labeland has no card class, and that the page carries theoverflow-x: autorule. With onlyresilience.tsreverted to main it fails, and with the change it passes. The existing/resiliencetest only reached the "no output yet" paragraph, so theprewas never tested before.
Checks run here, all passing: bun scripts/design-lint.ts, bun scripts/gate.ts, bun x tsc --noEmit, and the resilience tests (test/resilience*.test.ts, test/checks-resilience.test.ts, test/tui-nightly-output.test.ts, test/security-floor-routes.test.ts, test/design*.test.ts). Two tests were skipped because the sandbox listens on a port instead of a unix socket. scripts/fast.ts named 1,333 test files, far over its budget, so I picked these myself; the forge's check runs the full suite on push. The 390 px sideways scroll wasn't looked at in a browser: the test only checks that the CSS rule is on the page.
To try it: as an admin, open /resilience/nightly/flake-hunt on the preview after a night has run.
🤖 Generated with Claude Code
The nightly drill's output at /resilience/nightly/:job now shows as plain muted mono lines instead of a boxed card, like the rest of /resilience.
src/web/pages/resilience.ts:pre#nightly-outputdrops thecardclass and usesmuted monoinstead. It keepstabindex="0"andaria-label="Output". A small page style,NIGHTLY_OUTPUT_CSS, setsmax-width: 100%; overflow-x: auto, so a long line scrolls sideways inside the block, not the whole page, on a phone. It's passed to the page the same wayRESILIENCE_CSSis, andsrc/web/style/content.tsis unchanged.test/resilience-language.test.ts: a new test writes a flake-hunt log with a 400-character line and opens/resilience/nightly/flake-huntas an admin. It checks:
- there is no class="card inside <main>;
- the pre keeps its tabindex and aria-label and has no card class;
- the page has the overflow-x: auto rule.
It fails when resilience.ts is put back to main's version and passes with the change. Until now the tests only reached the "no output yet" paragraph, never the pre.
- Follow-up commit: an empty commit adds the
Try:line the gate requires for page changes, because a force push to fix the first message isn't allowed.
These pass here: bun scripts/design-lint.ts, bun scripts/gate.ts, bun x tsc --noEmit, and the resilience tests (test/resilience*.test.ts, test/checks-resilience.test.ts, test/tui-nightly-output.test.ts, test/security-floor-routes.test.ts, test/design*.test.ts). Two of those were skipped because the sandbox uses a port instead of a unix socket. scripts/fast.ts named 1,333 test files, far over its time budget, so I picked these myself. The local gate passing doesn't confirm the Try: fix, since the gate failed only in the forge's check; that check runs again on this push.
The phone-width scrolling was not looked at in a browser; the test only checks that the CSS rule is on the page.
Try: as an admin, open /resilience/nightly/flake-hunt on the preview after a night has run.
🤖 Generated with Claude Code
The output is now plain muted mono lines, keeps tabindex=0 and aria-label, and scrolls inside itself (pre keeps its default no-wrap; overflow-x:auto, max-width:100%). Focus ring comes from the global :focus-visible. Works with JS off (server-rendered). No card, no new accent, no README change; no new feature so no TUI screen needed. The preview answers 303 to sign-in for the token, so I could not see the admin page; I judged from source and the test. Two things I would do next: (1) look at /resilience/nightly/flake-hunt at 360px in a browser once, since the test only proves the CSS rule is present; (2) move NIGHTLY_OUTPUT_CSS next to the other page styles or into the shared pre rule at content.ts:167 so there is one overflow rule for pre, not two.
The nightly drill's output at
/resilience/nightly/:jobnow shows as plain muted mono lines instead of a boxed card, like the rest of /resilience.src/web/pages/resilience.ts:pre#nightly-outputnow usesmuted monoinstead ofcard mono, and keepstabindex="0"andaria-label="Output". The page now has a small style,NIGHTLY_OUTPUT_CSS, passed asstyleCssthe same wayRESILIENCE_CSSis:max-width: 100%; overflow-x: auto; scrollbar-width: thin; margin: 0. That keeps the output from boxing and makes a long line scroll sideways inside thepreinstead of the page on a phone.src/web/style/content.tsis unchanged.test/resilience-language.test.ts: a new test writes a flake-hunt log with a 400-character line and fetches/resilience/nightly/flake-huntas an admin. It checks that there is noclass="cardinside<main>, that theprekeeps itstabindexandaria-labeland has no card class, and that the page carries theoverflow-x: autorule. With onlyresilience.tsreverted to main it fails, and with the change it passes. The existing/resiliencetest only reached the "no output yet" paragraph, so theprewas never tested before.Checks run here, all passing:
bun scripts/design-lint.ts,bun scripts/gate.ts,bun x tsc --noEmit, and the resilience tests (test/resilience*.test.ts,test/checks-resilience.test.ts,test/tui-nightly-output.test.ts,test/security-floor-routes.test.ts,test/design*.test.ts). Two tests were skipped because the sandbox listens on a port instead of a unix socket.scripts/fast.tsnamed 1,333 test files, far over its budget, so I picked these myself; the forge's check runs the full suite on push. The 390 px sideways scroll wasn't looked at in a browser: the test only checks that the CSS rule is on the page.To try it: as an admin, open
/resilience/nightly/flake-hunton the preview after a night has run.🤖 Generated with Claude Code
Closes #9974