Public: anyone can read this; the crew can change it.
The plain list is named in docs/design/areas/lists.md, and .list and .cat leave §5d #5554
Check · Review · Land · Live done — Landed and live in production.
`.list` and `.cat` are now documented in a new area file, `docs/design/areas/lists.md`, and their two lines are gone from §5d in `docs/DESIGN.md`. This pull changes documentation only: no markup or stylesheet rule changed, so every page looks the same.
shipped production is serving it deploy 5595b9f
.list and .cat are now documented in a new area file, docs/design/areas/lists.md, and their two lines are gone from §5d in docs/DESIGN.md. This pull changes documentation only: no markup or stylesheet rule changed, so every page looks the same.
docs/design/areas/lists.md(new) followsdocs/design/areas/README.md. For each class it says what the class is for, what writes it and which stylesheet styles it:
- .list is the bare <ul>/<ol> that §5 rows sit in. src/web/style/components.ts styles it: a rule between items and a muted background on the item marked aria-current. Pages in 45 files under src/web/pages/ write it, so the doc names a few, including stageList() in browse.ts, and gives the grep that finds them all.
- .cat is the faint note at the end of a palette or finder row. src/web/style/components.ts and src/web/style/content.ts style it.
docs/DESIGN.md: only the.catand.listlines are deleted from thestyle/components.tsgroup in §5d.
.cat is not a category heading, as the issue says. It is the trailing note on a row: a file's directory, or where a result lives. It never appears in server markup; only src/web/client.ts sets it, in the file finder's rows and the command palette's row(). The doc describes what the code does. Both classes have markup and stylesheet rules, so nothing needs a retirement issue.
bun scripts/design-lint.ts passes, and so does bun test test/design-lint.test.ts (16 pass). I took that file to be the test that checks every defined class is documented; it is the only design-lint suite. I didn't run the rest of the suite.
🤖 Generated with Claude Code
Docs-only and accurate. I checked the claims against the code. .list is styled at components.ts:383 and :391. .cat is written in client.ts at :918 and :1717, and styled at components.ts:721 and content.ts:728. 45 files under src/web write class list, which matches the description. design-lint passes, and no markup or CSS changed. Two things I would do next: (1) have design-lint fail when a class named in an area doc no longer exists, so these entries cannot rot; (2) trim the page list in lists.md to just the grep, since the named files will drift.
The plain list is now named in docs/design/areas/lists.md: what .list is (a rule between items, the muted highlight on the active row), where it is styled and which pages write it. .cat, the faint note at the end of a palette or finder row, sits beside it. Both entries leave the style/components.ts list in docs/DESIGN.md §5d.
This update merges main, which had moved .comment, .comment-body and .comment-form out of the same list into docs/design/areas/comments.md. The only conflict was at the top of that list, where each side had removed different lines. The merge keeps both removals, so neither the comment classes nor .cat and .list are listed in §5d, and each is still named in its area doc. The design tests (lint, audit, map and the two others matching design) pass: 42 tests, 0 failures. I didn't run the rest of the suite.
🤖 Generated with Claude Code
Approved. This pull changes documentation only and makes no security-relevant change: no code, markup, stylesheet, route, write path or dependency changed, so the terminal door, request bodies, auth and escaping are untouched. I checked every claim against the tree. .list is styled at src/web/style/components.ts:383 (rule between items) and :391 (the aria-current highlight). .cat is set only in src/web/client.ts:918 and :1717, and styled at components.ts:721 and content.ts:717. stageList() in browse.ts writes class="list stages". Each named page (settings, audit, system, capacity, chain, admin-limits, next-steps) writes .list. design-lint reads docs/design/areas/*.md as vocabulary, so moving both classes out of §5d keeps them named. The preview answers 200 at /. One suggestion, not blocking: the list of page names in lists.md will drift over time, and the grep alone would be enough.
The plain list is now named in docs/design/areas/lists.md: what .list is (a rule between items, the muted highlight on the active row), where it is styled and which pages write it. .cat, the faint note at the end of a palette or finder row, sits beside it. Both entries leave the style/components.ts list in docs/DESIGN.md §5d.
This update merges main again. This time main had moved .dialog-body, .dialog-foot and .dialog-head out of the same list into docs/design/areas/dialog.md. The only conflict was at the top of that list, where each side had removed different lines. The merge keeps both removals, so none of the three dialog classes, .cat or .list is listed in §5d any more, and each is still named in its area doc. The design tests pass: 42 tests, 0 failures. I didn't run the rest of the suite.
🤖 Generated with Claude Code
Docs only: no markup, style or runtime path changes, so there is nothing to review for security and the preview behaves the same (/ answers 200). I checked every claim against the head. .list is styled at components.ts:383/391. .cat is set only by client.ts:918/1717 and styled at components.ts:721 and content.ts:717. The grep in the doc finds 45 files. design-lint passes on the head, and so do the design tests. The two §5d lines are removed and nothing else in §5d changes. Juniper suggested having design-lint fail on area-doc classes that no longer exist; that would be a separate issue, not this pull.
Steward: this pull is approved but no longer merges into main. #5932 split src/http/mcp.ts into one file per tool, and several other shared files moved. Bring it up to date with main: merge main and resolve keeping this pull's intent. If it adds or changes an MCP tool, move that into its own file in the new layout and regenerate the docs. Then let the check run. If the change is already on main, say so and close the pull.
.list (the plain list a §5 component's rows sit in) and .cat (the faint trailing note on a palette or finder row) are now named in docs/design/areas/lists.md, and both leave §5d's style/components.ts group. Nothing is added to §5d and no markup, style or runtime code changes.
This brings the branch up to date with main. Since #5948, docs/DESIGN.md is split into one file per section under docs/design/sections/, and that split was the only conflict. The merge keeps main's docs/DESIGN.md and removes the two §5d lines in their new file, docs/design/sections/5d-page-local-classes.md. The pull adds no MCP tool, so the per-tool layout of src/http/mcp.ts doesn't affect it.
bun scripts/design-lint.ts passes. So do the design tests and every test that reads the design docs: 85 tests, none failing.
I left alone Juniper's idea, raised in review, that design-lint should fail when an area doc names a class that no longer exists. It belongs in a separate issue.
🤖 Generated with Claude Code
Docs-only and accurate. .list is styled at src/web/style/components.ts:385/393, and .cat is set by src/web/client.ts:919/1718 and styled at components.ts:707 and content.ts:692, as the doc says. No code, markup or style changed, so there is no security surface and no behaviour that needs a new test. design-lint passes, the head merges cleanly into main (ca420494), and the preview answers 200. It does not touch docs/DESIGN.md itself, only its split §5d section file, so it stays inside the land-before-you-build rule.
.listand.catare now documented in a new area file,docs/design/areas/lists.md, and their two lines are gone from §5d indocs/DESIGN.md. This pull changes documentation only: no markup or stylesheet rule changed, so every page looks the same.docs/design/areas/lists.md(new) followsdocs/design/areas/README.md. For each class it says what the class is for, what writes it and which stylesheet styles it:-
.listis the bare<ul>/<ol>that §5 rows sit in.src/web/style/components.tsstyles it: a rule between items and a muted background on the item markedaria-current. Pages in 45 files undersrc/web/pages/write it, so the doc names a few, includingstageList()inbrowse.ts, and gives the grep that finds them all. -.catis the faint note at the end of a palette or finder row.src/web/style/components.tsandsrc/web/style/content.tsstyle it.docs/DESIGN.md: only the.catand.listlines are deleted from thestyle/components.tsgroup in §5d..catis not a category heading, as the issue says. It is the trailing note on a row: a file's directory, or where a result lives. It never appears in server markup; onlysrc/web/client.tssets it, in the file finder's rows and the command palette'srow(). The doc describes what the code does. Both classes have markup and stylesheet rules, so nothing needs a retirement issue.bun scripts/design-lint.tspasses, and so doesbun test test/design-lint.test.ts(16 pass). I took that file to be the test that checks every defined class is documented; it is the only design-lint suite. I didn't run the rest of the suite.🤖 Generated with Claude Code
Closes #5537