ultracite@7.8.0
Minor Changes
-
4e2fea0: Add a dedicated
tanstackframework preset for Biome, ESLint, and Oxlint. The ESLint preset layers@tanstack/eslint-plugin-query,@tanstack/eslint-plugin-router, and@tanstack/eslint-plugin-start, while the Biome and Oxlint presets relax file-naming conventions forroutes/directories and the generatedrouteTree.gen.ts. Framework detection now maps@tanstack/react-query,@tanstack/react-router, and@tanstack/react-startto the newtanstackpreset.Two behavior changes for existing consumers: TanStack Query rules now live in the
tanstackpreset instead ofreact, so projects that relied on Query rules must opt intotanstack; and TanStack Router projects now resolve to thetanstackpreset rather thanremix.
Patch Changes
-
51a2af0: Recognize
.biome.jsonand.biome.jsoncas valid Biome config files across the CLI.detectLinter, thedoctorcommand, and the Biome config resolver now match the dot-prefixed names alongsidebiome.json/biome.jsonc, following Biome's documented configuration file resolution order. Closes #700. -
14b557c: Harden the generated standalone Husky hook by using
git add -- "$file"when restaging formatted files. This prevents option-shaped filenames from being interpreted as Git options during the hook. -
baa3dd0: Add
ignorePatternsto the generated oxlint config at the root level so they are actually applied. Oxlint does not mergeignorePatternsthroughextends(see oxc-project/oxc#10223), so patterns set in the core preset were silently ignored. The generated config now setsignorePatterns: core.ignorePatternsat the top level, reusing the patterns from the imported core preset. -
bd27fd4: Add newly supported Oxlint rules from the latest release to the core, React, and Vitest presets:
- Core:
id-match,no-implicit-globals,no-implied-eval,prefer-arrow-callback,prefer-regex-literals,import/newline-after-import,jsdoc/require-throws-description,jsdoc/require-throws-type, andjsdoc/require-yields-type - React:
jsx-a11y/control-has-associated-label,jsx-a11y/no-interactive-element-to-noninteractive-role,jsx-a11y/no-noninteractive-element-interactions,jsx-a11y/no-noninteractive-element-to-interactive-role,react/no-object-type-as-default-prop, andreact/no-unstable-nested-components - Vitest:
vitest/padding-around-after-all-blocks
- Core:
-
14b557c: Reject symlinked generated config targets before writing project files. CLI config writers now route through a shared project-file write guard that checks for symlinks and project-root escapes before mutating files.
-
14b557c: Validate package-manager names before generating agent and editor hook commands. Hook configuration now only uses supported package-manager prefixes, preventing unsafe values from being persisted into later-executed hook commands.
-
14b557c: Reject unsupported package-manager names during
ultracite init. Explicit--pmvalues and detectedpackageManagermetadata are now runtime-validated against the supported package managers before dependency installation, preventing malicious project metadata from selecting an arbitrary executable.