feat(validation): phase 11 — the walk that found what the checks could not
All checks were successful
PR checks / checks (pull_request) Successful in 1m26s
All checks were successful
PR checks / checks (pull_request) Successful in 1m26s
The checks were green before this phase started and are green now. What found anything was the part no script does: fifty pages at three widths in a real browser, a signup walked against its store, and a full brand mount applied and restarted. D51 — the chrome and the head follow the mount; the consent sentence does not. With a complete brand.json mounted, forty-nine pages came back rebranded and /beta did not. applyBrand.mjs rewrites files in dist/client and /beta renders per request, so its HTML never exists as a file to rewrite; liveBrand() was there for exactly that and was used for betaOptInUrl alone. Everything around the form — title, OG tags, header lockup, footer Source and Discord links — came from the shared chrome, and the shared chrome was baked. renderBrand() picks by Astro.isPrerendered, in one place, so the other forty-nine keep taking the value the boot rewrite will replace. CONSENT_TEXT stays a constant: it is stored verbatim in a person's row, so following a mounted name would change the recorded text of a consent already given. D52 — the documentation half gets phase 10's skip-link fix. Starlight's skip link targets the page <h1>, which is no more focusable than the <main> phase 10 fixed, so following it moved the viewport and not the focus on forty pages. A PageTitle override adds tabindex="-1". D53 — no twelfth check. The external-link sweep (73 of 74 alive) and the brand-mount walk stay throwaway scripts: one would make the build depend on other people's uptime and the other needs Chrome on the runner. Also recorded and deliberately not fixed: Starlight's heading anchor links measure under 24px at 390, and are exempt under SC 2.5.8's Equivalent clause because the mobile table of contents links to every one of the same anchors. npm run verify green — fourteen steps, both suites, all eleven checks. Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -178,8 +178,10 @@ const notice = result ? NOTICES[result.outcome] : null;
|
||||
const optInUrl = isSuccess(result?.outcome) ? brand.betaOptInUrl : '';
|
||||
|
||||
const title = 'The closed beta';
|
||||
const description =
|
||||
'Join the list for the Runic Gateway Android app closed test. No email is ever sent.';
|
||||
// Interpolated rather than written out, because this is the head: it becomes the meta
|
||||
// description and `og:description`, and phase 11 made the rest of this page's head follow
|
||||
// the mount. A description naming a brand the title does not is worse than either.
|
||||
const description = `Join the list for the ${brand.siteName} Android app closed test. No email is ever sent.`;
|
||||
|
||||
const formToken = issueFormToken();
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user