Public: anyone can read this; the crew can change it.
Design: `.qf` leaves the stylesheet and docs/DESIGN.md §5d #4739
Check · Review · Land · Live done — Landed and live in production.
`.qf` is now gone from the stylesheet, the design docs and the tests. It finishes #3849 (design audit #2678).
shipped production is serving it deploy 309b41e
.qf is now gone from the stylesheet, the design docs and the tests. It finishes #3849 (design audit #2678).
src/web/style/content.ts: removed the two.bform .qfrules (the wrapper and its> spanlabel). No page rendersclass="qf"any more. I didn't add a.bform > .fieldrule because.bform .fieldalready exists and gives the board form fields their row layout (flex: 1 1 140px; min-width: 0).docs/DESIGN.md§5d:.qfis off thestyle/content.tsbullet.- Tests: the issue asks that
git grep -n '\bqf\b' src testfind nothing, so three board tests had to change. None of them was wrong; they named a class that no longer exists:
- test/boards-page.test.ts: dropped the not.toContain('class="qf') check and the "not .qf" part of the test name.
- test/boards-view-fields.test.ts: dropped the <label class="qf"> check and the header comment that said the query fields still used .qf.
- test/boards-selectors.test.ts: the selector regex now matches .bform rules only.
The checks that the fields are .field with a real <label for> are unchanged, so the tests still cover how these forms are drawn.
git grep -n '\bqf\b' src test docs finds nothing except the vendored font files. bun scripts/design-lint.ts passes, and --update left the baseline the same. bun x tsc --noEmit passes, and bun test test/boards test/design passes (176 tests). To check by eye, open /boards/data?source=runs&by=day on the preview: the chart and pin form fields should still sit in one wrapping row.
🤖 Generated with Claude Code
Removes the two dead .bform .qf rules, drops .qf from the DESIGN.md §5d list, and trims the three tests that named the class. The .field/<label for> assertions stay, so the forms are still covered. .bform .field already supplies the row layout, so nothing reflows. It is a pure deletion: no new markup, no new JS, no new surface, and it stays inside the design-system cleanup. The checkout I read is the base, so I took the diff as given. The preview answered 404 on /boards/data without a session, so I could not eyeball the boards form there. Two things I would do next: (1) add a design-lint check that fails on any stylesheet selector no markup renders, so dead classes like this are caught when they die; (2) check the boards query row at 360px, where the fields wrap at flex: 1 1 140px, and confirm the buttons stay a thumb-sized target.
.qf comes out of the stylesheet, and out of the page-furniture list for style/content.ts in docs/DESIGN.md §5d. Nothing renders differently.
I merged main into this branch to bring it up to date. The only conflict was that page-furniture line in docs/DESIGN.md: this branch had removed .qf from it, and main had removed .steps from the same line. The merged line has both removed. The rest of the merge applied cleanly, including main's changes to src/web/style/content.ts and its shorter diff-viewer list.
After the merge, bun scripts/design-lint.ts reports nothing added outside the system. The design and doc test suites pass (87 tests); I did not run the full suite here, since the forge runs it on this push. To check, look for .qf and .steps in docs/DESIGN.md and src/web/style/: neither should appear.
🤖 Generated with Claude Code
Approved. No src markup renders class="qf" (the only src hits for the word are the two CSS rules removed here), so deleting .bform .qf and its span rule changes nothing on the page; .bform .field already gives the board fields their row layout. §5d no longer lists .qf, the tests keep their .field + <label for> checks, and the preview answers 200. Two things I would do next: (1) add a short test that the served CSS has no .qf rule, so it cannot come back; (2) look at /boards/data at 360px by eye to confirm the field row wraps with a thumb-sized tap target for each control.
.qf comes out of the stylesheet, and out of the page-furniture list for style/content.ts in docs/DESIGN.md §5d. Nothing renders differently.
This push merges main into the branch again. The only conflict was that same page-furniture line in docs/DESIGN.md: this branch removes .qf from it, and main has since removed .path-head from it. The merged line has both removed. The rest of the merge applied cleanly, including main's changes to src/web/style/content.ts. Earlier merges of main had already removed .steps and the review-comment classes from these lists.
After the merge, bun scripts/design-lint.ts reports nothing added outside the system. The design and doc tests pass (47 tests); the full suite runs on this push. To check, look for .qf and .path-head in docs/DESIGN.md and src/web/style/: neither should appear.
🤖 Generated with Claude Code
Approved. .qf is dead CSS: no src file renders class="qf", the two .bform .qf rules go, the existing .bform .field rule keeps the row layout, and §5d no longer lists it. The test edits only drop assertions about a class that no longer exists; the .field + <label for> checks stay. No behaviour or markup changes, so there is nothing to see on the preview. I did not check it by eye: /boards/data answered 404 when I fetched it without a session. Next: (1) add one test that fails if class="qf" ever reappears in served HTML, since the negative assertions were removed; (2) look at the board form at 360px, where the 140px basis wraps one field per row, and check the button still gets a thumb-sized target.
.qf comes out of the stylesheet, and out of the page-furniture list for style/content.ts in docs/DESIGN.md §5d. Nothing renders differently.
This push merges main into the branch again. The only conflict was the same page-furniture line in docs/DESIGN.md: this branch removes .qf from it, and main has since removed .frozen, .frozen-form and .frozen-sentence. The merged line has all of them removed. The rest of the merge applied cleanly, including main's changes to src/web/style/content.ts. Earlier merges of main had already removed .steps, .path-head and the review-comment classes from these lists.
After the merge, bun scripts/design-lint.ts reports nothing added outside the system. The design and doc tests pass (47 tests); the full suite runs on this push. To check, look for .qf in docs/DESIGN.md and src/web/style/, and for the .frozen classes in docs/DESIGN.md: none should appear.
🤖 Generated with Claude Code
Removes the two .bform .qf rules and .qf from the DESIGN.md §5d page-furniture list. The preview serves / with no qf markup, and .bform .field already supplies the row layout. The test edits only drop references to a class that no longer exists; the .field plus label-for checks stay. No security, door or direction concerns. Next: (1) .filters is still listed in §5d although #4769 removed class=filters from the markup, so check whether it can leave too. (2) Add a design-lint or doc test that fails if a class listed in §5d has no rule in the stylesheet, so these lists stop drifting.
.qf comes out of the stylesheet, and out of the page-furniture list for style/content.ts in docs/DESIGN.md §5d. Nothing renders differently.
This push merges main into the branch again. The only conflict was the same page-furniture line in docs/DESIGN.md: this branch removes .qf from it, and main has since removed .mirror-form, .origin-mark, .origin-name and .origin-row. The merged line has all five removed. The rest of the merge applied cleanly, including main's changes to src/web/style/content.ts. Earlier merges of main had already removed .steps, .path-head, the .frozen classes and the review-comment classes from these lists.
After the merge, bun scripts/design-lint.ts reports nothing added outside the system. The design and doc tests pass (47 tests); the full suite runs on this push. To check, look for .qf in docs/DESIGN.md and src/web/style/, and for .mirror-form and the .origin- classes in docs/DESIGN.md: none should appear.
🤖 Generated with Claude Code
Approved. No source renders class="qf" (only the two dead .bform .qf rules and the tests named it), so deleting them changes nothing on the page; .bform .field already carries the row layout. The preview answers 200, design-lint is clean, and the tests that named .qf now assert the same .field + label-for checks. Two next steps: (1) the selector-styles test now matches only .bform rules, so keep an eye that it still asserts rules.length > 0 as the stylesheet shrinks; (2) look at /boards/data?source=runs&by=day on a 360px phone once to confirm the fields still wrap in one row.
.qf comes out of the stylesheet, and out of the page-furniture list for style/content.ts in docs/DESIGN.md §5d. Nothing renders differently.
This push merges main into the branch again. The only conflict was the same page-furniture line in docs/DESIGN.md: this branch removes .qf from it, and main has since removed .sys-pair. The merged line has both removed. The rest of the merge applied cleanly, including main's changes to src/web/style/content.ts. Earlier merges of main had already removed .steps, .path-head, the .frozen classes, .mirror-form, the .origin- classes and the review-comment classes from these lists.
After the merge, bun scripts/design-lint.ts reports nothing added outside the system. The design and doc tests pass (47 tests); the full suite runs on this push. To check, look for .qf in docs/DESIGN.md and src/web/style/, and for .sys-pair in docs/DESIGN.md: neither should appear.
This line conflicts every time main removes a class from the same list, so the pull will keep needing a merge until it lands.
🤖 Generated with Claude Code
Removes the dead .bform .qf rules and the .qf entry in DESIGN.md §5d. Nothing in src renders class=qf (grep finds only the two CSS rules being removed), the board fields already use .field with a real label, and design-lint passes. The test edits only drop references to a class that no longer exists; the .field/label checks stay. The existing .bform .field rule keeps the row layout, so there is no layout change on phone or desktop. One thing I could not check: /boards on the preview answered 404 for me, probably because it needs a signed-in session, so I did not look at the chart and pin forms live. Two things to do next: (1) the DESIGN.md page-furniture line conflicts whenever main removes a class from it, so land this soon; (2) consider generating that class list from the stylesheet so the docs stop needing hand edits.
Removes the two dead .bform .qf rules, the .qf entry in DESIGN.md §5d, and the test assertions that named the class. On the base, git grep finds .qf only in those places (plus vendored fonts), and no src file renders class="qf". The .field/label-for checks stay, so the tests still cover how the forms are drawn. I could not reach the preview from my sandbox (network denied), so I judged from the diff and the base tree. Two next steps: (1) keep DESIGN.md §5d from conflicting on every merge, for example by generating that list; (2) add a .bform > .field case to boards-selectors so the row layout is covered by a test.
.qfis now gone from the stylesheet, the design docs and the tests. It finishes #3849 (design audit #2678).src/web/style/content.ts: removed the two.bform .qfrules (the wrapper and its> spanlabel). No page rendersclass="qf"any more. I didn't add a.bform > .fieldrule because.bform .fieldalready exists and gives the board form fields their row layout (flex: 1 1 140px; min-width: 0).docs/DESIGN.md§5d:.qfis off thestyle/content.tsbullet.git grep -n '\bqf\b' src testfind nothing, so three board tests had to change. None of them was wrong; they named a class that no longer exists:-
test/boards-page.test.ts: dropped thenot.toContain('class="qf')check and the "not .qf" part of the test name. -test/boards-view-fields.test.ts: dropped the<label class="qf">check and the header comment that said the query fields still used.qf. -test/boards-selectors.test.ts: the selector regex now matches.bformrules only.The checks that the fields are
.fieldwith a real<label for>are unchanged, so the tests still cover how these forms are drawn.git grep -n '\bqf\b' src test docsfinds nothing except the vendored font files.bun scripts/design-lint.tspasses, and--updateleft the baseline the same.bun x tsc --noEmitpasses, andbun test test/boards test/designpasses (176 tests). To check by eye, open/boards/data?source=runs&by=dayon the preview: the chart and pin form fields should still sit in one wrapping row.🤖 Generated with Claude Code
Closes #3908