Conversation
Biome formats and lints TypeScript, JSX, JavaScript and CSS. `pnpm check` writes the fixes, `pnpm check:ci` reads without writing, and `biome.json` is the whole configuration. Everything below the first paragraph of this message is `biome check --write .` over 130 files and nothing else: no behavior changes, and the diff reproduces from the config. The corpus is exempt from the formatter and only the formatter. `fixtures/`, `recipes/`, `registries/` and `docs/schema/` are authored by hand in a shape no formatter produces — leaf objects on one line, key order carrying meaning — and two of those files are read byte-for-byte by the drift checks, as is the generated `gear-labels.ts`. Biome still lints them for JSON errors; it just does not reprint them. Two rules are off, because the compiler already covers what they ask for. `noNonNullAssertion` fires on the assertions `noUncheckedIndexedAccess` creates, and `useLiteralKeys` fires on the bracket access that reading untyped JSON is made of. Tests additionally waive `a11y`, whose probe components exist to be clicked by jsdom, and the two rules that the prototype-pollution and generator-output assertions trip on purpose. The linter still has findings to clear; it is not gated in CI yet.
Fixed rather than waived: `[^]` spelled as `[\s\S]`, `forEach` callbacks that returned their body's value, `void` functions that returned an expression, a memo assignment hidden inside a return, two buttons without a type, two dead imports, two hand-rolled optional chains, six concatenations that wanted a template, and a CSS rule that preceded the less specific selector it overrode. The single suppression left in the tree is on JSON Schema's `then` keyword, which is not a thenable. With nothing left to report, `pnpm check:ci` becomes a third job on the validate workflow. Gating it now, while the count is zero, is the point: a lint script that nothing runs is a cleanup someone owes later.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two commits. The first is mechanical, the second is the one worth reading.
0464ab5biome.json, the four scripts, andbiome check --write .over 130 files. No behavior change.db92bb1pnpm check:cias a third CI job. 20 files.0464ab5reproduces from its own config: check out its parent, apply itsbiome.jsonandpackage.json, runpnpm check, and you get its treebyte-for-byte.
The corpus is exempt from the formatter, and only the formatter
fixtures/,recipes/,registries/anddocs/schema/are authored by handin a shape no formatter produces — leaf objects on one line, key order carrying
meaning. Two of those files are read byte-for-byte by the drift checks, as is
the generated
gear-labels.ts. Biome still lints all of them for JSON errors;it just does not reprint them. Nothing under those paths changed in either
commit.
Rules that are off, and why
Repo-wide, because the compiler settings already create what they ask for:
noNonNullAssertion— every!in the tree exists becausenoUncheckedIndexedAccessis on. Warning on the assertions the flag createsis noise, not signal.
useLiteralKeys— bracket access is what reading untyped JSON is made of.Tests additionally waive
a11y(the probe components exist to be clicked byjsdom, not read by a person) and the two rules that the prototype-pollution and
generator-output assertions trip on purpose.
Fixed rather than waived
[^]spelled as[\s\S],forEachcallbacks that returned their body'svalue,
voidfunctions that returned an expression, a memo assignment hiddeninside a return, two buttons without a type, two dead imports, two hand-rolled
optional chains, six concatenations that wanted a template, and a CSS rule that
preceded the less specific selector it overrode. One suppression remains, on
JSON Schema's
thenkeyword, which is not a thenable.Gating now
pnpm check:cilands indb92bb1, the commit where it first passes — theformatting commit does not claim a gate it cannot hold. Gating at zero is the
point: a lint script that nothing runs is a cleanup someone owes later.
Verified
biome ciexit 0 · 1597 harness checks, 0 failures · 1079 tests across thethree workspaces · the site builds.