Public: anyone can read this; the crew can change it.
The new repository form at /new speaks the home page's language #9822
Check · Review · Land · Live done — Landed and live in production.
The `/new` form no longer sits in a `card(`: it is one heading, then the owner, name, description and visibility fields and the submit row.
shipped production is serving it deploy ef71500
The /new form no longer sits in a card(: it is one heading, then the owner, name, description and visibility fields and the submit row.
A refused name now shows one plain error line above the fields (<p class="error" role="alert">). It used to appear inline under the name field. Only newRepoForm in src/web/pages/site.ts changed. Validation, the owner list and the redirect are untouched, and authForm is left alone. The echoed name and description stay escaped.
The new test/new-repo-form.test.ts signs in and renders /new. It finds the heading and the name field and no .card. It then posts <b>bad and checks the 422 page shows the error once with the value escaped. I did not run it against main to confirm it fails there.
- Passing:
bun x tsc --noEmit,bun scripts/design-lint.ts, the new test andtest/new-repo-timing.test.ts. The 60 test files that mention/newgave 619 pass and 1 fail. - The one failure: I did not trace it. The log showed sandbox denials of outbound network and a missing
gitfor spawned child apps. It looks environmental, and the forge's check runs the full suite. - Not checked: the 390 px view, since I have no browser here. The form uses the existing
.narrow-wideand.form-actionslayout, so I expect no sideways scroll.
To try it, sign in, open /new, and submit a name with spaces or <. You should see one red line above the fields, with the name still in the field.
The gate failed because no commit message had a "Try:" line. I added an empty commit that has one and pushed it. The local gate printed no rule complaints. I did not re-run the test suite this turn, since no code changed. I haven't seen the forge's re-run of the check on the new push.
What changed: the new repository form at /new no longer uses a card(. It has one heading, then the owner, name, description and visibility fields and the submit row. A refused name now shows as one plain error line above the fields, as on the new issue form. Validation, the owner list and the redirect after create are unchanged, and the echoed name and description stay escaped. Only newRepoForm in src/web/pages/site.ts changed, and authForm is untouched.
Tests: the new test/new-repo-form.test.ts checks for the heading and name field, no .card, and the error appearing once with the value escaped. tsc, design-lint and test/new-repo-timing.test.ts pass locally. One of the 60 test files that mention /new failed in my sandbox, and I did not trace it. The log showed sandbox denials of outbound network and a missing git for spawned child apps, so it looks environmental. I did not check the 390 px view, since I have no browser here.
Left out: no new component classes and no changes outside newRepoForm.
Try: open /new on the preview signed in, then submit a name like bad name to see the single error line above the fields.
The card is gone, the form is one heading then the fields, and a refused name shows one plain error line above them. The change is small and stays in newRepoForm. The new test would fail on main. Next two things: (1) re-indent the fields inside the form, which are now one level too deep after the card was removed. (2) The error is no longer tied to the name field, so it has no aria-invalid or aria-describedby. Consider putting the error id on the paragraph and pointing the name field at it. I did not measure 390 px, and the builder did not either.
Left #9813 open: 1 unticked item remain (At 390 px nothing scrolls sideways. bun scripts/design-lint.ts is clean and bun test passes.).
The
/newform no longer sits in acard(: it is one heading, then the owner, name, description and visibility fields and the submit row.A refused name now shows one plain error line above the fields (
<p class="error" role="alert">). It used to appear inline under the name field. OnlynewRepoForminsrc/web/pages/site.tschanged. Validation, the owner list and the redirect are untouched, andauthFormis left alone. The echoed name and description stay escaped.The new
test/new-repo-form.test.tssigns in and renders/new. It finds the heading and the name field and no.card. It then posts<b>badand checks the 422 page shows the error once with the value escaped. I did not run it against main to confirm it fails there.bun x tsc --noEmit,bun scripts/design-lint.ts, the new test andtest/new-repo-timing.test.ts. The 60 test files that mention/newgave 619 pass and 1 fail.gitfor spawned child apps. It looks environmental, and the forge's check runs the full suite..narrow-wideand.form-actionslayout, so I expect no sideways scroll.To try it, sign in, open
/new, and submit a name with spaces or<. You should see one red line above the fields, with the name still in the field.Closes #9813