The latest releases, changes, and improvements to Ultracite across every version.
2fbded9: Disable the typescript/prefer-readonly-parameter-types Oxlint rule. While the rule is useful for user-authored types, it fires on virtually every parameter that touches a third-party type (Express Request/Response, React events, Node Buffer, ORM models, DOM APIs) because those types aren't deeply readonly internally — leaving users with unfixable violations. Matches the existing ESLint config, which already has this rule off.617affd: Fix dist/, .next/, **/*.gen.*, and other strong-negation (!!) ignore globs being dropped when a consumer's biome.jsonc extends ultracite/biome/core and also defines its own files.includes. The globs moved into config/shared/ignores.jsonc in 7.5.9 were transitively extended through biome/core, and Biome's extend merge doesn't carry files.includes through a two-level chain when the middle config lacks its own entry. The patterns are now inlined directly in biome/core's files.includes (still generated from config/shared/ignores.mjs), matching the pre-7.5.9 behavior.d681e08: Remove the nonexistent import-x/enforce-node-protocol-usage rule from the ESLint core config, which caused ESLint 9 to throw Could not find "enforce-node-protocol-usage" in plugin "import-x". Node protocol enforcement is already covered by unicorn/prefer-node-protocol.77e9b41: Aggregate all ignore patterns73fc21c: Code reliability improvements63f7426: Migrate remaining json parsing to jsonc-parseraa199d1: fix conflicting prefer-describe-function-title / valid-title rules in vitest402908e: Replace custom yaml parser with dependency3dbfe5c: Validate framework name to prevent injectiona2cdc0f: Warn if the file looks like it has ultracite config but we couldn't parse it95718bb: Use cross-spawn for cross-platform spawn compatibilityd09174b: Ignore .open-next in the Biome and ESLint core presets.71aeca4: Remove remaining execSync callse81a604: Add zod for safer json parsingc35a1b3: Performance improvements - doctor56e4c00: Remove process.exit() - swap with typed Errord35d03c: Performance optimizations - mkdir(), readFile()ee224a6: Use Commander.js args properlya2b7a46: Rework doctor commandcf4a044: Fix angular eslint plugin typo25eb24f: Optimize dev dep installb46537a: Performance optimizations - exists()5437f81: Attempt to fix oxlint/oxfmt AGAIN66999e0: Fix oxlint and oxfmt yet again97c3938: Fix oxlint and oxfmt import paths22df7a5: Fix oxlint import issuese96c55a: Switch oxlint.config.ts to js imports7861cf7: Migrate oxlint and oxfmt configurations from JSON to TypeScript using defineConfig. The CLI now generates oxlint.config.ts and oxfmt.config.ts instead of .oxlintrc.json and .oxfmtrc.jsonc, and all internal framework presets have been converted to TypeScript.fdb1493: Exclude package manager lock files (bun.lock, bun.lockb, package-lock.json, yarn.lock, pnpm-lock.yaml) from Biome linting and formatting94e770e: Remove non-existent oxlint rules (import/no-unresolved, vitest/no-done-callback) for compatibility with oxlint 1.58.0+7a14fb2: Prompt users to install the reusable Ultracite skill during ultracite init and add a --install-skill flag for non-interactive setup.4f0cd02: Fix incorrect react-perf rule names (react_perf → react-perf)f78c934: Redesign Agents initialization969b271: Add Svelte and Tailwind CSS plugins to Prettier configc189cf1: Add support for new agent integrations including Zencoder, Ona, OpenClaw, Continue, Snowflake Cortex, Deepagents, Qoder, Kimi CLI, Kode, MCPJam, Mux, Pi, Neovate, Pochi, and AdaL, plus add CodeBuddy as a supported editor.04d8455: Add no-void rule with allowAsStatement to complement no-floating-promisese38d579: Fix DEP0190 deprecation warnings in check, fix, and doctor by routing CLI subprocesses through a shared cross-spawn runner with shell: false, while preserving Windows command resolution and direct file-path argument passing.98cb8c2: Pin ESLint initialization to a peer-compatible dependency set so ultracite init no longer installs an incompatible eslint@latest with eslint-plugin-githubfd7d05f: Disable conflicting vitest/prefer-called-times oxlint rule to resolve conflict with vitest/prefer-called-once581ea40: Add typed ultracite/oxlint exports for use in oxlint.config.ts.8ffeb33: Add support for .oxlintrc.mjs and oxlint.config.ts0d27e68: fix noUnusedImports removing new imports in agent hooks3cd6e7b: Upgrade Biome to 2.48db75d7: Only run shell: true on windows0d21c46: Restore shell for windowsfe9acf6: Use local binariesc8fdacf: fix: detectLinter() doesn't walk up directory tree, Breaks monorepo subdirectory usagec79c3b0: Fix lefthook file configuration4b9d206: Make useBlockStatements fix safe8e9e728: Add support for NestJSd0ae8f3: Fix: Biome removes all imports in Svelte files on save instead of organizing them34c79bb: Fix conflicting oxlint rulesc60533d: Fix oxlint import/consistent-type-specifier-stylec201da4: Switch to commander.js, fix multiple agents argse022697: Add support for all provider flags702f6b5: Upgrade Biome to 2.3.11ab47642: add --type-aware and --type-check flags for oxlint7e9b76c: Fix legacy imports92eaa89: Cleanup dist files246c1fc: Update docs and README
Remove catalog dependenciesa8408b6: Fix bundling issuesc4a205f: Remove i18n docsc4a205f: Remove custom reporterc4a205f: Scaffold support for ESLint and Oxlintc4a205f: Add support for Amazon Q, Crush, Firebender, OpenCode, Qwen and Traec4a205f: Move biome config under biome