Biome @biomejs/[email protected]stable Released Jan 23, 2026
Impact Score: 5/10

Biome CLI v2.3.12

Source available β€” automated, not human-reviewed

Component: @biomejs/biome Β· Channel: stable. Automated analysis, not a compatibility certification. How this works.

Analysis updated: 2026-11-01.

Compatibility not verified β€” check source notes
$ npm install --save-dev --save-exact @biomejs/[email protected]
πŸ“„ .MD
⚑ Executive Summary (TL;DR)

Biome @biomejs/[email protected]. Source highlight: Added new nursery rule `noDuplicateAttributes` to forbid duplicate attributes in HTML elements.

Who Does This Impact? (Role-Based Analysis)

πŸ’» Software Engineers & Devs

Check the source notes against the package and APIs you use before upgrading.

πŸ“Š Product & Engineering Leads

Use the documented changes to assess relevance to your product; release frequency alone is not a quality measure.

βš™οΈ DevOps & Security

Verify the target version, runtime requirements and rollback procedure in the official documentation.

✨ New Features & Capabilities (6)

  • feat(graphql_analyze): implement useUniqueEnumValueNames
  • feat(graphql_analyze): implement useLoneExecutableDefinition
  • feat(biome_js_analyze): implement noExcessiveLinesPerFile
  • feat: add useErrorCause Rule
  • chore: add css, graphql & html new assist rule tasks
  • feat(analyze/html): add noDuplicateAttributes

πŸ”§ Bug Fixes & Patches (6)

  • Added new nursery rule `noDuplicateAttributes` to forbid duplicate attributes in HTML elements.
  • Added a new nursery rule `noVueOptionsApi`.
  • Fixed #8809, #7985, and #8136: the `noSecrets` rule no longer reports false positives on common CamelCase identifiers like `paddingBottom`, `backgroundColor`, `unhandledRejection`, `uncaughtException`, and `IngestGatewayLogGroup`.
  • Properly handle `parameters` metavariables for `arrow_function` GritQL queries. The following `biome search` command no longer throws an error:
  • Fixed `noUnusedVariables` to ignore type parameters declared in ambient contexts such as `declare module` blocks.
  • Fixed #8765: The HTML parser can now parse directive modifiers with a single colon, e.g. `@keydown.:`.
