Fix #479: create-form standardization #480

Merged
crueber merged 1 commit from fix/issue-479 into main 2026-09-13 19:20:25 +00:00
Owner

Standardizes New repository (/new), Import repository (/import), and New organization (/orgs/new) on the canonical form-page pattern (reference: ReleaseNew.jsx, grid idiom: Fork.jsx), and adopts it as the standing rule for all future form pages. Visual/structure only — submit targets, validation, inline errors, and navigation are byte-identical.

Changes (all 7 acceptance criteria):

  • Owner/Name rows on New.jsx + Import.jsx go grid-cols-1 sm:grid-cols-2 (were bare grid-cols-2); all three wrappers gain the missing mx-auto centered column.
  • "you and your orgs only" dropped from both owner selects.
  • Mirror pull-only paragraph kept once on New.jsx (Import's mirror radio already reads '(recurring pull, pushes rejected)'), wired via new-mirror-help to the schedule select.
  • Import LFS/ssh limits collapsed into a
    instead of always-rendered prose.
  • Every help line field-scoped with id + aria-describedby (new-name-help, new-mirror-help, import-source-help, import-name-help, import-token-help, orgnew-name-help); help copy mirrors enforced rules verbatim.
  • Cancel: every-form-gets-cancel (implementer's call) — New/Import gain OrgNew's exact secondary btn to /explore.
  • Standing rule recorded in each page's file header citing ReleaseNew.jsx; law-12 decision appended to docs/go/12_web_ui.md.

Verification: new web/test/unit/create-forms-479.test.js 9/9 green; related files (create-menu-466, menu-focus-477, create, mirror, orgs, fork-page-438, org-profile, member-orgs, owners) 92/92 green; full node --test 1029 total / 1027 pass / 2 fail — the 2 failures are the pre-existing live-server smoke subtests (identical on pristine main); vite build + esbuild green. No backend change, no new deps. Browser proof open (shared-daemon loopback guard — no private daemon per workspace rules). Do NOT merge.

Standardizes New repository (/new), Import repository (/import), and New organization (/orgs/new) on the canonical form-page pattern (reference: ReleaseNew.jsx, grid idiom: Fork.jsx), and adopts it as the standing rule for all future form pages. Visual/structure only — submit targets, validation, inline errors, and navigation are byte-identical. Changes (all 7 acceptance criteria): - Owner/Name rows on New.jsx + Import.jsx go grid-cols-1 sm:grid-cols-2 (were bare grid-cols-2); all three wrappers gain the missing mx-auto centered column. - "you and your orgs only" dropped from both owner selects. - Mirror pull-only paragraph kept once on New.jsx (Import's mirror radio already reads '(recurring pull, pushes rejected)'), wired via new-mirror-help to the schedule select. - Import LFS/ssh limits collapsed into a <details> instead of always-rendered prose. - Every help line field-scoped with id + aria-describedby (new-name-help, new-mirror-help, import-source-help, import-name-help, import-token-help, orgnew-name-help); help copy mirrors enforced rules verbatim. - Cancel: every-form-gets-cancel (implementer's call) — New/Import gain OrgNew's exact secondary btn to /explore. - Standing rule recorded in each page's file header citing ReleaseNew.jsx; law-12 decision appended to docs/go/12_web_ui.md. Verification: new web/test/unit/create-forms-479.test.js 9/9 green; related files (create-menu-466, menu-focus-477, create, mirror, orgs, fork-page-438, org-profile, member-orgs, owners) 92/92 green; full node --test 1029 total / 1027 pass / 2 fail — the 2 failures are the pre-existing live-server smoke subtests (identical on pristine main); vite build + esbuild green. No backend change, no new deps. Browser proof open (shared-daemon loopback guard — no private daemon per workspace rules). Do NOT merge.
New.jsx / Import.jsx / OrgNew.jsx follow the ReleaseNew.jsx pattern
(12_web_ui.md decision): collapsing Owner/Name rows, no owner-hint
noise, mirror pull-only copy once (New.jsx), Import LFS/ssh in
details, id + aria-describedby help, identical cancel to /explore.
Visual/structure only — no behavior change. Cancel direction:
every-form-gets-cancel (implementer's call, noted).
Sign in to join this conversation.
No description provided.