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

docs/DESIGN.md §5d lists one class per line, so retiring one class never conflicts with retiring another #4908

Merged opened this

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

Merged

In `docs/DESIGN.md` §5d, every group that lists more than one class now has a sub-list with one `.class` code span per line. Before, each group's classes all sat on one long line, so any two pulls retiring two different classes edited the same line and conflicted, which is how #4644 and #4723 were closed. Now retiring a class means deleting its own line.

shipped production is serving it deploy d5b2fe2

opened this

In docs/DESIGN.md §5d, every group that lists more than one class now has a sub-list with one .class code span per line. Before, each group's classes all sat on one long line, so any two pulls retiring two different classes edited the same line and conflicted, which is how #4644 and #4723 were closed. Now retiring a class means deleting its own line.

  • What changed: each group keeps its lead sentence and every class. In the settings-rows group the lead still ends in "Classes:". The two groups that had a note after their class run — the .field-in-.bar note under style/base.ts, and the .split note under style/components.ts — now carry it as an indented paragraph after the sub-list. The §5d lead paragraph gains one sentence: "to retire a class, delete its line". The repository has no AGENTS.md, so the lead is where it says this. Nothing else in the file changes.
  • The reader is unchanged: scripts/design-lint.ts needed no edit. I saved registeredClasses() and documentedClasses() on the real DESIGN.md before and after the change, and the two outputs are byte-identical.
  • The test: a new test in test/design-lint.test.ts gives a small §5d in the old inline form and in the new sub-list form, notes and a Classes: lead included. It checks that both read back as the same fixed list. It does not pin the real file's 500-odd classes, because that list would have to change with every retirement and would become the next conflict point.

bun scripts/design-lint.ts is clean, and bun test test/design-lint.test.ts passes (16 tests).

To try it, retire any one class in §5d by deleting its - \.name\`` line, and run the lint with that class's CSS rule also removed.

🤖 Generated with Claude Code

Closes #4888

commented

In docs/DESIGN.md §5d, every group that lists more than one class now has a sub-list with one .class code span per line. Before, each group's classes all sat on one long line, so any two pulls retiring two different classes edited the same line and conflicted, which is how #4644 and #4723 were closed. Now retiring a class means deleting its own line.

  • What changed: each group keeps its lead sentence and every class. In the settings-rows group the lead still ends in "Classes:". The two groups that had a note after their class run — the .field-in-.bar note under style/base.ts, and the .split note under style/components.ts — now carry it as an indented paragraph after the sub-list. The §5d lead paragraph gains one sentence: "to retire a class, delete its line". The repository has no AGENTS.md, so the lead is where it says this. Nothing else in the file changes.
  • The reader is unchanged: scripts/design-lint.ts needed no edit. I saved registeredClasses() and documentedClasses() on the real DESIGN.md before and after the change, and the two outputs are byte-identical.
  • The test: a new test in test/design-lint.test.ts gives a small §5d in the old inline form and in the new sub-list form, notes and a Classes: lead included. It checks that both read back as the same fixed list. It does not pin the real file's 500-odd classes, because that list would have to change with every retirement and would become the next conflict point.

bun scripts/design-lint.ts is clean, and bun test test/design-lint.test.ts passes (16 tests).

To try it, retire any one class in §5d by deleting its - \.name\`` line, and run the lint with that class's CSS rule also removed.

🤖 Generated with Claude Code

Approved — before the latest push

Docs-only change plus one test. Lint is clean, the design-lint tests pass (15 here; the description says 16), and the preview answers 200. The new test would fail if the reader stopped accepting the sub-list form, and it avoids pinning the real class list. Next: (1) when the plan retires classes, delete the line and the CSS rule together. (2) Consider a lint check that §5d stays one class per line, so inline runs do not creep back.

commented

In docs/DESIGN.md, §5d's list of classes not yet retired now puts each class on its own line, nested under its file's bullet. Retiring a class means deleting its line, so two pulls that retire two different classes never edit the same line and no longer conflict.

This update merges main, which had retired .front-controls from the style/content.ts page furniture bullet in the old one-line format. The merge keeps the per-line layout and drops the .front-controls line, so both changes land and no class name or note changed otherwise.

bun scripts/design-lint.ts passes, as do test/design-lint.test.ts and test/review-design.test.ts (18 pass, 0 fail). To try it, run bun scripts/design-lint.ts, then delete any one line under §5d and run it again.

🤖 Generated with Claude Code

Approved — before the latest push

Docs-only change plus one test; no page, route or door is touched, so the experience is unchanged. Every class keeps its group and its notes, .front-controls and .app-shelf are gone as on main, and the new test reads the inline and the listed forms back as the same set, so it fails if the reader stops handling sub-lists. The lint and design-lint tests pass on the base checkout; the pull head was not checked out here, so I judged the diff itself. Two things I would do next: (1) have the lint fail a group whose classes are written inline again, so the one-per-line rule is enforced and not just stated; (2) when a group empties, delete its bullet and lead sentence in the same pull, so no bare lead is left behind.

commented

In docs/DESIGN.md §5d ("Page-local classes"), every class in the inventory now sits on its own bullet line, nested under the file it belongs to. Before, each file's classes ran together on one long line. Retiring a class now means deleting its line, so two pulls that retire two different classes no longer edit the same line and conflict (#4888). The text of each entry is unchanged, the only exception being that the file's description now ends with a colon before the nested list. No class was added or dropped by this change.

This update merges main. The only conflict was §5d itself. While this pull was open, main retired .composer from the studio/feed_style.ts entry, so that entry now lists just .feed and .feed-head.

bun scripts/design-lint.ts passes, and so do the design tests (design-audit, design-lint, design-map, review-design).

To check it, read §5d in docs/DESIGN.md: each bullet should name a file and list one class per indented line, the same set of classes that's in main's §5d.

🤖 Generated with Claude Code

Approved

Docs-only change plus one test. §5d now lists one class per line, so retiring a class deletes its own line and two retirements no longer conflict. The lint is clean and test/design-lint.test.ts passes here (15 tests). The preview answers 200. The new test would fail if the reader stopped accepting the sub-list form, and it avoids pinning the real class list, which would become the next conflict point. No code, dependency or security surface changed. Two things I would do next: (1) have design-lint print a clear message when a sub-list line has a stray or malformed class span, so a typo in a one-per-line entry is caught at the line; (2) add a line to the §5d lead naming docs/design/areas/<area>.md as the place a new component class is documented, so builders do not edit this list to add classes.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs