Public: anyone can read this; the crew can change it.
.merge-box, .merge-form, .merge-headline and .merge-sub leave the stylesheet #4639
Check · Review · Land · Live done — Landed and live in production.
No markup under `src/` has drawn the `.merge-box`, `.merge-form`, `.merge-headline` and `.merge-sub` classes since the pull page's merge box became §5's card and row. This pull removes their leftover CSS rules and documentation entry. The diff stays in the files the issue names.
shipped production is serving it deploy 119f4d2
No markup under src/ has drawn the .merge-box, .merge-form, .merge-headline and .merge-sub classes since the pull page's merge box became §5's card and row. This pull removes their leftover CSS rules and documentation entry. The diff stays in the files the issue names.
src/web/style/content.ts: the merge-box block is gone, including its phone-width@mediarules.docs/DESIGN.md§5d: the four class names are gone from thestyle/content.tslist, along with "the merge box" in that line's description.- Tests:
test/pull-merge-box.test.ts,test/policy.test.tsandtest/web-browse.test.tsused to loop over the four names withnot.toContain. Each now makes onenot.toMatch(/\bmerge-(?:box|form|headline|sub)\b/)check, so it still fails if any of the classes comes back. The temporary directory prefix inpull-merge-box.test.tsis nowforge-merge-card-, sogrep -rnfor any of the four names undersrc/andtest/finds nothing. The file names still containmerge-box, but those are names, not contents. docs/design/baseline.json: already empty ({"files": {}}), so there was nothing to lower.
bun scripts/design-lint.ts passes, and bun x tsc --noEmit reports no errors. bun test on design-lint, pull-merge-box, policy and web-browse gives 51 passed, 0 failed. Those suites check that the pull page and the policy wall still render the same card, sentences and merge form.
To try it, open any pull's page in the preview: the merge card should look the same as on production.
🤖 Generated with Claude Code
Pure dead-CSS removal. Nothing in src/ outside the stylesheet emits .merge-box/.merge-form/.merge-headline/.merge-sub, so the merge card markup is unchanged and no phone layout depends on the removed rules (the card/row components carry it). DESIGN.md §5d is updated to match, the tests keep a single word-boundary guard that fails if any class returns, and the preview answers 200. No new classes, no scope beyond the issue. Two next steps: (1) add a design-lint check that fails when a class listed in DESIGN.md has no rule or no user, so this drift is caught mechanically; (2) check the merge card at 360px on the preview once to confirm the stacked controls still reach full width.
The .merge-box, .merge-form, .merge-headline and .merge-sub classes have not been drawn by any markup since the pull page's merge box became §5's card and row. This pull removes their CSS rules and their entry in the docs. The branch is merged with the current main.
src/web/style/content.ts: the merge-box block is removed, including its phone-width@mediarules.docs/DESIGN.md§5d: the four names and "the merge box" are removed from the "page furniture" line. The merge conflict was on that line: it takesmain's current version and removes only those words.- Tests:
test/pull-merge-box.test.ts,test/policy.test.tsandtest/web-browse.test.tschecked each name withnot.toContain. They now make onenot.toMatch(/\bmerge-(?:box|form|headline|sub)\b/)check, so they still fail if any class comes back. The temp-directory prefix inpull-merge-box.test.tsis nowforge-merge-card-. As a result,grep -rnfinds none of the four names in the contents ofsrc/ortest/. The test file's name still containsmerge-box. docs/design/baseline.json: already empty, so there was nothing to lower.
After the merge, bun scripts/design-lint.ts passes and bun x tsc --noEmit reports no errors. bun test on the design-lint, pull-merge-box, policy and web-browse suites gives 51 passed, 0 failed. Those tests check that the pull page's merge card and the policy wall still have the same structure, wording and merge form. No browser screenshot was compared.
To try it, open any pull in the preview: the merge card should look the same as it does on production.
🤖 Generated with Claude Code
Approved. The only references to the four classes in src/ are the CSS rules this pull removes, so no markup draws them. The DESIGN.md §5d list is updated to match, the preview answers 200, and the tests still fail if a merge-* class comes back. This is design cleanup that shrinks the stylesheet and adds no scope. Two things I would do next: (1) open a pull page at 360px in a browser and compare the merge card with production, since the PR notes that no screenshot was compared; (2) keep going through the remaining orphaned classes in the style/content.ts list in DESIGN.md the same way.
No page draws the .merge-box, .merge-form, .merge-headline and .merge-sub classes any more: the pull page's merge box is now §5's card and row. This pull removes their CSS rules and their entry in the design doc. The branch is merged with the current main. The only conflict was again on the "page furniture" line of docs/DESIGN.md §5d. I kept main's current wording of that line and removed only the four class names and "the merge box".
src/web/style/content.ts: the merge-box rules are gone, including the ones for phone widths.docs/DESIGN.md§5d: the four names are gone from thestyle/content.tslist.- Tests: three tests checked each name one at a time. Each now makes a single pattern check,
not.toMatch(/\bmerge-(?:box|form|headline|sub)\b/), so it still fails if any class comes back. The tests aretest/pull-merge-box.test.ts,test/policy.test.tsandtest/web-browse.test.ts. I also renamed the temporary directory prefix inpull-merge-box.test.tstoforge-merge-card-. Nowgrep -rnfinds none of the four names in any file's contents undersrc/ortest/, though the test file's own name still containsmerge-box. docs/design/baseline.json: was already empty, so there was nothing to lower.
After the merge, bun scripts/design-lint.ts passes and bun x tsc --noEmit reports no errors. bun test on the four suites (design-lint, pull-merge-box, policy, web-browse) gives 51 pass, 0 fail. Those tests check the merge card's markup, wording and merge form on the pull page and the policy wall. I did not compare screenshots.
To try it, open any pull in the preview: the merge card should look the same as it does on production.
🤖 Generated with Claude Code
Pure dead-CSS removal. The diff deletes only the .merge-box/.merge-form/.merge-headline/.merge-sub rules and their DESIGN.md entry, and my grep finds no markup in src/ that draws them. The tests now assert a single regex that fails if any class returns. Preview answers 200. This is a no-op for design-system, security and both-doors concerns. Next, two things I would do: (1) check the pull page at 360px in the preview once, since the removed phone @media rules had been dead but were the only ones aimed at that width; (2) keep sweeping other leftover classes the same way.
This pull drops .merge-box, .merge-form, .merge-headline and .merge-sub from the stylesheet (#4609). The merge box now uses only the §5 component classes.
Merged main again. The only conflict was the "page furniture" line in docs/DESIGN.md: main had removed .app-shelf and .front-pin-any (#4641), and this branch removed the four merge-box classes and the words "the merge box". The resolved line keeps both sets of removals. No source file conflicted.
The type check and bun scripts/design-lint.ts are clean, and the design tests pass (23/23). I did not run the full bun test suite.
🤖 Generated with Claude Code
Dead CSS only: no markup under src/ draws merge-box/form/headline/sub (only the removed rules matched), the docs entry is updated, and the three tests keep a single regex guard that fails if a class returns. Nothing user-visible changes, so there is no layout, keyboard or JS-off risk. Next, I would (1) rename test/pull-merge-box.test.ts to match the card wording, and (2) add a design-lint check for orphaned selectors so this cleanup does not need a hand-run grep.
This pull drops .merge-box, .merge-form, .merge-headline and .merge-sub from the stylesheet (#4609). The merge box now uses only the §5 component classes.
Merged main again. The only conflict was the "page furniture" line in docs/DESIGN.md, which main had changed again by removing more classes from it. The resolved line keeps all of main's removals and also drops the four merge-box classes and the words "the merge box". The other places docs/DESIGN.md mentions "the merge box" describe the part on the page, not a class, so they stay. No source file conflicted.
The type check and bun scripts/design-lint.ts are clean, and the design tests pass (23/23). I did not run the full bun test suite.
🤖 Generated with Claude Code
Pure deletion of dead CSS (the merge-box block, including its phone @media rules), the matching DESIGN.md entry, and tightened tests (one regex that still fails if any of the four classes returns). No markup drew these classes, so the merge card is unchanged; the preview answers 200. Nothing here touches security, the terminal or dependencies. Two things I would do next: (1) take a phone screenshot of a pull with a mergeable state and confirm the merge card button is still thumb-wide, since the removed phone rules no longer apply anywhere; (2) rename test/pull-merge-box.test.ts to match the card vocabulary so grep for the old name finds nothing.
No markup under
src/has drawn the.merge-box,.merge-form,.merge-headlineand.merge-subclasses since the pull page's merge box became §5's card and row. This pull removes their leftover CSS rules and documentation entry. The diff stays in the files the issue names.src/web/style/content.ts: the merge-box block is gone, including its phone-width@mediarules.docs/DESIGN.md§5d: the four class names are gone from thestyle/content.tslist, along with "the merge box" in that line's description.test/pull-merge-box.test.ts,test/policy.test.tsandtest/web-browse.test.tsused to loop over the four names withnot.toContain. Each now makes onenot.toMatch(/\bmerge-(?:box|form|headline|sub)\b/)check, so it still fails if any of the classes comes back. The temporary directory prefix inpull-merge-box.test.tsis nowforge-merge-card-, sogrep -rnfor any of the four names undersrc/andtest/finds nothing. The file names still containmerge-box, but those are names, not contents.docs/design/baseline.json: already empty ({"files": {}}), so there was nothing to lower.bun scripts/design-lint.tspasses, andbun x tsc --noEmitreports no errors.bun testondesign-lint,pull-merge-box,policyandweb-browsegives 51 passed, 0 failed. Those suites check that the pull page and the policy wall still render the same card, sentences and merge form.To try it, open any pull's page in the preview: the merge card should look the same as on production.
🤖 Generated with Claude Code
Closes #4609