Minor Changes
-
cd0a36c: Add
--claudeand--codexflags toultracite fix. After the normal autofix pass, remaining diagnostics are handed to the Claude Code or Codex CLI non-interactively, one agent run per affected file, with a live per-issue spinner that flips to ✓/✗ once the fix is verified by a re-lint. Fixes that don't survive verification are retried (up to 3 attempts per file) with the fresh diagnostics and feedback that the previous approach failed. Works with all three linter modes (Oxlint, Biome, ESLint); exits non-zero if any issues remain, matching the plainfixcontract. -
e089510: Scope React Doctor's framework-specific rules to per-framework add-on presets (#752)
The
ultracite/oxlint/js-pluginspreset no longer enables React Doctor'snextjs-*and TanStack (query-*,tanstack-start-*) rules for every consumer. Rules likenextjs-no-img-elementandtanstack-start-no-anchor-elementfire on plain<img>/<a>JSX and recommend framework replacements, which falsely errored in Vite + React and other non-Next/non-TanStack projects.Those rules now live in two new add-on presets:
ultracite/oxlint/next/js-pluginsultracite/oxlint/tanstack/js-plugins
ultracite initwires the matching add-on automatically when you select the framework together withoxlint-plugin-react-doctor. If you manageoxlint.config.tsby hand and use Next.js or TanStack, add the matching add-on preset toextendsalongsidejs-pluginsto keep those rules — or re-runnpx ultracite init.Also fixes re-running
initon a config that already extendsjs-pluginsproducing a duplicateimport jsPluginsdeclaration.
Patch Changes
-
3320cd8: Update Biome to 2.5.6. No stable (non-nursery) rules were added, removed, or promoted between 2.5.3 and 2.5.6, so the preset configs are unchanged.
-
477cd6e: Update ESLint to 10.8.0 and all ESLint plugins to their latest versions. Highlights:
eslint-plugin-react-doctor0.9.3: the react preset expands from 149 to 417 rules, adopting the upstreamrecommendedset (react-router, three.js/r3f, ink, motion, remotion, zustand/valtio/mobx, and more) while excluding rules that duplicate already-enabledreact,react-hooks, andjsx-a11yrules. The next preset gainsnextjs-async-dynamic-api-not-awaitedandnextjs-metadata-url-consistency; the tanstack preset gainstanstack-start-missing-scripts,query-floating-mutate-async, andquery-no-mutation-in-effect-as-read.eslint-plugin-unicorn72: addsno-missing-local-resource,no-multiple-promise-resolver-calls,no-shorthand-property-overrides,no-transition-all,no-unnecessary-string-trim,no-useless-re-export,prefer-then-catch, andrequire-frontmatter-fields. CSS-only rules are excluded from the preset since they fail config validation for JS files.eslint-plugin-sonarjs4.2: adds 11 rules includingno-fixed-wait-in-tests,parameterized-tests,assertions-in-test-cases,prefer-native-lodash-alternative, andexplicit-test-skip.typescript-eslint8.65:@typescript-eslint/no-loop-funcand@typescript-eslint/no-restricted-importswere deprecated upstream in favor of the base rules, which now apply to TypeScript files.eslint-plugin-astro3: removesastro/no-omitted-end-tagsandastro/valid-compile.eslint-plugin-svelte3.22: addsno-bind-value-on-checkable-inputsandno-conflicting-module-names;no-restricted-html-elementsis now off because its schema requires a user-supplied element list.@angular-eslint/eslint-plugin22.1: addsinject-at-topandprefer-service-decorator.
-
b81578b: Fix the useSortedPackageJson action not being executed by turning on assist actions for package.json-like files.
-
9ec454a: Update oxlint to 1.76.0 and oxfmt to 0.61.0. New stable rules added to the presets:
oxc/bad-match-all-arg,id-denylist,node/exports-style(core),react/function-component-definitionwith arrow-function components (react), andvitest/padding-around-test-blocks(vitest).node/no-top-level-awaitis off — top-level await is idiomatic in ESM, Astro frontmatter, and build scripts — and the ESLint preset'sn/no-top-level-awaitis now off to match. No rules were removed or promoted out of nursery. -
ba61c02: Fix generated oxlint.config.ts accessing plugin.name on ExternalPluginEntry without narrowing the string form, which caused a TypeScript error in projects that type-check the config (#753)