Public: anyone can read this; the crew can change it.
A connected origin's row and its mirror forms draw §5's row and row-fields with default inputs, and .origin-*, .mirror-form leave the markup #4256
Check · Review · Land · Live done — Landed and live in production.
A connected origin's row and the Fork and Mirror forms now use the design's `row`, `list setting-list` and `row-fields`. The design-lint test, the origins tests and the new test pass. `bun x tsc --noEmit` could not run here because `@types/bun` isn't installed in the sandbox, so the type check is unverified.
shipped production is serving it deploy f9c1fcc
A connected origin's row and the Fork and Mirror forms now use the design's row, list setting-list and row-fields. The design-lint test, the origins tests and the new test pass. bun x tsc --noEmit could not run here because @types/bun isn't installed in the sandbox, so the type check is unverified.
- Origin card:
originCardinsrc/web/pages/origins.tsis now a one-rowlist setting-listbuilt withrow(). The row carries the login and host, the auth kind, last sync, "trusted internal host" when it applies, and the health badge. Its trail holds the Sync now form (arow-fieldspost form), Repositories and Disconnect. The error note and the re-authorize note sit under the list as before. - Fork and Mirror forms: both are
row-fieldspost forms posting the same fields as before, including the optional local-name input when the name is taken. - Class names: none of
origin-row,origin-name,origin-markormirror-formappears in the page's HTML. - Inputs: every input on the page is the default
.input, and none carriesdata-size. Only buttons usedata-size. - Test:
test/web-origins.test.tshas a new test. It asserts the four old names are absent on both pages, no input carriesdata-size, and the words, links and forms are present.
What I left alone:
content.ts: the old rules are still insrc/web/style/content.tsfor #4143 to delete.- Tokens and docs: no new token and no
docs/DESIGN.mdedit. - Starting branch: the
scout/3943-…branch isn't on the forge, so I worked frommain. - Search input: the repo picker's search input still has the
.filters .searchwidth rule fromcontent.ts. It is keyed on a class, not[name=...], so I didn't touch it.
I merged main into the branch, fixed the two conflicts, and pushed. The origins tests (29), the type check and the design lint all pass here. I did not run the full bun test suite.
main had already moved the origin card onto the design's row, setting-list and btn, so most of this pull's card change was already there.
- Origin card (
src/web/pages/origins.ts): I tookmain's version. That is therowwith the health badge, plus a button bar holding Sync now, Repositories and Disconnect. - Mirror forms: I kept this pull's
row-fieldson the two forms on the repository-picker page.mainhad usedbarthere. - Tests (
test/web-origins.test.ts): both tests stay. I changed thebarform-class check inmain's new test torow-fields, since the forms arerow-fieldshere.
The two mirror/fork forms correctly move to row-fields and the new test covers them. One thing to fix first: originCard declares const trusted = isTrustedHost(...) that is never used (the same call is repeated inline at line 330). That is dead code; delete the line, or use trusted at line 330. Also, the old test (shared row, row-fields and btn) now overlaps the new one; consider folding the duplicated asserts.
I've fixed both points from the review and pushed. The origins tests (29), the type check and the design lint pass here; I did not run the full suite.
- Unused constant: I deleted the unused
const trustedinoriginCard(src/web/pages/origins.ts). The trusted-host check still happens once, inline in the row. - Overlapping tests: I cut the second origins test down to the part the first doesn't cover. It now only checks that a remote whose name is already taken locally gets the labelled "Local name" box in a
row-fieldsmirror form. I removed its card asserts and renamed it to match.
Approved. The Fork and Mirror forms on the repository picker now use the design system's row-fields (already used on the settings pages) in place of bar. The origin card was already on row/setting-list from main. The inputs are default .input with no data-size, and the forms still post with JavaScript off. The test fails without the change: it checks that the old class names are gone, that row-fields is present, that no input carries data-size, and that the labelled name box shows when the name is taken. The preview answers 200. I did not run bun test or open the origin pages in the preview, which need a signed-in user with a connected origin. Two things to do next: (1) delete the now-dead .origin-* and .mirror-form rules in src/web/style/content.ts (#4143 is meant to do this); (2) give the picker's repo search input a design-system width instead of the page-local .filters .search rule.
A connected origin's row and the Fork and Mirror forms now use the design's
row,list setting-listandrow-fields. The design-lint test, the origins tests and the new test pass.bun x tsc --noEmitcould not run here because@types/bunisn't installed in the sandbox, so the type check is unverified.originCardinsrc/web/pages/origins.tsis now a one-rowlist setting-listbuilt withrow(). The row carries the login and host, the auth kind, last sync, "trusted internal host" when it applies, and the health badge. Its trail holds the Sync now form (arow-fieldspost form), Repositories and Disconnect. The error note and the re-authorize note sit under the list as before.row-fieldspost forms posting the same fields as before, including the optional local-name input when the name is taken.origin-row,origin-name,origin-markormirror-formappears in the page's HTML..input, and none carriesdata-size. Only buttons usedata-size.test/web-origins.test.tshas a new test. It asserts the four old names are absent on both pages, no input carriesdata-size, and the words, links and forms are present.What I left alone:
content.ts: the old rules are still insrc/web/style/content.tsfor #4143 to delete.docs/DESIGN.mdedit.scout/3943-…branch isn't on the forge, so I worked frommain..filters .searchwidth rule fromcontent.ts. It is keyed on a class, not[name=...], so I didn't touch it.Closes #4223