Skip to content

chore: sync shared website updates into v13 - #1459

Merged
fhammerschmidt merged 66 commits into
v13from
sync/v13-october-updates
Oct 20, 2026
Merged

fhammerschmidt merged 66 commits into
v13from
sync/v13-october-updates

Conversation

@fhammerschmidt

@fhammerschmidt fhammerschmidt commented Oct 20, 2026 •

Copy link
Copy Markdown
Member

The v13 website branch last received shared website changes in August and its latest commit is from September 7. Merge the current master baseline before finishing the v13 API-data switch in #1458.

This brings across the shared toolchain, rendering and deployment fixes, documentation corrections, guide updates, tests, published API loader, and removal of obsolete app-local data. Preserve v13's source-map documentation and deployment trigger/custom domain. Resolve the deployment conflict using the shared environment script, keeping v13 pushes and explicit v13 releases on the v13 Pages branch and ordinary previews isolated.

The large diff is the existing master history catching up with v13. Against master, the result differs in just five files: the source-map page and generated route, the v13 deployment trigger, the custom-domain mapping, and four ReScript regression cases. Documentation/API version selection remains a focused follow-up in #1458.

Validation: strict ReScript compilation, unused-export checks, formatting, 23 API-data tests, 12 route/dead-code tests, and an 18-case deployment environment smoke check pass locally. All CI checks pass, including site checks, docs/guide browser and script suites, visual regression, production builds, Wrangler smoke checks, preview deployments, deployed-site E2E, and Lighthouse.

Merge this with a merge commit (preserve master ancestry so later syncs stay incremental), then retarget #1458 to v13.

github-actions[bot] and others added 30 commits August 23, 2026 18:48
)

