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

The pull page speaks the home page's language, with looks before and after #9659

Merged opened this

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

Merged

The pull page's cards are now borderless, but the looks at 1440 and 390 (light and dark, before and after) are not on the pull. I couldn't render screenshots from this sandbox. The forge's preview of this pull should produce the "after" looks.

shipped production is serving it deploy abf00b0

opened this

The pull page's cards are now borderless, but the looks at 1440 and 390 (light and dark, before and after) are not on the pull. I couldn't render screenshots from this sandbox. The forge's preview of this pull should produce the "after" looks.

What changed

  • In src/web/pages/pull.ts, these cards are now .card.bare, so they are rows and a heading on the page background with no box:

- the merge box (tone kept as data, but a bare card draws no border, so the tone isn't visible) - the review card and its sign-in line - the commits list - the Slices card - the "Run this code?" card

  • The team-verdicts block is now a plain list, no longer a card.
  • docs/design/areas/pull.md has a note on this. It adds no new class.
  • test/pull-merge-box.test.ts matched the old card mt class, so I updated its selector to card mt bare.

Checks

  • design-lint and tsc --noEmit are clean.
  • The pull-related tests pass: 159 pass, 2 fail. The two failures are in test/pull-quiet.test.ts ("the pull page's check is a line with a dot and its word, not a card around a badge" and "the pull list wears a dot per row, and the head badges only Private"). They fail the same way on the base without my change when the suites run together, and pull-quiet.test.ts passes on its own both with and without my change.
  • I ran scripts/gate.ts but it printed nothing, so I can't say it passed.

Left out

  • The aside's label and assignee cards, holdCard and wallCard. They live in other modules outside this issue's file list.
  • Any restructuring of the page's layout.

Try it Open any pull's /files page, for example /<owner>/<repo>/pulls/<n>/files.

Closes #9588

commented

The pull page's cards are now borderless, but the looks at 1440 and 390 (light and dark, before and after) are not on the pull. I couldn't render screenshots from this sandbox. The forge's preview of this pull should produce the "after" looks.

What changed

  • In src/web/pages/pull.ts, these cards are now .card.bare, so they are rows and a heading on the page background with no box:

- the merge box (tone kept as data, but a bare card draws no border, so the tone isn't visible) - the review card and its sign-in line - the commits list - the Slices card - the "Run this code?" card

  • The team-verdicts block is now a plain list, no longer a card.
  • docs/design/areas/pull.md has a note on this. It adds no new class.
  • test/pull-merge-box.test.ts matched the old card mt class, so I updated its selector to card mt bare.

Checks

  • design-lint and tsc --noEmit are clean.
  • The pull-related tests pass: 159 pass, 2 fail. The two failures are in test/pull-quiet.test.ts ("the pull page's check is a line with a dot and its word, not a card around a badge" and "the pull list wears a dot per row, and the head badges only Private"). They fail the same way on the base without my change when the suites run together, and pull-quiet.test.ts passes on its own both with and without my change.
  • I ran scripts/gate.ts but it printed nothing, so I can't say it passed.

Left out

  • The aside's label and assignee cards, holdCard and wallCard. They live in other modules outside this issue's file list.
  • Any restructuring of the page's layout.

Try it Open any pull's /files page, for example /<owner>/<repo>/pulls/<n>/files.

commented

The preview deploy log you pasted shows the app up and /healthz answering 200. "No tests declared, none run" is a note about the preview, not an error. The real failure was scripts/gate.ts, which exits 2 when a pull touches src/web/pages/pull.ts without a "Try:" line in a commit message.

I pushed an empty commit with that line. The gate now exits 0, and tsc --noEmit is clean. I did not re-run the test suite, since the new commit changes no code. The earlier tests all still pass except the two test/pull-quiet.test.ts failures, which also fail without my change when the pull suites run together.

Try: open /preview-admin/sample/pulls/3/files on the preview. The merge box, commits and review show as rows with no boxes.

Changes requested — before the latest push

Direction is sound (cards to bare rows, no new class), but three things block it. 1) The looks at 1440 and 390, light and dark, before and after, are not on the pull; the issue asks for them, and the builder said none exist. 2) The merge box's tone is data-only on a bare card, so ready/blocked/failed is no longer visible; state must stay readable without a box (a word or a dot per row, not colour alone). 3) No test fails without the change: the only test edit is a selector rename. Add assertions that the merge box, review, commits, slices and run-this-code cards carry bare and that team-verdicts is not a card. Also: on the preview's pull page I still see card mt and card comment boxes; say which stay and why (comments are a box around a thing, principle 6/7). The pull-quiet failures the builder reports in a combined run should be explained or fixed, not waved off.

commented

I fixed points 2 and 3; point 1 (the looks) is still missing, and the card mt and card comment question is unanswered. tsc and design-lint are clean, and pull-merge-box passes. A combined run of the pull tests still fails two byte-budget checks in pull-quiet.

Changed

  • Merge state (point 2): every merge-box row now starts with a state word, Ready, Blocked, Failed, Merged or Closed, ahead of the existing sentence. It is a <strong class="state-word" data-state="…"> in box() in src/web/pages/pull.ts. State no longer relies on a border or colour.
  • Tests (point 3): test/pull-merge-box.test.ts has two new tests.

- The first pins data-state as Ready for the mergeable pull, Blocked for one waiting on checks, and Merged for a merged one. - The second checks that the review card and every non-comment mt card on the pull page carry bare. It also checks that teamsCard renders without a card class. team-verdicts renders no card class on the page either.

  • Not covered: these tests don't assert bare on the commits, slices or run-this-code cards. Their fixtures (a fork pull, an approval wait) aren't in this suite, and I did not add them.

Not done

  • Looks at 1440 and 390, light and dark, before and after: I can't produce them from this sandbox, which has no browser. The pull still has none.
  • Why card mt and card comment remain: I haven't answered this. I didn't convert comment cards. I read your principle 6/7 comment as supporting that (a comment is a box around a thing), but I didn't check the preview page you looked at.
  • The pull-quiet failures: both byte-budget tests fail only in a combined run. test/pull-variants.test.ts followed by pull-quiet is enough to trigger it: the pull page comes to 31474 bytes against a 31250 budget, and the list to 25454 against 25230. With my change stashed, the combined run shows the same numbers, so this isn't from this pull. I didn't find what pull-variants leaves behind that adds about 224 bytes.

Try it at /preview-admin/sample/pulls/3/files on the preview.

Changes requested — before the latest push

Direction is right (cards to bare rows), but not ready. Fix first: put the looks (1440 and 390, light and dark, before and after) on the pull; the issue asks for them and the preview now produces the after set. Then: (1) state-word is a new class with no definition and the area doc says 'No new class'; (2) the state word repeats the sentence beside it ('Merged · Merged.'), against principle 1; (3) tests do not cover the commits, slices and run-this-code cards, which the pull says it converted; (4) comment cards stay boxes, so say why or convert them (principles 6, 7). No security findings: the diff adds only escaped markup built from fixed words.

commented

The pull page's merge box, review, commits, slices and run-this-code cards are now .card.bare (#9588): rows and a heading on the page's one background, with no box around them.

Not on the pull: the looks before and after. I couldn't make them from my sandbox. Chromium aborts there because it has to bind a unix socket, and the sandbox refuses that. The forge's API lists only a thumb of /preview-admin/sample/pulls/3 for this pull; the desk and phone looks of the preview's pull page aren't in the list my token can see. So the eight looks (1440 and 390, light and dark, before and after) still need taking somewhere a browser can run.

Merge state. The card no longer sets data-tone, which drew nothing on a bare card. Each sentence already opens with its state ("Ready to merge", "Waiting on checks.", "Merged.", "Closed without merging.", "Merge on the origin."), so the row puts the existing .dot in the state's tone before it. That makes the state a word plus a mark, not colour alone (principle 6). The state-word class and the word that repeated the sentence are gone. No new class.

Team verdicts. These are now a .list of .rows inside a section.team-verdicts.mt, with no .card. The mt is set once, on the section, so the spacing isn't doubled. Each row holds its text in one <span>, so the row's flex layout doesn't pull it apart.

What stays a box, and why:

  • Each file's diff: the code scrolls inside its own frame.
  • The comments: commentCard in src/web/pages/thread.ts draws them for the issue page too, so changing them here would change another page. #9667 makes them timeline rows.

Tests (test/pull-merge-box.test.ts). Against the page before #9588, all six tests fail.

  • Merge row: checks the dot and opening word for ready, waiting on checks, merged, closed (no tone) and a fork (merge on the origin).
  • Bare cards: checks bare on the review, commits and slices cards (a pull with two commits) and on the run-this-code card (a pull with origin_head_repo set).
  • Team verdicts: teamsCard, built from a typed TeamVerdict[], renders a .list with no card class.

slicesCard is now exported, a small change from this work. The note in docs/design/areas/pull.md says all of the above.

Known red outside this change: pull-quiet. Its two byte-budget tests fail whenever test/pull-variants.test.ts runs before them in the same process. The pull page comes to 31474 bytes against a 31250 budget, and the list to 25454 against 25230. The numbers are identical with this change stashed, and pull-quiet passes when run alone. Something pull-variants leaves behind adds about 224 bytes; I haven't found what.

Checks run: bun scripts/gate.ts, bun x tsc --noEmit and bun scripts/design-lint.ts pass, and so does test/pull-merge-box.test.ts.

Try it: open /preview-admin/sample/pulls/3/files on the preview. The merge row should read as a dot and a sentence with no box, and the review and commits should be headed rows.

🤖 Generated with Claude Code

Approved

Earlier asks: (2) merge state is now a dot plus the sentence opening word, not colour alone: met. (3) tests now fail without the change (dot/word per state, bare on review/commits/slices/run-this-code, teamsCard a plain list): met. Comments and diffs staying boxes is explained (shared thread.ts, #9667): met. pull-quiet byte-budget failure is shown identical on base in a combined run; not this pull. Looks (1): the builder cannot render them; the forge takes the after looks at this head, but I could not open them from my sandbox and no before/after set is attached, so box 2 stays open. Non-blocking: attach before/after looks when a browser is available.

commented

Left #9588 open: 1 unticked item remain (Looks at 1440 and 390, light and dark, before and after, are on the pull.).

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs