The code cited its plan instead of saying why: `E28 review J4`, `(R6 S3b)`, `S1 justified…`,
`deep-review round 5`. That plan lives in the private ops repo, so for every reader of this one the
citation was noise, and a sentence whose subject was the plan step ("round 2 showed…") hid its
lesson behind an id. Each one is gone and the "why" kept: a bare citation is deleted, a sentence
carrying a lesson is reworded around it ("a later attempt showed…").
Measured (`scripts/audit_metrics.py`, product code): 652 lines in 270 files carried an epic code by
the definition the next commit holds (507 / 241 by the old, two-digit-only one) -> 0. Across all
code, tests, scripts and configs: ~1100 epic-code lines plus ~320 sprint/round ids.
Behaviour unchanged, checked mechanically: every changed .py file has the same AST once docstrings
are blanked; css/sh/toml/yml/json files are identical once comments are stripped; the only
non-comment changes in TS/JS are test titles, one description string in a contract table, and five
ESLint messages, whose text is all the gates snapshot diff holds. Not touched: Markdown (docs and
the changelog keep their history), Alembic migrations, TV episode notation (`S2 · E5`), DESIGN.md
ids (`C1`, `B4`, `S3h`), tracker ids (`SEC-16`, `DX-17`).
One stale claim fixed on the way: test_hls_reaper's docstring said the player checkpoints "every
10 s whether or not it is playing", which plex/stream.py calls wrong; it now says what the code does.
43 lines
2.9 KiB
TypeScript
43 lines
2.9 KiB
TypeScript
import react from "@vitejs/plugin-react";
|
|
import reactCompiler from "babel-plugin-react-compiler";
|
|
|
|
// ONE React transform, shared by vite.config.ts and vitest.config.ts.
|
|
//
|
|
// It is a shared factory rather than two `react()` calls because the two configs must not drift:
|
|
// if the compiler ran only in the production build, every vitest run would be exercising code the
|
|
// user never receives, and a compiler-induced behaviour change would ship green. That is precisely
|
|
// the defect `0.93.2` was released to fix — a gate and a build image that had quietly stopped being
|
|
// the same thing — so the rule here is that the gate compiles the code the same way the build does.
|
|
//
|
|
// The React Compiler auto-memoises: it infers what `useCallback`/`useMemo` were being hand-written
|
|
// for and applies the equivalent itself. It is enabled repo-wide with no opt-out list because it
|
|
// bails out on its own for anything it cannot prove safe — SILENTLY: `panicThreshold` is "none" and
|
|
// there is no logger here, so a skipped component still works and simply re-renders everything under
|
|
// it. This comment used to say "its rules are also linted"; it was false while `react-hooks/refs` was
|
|
// off, and 95 functions sat uncompiled behind it. What actually holds the line now is
|
|
// src/components/compilerCoverage.contract.test.ts, which runs THIS compiler over the shipped source
|
|
// and fails on any skip not on its list; the react-hooks lint rules are the early warning. None of
|
|
// them is off (three run at the preset's warn, which `--max-warnings 0` fails — docs/gates.md), but
|
|
// three of the compiler's diagnostics cannot report under the installed plugin (eslint.config.js
|
|
// says which), so the ratchet is the line, not the lint. `target` follows the installed React major and
|
|
// must move with it.
|
|
//
|
|
// The plugin is IMPORTED rather than named by the usual `"babel-plugin-react-compiler"` string. Two
|
|
// reasons, both about the gate: a string is invisible to knip, which then reports the dependency as
|
|
// unused, and — worse — a typo in that string is a silent no-op that ships an uncompiled bundle,
|
|
// while a bad import is a resolve error on the tsc lane.
|
|
//
|
|
// The price of the import: plugin-react finds the compiler only by that string, so it doesn't know the
|
|
// compiler is there. Its one compiler-specific switch is Babel's `retainLines`, which it turns on for
|
|
// dev (and so for vitest) unless the compiler is present. With the compiler's re-printed JSX that eats
|
|
// the space at the end of a text line ("for example <code>" rendered "for example/api/feed"). The
|
|
// production build never had it on. `generatorOpts` wins over the top-level option, so it is switched
|
|
// off here, for every mode. Pinned by src/jsxWhitespace.dom.test.tsx.
|
|
export const reactWithCompiler = () =>
|
|
react({
|
|
babel: {
|
|
plugins: [[reactCompiler, { target: "19" }]],
|
|
generatorOpts: { retainLines: false },
|
|
},
|
|
});
|