Bumps [baseline-browser-mapping](https://github.com/web-platform-dx/baseline-browser-mapping) from 2.8.31 to 2.11.21.
- [Release notes](https://github.com/web-platform-dx/baseline-browser-mapping/releases)
- [Commits](web-platform-dx/baseline-browser-mapping@v2.8.31...v2.11.21)

---
updated-dependencies:
- dependency-name: baseline-browser-mapping
  dependency-version: 2.11.21
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [nanoid](https://github.com/ai/nanoid) from 3.3.16 to 3.3.18.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/3.3.18/CHANGELOG.md)
- [Commits](ai/nanoid@3.3.16...3.3.18)

---
updated-dependencies:
- dependency-name: nanoid
  dependency-version: 3.3.18
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [browserslist](https://github.com/browserslist/browserslist) from 4.28.0 to 4.28.9.
- [Release notes](https://github.com/browserslist/browserslist/releases)
- [Changelog](https://github.com/browserslist/browserslist/blob/main/CHANGELOG.md)
- [Commits](browserslist/browserslist@4.28.0...4.28.9)

---
updated-dependencies:
- dependency-name: browserslist
  dependency-version: 4.28.8
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore: upgrade Node.js to 26

* fix(ci): install Corepack for Node 26

* fix(ci): bootstrap Corepack before caching Yarn
Add the existing React type package as a guide development dependency to satisfy workspace peer requirements.
Expose the Playwright container browser cache and split guide Vitest into its own CI step.
* docs(guide): add MVP launch checklist

Document the lesson contract, current capabilities, and the concrete work needed before production.

* docs(guide): clarify authoring contract

Align the guide launch documentation with current checkpoint behavior, development workflow, and preview deployment eligibility.

* docs: clarify guide identifier durability
* feat(guide): add desktop screen warning

Show an explicit desktop requirement below the guide's minimum viewport and make keyboard focus clear for primary controls.

* fix(guide): show editor focus ring

Target CodeMirror's focused editor state so keyboard focus receives the intended visible indicator.
* feat(guide): add base document metadata

* fix(guide): avoid shared web manifest

Keep shared favicon assets while leaving install-manifest ownership to a future guide-specific implementation.

* chore(guide): format generated root output

Keep the tracked ReScript output aligned with the repository formatting gate.

* fix(guide): sync browser chrome theme
Serve an explicit allow-all robots policy with the guide's static assets without assuming a production domain or sitemap.
Restore the current exercise's initial code while clearing its saved draft and retaining completion progress.
* feat(guide): validate lesson collections

Validate guide lesson IDs, exercise IDs, and positions during content loading. Extract parsing into a testable frontmatter boundary with focused coverage for valid and invalid lesson collections.

* fix(guide): propagate lesson parse errors

Keep frontmatter parsing failures as result values until the route loader exception boundary.
* ci(docs): validate Wrangler Pages runtime

* fix(docs): update Wrangler runtime

* fix(ci): verify Wrangler Pages readiness

Pin the Docs compatibility date, wait for a successful Pages response, and align deployment workflows with the workspace Wrangler version.

* fix(ci): validate guide Wrangler runtime

* fix(ci): bound Wrangler readiness probes

* docs(ci): clarify Wrangler dev server check scope
Use the normalized site root when constructing Open Graph image URLs so production deployments with an empty deployment URL retain an absolute endpoint and target URL.

Add a Playwright-backed landing page test that validates the Open Graph image endpoint and decoded target URL.
* chore(deps): update frontend toolchain

Upgrade React, React Router, Vite, Vitest, and Playwright across the monorepo. Update GuideHome browser assertions for Vitest 5 element matching.

* ci: align Playwright test images

Use the Playwright 1.63 container required by the upgraded browser test dependency.

* fix(docs): normalize prerender data paths

Strip React Router data request suffixes before resolving MDX source files during static prerendering.

* fix(docs): normalize API data paths

Normalize React Router prerender request pathnames before resolving MDX files and API module paths.

* docs: update React Router guidance to v8

* docs: update Vitest guidance to v5

* docs(api): document data request normalization

* test(guide): use visible code assertions

* docs: align framework version guidance

* fix(ci): trust checkout in screenshot container

* fix(ci): restore Wrangler startup checks

Restore the Docs Pages and Guide Wrangler startup probes lost during the merge resolution.

* test: update visual regression screenshots

Updated from the GitHub Actions visual baseline workflow.

* fix(docs): serialize React Router prerendering

Avoid preview-server prerender request failures. Restore CPU-parallel rendering once remix-run/react-router#15255 is fixed.

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* ci(cloudflare): simplify preview deployments [Codex]

* fix(ci): attach guide deployments to PR branches [Codex]

* fix(ci): use supported guide deployment status fields [Codex]

* fix(ci): publish fork preview deployments [Codex]

* fix(ci): link docs preview in pull requests [Codex]
* feat: add cloudflare ssr for playground

* chore: format v12.3 api data

* chore: remove unrelated API JSON formatting

* fix(docs): build SSR bundle before Wrangler dev

* fix(docs): include playground in sitemap

* docs: clarify hybrid SSR loader guidance

* fix(docs): preserve HTML headers for playground HEAD

* fix(ci): build docs before Wrangler validation

* fix(docs): use React Router request context

Create a RouterContextProvider for Cloudflare Pages SSR requests so dynamic playground routes remain compatible with React Router 8.
* test: add homepage performance guardrails

Add production Playwright coverage for prerendering, hydration, navigation, clipboard behavior, and image loading. Track initial asset, DOM, and media baselines in CI before the homepage optimization stack changes them.

* test: refresh homepage guardrail toolchain

Align the Playwright container and deterministic homepage budgets with the React Router, Vite, and Playwright versions now on master.

* ci: build homepage tests on runner

Run the production prerender build on the standard Ubuntu runner and install Chromium explicitly, avoiding the React Router temporary-server failure inside the Playwright job container.

* ci: audit deployed homepage with Lighthouse

Run Lighthouse three times against the exact Cloudflare Pages deployment URL and enforce conservative category and Core Web Vitals baselines. Upload the generated reports as workflow artifacts for inspection.

* ci: compare Lighthouse scores across commits

Persist a branch-scoped Lighthouse baseline with the full reports, restore it on the next deployment, and publish a sticky PR comparison comment with a direct artifact link. Cancel stale branch deploys and remove superseded artifacts so each branch retains one current baseline.

* ci: defer Lighthouse score thresholds

Continue collecting and comparing Lighthouse results without failing the performance stack while the homepage optimizations are still in progress.

* fix(ci): compare Lighthouse against target branch

Restore the Lighthouse artifact for each pull request's base branch instead of the previous artifact from its head branch. Report missing target baselines as N/A so the first stack layer can establish the initial baseline without implying a zero score.

* fix(ci): resolve live pull request target

Query the pull request API when selecting the Lighthouse target artifact so stacked pull requests compare against their current base branch even when the workflow event payload is stale.

* fix(ci): isolate Lighthouse artifacts by full branch name

Keep readable artifact names while hashing the original branch to avoid punctuation, case, Unicode, and truncated-prefix collisions. Use the same key for target baseline lookup and current branch uploads.

Exercise report CLI output, restored baselines, missing targets, custom paths, and failure cases in isolated workspaces.

* refactor(ci): extract Lighthouse workflow scripts

Move branch setup, target baseline restoration, and artifact cleanup out of deploy.yml. Exercise each script through isolated GitHub CLI boundary tests, including API failures and missing baselines.

Addresses PR #1355 discussion_r4054814175.

* test: replace homepage Playwright suite with Cypress

Preserve prerendering, strict hydration, navigation, image, and real clipboard coverage using the existing Cypress runner. Keep Vitest's Playwright provider unchanged and test the isolated Cypress bootstrap cleanup.

Addresses PR #1355 review comment 4054821928.

* fix(ci): retry disappearing Lighthouse baselines

Re-query the target artifact after download 404/410 responses, with three bounded attempts and N/A when no baseline remains. Preserve all other API and archive failures. Add restore race and failure regression coverage for PR #1355 review comment 4054919822.

* ci: run lighthouse independently of deployed e2e

Split deployment URL setup from Lighthouse baseline metadata and let both checks consume the deployment output directly.

* test: make homepage asset sizes informational

Remove bundle and DOM budgets while retaining measurements and missing-asset checks. Document the limits of the HTML-referenced asset report.

* test: run rescript script contracts in vitest

Move the new homepage and Lighthouse tests into a separate Node Vitest configuration without migrating the existing Node script implementations.

* test: remove homepage opacity assertions

Keep the user navigation checks without treating a single opacity value as a route styling contract.

* test: write homepage cypress specs in rescript

Compile the homepage specs to JSX with typed Cypress bindings and retain prerendering, navigation, image loading, and clipboard assertions.

* test: use cypress supported hydration bootstrap slot

Replace custom injected-node removal with a stable script slot and a text placeholder. Assert slot usage while continuing to fail on application hydration and console errors.

* fix(ci): derive deployed test URLs per job

Compute the stable production or preview URL inside each post-deploy job instead of passing the Wrangler URL through a redacted job output. Keep Lighthouse and Cypress independent after deployment and cover both URL forms in the script tests.

* fix(test): isolate Lighthouse archive extraction

Provide a fake unzip executable in the ReScript workflow fixture and assert the restore script's invocation. This keeps the test focused on the shell contract without requiring unzip in the Vitest Playwright container.

* docs(ci): explain performance workflow helpers

Document the deployment, Cypress server, and Lighthouse helper contracts so their workflow responsibilities are clear.

* fix(ci): make preview aliases collision resistant

Keep a readable branch prefix while appending a digest of the full raw name, and cover normalization and truncation collisions.
* refactor: split homepage component boundaries

Extract each homepage section into a focused module, remove the unused MarkdownComponents dependency, and avoid eagerly creating static JSX at module initialization.

* fix: move homepage sections into components
* perf: stabilize homepage font loading

Self-host the homepage Red Hat Mono face and preload the three critical first-viewport fonts through the route links export. Keep font requests on the local origin and cover the preload contract in production Playwright tests.

* chore: normalize font license formatting

* fix(homepage): preload the desktop headline font

Preload Inter Bold alongside the other above-the-fold faces and assert the desktop heading weight and successful font requests. Record the measured 106-byte raw and 4-byte gzip cost of the additional route metadata.

Addresses review discussion_r4046820882 on #1360.

* fix(homepage): preload bold only at desktop widths

Match the Inter Bold preload to the 1024px heading breakpoint. Verify cold mobile visits avoid the font download and that it loads at the exact desktop boundary.

Addresses review discussion_r4053816205 on #1360.

* fix(homepage): consume hosted font preloads consistently

Use a homepage-only Inter family with hosted sources for preloaded faces. Preserve Medium and Italic typography and leave documentation local-first font selection unchanged.

Assert effective families, source ordering, Unicode ranges, and route transitions in the production browser.

Addresses review discussion_r4053816206 on #1360.

* test(fonts): port homepage font guardrails to Cypress

Preserve preload, source priority, loaded-face, and responsive font request assertions for PR #1355 comment 4054821928. All twelve Cypress cases pass against the font-layer preview.

* test: retain font suites after homepage rescript migration

Discover the existing JavaScript specs alongside compiled ReScript and bridge their helper imports while downstream PRs remain under review.

* test(homepage): port font Cypress specs to ReScript

Replace the three JavaScript font specs with typed ReScript modules and remove their JavaScript helper bridge.
…x] (#1362)

* refactor(homepage): simplify clipboard and gallery interactions

Extract install controls, use the typed Clipboard API with declarative status, and remove clipboard and gallery effects. Replace gallery transitions with native reduced-motion-aware CSS and keyboard-accessible controls.

Cover retries, feedback reset, pending writes, gallery bounds, real clipboard permission recovery, and keyboard selection. Keep existing visual baselines and record measured bundle and DOM changes.

* fix(homepage): reset removed gallery selections

Persist the first-photo fallback when the selected index disappears, so shrinking or emptying the list cannot revive stale selection on regrowth. Cover both transitions without introducing an effect.

Addresses PR #1362 review comment 4053846691.

* fix(homepage): expose copy feedback outside buttons

Keep persistent live regions beside the copy controls, independent of their disabled state. Reuse the existing positioned copy box and keep noninteractive feedback click-through so clipboard failure can be retried without adding DOM wrappers.

Extend the real-browser clipboard flow to require sibling status regions and exposed failure and disabled-success feedback. Addresses PR #1362 review comment 4053846682.

* test(interactions): migrate homepage flows to Cypress

Exercise native keyboard gallery selection, clipboard rejection and recovery, and repeated copying of both install commands. Addresses PR #1355 comment 4054821928.

* test(interactions): port Cypress spec to ReScript

Replace the handwritten homepage interaction spec with a typed ReScript source and add the minimal Cypress bindings it requires.

* refactor(homepage): move interaction components to src

Keep app/routes limited to React Router route modules for the homepage interaction files introduced in this layer.
* perf(homepage): load DocSearch on demand

Defer search implementation, insights, and CSS until activation while preserving keyboard navigation, focus restoration, and error recovery. Cover the production loading boundaries and record the lower initial asset byte budgets with three additional shared JavaScript requests.

* test(search): migrate lazy loading coverage to Cypress

Keep asset, keyboard, result navigation, pending cancellation, and failed-chunk recovery assertions. Accept only the explicitly expected lazy-import console error. Addresses PR #1355 comment 4054821928.

* test(search): isolate keyboard queries from Algolia

Return a deterministic empty search response for the keyboard-only Cypress scenario and await it before closing the modal. Keep uncaught errors fatal and all interaction assertions unchanged.

* test: format rescript search error assertions

Use the supported Array.join API under warning-as-error compilation.

* fix(search): register YAML before lazy navigation

The lazy search flow can navigate from the homepage to documentation containing YAML fences before the later highlighting-boundary refactor. Register the existing YAML grammar at the current root boundary so this PR and its immediate descendant remain independently valid.

* test(homepage): port search Cypress spec to ReScript

Replace the JavaScript search spec and fixture with typed ReScript, parsed JSON fixtures, and shared ReScript helpers.
* perf(homepage): prepare code examples in the route loader

Generate highlighted markup and the compressed playground URL during prerendering with an isolated highlighter. Keep the hero presentational, preserve existing screenshots, verify hydration and navigation, and ratchet the initial JavaScript byte budget down.

* test(highlighting): port prepared homepage checks to Cypress

Retain initial-script exclusions and exact prerender/hydration/navigation markup checks for PR #1355 comment 4054821928.

* refactor(highlighting): centralize loader bindings

Move the Highlight.js core and homepage language interop into a dedicated bindings module while leaving loader behavior unchanged.

* test(homepage): port highlighting Cypress spec to ReScript

Keep prerendered highlighting and navigation coverage in the typed Cypress test suite.
…1365)

* perf(homepage): scope syntax grammars to content routes

Remove runtime grammar registration from the shared root. Register content languages at a pathless layout boundary and JavaScript at the lazy playground boundary, with cold-navigation and direct-load coverage.

* test(highlighting): port content boundary checks to Cypress

Keep syntax-runtime bundle exclusion and direct/cold-navigation JSON highlighting coverage for PR #1355 comment 4054821928.

* fix(highlighting): register YAML for documentation

Load the existing YAML grammar at the content boundary and verify YAML/yml aliases and installation-example highlighting. This removes application console errors exposed by the strict Cypress navigation tests.

* refactor(highlighting): centralize content bindings

Keep npm language imports in the dedicated Highlight.js binding module and leave content highlighting responsible only for registration policy.
…ns [codex] (#1366)

* perf(homepage): generate responsive images and reserve media space

Generate AVIF and WebP candidates at build time, preserve intrinsic dimensions across homepage media, and defer below-fold images and video data. Cover candidate delivery, responsive selection, gallery behavior, and reserved layout without adding effects.

* test(media): port responsive homepage coverage to Cypress

Verify dimensions, AVIF/WebP candidates, responsive selection, and layout reservation before image responses at both viewports. Addresses PR #1355 comment 4054821928.

* refactor(homepage): move video component to src

Keep the responsive media component out of app/routes because it is not registered with React Router.

* test(homepage): port media Cypress spec to ReScript

Preserve responsive image, media dimension, asset format, and reserved-layout coverage through typed browser bindings.
* perf(homepage): load CSS by route group

Keep fonts, preflight and custom tokens shared while loading homepage, content and playground utilities through route links. Preserve responsive cascade ordering with shared shell sources, and prefetch documentation only on navigation intent.

Reduce initial CSS from 71,764 to 45,176 raw bytes and from 13,099 to 10,366 gzip bytes. Record the deliberate additional stylesheet and 252-byte gzip route-module overhead. Cover cold routes, navigation, fonts, prefetch and playground themes without changing visual baselines.

* fix(homepage): remove legacy page visibility gate

Let head stylesheet links handle render blocking without hiding the entire document. Keep fallback content readable when fonts or shared CSS fail, and assert real applied styles in navigation coverage.

* test(css): migrate route and prerender checks to Cypress

Preserve route stylesheet isolation, typography, navigation, foundation deduplication, and readable prerendered content without app hydration or available fonts/styles. Addresses PR #1355 comment 4054821928.

* fix(css): scan moved homepage components

Include src/components/LandingPage modules in homepage utilities and exclude them from content utilities. Add emitted-CSS assertions covering the misplaced layout classes without changing component locations.

* docs(css): document shared theme source

Point contributors to the route-shared Tailwind token and utility file introduced by the CSS boundary split.

* test(homepage): port route CSS Cypress specs to ReScript

Move the no-hydration and route stylesheet coverage into typed ReScript specs. Restrict the homepage Cypress config to generated .cy.jsx specs now that the JavaScript tests are gone.
* perf(homepage): opt leaf components into React Compiler

Share a client-only React 19 annotation-mode compiler configuration between Vite and Vitest. Opt in the intro, install instructions and trusted-by components while keeping other modules and SSR uncompiled.

Verify source annotations and actual production client/server output, and cover install prop changes and copy behavior. Record the 427-byte gzip JavaScript cost with unchanged requests, CSS and DOM.

* fix(build): compile moved homepage components

Match generated homepage components in both app/routes and src/components. Update compiler fixtures to their actual locations and retain annotation-only, client-only compilation checks and exclusions.

* fix(build): update moved component test paths

Point the React Compiler contract tests at the homepage interaction components in src/components.

* perf(navbar): opt primary navigation into React Compiler

Compile the shared primary navbar and its stable left and right subtrees in client builds. Extend the compiler contract to verify the source transform, production client artifact, and unchanged server boundary.

* perf(homepage): broaden React Compiler opt-in

Use annotation mode as the component boundary across generated app and src JSX. Compile the homepage composition and copy button while proving eligible unannotated modules remain unchanged.
fhammerschmidt and others added 18 commits October 14, 2026 21:59
* fix: repair assets, metadata, and missing-page responses

Restore original remote image URLs and use the local debugger screenshots. Correct favicon paths and media types, Twitter image metadata, and contributor links.

Redirect the obsolete API introduction URL to the API overview and remove it from prerendered pages. Generate the Cloudflare 404 document from the wildcard route, preserve unknown documentation URLs, and verify built Pages responses in CI.

Fixes #1401

* fix: render static error pages at the requested location

Cloudflare serves the shared 404 document at arbitrary URLs. Mount it using the current browser location so navigation markup does not hydrate against the build-time /404 path. Keep hydration for all prerendered content pages.

Add a production-browser regression for the shared error document, active navigation, and returning home without console errors.
Send legacy version, latest, and next aliases directly to the current manual index and text files. Keep older aliases on v12 documentation and handle the historical plural filenames before wildcard rules.

Generate LLM files before site checks and validate redirect targets against those files. Add regression coverage for missing targets and shadowed index redirects.

Fixes #1392

Part of #1421
* fix: load API docs from published compiler data

Use the repository-root compiler publication for API routes, navigation,
and module content. Select the latest dataset within the configured docs
major and share version selection with link validation.

Remove obsolete snapshots, the unused TOC, and the legacy generator.
Add regression coverage for version selection, published data, and API links.

Fixes #1391
Part of #1421

* fix: reject API publications without valid root modules

Require each library root and validate module fields before caching published API data. Fail invalid publications with their file and module paths instead of prerendering blank pages.

Add regression coverage for empty libraries, missing roots, and malformed root or child modules. Document the required publication structure.

Fixes #1391

Part of #1421

* fix: generate route types from the live route configuration

Move the build-time route table to native JavaScript so React Router and route generation share one configuration without requiring compiled ReScript first.

Generate the shared Path.res before compilation, handle nested layouts and index routes, omit URL patterns, and detect stale output in CI. Add regression tests for content discovery, deterministic output, and non-writing checks from any working directory.

Fixes #1408.

Part of #1421.
* fix: wait for runtime output before completing guide checkpoint

Start every lesson with empty output instead of pre-completing the first checkpoint. Cover compiler loading and failure, iframe output, saved progress, and nonmatching output. Arrange navigation tests with explicit progress and isolate their storage.

Fixes #1403

Part of #1421.

* test: implement compiler configuration methods in guide fixture

Match the API v8 configuration shape and setters used during compiler setup so checkpoint regressions reach compilation and iframe execution.

* test: seed guide browser progress in the stored format

Use the completedExerciseIds object expected by GuideLayout and check restored completion before navigating. The checkpoint fix no longer masks malformed saved progress with prefilled output.
Upgrade JavaScript actions to Node.js 24-compatible releases and pin hosted runners to Ubuntu 24.04. Pass branch names through the step environment so deployment scripts do not interpolate untrusted context directly.
Co-authored-by: Florian Hammerschmidt <florianh89@gmail.com>
* docs: align contributor guidance with the current monorepo

Document the workspace paths, docs SSR and guide deployment, current MDX pipeline, compiler sources, staged formatting hooks, and generated output policy. Clarify link-check working directories and CI behavior, recommend Oxc in VS Code, and ignore bundled Yarn releases by pattern.

Refs #1417 and #1421.

* fix: align workspace commands with contributor guidance

Document separate docs and guide production builds and Vitest commands. Run Oxfmt and ReScript formatting from the monorepo root, with the docs alias delegating there, so all four workspaces are covered.

* chore: prune redundant package script aliases

Keep focused docs helpers in their workspace and retain contributor commands with an explicit purpose. Document manual tools and Yarn preparation behavior, and remove duplicate docs formatting and cleaning entries.

* chore: align preparation alias with the package audit

Remove the unused root preparation alias also removed by #1419. Docs development still calls its workspace preparation script explicitly, and this keeps the contributor-docs and script-audit PRs compatible.

* docs: remove redundant package command guide

Keep the package-script audit focused on the eight redundant entries. Explain retained manual commands in the PR description without duplicating package scripts and contributor documentation.
Add an accessible mobile community navigation dialog with focus restoration and route-aware dismissal. Simplify desktop sidebar props and preserve the existing navigation categories.
Remove unused and duplicate screenshot fixtures while retaining assertions. Check TOC destinations, deprecated styling, and the real inline-code component using MemoryRouter in component tests.
Select recent posts by publication date and generate current article links, normalizing Windows paths. Serialize feed dates at midnight UTC and cover selection, URLs, dates, and discovery with regression checks.
Honor production and preview selections for manual docs deployments, including their URLs, E2E checks, and Lighthouse baselines. Remove obsolete ignore entries, correct the compiler-bundle attribute path, and mark build and dev Make targets phony.
Check Oxfmt and ReScript formatting across all workspaces and reject stale tracked compiler output after a clean build. Regenerate guide routes and document the checks and their fixes.
Use typed bindings to the shared route table to validate current and archived RSS links. Replace removed MdxFile.scanPaths calls; route generation itself was already incorporated with the API-data changes.
Remove local screenshot-update aliases and document the CI screenshot workflow. Point full-site Cypress at the dev server and distinguish it from the homepage suite's temporary production server.
Correct the Obj.magic rule and React Router binding examples. Clarify route interface updates, reusable component exports, filename exceptions, strict warning checks, and component versus end-to-end routing tests.
Validate slug identifiers, 32-bit integer positions, and required exact output strings. Remove unused description and exercise title metadata and keep source paths only in build diagnostics.

Run frontmatter and real lesson collection checks in Node as part of guide CI. Cover malformed fields, duplicate diagnostics, nested discovery, exact output, and path-free serialized lessons.

Fixes #1404

Part of #1421.
* fix: align local test commands with their supported workflows

Remove local screenshot-update aliases and document the feature-branch CI workflow that owns visual baselines. Point the full-site Cypress suite at the Vite dev server, explain server startup and URL overrides, and distinguish the managed production homepage suite.

Fixes #1415

* fix: retain localhost in local Cypress URLs

Keep localhost as the full-site Cypress hostname while correcting the default port to 5173. Align the README default URL and alternate-port example with the config.

* refactor: remove obsolete website code and check unused exports

Remove abandoned scripts, compiler installations, components, and data. Keep live MDX mappings and framework entry points, trim unused interfaces, and enforce the monorepo dead-value check in CI.

Fixes #1409

* refactor: minimize dead-code entry-point annotations

Remove 42 redundant implementation annotations and document keeping @LiVe in interfaces when available. Retain 44 annotations, each verified necessary by removing it individually and rerunning the analyzer.

* docs: align contributor guidance with the current monorepo

Document the workspace paths, docs SSR and guide deployment, current MDX pipeline, compiler sources, staged formatting hooks, and generated output policy. Clarify link-check working directories and CI behavior, recommend Oxc in VS Code, and ignore bundled Yarn releases by pattern.

Refs #1417 and #1421.

* test: wait for homepage hydration before prefetch focus

Wait for the client router and a gallery state update before focusing the prerendered Get started link. This prevents a one-shot focus event from racing React hydration while preserving the no-prefetch, focus-prefetch, and blur-cleanup assertions.

* fix: align workspace commands with contributor guidance

Document separate docs and guide production builds and Vitest commands. Run Oxfmt and ReScript formatting from the monorepo root, with the docs alias delegating there, so all four workspaces are covered.

* chore: prune redundant package script aliases

Keep focused docs helpers in their workspace and retain contributor commands with an explicit purpose. Document manual tools and Yarn preparation behavior, and remove duplicate docs formatting and cleaning entries.

* chore: align preparation alias with the package audit

Remove the unused root preparation alias also removed by #1419. Docs development still calls its workspace preparation script explicitly, and this keeps the contributor-docs and script-audit PRs compatible.

* chore: align performance alias with the package audit

Remove the unused root homepage-performance alias also removed by #1419. CI still invokes the docs workspace command directly, and this avoids a conflict next to the dead-code check entry.

* docs: remove redundant package command guide

Keep the package-script audit focused on the eight redundant entries. Explain retained manual commands in the PR description without duplicating package scripts and contributor documentation.

* docs: remove redundant package command guide

Keep the package-script audit focused on the eight redundant entries. Explain retained manual commands in the PR description without duplicating package scripts and contributor documentation.

* docs: clarify agent rules and interop examples

Scope interface and component export rules to route modules, document filename exceptions, and distinguish component tests from end-to-end routing checks.

Correct Obj.magic and React Router binding examples, and point warning checks at yarn build:res.
Merge the current master baseline, including the toolchain, documentation fixes, guide updates, API publication loader, and cleanup. Preserve source-map documentation and the v13 deployment trigger and custom domain, with ReScript deployment regression cases.
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-20T16:26:02.135710Z 4380674 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 43806742e6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +51 to +52
Wrangler:
runs-on: ubuntu-24.04

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Install Corepack before setting up the Wrangler job

On every PR, this new job installs Node 26.3.0 with Yarn caching before Corepack is installed. Node stopped distributing Corepack as of v25 (Node distribution policy), while setup-node initializes its Yarn cache by executing yarn --version (setup-node cache implementation); therefore the action fails during setup-node before the later corepack enable step can run, leaving the Wrangler check permanently red. Install and enable Corepack before setup-node, as the other jobs do.

AGENTS.md reference: AGENTS.md:L7-L10

Useful? React with 👍 / 👎.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
guide 4380674 Commit Preview URL

Branch Preview URL
Oct 20 2026, 04:26 PM

@github-actions

Copy link
Copy Markdown
Contributor

Docs preview

@github-actions

Copy link
Copy Markdown
Contributor

Lighthouse baseline

No Lighthouse baseline is available for target branch v13. Scores are the median of 3 runs against the deployed Cloudflare preview.

Category Target Current Change
Performance N/A 80 N/A
Accessibility N/A 80 N/A
Best practices N/A 100 N/A
SEO N/A 66 N/A

Download the full Lighthouse reports and baseline

Commit 4200821 · Cloudflare preview

@fhammerschmidt
fhammerschmidt merged commit 58f3ab5 into v13 Oct 20, 2026
11 checks passed
@fhammerschmidt
fhammerschmidt deleted the sync/v13-october-updates branch October 20, 2026 17:10
@fhammerschmidt
fhammerschmidt restored the sync/v13-october-updates branch October 20, 2026 17:12
@fhammerschmidt
fhammerschmidt deleted the sync/v13-october-updates branch October 20, 2026 17:13

This branch was successfully deployed

2 active deployments
preview — 43806742 Deployed Oct 20, 2026 by github-actions[bot]
guide-preview — 43806742 Deployed Oct 20, 2026 by github-actions[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants