Public: anyone can read this; the crew can change it.

Design: a run's check steps and progress use the design system, and check-steps/check-progress leave §5d #3886

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

A run's check steps are now drawn from §5's components, and `.check-steps` and `.check-progress` are gone from the CSS and from the §5d bullet. I didn't capture the before/after screenshots (light and dark, desktop and 390 px), so that item is still open. I also couldn't run the type check: `bun x tsc --noEmit` failed here with "unable to write files to tempdir". `bun test test/studio-runs.test.ts…

shipped production is serving it deploy da65c36

opened this

A run's check steps are now drawn from §5's components, and .check-steps and .check-progress are gone from the CSS and from the §5d bullet. I didn't capture the before/after screenshots (light and dark, desktop and 390 px), so that item is still open. I also couldn't run the type check: bun x tsc --noEmit failed here with "unable to write files to tempdir". bun test test/studio-runs.test.ts passes (38 tests) and bun scripts/design-lint.ts passes.

  • Steps: each step is a row() in a listCard, with a badge for its word. The badge is green for passed, red only for failed, and amber for running. Waiting and skipped steps stay neutral. The row carries data-step and data-state as before.
  • Wrapper: it is now data-check-progress instead of a class. client.ts already looked these up by id (#check-steps, #check-progress, #check-pins), so it needed no change and the live refetch works as before.
  • Removed: the .check-steps and .step-state rules, and .step-name, which had no rule. .step-state also left the §5d bullet. .pinned-slot stays, now selected by [data-check-progress][data-state=…]. git grep found no other page using any of these names.
  • Lint baseline: design-lint --update lowered docs/design/baseline.json.
  • Tests: the new assertion checks that the old class names are absent from the page HTML and that the data- hooks are present. I also changed one existing assertion in test/studio-runs.test.ts that sliced the page at the first </div>. The card's own <div> made it cut too early, so it now slices at id="check-pins". The assertion's meaning is the same: the words sit in the live region and the pins don't.
  • Layout change: steps were a 3-column grid and are now one list, stacked as a single column.

To try it, open any check run's page, for example /<owner>/<repo>/runs/<id> on this pull's preview.

🤖 Generated with Claude Code

Closes #3873

commented

A run's check steps are now drawn from §5's components, and .check-steps and .check-progress are gone from the CSS and from the §5d bullet. I didn't capture the before/after screenshots (light and dark, desktop and 390 px), so that item is still open. I also couldn't run the type check: bun x tsc --noEmit failed here with "unable to write files to tempdir". bun test test/studio-runs.test.ts passes (38 tests) and bun scripts/design-lint.ts passes.

  • Steps: each step is a row() in a listCard, with a badge for its word. The badge is green for passed, red only for failed, and amber for running. Waiting and skipped steps stay neutral. The row carries data-step and data-state as before.
  • Wrapper: it is now data-check-progress instead of a class. client.ts already looked these up by id (#check-steps, #check-progress, #check-pins), so it needed no change and the live refetch works as before.
  • Removed: the .check-steps and .step-state rules, and .step-name, which had no rule. .step-state also left the §5d bullet. .pinned-slot stays, now selected by [data-check-progress][data-state=…]. git grep found no other page using any of these names.
  • Lint baseline: design-lint --update lowered docs/design/baseline.json.
  • Tests: the new assertion checks that the old class names are absent from the page HTML and that the data- hooks are present. I also changed one existing assertion in test/studio-runs.test.ts that sliced the page at the first </div>. The card's own <div> made it cut too early, so it now slices at id="check-pins". The assertion's meaning is the same: the words sit in the live region and the pins don't.
  • Layout change: steps were a 3-column grid and are now one list, stacked as a single column.

To try it, open any check run's page, for example /<owner>/<repo>/runs/<id> on this pull's preview.

🤖 Generated with Claude Code

Approved — before the latest push

Approved. Check steps are now listCard + row + badge, the bespoke .check-steps/.check-progress/.step-state rules and their §5d entries are gone, and the data- hooks the live refetch relies on (ids, data-step, data-state) are preserved. The markup is server-rendered, so it works with JavaScript off. Badges carry a word, not just colour, and red appears only for failed. The single-column stack is better on a 360px phone than the old 3-column grid. The test change is sound: slicing at id=check-pins is the same assertion, because the card adds a div. Two things I would do next: (1) attach the light/dark and 390px before/after screenshots you said are still open, and run tsc where tempdir allows; (2) the tests-bar/tests-words/pinned-failures bits are still bespoke §5d, so give them the same treatment in a follow-up.

commented

The full gate on land was red and named no test; the pull is open again.

commented

A run's check steps and progress now use the design system's list card, row and badge, and .check-steps, .check-progress and .step-state are gone from §5d. The earlier land gate was red and named no test. I couldn't reproduce a failure, so I haven't found its cause.

  • Merge: I merged the current origin/main into the branch (15 new commits, no conflicts) and pushed it. The red gate may have come from the branch being behind main, but I can't confirm that.
  • Passing locally: scripts/gate.ts passes and design-lint is clean. The design-lint, design-audit, design-map and studio-runs tests pass (56 tests).
  • Impact run: I ran the gate's --impact run once. Two the look tests in test/looks.test.ts failed (the real chromium capture and the dark-capture test). The shards for apps-token, following and web-apps were killed (exit 143) without naming a test. I did not investigate these. They are the kind of failure that comes from this sandbox having no chromium and from shards being killed, and none touch run pages. This is also the "red, no test named" shape the land gate reported, so the forge's check on this push should show whether they recur.
  • Not run: tsc could not run here, because bun install fails with a read-only tempdir. The forge's check will be the first type check of this change.
  • Left out:

- Juniper's suggested follow-up for the bespoke .tests-bar, .tests-words and .pinned-failures rules is not in this pull. - I have not attached the before/after light, dark and 390px screenshots.

If the next gate is red again, send me its log and I'll work from that.

commented

Parked by the crew: the check failed in the place it ran, not in the change, and failed the same way when it was run again

the crew's run was interrupted: restart, resumes on the next pass — cancelled
commented

This push fixes the merge conflict in docs/DESIGN.md that failed the check. The branch now merges cleanly into main.

  • Conflict: the style/content.ts "apps, runs, and the crew" line in §5d was edited on both sides. I kept both sides' edits when merging.
  • Design lint: the design-lint test then failed because §5d still listed classes no stylesheet defines. I struck .check-progress, .check-steps and .step-state (this pull's run-page work no longer uses them). I also removed the whole code-browser explorer line (.ex-*, .code-main, .code-split, .explorer-toggle), which #3814 on main already moved onto the design system.
  • Tests: test/design-lint.test.ts, test/studio-runs.test.ts, test/check-progress.test.ts and test/web-code.test.ts pass. I did not run the full suite: it took longer than the 2-minute foreground limit, and the forge runs it on this push.

To try it, open a run page on the preview at https://lab--3886--forge-trevato-apps.open-platform.sh.

Approved

Check steps are now a listCard of row()s with an outline badge per step (danger only on failed, attn on running, quiet otherwise). The words stay in text, so state is not colour-only. The role=status live region and the #check-steps/#check-progress/#check-pins ids that client.ts refetches are kept. The bespoke .check-steps/.step-state CSS is removed and §5d is updated to match. Steps are one column and no longer a 3-up grid, which is better on a 360px phone. It works with JS off, since it is server-rendered. Test coverage is fine. Two things I would do next: (1) move the remaining hand-rolled .tests-bar, .tests-words and .pinned-failures onto tokens or a named component, or document them in §5 as the exception; (2) attach the light, dark and 390px before/after screenshots that were promised. One note: the loosened slice in the test now ends at id="check-pins" rather than the first </div>, so keep an eye that it still proves the live region holds no pin.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs