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

Quieter pages, rest of #8719: pull page, repository head, design-lint rules, before/after looks, cold-read #8800

Merged opened this

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

Merged

This pull finishes part of #8719: the pull page, the pull list, the repository head and two design-lint rules. Two checklist items are only partly done and the screenshots are missing (see "Left out"). Passing here: `tsc`, `scripts/gate.ts`, `design-lint`, and 470 tests across the touched files. `scripts/fast.ts` exited 2 (the diff includes `scripts/design-lint.ts`, so it can't name tests). I pick…

shipped production is serving it deploy 4915f35

opened this

This pull finishes part of #8719: the pull page, the pull list, the repository head and two design-lint rules. Two checklist items are only partly done and the screenshots are missing (see "Left out"). Passing here: tsc, scripts/gate.ts, design-lint, and 470 tests across the touched files. scripts/fast.ts exited 2 (the diff includes scripts/design-lint.ts, so it can't name tests). I picked the files covering the pull page, lists, head, live client and lint myself, and the forge's check runs the rest.

What changed

  • Pull page (src/web/studio/change.ts): the check line is no longer a card around a badge. It is a dot, the state word, the note, the answered-tell link and the deploy link. The "Take it back" card is now a bare line with its action. live.ts now reads the word from [data-pull-word] instead of .badge.
  • Pull list (src/web/studio/lists.ts): each row has the status dot in place of the avatar and word badge. The meta line is author · tell · time. States that need someone (working, look, stopped) are still written out. The row's note is now on the dot's aria-label only.
  • Repository head (src/web/chrome.ts): the "Public" badge is gone. Public is the default and the audience sentence already says it. "Private" keeps its badge.
  • design-lint: two new counts in the existing ratchet, with the baseline updated and a test (test/design-lint.test.ts).

- caption: text-transform: uppercase in a css template. - label: a "Status:" or "State:" label in a string.

  • Test change: I rewrote one assertion in test/repo-audience.test.ts. It required the "Public" badge, which this pull removes on purpose.

Bytes (snappy-style fixture, test/pull-quiet.test.ts)

  • Pull page: 31,751 → 31,622.
  • Pulls list: 24,738 → 24,540.
  • Budgets: 32,000 and 24,900. The savings are only 129 and 198 bytes, and the page varies by about 160 bytes with port digits and times. So these budgets stop the pages growing; they are not a real squeeze.

Test coverage: test/pull-quiet.test.ts also checks the dot, no badge in the check line, no "Status:", and that the comment, close, tab and Files actions are still on the pull page.

Left out

  • Screenshots: no before/after screenshots on desk and phone, because the sandbox can't take them.
  • Palette: I did not add a new palette list for the pull page's actions. I only checked the actions are still on the page.
  • Cold-read: only a mechanical stand-in (a title naming the page, one h1). The 10-second reader test (scripts/cold-read.ts) needs a model and was not run.
  • Display control: no per-list display control for grouping and ordering.
  • Dot repaint: the issues list is still not repainted live when an issue changes state. That is unchanged from before, as the issue said.

To try it, open any repository's /pulls and a pull's page.

Closes #8760

commented

I merged main into the branch and pushed. The only conflict was scripts/design-lint.ts, and I resolved it by dropping this branch's lint work.

main had already landed the same quiet-page rules (#8775): label, caps, echo and inline-colour, held in docs/design/quiet-debt.json. I took main's scripts/design-lint.ts and docs/design/baseline.json as they are. I also removed the caption/label counts I had added and the test I wrote for them in test/design-lint.test.ts. That test file now matches main.

Everything else in the pull is unchanged: the pull page's check line, the dots on pull rows, the repository head without the "Public" badge, and test/pull-quiet.test.ts.

tsc, gate.ts and design-lint pass. Six test files pass (84 tests): pull-quiet, design-lint, repo-audience, issues-quiet, studio-door and live-pages. The forge's check runs the rest.

The pull description is out of date. It says design-lint rules were added here, but those now come from #8775 on main.

commented

I fixed the failing check and pushed. The cause was my own change: pull-list rows now show a status dot where the avatar used to be, and one test still expected the author's initials on those rows.

The failing test was "an anonymous visitor reads one author for one change on all three pages, avatar included" in test/studio-search.test.ts. It compared the initials on the pull list row with the ones on the app page. I changed the assertion because the test was written for the old avatar, not because the code was wrong. It now checks that the list row still names the author ("ivy") and never says "the crew". It checks the initials only on the app page, where the avatar remains.

test/studio-search.test.ts passes (31 tests) and tsc is clean. I did not re-run the full suite here. The earlier check reported only this one failure, so the forge's check on this push will confirm the rest.

Approved

Approved. The pull page check is now a dot, its word and the note on one line. The pull list rows lead with a status dot, and the repository head badges only Private. All of it uses the existing dot and word-text components, adds no new class, and works with JavaScript off. The preview serves 200. Every action the pull page had is still on it, the bytes are held by a budget test, and the stale avatar assertion in studio-search was the test's fault and was fixed correctly.

Two things I would do next:

  1. On pull-list rows, info.note (for example why checks are red) is now only in the dot's aria-label. A thumb on a 360px phone has no hover, so a sighted phone user sees only the dot or the word. Put the note back in the row meta, at least for the working, look and stopped states that wordText already marks.
  2. Tighten test/pull-quiet.test.ts. expect(title).toContain("r") passes for almost any title, and the row-trail badge regex only matches one exact attribute order. Assert on the repo name with the separator, and assert that no .badge sits inside a row.
Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs