ultracite@7.10.8
Patch Changes
-
2a43fdd: Turn off
unicorn/prefer-reflect-applyin theultracite/oxlint/anti-sloppreset. When extended afterultracite/oxlint/core, the core rule recommended rewritingFunction#apply()toReflect.apply(), which anti-slop’sno-reflect-applythen rejected, leaving no way to satisfy both. Direct-call guidance for.apply()still comes fromeslint/prefer-spreadandeslint/no-useless-call. -
03196df: Update
@biomejs/biometo 2.5.12. Releases 2.5.10 through 2.5.12 only add nursery rules, which the Biome presets exclude, so the presets are unchanged. The releases also carry linter and formatter fixes, including fewernoUnusedVariablesfalse positives on merged interfaces, namespaces, and overload type parameters, an unsafe-by-default fix fornoThisInStatic, and a large batch of Astro expression parsing fixes. -
031b867: Update oxfmt to 0.66.0. The 0.65 and 0.66 releases are formatter fixes only, mainly around comment placement between a statement head and its body, suppressed statements (decorators, typecast parens, semicolons), custom side-effect groups in
sortImports, CommonMark list interruption in JSDoc, and trailing whitespace in YAML block scalars. The:::container-directive fence patch is re-targeted to the new markdown bundle; the patched code itself is unchanged. -
54affee: Update oxlint to 1.81.0. The 1.80 and 1.81 releases add no rules and remove none, so the presets are unchanged and the peer range stays at ^1.79.0. Notable fixes carried in:
no-use-before-definenow runs on JS and JSX files,object-shorthandpreserves__proto__semantics,unicorn/prefer-math-min-maxno longer applies an unsafe autofix, and JS plugin diagnostics with invalid or reversed locations are clamped instead of crashing. -
0b058d1: Fix
ultracite fix --codexfailing on recent Codex CLI releases. The Codex adapter invokedcodex exec --full-auto, a flag Codex has since removed, so every attempt failed at argument parsing. It now runscodex exec --sandbox workspace-write, the equivalent non-interactive, workspace-scoped mode, which is also accepted by older Codex versions. Resolves #794. -
e2346bb: Update the ESLint family to latest: eslint 10.9.1, typescript-eslint 8.69.0, eslint-plugin-unicorn 74, eslint-plugin-solid 0.17, eslint-plugin-jsdoc 64.3.5, eslint-plugin-react-doctor and oxlint-plugin-react-doctor 0.9.13, globals 17.12, and the angular, nestjs-typed, next, tanstack-query, cypress, html, jest and storybook plugins. The dynamic presets pick up the new rules automatically: the solid preset gains the eleven rules added in eslint-plugin-solid 0.16 and 0.17 (
removed-api,no-single-arg-create-effect,no-accessor-as-prop,valid-use-server,require-async-server-function,no-invalid-server-capture,no-browser-globals-in-server-function,no-module-scope-reactive-primitive,no-restated-default-options,prefer-onSettled-for-side-effects,prefer-structured-class), which only report Solid 2.0 issues whensettings.solid.versionis set to 2 and stay silent on Solid 1.x code; the nestjs preset gainsforward-ref-injection-should-use-wrapper-type,swagger-file-upload-should-be-documentedanduploaded-file-should-be-validated. The curated jsdoc and react-doctor lists are unchanged. No enabled rule was removed or deprecated, and the ESLint/oxlint parity check still passes. -
7b0456e:
ultracite fixnow runs lint fixes before the formatter: oxlint before oxfmt, and ESLint then Stylelint before Prettier. A fixer can insert unformatted code, such as the bracescurlyadds, the importsconsistent-type-specifier-stylesplits, or the font names Stylelint requotes, and running the formatter first left that code unformatted until the next run. Fixer-inserted code is now formatted in the same run. The--claudeand--codexagent passes follow the same order.unicorn/no-nested-ternaryis now off in the oxlint and ESLint presets: its fixer adds parentheses that oxfmt and Prettier remove, so the two tools rewrote the file on every run. The coreno-nested-ternaryrule still reports nested ternaries. -
8ddc078: Enable three rules added in Stylelint 17 in the Stylelint preset:
selector-no-deprecatedandselector-no-invalidreport selectors that CSS has dropped or that cannot parse, andrelative-selector-nesting-notationis set toexplicit, so nested relative selectors are written& > brather than> b. Theproperty-layout-mappings,unit-layout-mappingsandvalue-keyword-layout-mappingsrules are deliberately left off, since they reject every physical property, unit and keyword and can only autofix with a per-projectlanguageOptions.directionalitysetting. The repo’s own Stylelint lock is refreshed from 16.26.1 to 17.14.1, which the config packages already required;ultracite initalready installsstylelint@latestso users are unaffected by the lock change. -
4609d79: Update the vendored
anti-slopOxlint plugin to upstream v0.1.2 (commite8c4880). The rule set is unchanged; this picks up a round of correctness fixes:no-known-value-wideningnow also reports known values passed into localunknown-typed type predicates,no-object-parameters,no-unknown-parameters,no-unknown-returnsandno-unknown-type-aliasesresolve scoped and transparent generic aliases (including block-scoped aliases and forward references),no-unknown-returnscoversPromiseLike<unknown>,no-unsafe-dictionary-typeallows generic constraints such asT extends Record<string, unknown>,no-runtime-typeofalways allows existence probes against"undefined",no-shape-in-symbol-namesallows static member reads such as Zod’sschema.shape, andrequire-safety-comment-for-type-assertionrejects empty justifications and gains amarkersoption (default["SAFETY"]). Upstream also added a separate opt-inanti-slop-effectplugin for Effect projects, which is not vendored.