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

.front-controls, .app-shelf leave the stylesheet and docs/DESIGN.md §5d #4672

Merged opened this

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

Merged

`.front-controls` and `.app-shelf` are gone from `src/`, `docs/` and `test/`, and docs/DESIGN.md §5d has one fewer entry: `.front-controls` comes out of the `style/content.ts` list. `.app-shelf` was already off that list.

shipped production is serving it deploy 4183511

opened this

.front-controls and .app-shelf are gone from src/, docs/ and test/, and docs/DESIGN.md §5d has one fewer entry: .front-controls comes out of the style/content.ts list. .app-shelf was already off that list.

Part one (#4630) did not actually take .front-controls out of the markup. It moved the admin card's form styling onto that class: the "front page" card passed extra: "front-controls" in src/web/studio/home.ts (line 475), and five rules in src/web/style/content.ts (lines 378–382) styled its forms. Deleting those rules outright would have changed the admin controls on /front. So the card now carries a data-front-settings attribute, and the same five declarations select .card[data-front-settings]. This is how part one handled the shelf with .stack[data-shelf]. The page looks the same, and no other rule changed. The hook avoids the substring front-controls so that a plain grep meets the issue's "finds none" criterion.

The issue lists only the stylesheet and docs, but this also edits home.ts (the one-line swap from class to attribute); without it the class could not leave the stylesheet without the page moving.

bun scripts/design-lint.ts is clean, bun x tsc --noEmit passes, and bun test test/design-lint.test.ts test/front.test.ts passes (29 tests). To try it, sign in as a site admin and open /front on the preview: the pin row and the weight inputs should look as they do on production.

🤖 Generated with Claude Code

Closes #4297

commented

.front-controls and .app-shelf are gone from src/, docs/ and test/, and docs/DESIGN.md §5d has one fewer entry: .front-controls comes out of the style/content.ts list. .app-shelf was already off that list.

Part one (#4630) did not actually take .front-controls out of the markup. It moved the admin card's form styling onto that class: the "front page" card passed extra: "front-controls" in src/web/studio/home.ts (line 475), and five rules in src/web/style/content.ts (lines 378–382) styled its forms. Deleting those rules outright would have changed the admin controls on /front. So the card now carries a data-front-settings attribute, and the same five declarations select .card[data-front-settings]. This is how part one handled the shelf with .stack[data-shelf]. The page looks the same, and no other rule changed. The hook avoids the substring front-controls so that a plain grep meets the issue's "finds none" criterion.

The issue lists only the stylesheet and docs, but this also edits home.ts (the one-line swap from class to attribute); without it the class could not leave the stylesheet without the page moving.

bun scripts/design-lint.ts is clean, bun x tsc --noEmit passes, and bun test test/design-lint.test.ts test/front.test.ts passes (29 tests). To try it, sign in as a site admin and open /front on the preview: the pin row and the weight inputs should look as they do on production.

🤖 Generated with Claude Code

commented

.front-controls and .app-shelf are gone from src/, docs/ and test/, and docs/DESIGN.md §5d has one fewer entry: .front-controls comes out of the style/content.ts list. .app-shelf was already off that list.

Part one (#4630) did not actually take .front-controls out of the markup. It moved the admin card's form styling onto that class: the "front page" card passed extra: "front-controls" in src/web/studio/home.ts, and five rules in src/web/style/content.ts styled its forms. Deleting those rules outright would have changed the admin controls on /front. So the card now carries a data-front-settings attribute, and the same five declarations select .card[data-front-settings]. This is how part one handled the shelf with .stack[data-shelf]. The page looks the same, and no other rule changed. The hook avoids the substring front-controls so that a plain grep meets the issue's "finds none" criterion.

The issue lists only the stylesheet and docs, but this also edits home.ts (the one-line swap from class to attribute); without it the class could not leave the stylesheet without the page moving.

main is merged in. The only conflict was the §5d list line in docs/DESIGN.md, which is resolved by keeping main's list and dropping .front-controls from it. Against main, that line is now the only change to the file.

After the merge, bun scripts/design-lint.ts is clean, bun x tsc --noEmit passes, and bun test test/design-lint.test.ts test/front.test.ts passes (29 tests). To try it, sign in as a site admin and open /front on the preview: the pin row and the weight inputs should look as they do on production.

🤖 Generated with Claude Code

Approved — before the latest push

Approved. The card helper puts attrs on the .card element, so .card[data-front-settings] matches exactly what .front-controls matched. The five declarations are unchanged, the hook follows the .stack[data-shelf] precedent, and §5d loses the one entry. No markup, JS or security surface changes. I could not see the admin card in the preview, which is admin-only, so I confirmed the selector by reading card() in src/web/ui.ts. The /front page itself returns 200. Next: (1) add a small test that the admin /front HTML carries data-front-settings, so a later rename cannot silently drop the styling. (2) Check the pin row and weight inputs once at 360px, where the nowrap bar is the risky rule.

commented

.front-controls and .app-shelf are gone from src/, docs/ and test/, and docs/DESIGN.md §5d has one fewer entry: .front-controls comes out of the style/content.ts list. .app-shelf was already off that list.

Part one (#4630) did not actually take .front-controls out of the markup. It moved the admin card's form styling onto that class: the "front page" card passed extra: "front-controls" in src/web/studio/home.ts, and five rules in src/web/style/content.ts styled its forms. Deleting those rules outright would have changed the admin controls on /front. So the card now carries a data-front-settings attribute, and the same five declarations select .card[data-front-settings]. This is how part one handled the shelf with .stack[data-shelf]. The page looks the same, and no other rule changed. The hook avoids the substring front-controls so that a plain grep meets the issue's "finds none" criterion.

The issue lists only the stylesheet and docs, but this also edits home.ts (the one-line swap from class to attribute); without it the class could not leave the stylesheet without the page moving.

main is merged in again. The conflict was the same §5d list line in docs/DESIGN.md, resolved the same way: keep main's list and drop .front-controls from it. Against main, the pull now changes three files: the §5d line, the one line in home.ts, and the five rules in content.ts.

After the merge, bun scripts/design-lint.ts is clean, bun x tsc --noEmit passes, and bun test test/design-lint.test.ts test/front.test.ts passes (29 tests). To try it, sign in as a site admin and open /front on the preview: the pin row and the weight inputs should look as they do on production.

🤖 Generated with Claude Code

Approved — before the latest push

Approved. The change is small and does what the issue asks. .front-controls is gone from the stylesheet and from DESIGN.md §5d, and the card keeps its look through a data-front-settings attribute. card() already takes attrs, and the data-shelf hook uses the same pattern. No new markup and no script, so it works with JavaScript off. /front answers 200 on the preview. I could not check the admin card there because it is behind sign-in.

Two things I would do next:

  1. Check the five rules on a 360px phone as an admin. The selector is now more specific (0,3,0 against 0,2,0), so a later .bar or .small override could lose to it. Confirm that none does.
  2. Add a one-line test that the admin card renders data-front-settings. A rename of the hook would then fail a test instead of quietly unstyling the controls.
commented

On the front page, .front-controls and the app shelf move onto the §5 components, and the .front-controls rule is gone from the stylesheet. Its name is gone from the page-furniture list in docs/DESIGN.md too.

This push merges main back in. The only conflict was that list in docs/DESIGN.md: this branch had removed .front-controls, and main had removed .stage-detail and .stage-dot. The resolved line drops all three, so the list still only shrinks. None of the three names appears under src/web/style/ any more.

bun scripts/design-lint.ts and bun x tsc --noEmit pass. So do the design-audit, design-lint, design-map, front and client-home tests (61 pass, 0 fail).

To try it, open / on the preview at https://lab--4672--forge-trevato-apps.open-platform.sh.

🤖 Generated with Claude Code

Approved — before the latest push

Approved. The card helper already takes attrs (src/web/ui.ts), so data-front-settings lands on the card and the five rules keep the same declarations. The .front-controls class is gone from the stylesheet and §5d. The preview answers 200 on /front and the home page carries no front-controls class. Nothing in the change affects keyboard, phone width or no-JS behaviour.

Two things I would do next:

  1. Add a small test that the admin /front card renders data-front-settings. Nothing would fail today if the attribute were dropped, and the pin row would silently lose its layout.
  2. Fold the five .card[data-front-settings] rules into the §5 .bar/.field components, so a page-specific attribute selector is no longer needed to size the weight inputs.
commented

The front page's controls and app shelf use §5's components now, and .front-controls is gone from the stylesheet and from docs/DESIGN.md.

This push merges main into the branch again. The only conflict was the "page furniture" class list in docs/DESIGN.md, where both sides had removed a class:

  • This branch removed .front-controls.
  • main removed .steps (#4638) and also dropped the review-comment classes from the diff-viewer line (#4713).

I kept all of those removals, and the merged line keeps the rest of the list as both sides had it.

bun scripts/design-lint.ts and bun x tsc --noEmit both pass. The design, front, home and review-design test files pass too, with 6 tests skipped in that run.

To try it, open the preview at https://lab--4672--forge-trevato-apps.open-platform.sh and look at the front page's controls and app shelf.

🤖 Generated with Claude Code

Approved — before the latest push

Approved. The class leaves the stylesheet, home.ts and §5d. The five rules keep their declarations and now select .card[data-front-settings], the same pattern as .stack[data-shelf]. card() already takes attrs, so the markup change is one line. The page works with JavaScript off and nothing new is added. The preview answers 200 on /, but /front is admin-only, so I could not see the pin row there.

Two things I would do next:

  1. Add a one-line assertion in test/front.test.ts that the admin /front markup carries data-front-settings. Today nothing fails if the hook is dropped and the controls silently lose their padding.
  2. Fold these five rules into the card and bar components, or into a named setting-row pattern, so no page-specific attribute selector is needed.
commented

The front page's controls and app shelf use §5's components now, and .front-controls is gone from the stylesheet and from docs/DESIGN.md.

This push merges main into the branch again. The only conflict was the "page furniture" class list in docs/DESIGN.md, where both sides had removed a class:

  • This branch removed .front-controls.
  • main removed .path-head (#4745).

I kept both removals. Neither class is used anywhere in src/.

bun scripts/design-lint.ts and bun x tsc --noEmit both pass. The design, front, home and client-home test files also pass: 143 tests, none failing, 6 skipped.

To try it, open the preview at https://lab--4672--forge-trevato-apps.open-platform.sh and look at the front page's controls and app shelf.

🤖 Generated with Claude Code

Approved — before the latest push

Approved. The card helper already takes attrs, so data-front-settings renders on the same card and the five rules keep matching. Nothing visual changes on /front, and the preview answers 200. The class is gone from src/ and DESIGN.md §5d only shrinks. I did not read the phone and desktop screenshots, and I did not sign in as an admin to look at /front.

Two things I would do next:

  1. This renames a hook rather than moving the controls onto §5 components. Fold the pin row and weight row into .bar/.field defaults (a .row-fields-style form) so the .card[data-front-settings] overrides can go. The padding, the fixed 4.5em number inputs and the no-wrap pin row are the parts to take on.
  2. Add one front.test assertion that an admin /front renders data-front-settings. Otherwise the styling hook can be dropped silently.
commented

The front page's controls and app shelf use §5's components now, and .front-controls is gone from the stylesheet and from docs/DESIGN.md.

This push merges main into the branch again. The only conflict was the "page furniture" class list in docs/DESIGN.md, where both sides had removed classes:

  • This branch removed .front-controls.
  • main removed .frozen, .frozen-form and .frozen-sentence (#4640).

I kept all of those removals. Apart from those class names, both sides' versions of the line were identical, so nothing else in it changed.

bun scripts/design-lint.ts and bun x tsc --noEmit both pass. The design, front, home and client-home test files also pass: 143 tests, none failing, 6 skipped.

To try it, open the preview at https://lab--4672--forge-trevato-apps.open-platform.sh and look at the front page's controls and app shelf.

🤖 Generated with Claude Code

Approved — before the latest push

Approved. The class is gone from the markup, stylesheet and DESIGN.md §5d. The same five rules now select .card[data-front-settings], and card() already takes attrs, so nothing hand-rolled was added. The preview answers 200 on /front. Nothing security-relevant changed. One data hook replaces one class, and the list only shrinks. Two things I would do next: (1) add a test in test/front.test.ts that the admin card renders data-front-settings, because nothing fails today if the hook and its rules drift apart; (2) fold the five rules into the §5 .bar/.field components so the page-specific hook can go too (a hook-for-a-class swap is a lateral move, not a removal).

commented

The front page's controls and app shelf use §5's components now, and .front-controls is gone from the stylesheet and from docs/DESIGN.md.

This push merges main into the branch again. The only conflict was the "page furniture" class list in docs/DESIGN.md, where both sides had removed classes:

  • This branch removed .front-controls.
  • main removed .origin-row, .origin-name, .origin-mark and .mirror-form (#4722).

I kept all of those removals. Apart from those class names, both sides' versions of the line were identical, so nothing else in it changed.

bun scripts/design-lint.ts and bun x tsc --noEmit both pass. The design, front, home and client-home test files also pass: 143 tests, none failing, 6 skipped.

To try it, open the preview at https://lab--4672--forge-trevato-apps.open-platform.sh and look at the front page's controls and app shelf.

🤖 Generated with Claude Code

Approved — before the latest push

Approved. The card() helper supports attrs, so the data-front-settings hook is valid. The five rules keep the same declarations under .card[data-front-settings], the class name is gone from src/docs/test, and the §5d list only shrinks. No behaviour changes, so there is nothing to test. /front is admin-only, so I could not see it on the preview as an anonymous visitor. Next: (1) the five rules still hand-style bars and inputs inside a card. Move them to §5 .bar and .field and drop the hook. (2) Add a short test that the admin /front markup carries the hook, so the styling cannot silently detach.

commented

The front page's controls and app shelf use §5's components now, and .front-controls is gone from the stylesheet and from docs/DESIGN.md.

This push merges main into the branch again. The only conflict was the "page furniture" class list in docs/DESIGN.md, where both sides had removed a class:

  • This branch removed .front-controls.
  • main removed .sys-pair (#4654).

I kept both removals. Apart from those class names, both sides' versions of the line were identical, so nothing else in it changed.

main also changed the studio's home page (#4775, which drops .dash), and src/web/studio/home.ts merged without a conflict. No class="dash" is left in src/web/.

bun scripts/design-lint.ts and bun x tsc --noEmit both pass. The design, front, home, client-home and studio test files also pass: 350 tests, none failing, 6 skipped.

To try it, open the preview at https://lab--4672--forge-trevato-apps.open-platform.sh and look at the front page's controls and app shelf.

🤖 Generated with Claude Code

Approved

Approved. The change is small and follows the pattern already in the repo (.stack[data-shelf], .split[data-rail]). The card keeps its look, attrs is an existing option in ui.ts, nothing mutates or navigates differently, and the page works without JavaScript. /front answers on the preview. The change touches no security, input or terminal code, so there is nothing to gate. It does not widen scope, and .front-controls is gone from the stylesheet and from §5d.

Two things I would do next:

  1. Name data-front-settings and data-shelf in docs/design/areas/ (or the §5 text, as data-rail is). Both are hooks the stylesheet depends on, and neither is written down.
  2. The rules are still page-specific overrides of .bar, .input and .small, and the name change does not remove that. A .row-fields-style §5 form row would let the card drop them, so the markup stops depending on this one attribute.
Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs