chore(deps): update dependency ultracite to v7.10.6 - #190
Merged
Conversation
❌ Deploy Preview for semantic-template failed. Why did it fail? →
|
renovate
Bot
force-pushed
the
renovate/ultracite-7.x
branch
from
August 5, 2026 05:39
9606cfb to
6d193d9
Compare
renovate
Bot
force-pushed
the
renovate/ultracite-7.x
branch
from
August 8, 2026 22:01
6d193d9 to
c2476b8
Compare
renovate
Bot
force-pushed
the
renovate/ultracite-7.x
branch
from
August 12, 2026 00:34
c2476b8 to
0c49827
Compare
renovate
Bot
force-pushed
the
renovate/ultracite-7.x
branch
from
August 12, 2026 09:41
0c49827 to
d6756e7
Compare
Contributor
|
Daily maintainer check (2026-08-14): holding — Netlify deploy-preview failed (log). Additionally, ultracite@7.10.3 was published 2026-08-12 (2 days old) which is a minor version with significant linter/tooling changes; 7-day hold applies per policy. |
renovate
Bot
force-pushed
the
renovate/ultracite-7.x
branch
2 times, most recently
from
August 14, 2026 09:13
c05e13d to
331c14f
Compare
Contributor
|
📅 Daily maintainer check (2026-08-15) Status: 7-DAY HOLD + BLOCKED
Eligible for review after: 2026-08-21 (7-day hold) AND Netlify failures resolved Next review: 2026-08-16 |
renovate
Bot
force-pushed
the
renovate/ultracite-7.x
branch
2 times, most recently
from
August 15, 2026 08:35
9dc9831 to
0700eae
Compare
renovate
Bot
force-pushed
the
renovate/ultracite-7.x
branch
4 times, most recently
from
August 20, 2026 09:55
8833393 to
bd76d1c
Compare
renovate
Bot
force-pushed
the
renovate/ultracite-7.x
branch
from
August 21, 2026 00:36
bd76d1c to
1ea1cca
Compare
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.
This PR contains the following updates:
7.9.4→7.10.6Release Notes
haydenbleasel/ultracite (ultracite)
v7.10.6Compare Source
Patch Changes
972b946: Update the oxlint presets for oxlint 1.79: replace the removedreact/react-compilerrule with the 22 new React Compiler rules in the react preset, addjsdoc/no-blank-blocksandone-varto the core preset (mirrored in the ESLint presets), and require oxlint ^1.79.02d5bbdb: Declare thejsPluginSettingsnamed export in theultracite/oxlint/js-pluginstype declarations, so the documented (andultracite init-generated)import jsPlugins, { jsPluginSettings } from "ultracite/oxlint/js-plugins"type-checks (#773)56aef65: Refresh the toolchain versions thatultracite initinstalls into projects:@biomejs/biome2.5.9, the ESLint plugin family (including eslint-plugin-cypress 7, eslint-plugin-jsdoc 64, eslint-plugin-solid 0.15, and eslint-plugin-unicorn 73 — the dynamic presets adopt their new rules automatically), andprettier-plugin-svelte4.1.1 /prettier-plugin-tailwindcss0.8.1v7.10.5Compare Source
Patch Changes
8df6ad0: Offer the vendoredanti-slopOxlint preset duringultracite init— it now appears in the JS-plugins prompt when you pick Oxlint, and non-interactive setup accepts it via--js-plugins anti-slop. Selecting it addsultracite/oxlint/anti-slopto the generated config'sextends; since the preset is vendored inside Ultracite, nothing extra is installed.cd229e9: Bump theoxlint-plugin-react-doctorpin from^0.7.1to^0.9.12, soultracite initinstalls the current plugin. All react-doctor rules enabled by the js-plugins presets still exist in 0.9.12, and the ported rules run in curated mode via the settings shipped alongside this release (#771).e1ac886: Pin React Doctor's ported rules to their framework-aware "curated" mode (#771). react-doctor 0.9.x rewrote its ported oxc/react-refresh rules — notablyonly-export-components— with a stripped-down default mode: no framework detection, no route-file skipping, andallowConstantExportoff, so Next.js route-segment exports likeexport const dynamic = "force-static"ormetadatawere flagged as non-component exports in every route file. The ESLint react preset now setssettings["react-doctor"].portedRuleMode: "curated", and generated oxlint configs apply a newjsPluginSettingsexport fromultracite/oxlint/js-pluginson the root config (oxlint does not mergesettingsfrom extended configs, so the setting cannot ride along inside the preset). If you extend the js-plugins preset manually, addsettings: jsPluginSettingsto your root oxlint config.c27fe36: Generate oxlint configs that enable a subset of the JS plugins via a newselectJsPluginsexport fromultracite/oxlint/js-plugins, instead of inlining the filtering logic into the generated file. The inlined block contained atypeofcheck that user-side lint presets flagged (anti-slop/no-runtime-typeof, #770); the generated config is now a one-line extend, is emitted already formatted (including the previously missing blank line after imports), and re-runningultracite initmigrates existing configs with the old inlined block automatically.0616523: Update the vendoredanti-slopOxlint plugin to upstream commit446268e, picking up fixes tono-object-parametersandno-unknown-returns(respect lexical type binders in alias resolution) and a newallowInTypeGuardsoption onno-runtime-typeof. Theultracite/oxlint/anti-sloppreset enablesallowInTypeGuards, sotypeofchecks inside type predicate functions ((x): x is T) no longer need disable comments — predicates are the named-boundary pattern the rule pushes toward (dmmulroy/anti-slop#10).v7.10.4Compare Source
Patch Changes
417a85a: Add an opt-inultracite/oxlint/anti-sloppreset that ships a vendored, self-contained build of the anti-slop Oxlint plugin — fifteen rules that reject low-evidence TypeScript and JavaScript patterns (unjustified type assertions,unknownleaking through signatures,Reflect-based access, module mocking, and more). Extend it alongsideultracite/oxlint/core; nothing extra to install. The preset also turns off two core rules that conflict with anti-slop's widening checks (typescript/consistent-indexed-object-styleandunicorn/no-immediate-mutation) when extended after core.4d3fab8: Movesuspicious/useArraySortComparefrom the Biome core config to the opt-in type-aware config. The rule is in Biome'stypesdomain — it type-infers the receiver of every method call before checking the method name, which madeultracite checkup to ~260x slower on projects with expensive library types (zod, better-auth, Prisma). It now only runs when type-aware linting is explicitly enabled, alongside the other type/project-domain rules. Fixes #768.v7.10.3Compare Source
Patch Changes
a1fa9c4: Replace the hand-rolled packageexportsmap matching in the config-resolution doctor check with the resolve.exports library, which implements Node's fullPACKAGE_TARGET_RESOLVEalgorithm (wildcard patterns, key-order precedence, conditional exports, and array fallbacks). The manualnode_moduleswalk is kept intentionally — it exists to avoid Bun's auto-install cache resolving specifiers the project's ownnode_modulescan't.414ea80: Replace the hand-rolled monorepo workspace scan in framework detection with the find-workspaces library. Workspace declarations from package.json (array and yarn-classic object form) and pnpm-workspace.yaml — including negated globs — are now resolved by the library instead of manual pattern collection and globbing, and lerna/bolt monorepos are picked up as well.a9a1989: Replace the hand-rolled upward directory walks infindNearestFileanddetectLinterwith the empathic library'sfind.any, which checks candidate names in order within each directory before moving to the parent — the same per-directory precedence the previous implementation enforced manually.27b2707: Use magicast to update ESM lint-staged config files duringultracite init. The config is now edited as an AST instead of being imported and re-serialized, so comments and function-valued entries elsewhere in the config survive the update, and the user's config code is no longer executed. If the Ultracite glob pattern is already owned by a non-array value, or the config isn't a mergeable object literal (e.g.defineConfig(...)), init warns and leaves the file untouched instead of rewriting it. CommonJS configs keep the previous behavior.f2529b8: Rewrite the agent-fix progress renderer on top of log-update, cli-truncate, and string-width. log-update now owns the in-place block rewriting that was previously done with manual cursor-up/clear-line escape sequences, and line truncation is measured by display width instead of code units — so lint messages containing emoji or CJK text can no longer overflow the terminal row and corrupt the animated block.277b9d6: Replace the hand-rolled child-process handling in the agent fix runner with execa. The timeout → SIGTERM → grace period → SIGKILL escalation, stderr capture, and spawn-failure handling now use execa'stimeoutandforceKillAfterDelayoptions, which are battle-tested across platforms (including Windows kill semantics the manual implementation didn't cover). Behavior is unchanged: agent runs still time out after 5 minutes, escalate to SIGKILL after a 10-second grace period, and report a capped stderr tail.1614a80: Drop the direct cross-spawn dependency: all synchronous process spawning (linter runs, tool version checks, editor extension installs, skill installs) now goes through a small adapter over execa's sync API, which owns the Windows spawn semantics cross-spawn provided. The adapter preserves the spawnSync result shape (status/signal/error/stdout), always disables shell interpretation, and always decodes output as UTF-8. execa was already a dependency for the agent fix runner, so this consolidates on one process-spawning library.ac114b4: Replace the glob dependency with fast-glob for the tsconfig.json scan during init. fast-glob was already in the dependency tree via find-workspaces, so this drops glob's transitive dependencies (minipass, path-scurry, etc.) from the install without changing behavior.v7.10.2Compare Source
Patch Changes
1c48c68: Enable Tailwind CSS class sorting (sortTailwindcss) in the Oxfmt preset. Classes inclass/classNameattributes and inclsx,cva,tw,twMerge,cn,twJoin, andtvcalls are now sorted using the same algorithm asprettier-plugin-tailwindcss, matching the behavior of the Prettier preset (which always loads the Tailwind plugin) and the Biome preset'suseSortedClassesrule. Projects without Tailwind installed are unaffected beyond class strings being sorted against the default theme, and oxfmt versions older than 0.35.0 ignore the option.dc78be4: Stop sorting TanStack route option keys in route files. TanStack Router's route option types are order-sensitive (head/componentinferloaderDatafrom properties declared before them), so the BiomeuseSortedKeyssource action rewrotecreateFileRouteliterals into an order that breaks type inference (loaderDatabecomesnever). The Biome TanStack preset now disablesuseSortedKeysfor route files, and the oxlint TanStack preset disablessort-keysthere so route files aren't caught between it andreact-doctor/tanstack-start-route-property-order.v7.10.1Compare Source
Patch Changes
d018b7f: Fix several agent fix mode (fix --claude/--codex) issues: runs no longer abort with ENOBUFS when linter JSON output exceeds 1MB, user-supplied format/reporter flags can no longer override the JSON reporter and break parsing, a stuck agent process is force-killed 10 seconds after the timeout instead of hanging forever, and the progress renderer no longer garbles TTY output when file paths and rule names exceed the terminal width.d018b7f: Fix Biome config migration leaving the legacy bare"extends": ["ultracite"]form in place, which breaks Biome's module resolution since the package has no root export. It's now mapped toultracite/biome/core.d018b7f: Fixultracite doctorreporting spurious failures: config checks now walk up parent directories (matchingcheck/fixand the linters themselves) so monorepo packages inheriting a root config pass,.oxlintrc.jsonis accepted as a valid oxlint config (with a migration suggestion), and Prettier/Stylelint configs declared viapackage.jsonkeys are recognized.d018b7f: Fixultracite initcorrupting existing Prettier/Stylelint/ESLint configs by writing an ESM module into JSON/YAML/TOML/CJS config files (e.g..prettierrc,eslint.config.cjs). Updates now write the default.mjsconfig instead and remove the incompatible file so it can't shadow the new one.d018b7f: Fixultracite check/fixmisrouting space-separated flag values (e.g.--max-warnings 10) into the file list, which scrambled the underlying linter invocation and made formatters fail on bogus targets. Positional files listed before a--separator are also kept as lint targets instead of being reclassified as passthrough, which could silently widen formatter runs to the whole project.d018b7f: Fix Lefthook and pre-commit YAML updates silently doing nothing on common config shapes: the Lefthook job is now inserted correctly whenjobs:isn't the first key underpre-commit:(and no longer matches ajobs:key in a different hook),repos: []in.pre-commit-config.yamlis handled, and shapes that can't be safely edited produce a warning instead of writing the file back unchanged.d018b7f: Fix the Husky integration overwriting an existing.husky/pre-commithook:ultracite initranhusky init, which unconditionally replaces the hook withnpm test. It now runs plainhuskyto set up the hooks infrastructure without touching the hook file.d018b7f: Fixultracite initdestroying user files it couldn't parse or merge: unparseabletsconfig.jsonfiles are no longer replaced with a minimal config, unparseable.vscode/.zedsettings are no longer overwritten wholesale, and lint-staged configs with function-valued entries are left untouched — all now warn and skip instead.d018b7f: Fix re-runningultracite initon an oxlint setup silently enabling the full js-plugins preset — the previously selected JS plugins are now preserved when no new selection is made. Init also no longer flips an explicit"type": "commonjs"in package.json to"module"; it warns instead.d018b7f: Fix switching linters removingstorybookfrom the project's dependencies. It was swept into the removal set as a peer ofeslint-plugin-storybook, but it's a user-facing tool a project may use independently of linting.d018b7f: Fix Stylelint target generation dropping directories with a dot in their name (e.g.app.web) and producing non-matching globs from Windows-style backslash paths. Framework detection also handles negated workspace patterns (!packages/legacy) again.d018b7f: Fix the CLI becoming a silent no-op (exiting 0 without linting anything) when a genericTESTenvironment variable is set, as is common in CI matrices. The internal test guard now usesULTRACITE_TEST.36c7b80: Move @typescript-eslint/utils from dependencies to devDependencies. It was accidentally shipped as a runtime dependency in 7.9.0, pulling eslint and the typescript-eslint packages into every consumer's install (including oxlint-only setups) via npm's automatic peer dependency installation. Nothing in the published package imports it — it only exists to support the workspace-internal rule-parity script.v7.10.0Compare Source
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-pluginsultracite 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)Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.