πŸ“„ View Raw Release Notes (Original Developer Log)
## 2.3.12 ### Patch Changes - [#8653](https://github.com/biomejs/biome/pull/8653) [`047576d`](https://github.com/biomejs/biome/commit/047576d1077f0399aca5eb13819863eefcdaf28c) Thanks [@dyc3](https://github.com/dyc3)! - Added new nursery rule [`noDuplicateAttributes`](https://biomejs.dev/linter/rules/no-duplicate-attributes/) to forbid duplicate attributes in HTML elements. - [#8648](https://github.com/biomejs/biome/pull/8648) [`96d09f4`](https://github.com/biomejs/biome/commit/96d09f4ff5a64828efafa2c2b99c22de913d000c) Thanks [@BaeSeokJae](https://github.com/BaeSeokJae)! - Added a new nursery rule [`noVueOptionsApi`](https://biomejs.dev/linter/rules/no-vue-options-api/). Biome now reports Vue Options API usage, which is incompatible with Vue 3.6's Vapor Mode. This rule detects Options API patterns in `<script>` blocks, `defineComponent()`, and `createApp()` calls, helping prepare codebases for Vapor Mode adoption. For example, the following now triggers this rule: ```vue <script> export default { data() { return { count: 0 }; }, }; </script> ``` - [#8832](https://github.com/biomejs/biome/pull/8832) [`b08270b`](https://github.com/biomejs/biome/commit/b08270b21b5348e04457c7d6b621569952a744e1) Thanks [@Exudev](https://github.com/Exudev)! - Fixed [#8809](https://github.com/biomejs/biome/issues/8809), [#7985](https://github.com/biomejs/biome/issues/7985), and [#8136](https://github.com/biomejs/biome/issues/8136): the `noSecrets` rule no longer reports false positives on common CamelCase identifiers like `paddingBottom`, `backgroundColor`, `unhandledRejection`, `uncaughtException`, and `IngestGatewayLogGroup`. The entropy calculation algorithm now uses "average run length" to distinguish between legitimate CamelCase patterns (which have longer runs of same-case letters) and suspicious alternating case patterns (which have short runs). - [#8793](https://github.com/biomejs/biome/pull/8793) [`c19fb0e`](https://github.com/biomejs/biome/commit/c19fb0e4c6b70f0604aa136d784696f8292f66ce) Thanks [@TheBaconWizard](https://github.com/TheBaconWizard)! - Properly handle `parameters` metavariables for `arrow_function` GritQL queries. The following `biome search` command no longer throws an error: ```shell biome search 'arrow_function(parameters=$parameters, body=$body)' ``` - [#8561](https://github.com/biomejs/biome/pull/8561) [`981affb`](https://github.com/biomejs/biome/commit/981affb8b6ad7970d081a1686b87f35c1a5a4455) Thanks [@wataryooou](https://github.com/wataryooou)! - Fixed `noUnusedVariables` to ignore type parameters declared in ambient contexts such as `declare module` blocks. - [#8817](https://github.com/biomejs/biome/pull/8817) [`652cfbb`](https://github.com/biomejs/biome/commit/652cfbb85ab1e7839721dca1f87cacf9577c40ea) Thanks [@dyc3](https://github.com/dyc3)! - Fixed [#8765](https://github.com/biomejs/biome/issues/8765): The HTML parser can now parse directive modifiers with a single colon, e.g. `@keydown.:`. - [#8704](https://github.com/biomejs/biome/pull/8704) [`a1914d4`](https://github.com/biomejs/biome/commit/a1914d45c80efc90e58dee95b4fa34b3c8154831) Thanks [@Netail](https://github.com/Netail)! - Added the nursery rule [`noRootType`](https://biomejs.dev/linter/rules/no-root-type). Disallow the usage of specified root types. (e.g. `mutation` and/or `subscription`) **Invalid:** ```json { "options": { "disallow": ["mutation"] } } ``` ```graphql type Mutation { SetMessage(message: String): String } ``` - [#8712](https://github.com/biomejs/biome/pull/8712) [`251b47b`](https://github.com/biomejs/biome/commit/251b47ba3e0f47ecaa818b547aeb61be83e1c59c) Thanks [@Netail](https://github.com/Netail)! - Renamed the following GraphQL nursery rules to match the Biome standard: - `useUniqueArgumentNames` -> `noDuplicateArgumentNames` - `useUniqueFieldDefinitionNames` -> `noDuplicateFieldDefinitionNames` - `useUniqueGraphqlOperationName` -> `noDuplicateGraphqlOperationName` - `useUniqueInputFieldNames` -> `noDuplicateInputFieldNames` - `useUniqueVariableNames` -> `noDuplicateVariableNames` Run the `biome migrate --write` command to automatically update the configuration file. - [#7602](https://github.com/biomejs/biome/pull/7602) [`957cd8e`](https://github.com/biomejs/biome/commit/957cd8e83cf543db300dba9fc85e52a3ef6226b5) Thanks [@kedevked](https://github.com/kedevked)! - Added the nursery lint rule `useErrorCause`. This rule enforces that errors caught in a `catch` clause are not rethrown without wrapping them in a new `Error` object and specifying the original error as the `cause`. This helps preserve the error’s stack trace and context for better debugging. It can be configured with the following option: - `requireCatchParameter`: (default: `true`) - When `true`, the rule requires that `catch` clauses have a parameter. If a `throw` statement appears inside a `catch` clause without a parameter, it will be flagged. **Invalid examples**: ```js try { foo(); } catch { throw new Error("fail"); } ``` ```js try { foo(); } catch (err) { throw new Error(err.message); } ``` **Valid examples:** ```js try { foo(); } catch (err) { throw new Error("fail", { cause: err }); } ``` ```js try { foo(); } catch (error) { throw new Error("Something went wrong", { cause: error }); } ``` **Valid example** when `requireCatchParameter` is `false`: Valid: ```js try { foo(); } catch { throw new Error("fail"); } ``` - [#8725](https://github.com/biomejs/biome/pull/8725) [`95aba98`](https://github.com/biomejs/biome/commit/95aba98823d80b5581c3e55153d6a8804e690757) Thanks [@dyc3](https://github.com/dyc3)! - Fixed [#8715](https://github.com/biomejs/biome/issues/8715): The CSS parser will now recover slightly better if a semicolon is missing from Tailwind's `@apply` at-rule. - [#8616](https://github.com/biomejs/biome/pull/8616) [`4ee3bda`](https://github.com/biomejs/biome/commit/4ee3bda49b45084c07051554267756262c201416) Thanks [@Netail](https://github.com/Netail)! - Added the nursery rule [`useLoneAnonymousOperation`](https://biomejs.dev/linter/rules/use-lone-anonymous-operation/). Disallow anonymous operations when more than one operation specified in document. **Invalid:** ```graphql query { fieldA } query B { fieldB } ``` - [#8624](https://github.com/biomejs/biome/pull/8624) [`291c9f2`](https://github.com/biomejs/biome/commit/291c9f2d42a0525e6f7c0b8759db5bb17a815543) Thanks [@taga3s](https://github.com/taga3s)! - Added the nursery rule [`useInlineScriptId`](https://biomejs.dev/linter/rules/use-inline-script-id/) to the Next.js domain. This rule enforces `id` attribute on `next/script` components with inline content or `dangerouslySetInnerHTML`. The following code is invalid: ```jsx import Script from "next/script"; export default function Page() { return ( <Script>{`console.log('Hello');`}</Script> // must have `id` attribute ); } ``` - [#8767](https://github.com/biomejs/biome/pull/8767) [`0d15370`](https://github.com/biomejs/biome/commit/0d1537037d96f559a04eb37f6cb5aafb16735ea6) Thanks [@mdevils](https://github.com/mdevils)! - Fixed [#3512](https://github.com/biomejs/biome/issues/3512): [`useExhaustiveDependencies`](https://biomejs.dev/linter/rules/use-exhaustive-dependencies/) now properly handles nested destructuring patterns from hook results. ```tsx const [[x, y], setXY] = useState([1, 2]); useEffect(() => { console.log(x, y); }, [x, y]); // x and y are now correctly recognized as unstable ``` - [#8757](https://github.com/biomejs/biome/pull/8757) [`17ed9d3`](https://github.com/biomejs/biome/commit/17ed9d368edd31ee572aaed92c0867ef1b305c0c) Thanks [@Netail](https://github.com/Netail)! - Added the nursery rule [`noDivRegex`](https://biomejs.dev/linter/rules/no-div-regex). Disallow equal signs explicitly at the beginning of regular expressions. **Invalid:** ```js var f = function () { return /=foo/; }; ``` - [#8836](https://github.com/biomejs/biome/pull/8836) [`aab1d17`](https://github.com/biomejs/biome/commit/aab1d17aaa3619e53340e8f1376c31625f97a8ac) Thanks [@dyc3](https://github.com/dyc3)! - Fixed [#7858](https://github.com/biomejs/biome/issues/7858): Biome now parses Astro files with empty frontmatter blocks. - [#8755](https://github.com/biomejs/biome/pull/8755) [`3a15c29`](https://github.com/biomejs/biome/commit/3a15c295181ac6399c42017c4039a4ecb72e2dc3) Thanks [@arturalkaim](https://github.com/arturalkaim)! - Fixed [#6670](https://github.com/biomejs/biome/issues/6670). The `$filename` metavariable can now be used in GritQL `where` clauses to filter matches by filename. - [#8821](https://github.com/biomejs/biome/pull/8821) [`63e68a1`](https://github.com/biomejs/biome/commit/63e68a164ac247ad6c650934f2d2d9ec861eafe7) Thanks [@playhardgopro](https://github.com/playhardgopro)! - Fixed several bugs in Vue conditional rules (`useVueValidVIf`, `useVueValidVElse`, and `useVueValidVElseIf`) related to whitespace handling, newlines, and self-closing tags. - [#8767](https://github.com/biomejs/biome/pull/8767) [`0d15370`](https://github.com/biomejs/biome/commit/0d1537037d96f559a04eb37f6cb5aafb16735ea6) Thanks [@mdevils](https://github.com/mdevils)! - Fixed [#3685](https://github.com/biomejs/biome/issues/3685): [`useExhaustiveDependencies`](https://biomejs.dev/linter/rules/use-exhaustive-dependencies/) now properly handles transparent expression wrappers like non-null assertions and type assertions in dependency comparisons. ```tsx useMemo(() => Boolean(myObj!.x), [myObj!.x]); // No longer reports incorrect diagnostics useMemo(() => myObj!.x?.y === true, [myObj!.x?.y]); // Now correctly matches dependencies ``` - [#8597](https://github.com/biomejs/biome/pull/8597) [`f764007`](https://github.com/biomejs/biome/commit/f7640071fa356808947bb6a4c563a04890311cc0) Thanks [@Netail](https://github.com/Netail)! - Added the nursery rule [`noDuplicateEnumValueNames`](https://biomejs.dev/linter/rules/no-duplicate-enum-value-names/). Enforce unique enum value names. **Invalid:** ```graphql enum A { TEST TesT } ``` - [#8679](https://github.com/biomejs/biome/pull/8679) [`33dfd7c`](https://github.com/biomejs/biome/commit/33dfd7c4eb657e7986040fc32e8840d14d0340ad) Thanks [@ematipico](https://github.com/ematipico)! - Fixed [#8678](https://github.com/biomejs/biome/issues/8678). Now Biome correctly parses components inside Vue, Svelte and Astro files when they have the same name of self-closing elements. - [#8617](https://github.com/biomejs/biome/pull/8617) [`31a9bfe`](https://github.com/biomejs/biome/commit/31a9bfe57d532183aaf146de892bb670908ad456) Thanks [@Netail](https://github.com/Netail)! - Added the nursery rule [`useLoneExecutableDefinition`](https://biomejs.dev/linter/rules/use-lone-executable-definition/). Require queries, mutations, subscriptions or fragments to be located in separate files. **Invalid:** ```graphql query Foo { id } fragment Bar on Baz { id } ``` - [#8697](https://github.com/biomejs/biome/pull/8697) [`8519669`](https://github.com/biomejs/biome/commit/8519669542b1d923b36afa72ed297f8db54659c8) Thanks [@Faizanq](https://github.com/Faizanq)! - Added the nursery lint rule [`noExcessiveLinesPerFile`](https://biomejs.dev/linter/rules/no-excessive-lines-per-file/) to CSS and GraphQL. - [#8711](https://github.com/biomejs/biome/pull/8711) [`365f7aa`](https://github.com/biomejs/biome/commit/365f7aa2631700e8379d8633aae676f5de8b0918) Thanks [@Netail](https://github.com/Netail)! - Added new nursery rule [`noDuplicateEnumValues`](https://biomejs.dev/linter/rules/no-duplicate-enum-values), which disallows defining an enum with multiple members initialized to the same value. - [#8767](https://github.com/biomejs/biome/pull/8767) [`0d15370`](https://github.com/biomejs/biome/commit/0d1537037d96f559a04eb37f6cb5aafb16735ea6) Thanks [@mdevils](https://github.com/mdevils)! - Fixed [#5914](https://github.com/biomejs/biome/issues/5914): [`useExhaustiveDependencies`](https://biomejs.dev/linter/rules/use-exhaustive-dependencies/) now properly handles variables declared in the same statement. ```tsx const varA = Math.random(), varB = useMemo(() => varA, [varA]); // varA is now correctly recognized as needed ``` - [#8767](https://github.com/biomejs/biome/pull/8767) [`0d15370`](https://github.com/biomejs/biome/commit/0d1537037d96f559a04eb37f6cb5aafb16735ea6) Thanks [@mdevils](https://github.com/mdevils)! - Fixed [#8427](https://github.com/biomejs/biome/issues/8427): [`useExhaustiveDependencies`](https://biomejs.dev/linter/rules/use-exhaustive-dependencies/) now properly resolves variable references to detect captured dependencies. ```tsx const fe = fetchEntity; useEffect(() => { fe(id); }, [id, fe]); // fe is now correctly detected as needed ``` - [#8767](https://github.com/biomejs/biome/pull/8767) [`0d15370`](https://github.com/biomejs/biome/commit/0d1537037d96f559a04eb37f6cb5aafb16735ea6) Thanks [@mdevils](https://github.com/mdevils)! - Fixed [#8484](https://github.com/biomejs/biome/issues/8484): [`useExhaustiveDependencies`](https://biomejs.dev/linter/rules/use-exhaustive-dependencies/) now properly handles member access on stable hook results. ```tsx const stableObj = useStable(); useMemo(() => { return stableObj.stableValue; // stableObj.stableValue is now correctly recognized as stable }, []); ``` - [#8767](https://github.com/biomejs/biome/pull/8767) [`0d15370`](https://github.com/biomejs/biome/commit/0d1537037d96f559a04eb37f6cb5aafb16735ea6) Thanks [@mdevils](https://github.com/mdevils)! - Fixed [#7982](https://github.com/biomejs/biome/issues/7982): [`useExhaustiveDependencies`](https://biomejs.dev/linter/rules/use-exhaustive-dependencies/) now properly handles callback expressions with type assertions. ```tsx const callback = useCallback( (() => { return count * 2; }) as Function, [count], // count is now correctly detected ); ``` - [#8766](https://github.com/biomejs/biome/pull/8766) [`39eb545`](https://github.com/biomejs/biome/commit/39eb545a9750d1b12b85c88fa052df9a334ba2b9) Thanks [@Netail](https://github.com/Netail)! - Fixed [#8761](https://github.com/biomejs/biome/issues/8761): Reverted wrapping the URL of rule descriptions with `<>`, causing broken URLs in VSCode. - [#8767](https://github.com/biomejs/biome/pull/8767) [`0d15370`](https://github.com/biomejs/biome/commit/0d1537037d96f559a04eb37f6cb5aafb16735ea6) Thanks [@mdevils](https://github.com/mdevils)! - Fixed [#3080](https://github.com/biomejs/biome/issues/3080): [`useExhaustiveDependencies`](https://biomejs.dev/linter/rules/use-exhaustive-dependencies/) now properly analyzes captures within referenced functions passed to hooks. ```tsx function myEffect() { console.log(foo, bar); } useEffect(myEffect, [foo, bar]); // foo and bar are now correctly detected ``` - [#8740](https://github.com/biomejs/biome/pull/8740) [`4962ed0`](https://github.com/biomejs/biome/commit/4962ed0d11bc5155aa9a89bf98fac9412f43c8f9) Thanks [@Netail](https://github.com/Netail)! - Extra rule source references. `biome migrate eslint` should do a bit better detecting rules in your eslint configurations. - [#8776](https://github.com/biomejs/biome/pull/8776) [`395746f`](https://github.com/biomejs/biome/commit/395746f9a0147ab766fc3cded3883857c02d9c16) Thanks [@codiini](https://github.com/codiini)! - Fixed [#6003](https://github.com/biomejs/biome/issues/6003): `noUselessUndefinedInitialization` no longer reports exported variables initialized to `undefined`. In Svelte 4, this pattern is used to declare optional component props. - [#8767](https://github.com/biomejs/biome/pull/8767) [`0d15370`](https://github.com/biomejs/biome/commit/0d1537037d96f559a04eb37f6cb5aafb16735ea6) Thanks [@mdevils](https://github.com/mdevils)! - Fixed [#4248](https://github.com/biomejs/biome/issues/4248): [`useExhaustiveDependencies`](https://biomejs.dev/linter/rules/use-exhaustive-dependencies/) now correctly handles function props passed as callbacks. ```tsx const data = React.useMemo(getData, [getData]); // getData is now correctly recognized as needed ``` - [#8819](https://github.com/biomejs/biome/pull/8819) [`bc191ff`](https://github.com/biomejs/biome/commit/bc191ff7e515946d40d1e8440ede09cf9f291fa7) Thanks [@Netail](https://github.com/Netail)! - Fixed [#6567](https://github.com/biomejs/biome/issues/6567): [`noUnknownProperty`](https://biomejs.dev/linter/rules/no-unknown-property/) now ignores unknown properties in at-rules which support descriptors. - [#8787](https://github.com/biomejs/biome/pull/8787) [`adb652f`](https://github.com/biomejs/biome/commit/adb652fe94788ded0c76ae7146206dd286035e15) Thanks [@tuyuritio](https://github.com/tuyuritio)! - Fixed [#8777](https://github.com/biomejs/biome/issues/8777): Add support for `:active-view-transition` pseudo-class. - [#8639](https://github.com/biomejs/biome/pull/8639) [`6577e32`](https://github.com/biomejs/biome/commit/6577e32ddf855bd1b1cc05b0f496b89001ce2925) Thanks [@ohnoah](https://github.com/ohnoah)! - Added the nursery lint rule [`noExcessiveLinesPerFile`](https://biomejs.dev/linter/rules/no-excessive-lines-per-file/). Biome now reports files that exceed a configurable line limit. ```js // maxLines: 2 const a = 1; const b = 2; const c = 3; ``` - [#8753](https://github.com/biomejs/biome/pull/8753) [`71b5c6e`](https://github.com/biomejs/biome/commit/71b5c6e2ecf544e979527c79d41cfe85c148047d) Thanks [@Netail](https://github.com/Netail)! - Added the nursery rule [`noExcessiveClassesPerFile`](https://biomejs.dev/linter/rules/no-excessive-classes-per-file). Enforce a maximum number of classes per file. **Invalid:** ```js class Foo {} class Bar {} ``` - [#8754](https://github.com/biomejs/biome/pull/8754) [`d6b2bda`](https://github.com/biomejs/biome/commit/d6b2bda038d0bfa5db040bef434741d09733b8fc) Thanks [@Netail](https://github.com/Netail)! - Added the nursery rule [`noFloatingClasses`](https://biomejs.dev/linter/rules/no-floating-classes). Disallow `new` operators outside of assignments or comparisons. **Invalid:** ```js new Date(); ``` ## What's Changed * feat(graphql_analyze): implement useUniqueEnumValueNames by @Netail in https://github.com/biomejs/biome/pull/8597 * chore(github): update issue templates by @DayKev in https://github.com/biomejs/biome/pull/8668 * feat(graphql_analyze): implement useLoneExecutableDefinition by @Netail in https://github.com/biomejs/biome/pull/8617 * chore: remove old unused options by @Netail in https://github.com/biomejs/biome/pull/8676 * feat(biome_js_analyze): implement noExcessiveLinesPerFile by @ohnoah in https://github.com/biomejs/biome/pull/8639 * chore(deps): update github-actions by @renovate[bot] in https://github.com/biomejs/biome/pull/8684 * chore(deps): update dependency tombi to v0.7.14 by @renovate[bot] in https://github.com/biomejs/biome/pull/8683 * fix(html/parser): parsing of components by @ematipico in https://github.com/biomejs/biome/pull/8679 * chore(deps): update rust crate libc to 0.2.179 by @renovate[bot] in https://github.com/biomejs/biome/pull/8686 * fix(deps): update rust crate libc to 0.2.179 by @renovate[bot] in https://github.com/biomejs/biome/pull/8688 * chore(deps): update dependency dprint to v0.51.1 by @renovate[bot] in https://github.com/biomejs/biome/pull/8689 * chore(deps): update taiki-e/install-action action to v2.65.13 by @renovate[bot] in https://github.com/biomejs/biome/pull/8687 * feat: add useErrorCause Rule by @kedevked in https://github.com/biomejs/biome/pull/7602 * fix(lint): noUnusedVariables should ignore type parameters in ambient context by @wataryooou in https://github.com/biomejs/biome/pull/8561 * chore: add css, graphql & html new assist rule tasks by @Netail in https://github.com/biomejs/biome/pull/8703 * feat(analyze/html): add noDuplicateAttributes by @dyc3 in https://github.com/biomejs/biome/pull/8653 * feat(graphql_analyze): implement noRootType by @Netail in https://github.com/biomejs/biome/pull/8704 * chore: rename GraphQL nursery rules by @Netail in https://github.com/biomejs/biome/pull/8712 * docs: fix 'instaiated' typo in no-invalid-builtin-instantiation by @JoshuaKGoldberg in https://github.com/biomejs/biome/pull/8716 * feat(js_analyze): implement noDuplicateEnumValues by @Netail in https://github.com/biomejs/biome/pull/8711 * fix(parse/css): slightly better recovery for `@apply` by @dyc3 in https://github.com/biomejs/biome/pull/8725 * chore: extra rule sources by @Netail in https://github.com/biomejs/biome/pull/8740 * chore(deps): update rust crate jiff to 0.2.18 by @renovate[bot] in https://github.com/biomejs/biome/pull/8745 * chore(deps): update dependency tombi to v0.7.16 by @renovate[bot] in https://github.com/biomejs/biome/pull/8744 * chore(deps): update rust crate proc-macro2 to 1.0.105 by @renovate[bot] in https://github.com/biomejs/biome/pull/8747 * chore(deps): update rust crate serde_json to 1.0.149 by @renovate[bot] in https://github.com/biomejs/biome/pull/8749 * chore(deps): update rust crate quote to 1.0.43 by @renovate[bot] in https://github.com/biomejs/biome/pull/8748 * chore(deps): update rust crate libc to 0.2.180 by @renovate[bot] in https://github.com/biomejs/biome/pull/8746 * chore(deps): update github-actions by @renovate[bot] in https://github.com/biomejs/biome/pull/8743 * chore(deps): update rust crate url to 2.5.8 by @renovate[bot] in https://github.com/biomejs/biome/pull/8750 * chore(deps): update pnpm to v10.27.0 by @renovate[bot] in https://github.com/biomejs/biome/pull/8752 * fix(deps): update rust crates by @renovate[bot] in https://github.com/biomejs/biome/pull/8751 * fix(grit): make $filename metavariable accessible in GritQL plugins by @arturalkaim in https://github.com/biomejs/biome/pull/8755 * fix(biome_configuration): revert URL brackets by @Netail in https://github.com/biomejs/biome/pull/8766 * fix(linter): `useExhaustiveDependencies` multiple fixes (fixes #3080, fixes #4248, fixes #5914, fixes #8427, fixes #8484, fixes #3685, fixes #3512, fixes #7982) by @mdevils in https://github.com/biomejs/biome/pull/8767 * feat(lint): add noVueOptionsApi rule by @BaeSeokJae in https://github.com/biomejs/biome/pull/8648 * feat(biome_js_analyze): port `useInlineScriptId` from Next.js by @taga3s in https://github.com/biomejs/biome/pull/8624 * docs: fix typo inside `biome_analyze/CONTRIBUTING.md` by @Bertie690 in https://github.com/biomejs/biome/pull/8781 * ci: sanity check to make sure wasm artifact exists by @dyc3 in https://github.com/biomejs/biome/pull/8784 * feat(js_analyze): implement noDivRegex by @Netail in https://github.com/biomejs/biome/pull/8757 * fix(linter): add support for active-view-transition pseudo-class by @tuyuritio in https://github.com/biomejs/biome/pull/8787 * fix(justfile): remove errant `run` argument from test commands by @jfmcdowell in https://github.com/biomejs/biome/pull/8789 * feat(js_analyze): implement noFloatingClasses by @Netail in https://github.com/biomejs/biome/pull/8754 * feat(js_analyze): implement noExcessiveClassesPerFile by @Netail in https://github.com/biomejs/biome/pull/8753 * chore(deps): update rust:1.92.0-bookworm docker digest to e90e846 by @renovate[bot] in https://github.com/biomejs/biome/pull/8791 * chore(deps): update rust:1.92.0-bullseye docker digest to c6d501c by @renovate[bot] in https://github.com/biomejs/biome/pull/8792 * chore(deps): update dependency tombi to v0.7.19 by @renovate[bot] in https://github.com/biomejs/biome/pull/8795 * chore(deps): update dependency @types/node to v24.10.9 by @renovate[bot] in https://github.com/biomejs/biome/pull/8794 * chore(deps): update rust crate bpaf to 0.9.22 by @renovate[bot] in https://github.com/biomejs/biome/pull/8796 * chore(deps): update rust crate tower to 0.5.3 by @renovate[bot] in https://github.com/biomejs/biome/pull/8797 * fix(deps): update @biomejs packages by @renovate[bot] in https://github.com/biomejs/biome/pull/8798 * chore(deps): update github-actions by @renovate[bot] in https://github.com/biomejs/biome/pull/8799 * chore(deps): update rust crate indexmap to 2.13.0 by @renovate[bot] in https://github.com/biomejs/biome/pull/8801 * chore(deps): update pnpm to v10.28.0 by @renovate[bot] in https://github.com/biomejs/biome/pull/8800 * fix(linter): noUselessUndefinedInitialization false positive in svelte 4. by @codiini in https://github.com/biomejs/biome/pull/8776 * feat(html): add various helpers to html syntax nodes by @dyc3 in https://github.com/biomejs/biome/pull/8804 * fix(grit): correct `arrow_function` slot indices for GritQL patterns by @TheBaconWizard in https://github.com/biomejs/biome/pull/8793 * feat(linter): add noExcessiveLinesPerFile to CSS and GraphQL by @Faizanq in https://github.com/biomejs/biome/pull/8697 * docs(organizeImports): add a note for full import merging by @Conaclos in https://github.com/biomejs/biome/pull/8811 * docs(organizeImports): fix note about import merging by @Conaclos in https://github.com/biomejs/biome/pull/8813 * feat(dx): add prettier-compare tool by @dyc3 in https://github.com/biomejs/biome/pull/8805 * feat(graphql_analyze): implement useLoneAnonymousOperation by @Netail in https://github.com/biomejs/biome/pull/8616 * fix(parse/html/vue): accept colon modifier in vue directives by @dyc3 in https://github.com/biomejs/biome/pull/8817 * fix(linter): reduce `noSecrets` false positives on CamelCase identifiers by @Exudev in https://github.com/biomejs/biome/pull/8832 * feat(prettier-compare): support astro by @dyc3 in https://github.com/biomejs/biome/pull/8835 * fix(parse/html/astro): accept astro files with empty frontmatter by @dyc3 in https://github.com/biomejs/biome/pull/8836 * fix(css_analyze): ignore at-rules supporting descriptors by @Netail in https://github.com/biomejs/biome/pull/8819 * chore: ignore `prettier-compare` pkg by @ematipico in https://github.com/biomejs/biome/pull/8843 * chore: update sponsors by @ematipico in https://github.com/biomejs/biome/pull/8844 * fix(lint): handle newlines in useVueValidVElse and useVueValidVElseIf by @playhardgopro in https://github.com/biomejs/biome/pull/8821 * ci: release by @github-actions[bot] in https://github.com/biomejs/biome/pull/8671 ## New Contributors * @DayKev made their first contribution in https://github.com/biomejs/biome/pull/8668 * @ohnoah made their first contribution in https://github.com/biomejs/biome/pull/8639 * @wataryooou made their first contribution in https://github.com/biomejs/biome/pull/8561 * @JoshuaKGoldberg made their first contribution in https://github.com/biomejs/biome/pull/8716 * @arturalkaim made their first contribution in https://github.com/biomejs/biome/pull/8755 * @BaeSeokJae made their first contribution in https://github.com/biomejs/biome/pull/8648 * @tuyuritio made their first contribution in https://github.com/biomejs/biome/pull/8787 * @codiini made their first contribution in https://github.com/biomejs/biome/pull/8776 * @TheBaconWizard made their first contribution in https://github.com/biomejs/biome/pull/8793 * @Faizanq made their first contribution in https://github.com/biomejs/biome/pull/8697 * @Exudev made their first contribution in https://github.com/biomejs/biome/pull/8832 * @playhardgopro made their first contribution in https://github.com/biomejs/biome/pull/8821 **Full Changelog**: https://github.com/biomejs/biome/compare/@biomejs/[email protected]...@biomejs/[email protected]