Skip to content

chore: prune redundant package script aliases - #1451

Merged
fhammerschmidt merged 2 commits into
masterfrom
fix/1421-package-scripts
Oct 13, 2026
Merged

fhammerschmidt merged 2 commits into
masterfrom
fix/1421-package-scripts

Conversation

@fhammerschmidt

@fhammerschmidt fhammerschmidt commented Oct 12, 2026 •

Copy link
Copy Markdown
Member

Remove six redundant root aliases: build:generate-llms, ci:homepage-performance, ci:test:e2e, dev:vite, dev:wrangler and prepare. The workspace commands remain available to builds, CI and direct invocation.

Remove the docs workspace's ci:format and clean:res aliases; use the root commands for these repository-wide operations. Keep the manual Cypress, guide, visual-test and image-conversion tools.

Merge before #1443, #1448 and #1449, which already include these script removals.

Part of #1421.
Fixes #1419

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.
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 12, 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-12T08:37:13.802227Z 398ef95 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.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Oct 12, 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 9f9ad34 Commit Preview URL

Branch Preview URL
Oct 12 2026, 08:45 AM

fhammerschmidt added a commit that referenced this pull request Oct 12, 2026
Include #1451 so its package-script audit can merge first without conflicts. Preserve the root ReScript formatting and generated-output checks and the docs formatting delegate.
fhammerschmidt added a commit that referenced this pull request Oct 12, 2026
Include #1451 so its package-script audit can merge first without conflicts. Preserve the repository-wide root formatter and docs workspace formatting delegate.
fhammerschmidt added a commit to fhammerschmidt/rescript-lang.org that referenced this pull request Oct 12, 2026
Include rescript-lang#1451 so its package-script audit can merge first without conflicts. Preserve the dead-code check and corrected repository-wide reanalyze commands.
@github-actions

github-actions Bot commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Lighthouse baseline

Compared with target branch master at commit a62233b. Scores are the median of 3 runs against the deployed Cloudflare preview.

Category Target Current Change
Performance 84 84 0
Accessibility 80 80 0
Best practices 100 100 0
SEO 92 58 -34

Download the full Lighthouse reports and baseline

Commit 8f014fb · Cloudflare preview

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.
@github-actions

Copy link
Copy Markdown
Contributor

Docs preview

@fhammerschmidt
fhammerschmidt enabled auto-merge (squash) October 12, 2026 14:24
@fhammerschmidt
fhammerschmidt merged commit b7556f1 into master Oct 13, 2026
12 checks passed
@fhammerschmidt
fhammerschmidt deleted the fix/1421-package-scripts branch October 13, 2026 06:47
fhammerschmidt added a commit that referenced this pull request Oct 20, 2026
* Update API docs for v12.3.1

* chore(deps): bump baseline-browser-mapping from 2.8.31 to 2.11.21 (#1338)

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>

* chore(deps): bump nanoid from 3.3.16 to 3.3.18 (#1329)

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>

* chore(deps): bump browserslist from 4.28.0 to 4.28.9 (#1336)

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(infrastructure): upgrade Node.js to 26 [Codex] (#1341)

* chore: upgrade Node.js to 26

* fix(ci): install Corepack for Node 26

* fix(ci): bootstrap Corepack before caching Yarn

* chore(guide): satisfy React type peer dependency (#1343)

Add the existing React type package as a guide development dependency to satisfy workspace peer requirements.

* ci(guide): run browser tests explicitly (#1345)

Expose the Playwright container browser cache and split guide Vitest into its own CI step.

* docs(guide): add MVP launch checklist [Codex] (#1342)

* 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 [Codex] (#1347)

* 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 [Codex] (#1348)

* 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

* chore(guide): add robots policy (#1349)

Serve an explicit allow-all robots policy with the guide's static assets without assuming a production domain or sitemap.

* feat(guide): add exercise reset control (#1350)

Restore the current exercise's initial code while clearing its saved draft and retaining completion progress.

* feat(guide): validate lesson collections [Codex] (#1346)

* 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.

* Add LMDmax logo to Trusted by our users section (#1334)

* ci(docs): validate Wrangler Pages runtime [Codex] (#1340)

* 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

* fix(docs): generate absolute Open Graph image URLs (#1353)

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.

* Update API docs for v13.0.0-alpha.6

* chore(deps): update frontend toolchain [Codex] (#1351)

* 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>

* builds(cloudflare): simplify preview deployments [Codex] (#1352)

* 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]

* [codex] add Cloudflare SSR for playground (#1303)

* 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 checks [codex] (#1355)

* 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 [codex] (#1358)

* 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(homepage): stabilize font loading [codex] (#1360)

* 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.

* refactor(homepage): simplify clipboard and gallery interactions [codex] (#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 [codex] (#1363)

* 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): prerender the highlighted code examples [codex] (#1364)

* 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.

* perf(homepage): load syntax grammars at content boundaries [codex] (#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.

* perf(homepage): optimize responsive images and reserve media dimensions [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): split CSS by route group [codex] (#1367)

* 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: opt homepage and navbar into React Compiler [codex] (#1369)

* 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.

* fix: serve data for canonical documentation URLs (#1385)

Copy prerendered route data to the trailing-slash paths requested by React Router so search results can navigate without decoding the HTML fallback.

* Fix playground v8 (#1386)

* Fix v13 playground imports (#1387)

* improve playground highlighting (#1388)

* test: run documentation script suites in CI (#1422)

Build script bundles before running the Node test suites and verify that the runner invokes each check with the correct flags.

Fixes #1413.

* docs: refresh genType examples for ReScript 12 (#1424)

* docs: refresh genType examples for ReScript 12

Regenerate the TypeScript output, restore the missing message argument, and label the JavaScript module output.

Align the example configuration, TypeScript imports, and named component export with the generated files.

* fix: emit runnable genType wrappers in TypeScript examples

Use react-jsx for TypeScript emission and explicit .js consumer imports.
Scope preserve to bundler setups with noEmit and pair the Node16 module
and module resolution options.

Refs #1420

* fix: validate documentation output examples (#1423)

* fix: validate documentation output examples

Compare shown ESM, CommonJS and preserved JSX output with compiler output, fail malformed tabs, and check fence aliases, guides and syntax lookup. Format refreshed output and support read-only audits of historical blog examples.

Repair module-functions closing tags and prevent malformed tabs from removing adjacent sections in abridged LLM documentation.

Fixes #1396.
Fixes #1400.

* fix: correct examples exposed by output validation

Refresh checked JavaScript output with ReScript 12.2.0 and correct invalid source examples.

Support page-scoped source and interface files for multi-file examples. Keep embedded todo diagnostics independent of the temporary build directory.

* fix: scope variant decoders to their own example

Keep only JSON and user types in the shared prelude so later examples
compile without unrelated decoder functions. Regenerate the seven affected
JavaScript tabs while retaining compiler checks for the decoder itself.

Refs #1396, #1397, #1421

* docs: refresh remaining v12 output examples (#1429)

Regenerate router and manual output with ReScript 12.2, correct the hook
usage excerpts, and remove misleading output tabs from incomplete examples.
Keep the complete type-annotation example checked separately from its
function placeholder.

Refs #1394, #1421

* fix: repair unchecked v12 documentation examples (#1425)

* fix: repair unchecked v12 documentation examples

Correct async, exception, record, pattern matching and React hook examples.
Check 115 previously skipped blocks with shared context and refresh their
JavaScript output. Preserve intentional failures and incomplete excerpts.

Fixes #1395
Refs #1421

* fix: address unchecked example review findings

Annotate the throwing helper so suppression examples are meaningful, hide
the pipe checker scaffold, and align component props with React 19 refs.

Refs #1395, #1421

* fix(docs): align manual prose with ReScript v12 (#1430)

* fix(docs): align manual prose with ReScript v12

Correct string APIs, reserved names, Unicode support, removed Int64 types,
pattern-matching diagnostics, dirname output, and the native binary path.
Distinguish the current build system from legacy tooling and benchmarks.
Validate generated API routes so broken links are no longer ignored.

Fixes #1399
Part of #1421

* docs: assert the dirname example result

Replace the return-value comment with an executable assertion and regenerate its JavaScript output. Verify the generated assertion passes for the documented result and rejects an incorrect expectation.

Fixes #1399

* fix: clean up guide deployment assets and configuration (#1440)

* fix: clean up guide deployment assets and configuration

Serve the guide public directory so robots.txt reaches the deployed Worker. Import shared favicon assets through Vite and verify robots and icon responses in the Wrangler CI smoke check.

Remove the unused build/client-to-out copy and stale TODO checklist. Document the actual deployment directory and keep outstanding launch work in the README.

Fixes #1406. Part of #1421.

* fix: exclude generated guide app JSX from formatting

The guide root and route outputs are tracked compiler files. Keep their compiler formatting authoritative instead of requiring hand-formatting after compilation.

* fix: align React docs with ReScript v12 and React 19 (#1431)

Replace classic JSX explanations with the automatic runtime and document
React 19 ref props using a working DOM-ref example. Correct setup versions,
API names, root rendering, router events, and component module boundaries.
Add Server Components to the sidebar and regenerate changed output tabs.

Fixes #1398
Part of #1421

* chore: remove unused public assets (#1436)

Remove 18 unreferenced images and logos (561 KiB), plus the redundant blog/.gitkeep.

Preserve the before/after debugger screenshots needed by #1435, the referenced img/landing_page_figma.avif, and the Vite starter SVG.

Fixes #1402

* doc: bind to a function inside an object with default export (#673)

Co-authored-by: Florian Hammerschmidt <florianh89@gmail.com>

* chore: prune redundant package script aliases (#1451)

* 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.

* 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.

* chore(deps): combine open Dependabot updates (#1454)

Update ajv, brace-expansion, fast-copy, fast-uri, handlebars, ip-address, proxy-addr, and source-map-js in yarn.lock.

Combine the updates from #1324, #1384, #1389, #1390, #1426, #1427, #1428, and #1444 without changing dependency ranges.

* refactor: share interop helpers and remove agent-rule violations (#1452)

* refactor: consolidate interop helpers and follow ReScript rules

Share clipboard writes, Algolia validation, highlighting, Markdown and Cypress bindings. Replace raw JavaScript and unsafe casts with typed interop, migrate Belt calls to Stdlib, and isolate router tests with MemoryRouter.

Add clipboard and MDX regressions, including exact meta element iteration and share feedback reset coverage.

* refactor: align cleanup with pending documentation fixes

Remove the unused metadata helper and kebab-case export already covered by the final dead-code cleanup. Match the pending API array access and visual-test router paths to avoid overlapping edits.

* fix: use automatic JSX runtime for Pages functions

Configure the Functions JSX transform to import React runtime helpers automatically. Add a deployed OG image regression that checks the PNG signature, catching missing runtime imports that bundling alone does not detect.

* fix: preserve clipboard and navigation behavior during interop cleanup

Restore a shared typed clipboard fallback with focus and selection cleanup. Scroll warning suggestions through their DOM parent, and cover keyboard scrolling and fallback copying in Cypress. Add guide browser Back/Forward coverage against the production build in CI.

* fix(ci): align localhost resolution for guide browser tests

Use IPv4-first DNS ordering for the guide browser test step so React Router prerender requests reach the preview server in the Playwright container. Keep localhost URLs unchanged.

* test: cover failure of both clipboard copy methods

Deny the native Clipboard API and stub the legacy copy command to return false when checking error feedback. Confirm cleanup after failure and retain native permission recovery and repeated copying coverage.

* test: wait for playground hydration before opening settings

Wait for CodeMirror and the initial compiler output before clicking Settings in the warning suggestion regression. This avoids clicking server-rendered controls before React attaches their handlers.

* docs: cover remaining ReScript v12 features and tooling (#1456)

* docs: cover remaining ReScript v12 features and tooling

Recover the useful documentation changes from the v13-roadmap stash after comparing them with current master and open PRs. Preserve superseding React, spread, and build-architecture fixes.

Update build commands and post-build hook behavior, document analyzer features with their minimum versions, and add missing language and genType coverage. Regenerate the JavaScript examples with the v12 compiler.

* docs: use the native remainder operator in v12 examples

Use infix % in the remainder examples and arithmetic descriptions. Remove the outdated claim that ReScript requires mod naming.

* docs: correct nullable genType mappings for v12

Remove the nonexistent Undefined.t entry and document the separate option, Null.t and Nullable.t unions.

* fix: repair broken assets, links, and 404 responses (#1435)

* 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.

* fix: redirect legacy LLM URLs to generated manual files (#1434)

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 (#1432)

* 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 checkpoints (#1437)

* 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.

* ci(actions): remove deprecated runtime warnings (#1361)

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.

* feat: document ref for self-referencing (#960)

Co-authored-by: Florian Hammerschmidt <florianh89@gmail.com>

* docs: align contributor guidance with the current monorepo (#1449)

* 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.

* fix: make community navigation accessible on mobile (#1445)

Add an accessible mobile community navigation dialog with focus restoration and route-aware dismissal. Simplify desktop sidebar props and preserve the existing navigation categories.

* test: clean up visual baselines and verify component behavior (#1446)

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.

* fix: restore current blog RSS feed (#1455)

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.

* fix: remove stale configuration and honor deployment environment (#1450)

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.

* ci: check ReScript formatting and committed output (#1448)

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.

* test: align RSS feed checks with shared route generation (#1442)

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.

* fix: align local test commands with their supported workflows (#1447)

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.

* docs: clarify agent rules and interop examples (#1453)

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.

* fix: enforce the guide lesson authoring contract (#1438)

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.

* refactor: remove obsolete website code and check unused exports (#1443)

* 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.

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: github-actions[bot] <github-actions@rescript-lang.org>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Josh Vlk <josh@vlkpack.com>
Co-authored-by: Aman Kumar <116796793+amn1729@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Paul Tsnobiladzé <paul.tsnobiladze@gmail.com>
Co-authored-by: Pedro Castro <aspeddro@gmail.com>
Co-authored-by: Václav R. Gröhling <47554112+czabaj@users.noreply.github.com>

This branch was successfully deployed

2 active deployments
preview — 9f9ad342 Deployed Oct 12, 2026 by github-actions[bot]
guide-preview — 9f9ad342 Deployed Oct 12, 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.

23 package scripts are run by nothing

2 participants