note: la synthèse et les notes de version sont en anglais
note: pas de synthèse pour cette release digest
Les releases digest sont listées sans synthèse. Les notes de version originales de cette version sont ci-dessous.
release-notesgithub.com/biomejs/biome · 316 lignes
- ## 2.4.14
- ### Patch Changes
- - [#9393](https://github.com/biomejs/biome/pull/9393) [`491b171`](https://github.com/biomejs/biome/commit/491b171e245aa1ad1063662d4408692b4fc11eae) Thanks [@dyc3](https://github.com/dyc3)! - Added the nursery rule [`useTestHooksOnTop`](https://biomejs.dev/linter/rules/use-test-hooks-on-top) in the `test` domain. The rule flags lifecycle hooks (`beforeEach`, `beforeAll`, `afterEach`, `afterAll`) that appear after test cases in the same block, enforcing that hooks are defined before any test case.
- - [#10157](https://github.com/biomejs/biome/pull/10157) [`eefc5ab`](https://github.com/biomejs/biome/commit/eefc5ab81709e78068774b0f5bc56af448a733d1) Thanks [@dyc3](https://github.com/dyc3)! - Fixed [#7882](https://github.com/biomejs/biome/issues/7882): The HTML parser will now emit better diagnostics when it encounters a void element with a closing tag, such as `<br></br>`. Previously, the parser would emit multiple diagnostics with conflicting advice. Now it emits a single diagnostic that clearly states that void elements should not have closing tags.
- - [#10054](https://github.com/biomejs/biome/pull/10054) [`0e9f569`](https://github.com/biomejs/biome/commit/0e9f5696b1f2dec6e0d1f81b39192bdb07ab0c1a) Thanks [@minseong0324](https://github.com/minseong0324)! - [`noMisleadingReturnType`](https://biomejs.dev/linter/rules/no-misleading-return-type/) no longer misses widening from concrete object types, class instances, object literals, tuples, functions, and regular expressions to `: object`.
- A function annotated `: object` returning an object literal:
- ```ts
- function f(): object {
- return { retry: true };
- }
- ```
- - [#10116](https://github.com/biomejs/biome/pull/10116) [`53269eb`](https://github.com/biomejs/biome/commit/53269ebe0a2f718213483444696b88c7e8d0e7c4) Thanks [@jiwon79](https://github.com/jiwon79)! - Fixed [#6201](https://github.com/biomejs/biome/issues/6201): [`noUselessEscapeInRegex`](https://biomejs.dev/linter/rules/no-useless-escape-in-regex/) no longer flags an escaped backslash followed by `-` as a useless escape. Patterns like `/[\\-]/` are now considered valid because the second `\` is the escaped backslash, not an unnecessary escape of the trailing dash.
- - [#10092](https://github.com/biomejs/biome/pull/10092) [`33d8543`](https://github.com/biomejs/biome/commit/33d8543da451e272000b84a8e29114d72923cdc1) Thanks [@Conaclos](https://github.com/Conaclos)! - Fixed [#9097](https://github.com/biomejs/biome/issues/9097): [`organizeImports`](https://biomejs.dev/assist/actions/organize-imports/) no longer adds a blank line between a never-matched group and a matched group.
- Given the following `organizeImports` options:
- ```json
- {
- "groups": [":NODE:", ":BLANK_LINE:", ":PACKAGE:", ":BLANK_LINE:", ":PATH:"]
- }
- ```
- The following code...
- ```js
- // Comment
- import "package";
- import "./file.js";
- ```
- ...was organized as:
- ```diff
- +
- // Comment
- import "package";
- +
- import "./file.js";
- ```
- A blank line was added even though the group ':NODE:' doesn't match any imports here.
- `:BLANK_LINE:` between never-matched groups and matched groups are now ignored.
- The code is now organized as:
- ```diff
- // Comment
- import "package";
- +
- import "./file.js";
- ```
- - [#10138](https://github.com/biomejs/biome/pull/10138) [`a10b6c1`](https://github.com/biomejs/biome/commit/a10b6c119d1f3862da918ce7617ee365bb534c6e) Thanks [@dyc3](https://github.com/dyc3)! - Fixed Vue `v-for` handling for [`noUndeclaredVariables`](https://biomejs.dev/linter/rules/no-undeclared-variables/) and [`noUnusedVariables`](https://biomejs.dev/linter/rules/no-unused-variables/). Biome now recognizes variables declared by `v-for` directives and references to iterated values in Vue templates.
- - [#10115](https://github.com/biomejs/biome/pull/10115) [`d428d76`](https://github.com/biomejs/biome/commit/d428d76ba8be7131090c199cefa36613a332e75b) Thanks [@minseong0324](https://github.com/minseong0324)! - [`noMisleadingReturnType`](https://biomejs.dev/linter/rules/no-misleading-return-type/) no longer reports false positives when a union return type's `boolean` variant is covered by both `true` and `false` returns.
- - [#9922](https://github.com/biomejs/biome/pull/9922) [`7acf1e0`](https://github.com/biomejs/biome/commit/7acf1e0890d1e52b1cfa940554f6ebbd1bae20b3) Thanks [@dyc3](https://github.com/dyc3)! - Added the new nursery rule [`noReactStringRefs`](https://biomejs.dev/linter/rules/no-react-string-refs/), which disallows legacy React string refs such as `ref="hello"` and `this.refs.hello`.
- Biome also reports template-literal refs such as ``ref={`hello`}``, so React code can consistently migrate to callback refs, `createRef()`, or `useRef()`.
- - [#10010](https://github.com/biomejs/biome/pull/10010) [`f3e76ab`](https://github.com/biomejs/biome/commit/f3e76ab7befecca7cdc7a04edac1350de31029de) Thanks [@dyc3](https://github.com/dyc3)! - Fixed a bug in the LSP file watcher registration so Biome now watches `.biome.json` and `.biome.jsonc` configuration files and reloads workspace settings when they change.
- - [#10176](https://github.com/biomejs/biome/pull/10176) [`8a40ef8`](https://github.com/biomejs/biome/commit/8a40ef835db83277a15b4f0455b5b9b69c719ad3) Thanks [@dyc3](https://github.com/dyc3)! - Fixed [#10011](https://github.com/biomejs/biome/issues/10011): The [`noThisInStatic`](https://biomejs.dev/linter/rules/no-this-in-static/) rule no longer reports `this` when it is used as the constructor target in `new this(...)`, which is required for inherited static factory methods.
- - [#10163](https://github.com/biomejs/biome/pull/10163) [`6867e96`](https://github.com/biomejs/biome/commit/6867e96dacf0b96dfbefd51f95a29136d90b7bb4) Thanks [@jiwon79](https://github.com/jiwon79)! - Fixed [#9884](https://github.com/biomejs/biome/issues/9884): The [`useSortedAttributes`](https://biomejs.dev/assist/actions/use-sorted-attributes/) auto-fix no longer corrupts source code when both an outer JSX element and a nested JSX-valued attribute have unsorted attributes in the same pass. Multiple unsorted groups separated by spread or shorthand attributes within the same JSX element are now reported as a single diagnostic.
- - [#10079](https://github.com/biomejs/biome/pull/10079) [`d29dd19`](https://github.com/biomejs/biome/commit/d29dd1916bdfa4a13dba95cad57f61c65cb5739c) Thanks [@Damix48](https://github.com/Damix48)! - Fixed false positive in `noAssignInExpressions` for Svelte `{@const}` blocks. Assignments in `{@const name = value}` are now correctly recognized as declarations rather than accidental assignments in expressions.
- - [#10080](https://github.com/biomejs/biome/pull/10080) [`5d8fdac`](https://github.com/biomejs/biome/commit/5d8fdac6d26987904130c2ef0db797c295922f08) Thanks [@Damix48](https://github.com/Damix48)! - Fixed parsing of closing parentheses in Svelte `{#each}` block key expressions. Biome now correctly parses method calls and other parenthesised expressions used as keys.
- For example, the following snippets are now parsed correctly:
- ```svelte
- {#each numbers as number, index (number.toString())}
- <p>{number}</p>
- {/each}
- {#each numbers as number (key(number))}
- <p>{number}</p>
- {/each}
- ```
- - [#10140](https://github.com/biomejs/biome/pull/10140) [`e7024b9`](https://github.com/biomejs/biome/commit/e7024b92638090a9b8ccd064e0662f7994164621) Thanks [@solithcy](https://github.com/solithcy)! - Fixed [#10135](https://github.com/biomejs/biome/issues/10135): Biome no longer crashes on missing Svelte template expressions.
- The following code snippet longer panics:
- ```svelte
- {#if }
- <p>^ this would previously crash</p>
- {/if}
- {@const }
- <p> ^ this would also crash</p>
- ```
- - [#10111](https://github.com/biomejs/biome/pull/10111) [`7818009`](https://github.com/biomejs/biome/commit/7818009e23e12758d00665be6faf8471ca0b0027) Thanks [@jiwon79](https://github.com/jiwon79)! - Fixed [#9997](https://github.com/biomejs/biome/issues/9997): [`noDuplicateSelectors`](https://biomejs.dev/linter/rules/no-duplicate-selectors/) no longer reports false positives for selectors inside `@scope` queries. Biome now treats `@scope` as a separate at-rule context, like `@media`, `@supports`, `@container`, and `@starting-style`.
- The following snippet is no longer flagged as a duplicate:
- ```css
- .Example {
- padding: 0;
- }
- @scope (.theme-dark) {
- .Example {
- color: white;
- }
- }
- ```
- - [#9926](https://github.com/biomejs/biome/pull/9926) [`d62b331`](https://github.com/biomejs/biome/commit/d62b331726c1b730ca2d1c38325ce6196beee7a4) Thanks [@dyc3](https://github.com/dyc3)! - Added the nursery lint rule [`useMathMinMax`](https://biomejs.dev/linter/rules/use-math-min-max/), which prefers `Math.min()` and `Math.max()` over equivalent ternary comparisons.
- For example, this code:
- ```js
- const min = a < b ? a : b;
- ```
- is much more readable when rewritten as:
- ```js
- const min = Math.min(a, b);
- ```
- - [#10115](https://github.com/biomejs/biome/pull/10115) [`d428d76`](https://github.com/biomejs/biome/commit/d428d76ba8be7131090c199cefa36613a332e75b) Thanks [@minseong0324](https://github.com/minseong0324)! - [`useExhaustiveSwitchCases`](https://biomejs.dev/linter/rules/use-exhaustive-switch-cases/) now flags missing `true`/`false` cases for `boolean` discriminants, including when `boolean` is a union variant.
- - [#10125](https://github.com/biomejs/biome/pull/10125) [`a55a0b6`](https://github.com/biomejs/biome/commit/a55a0b6fe03f772316b76937b1292096cdc8a661) Thanks [@bmish](https://github.com/bmish)! - Fixed a resolver bug where packages that define a typed entry point through `package.json`'s `main` field but omit `types` were ignored during type-aware resolution. Type-aware rules such as [`noFloatingPromises`](https://biomejs.dev/linter/rules/no-floating-promises/) can now inspect imports from those packages.
- - [#10117](https://github.com/biomejs/biome/pull/10117) [`895e809`](https://github.com/biomejs/biome/commit/895e809dc799cd6aa70032fbb56dfe0f9c0f6f39) Thanks [@denizdogan](https://github.com/denizdogan)! - Added support for the `corner-shape` family of CSS properties and the `superellipse()`/`squircle()` value functions, so [`noUnknownProperty`](https://biomejs.dev/linter/rules/no-unknown-property/) and [`noUnknownFunction`](https://biomejs.dev/linter/rules/no-unknown-function/) no longer flag them as unknown.
- New known properties: `corner-shape`, `corner-block-end-shape`, `corner-block-start-shape`, `corner-bottom-left-shape`, `corner-bottom-right-shape`, `corner-bottom-shape`, `corner-end-end-shape`, `corner-end-start-shape`, `corner-inline-end-shape`, `corner-inline-start-shape`, `corner-left-shape`, `corner-right-shape`, `corner-start-end-shape`, `corner-start-start-shape`, `corner-top-left-shape`, `corner-top-right-shape`, `corner-top-shape`.
- New known value functions: `superellipse()`, `squircle()`.
- - [#8620](https://github.com/biomejs/biome/pull/8620) [`8df8f73`](https://github.com/biomejs/biome/commit/8df8f73ca1c18a688f64f304f0b9089797258a1e) Thanks [@dyc3](https://github.com/dyc3)! - Fixed [#8062](https://github.com/biomejs/biome/issues/8062): Added support for parsing Vue `v-for` directives more accurately.
- - [#10191](https://github.com/biomejs/biome/pull/10191) [`aa055cd`](https://github.com/biomejs/biome/commit/aa055cd74f82fac691dfa2f65dbfd255213cb884) Thanks [@guney](https://github.com/guney)! - Now the rule [`noStaticElementInteractions`](https://biomejs.dev/linter/rules/no-static-element-interactions/) doesn't trigger custom elements.
- - [#9757](https://github.com/biomejs/biome/pull/9757) [`2c62594`](https://github.com/biomejs/biome/commit/2c62594b84ae62fd5fa130adff917a1bcd8dfddd) Thanks [@dyc3](https://github.com/dyc3)! - Fixed [#9099](https://github.com/biomejs/biome/issues/9099): the HTML formatter collapsing non-text children (inline elements, Svelte expressions, comments) onto a single line when the source had them on separate lines. Biome now preserves the user's intended line breaks for exclusively non-text children.
- For example, the following Svelte snippet is now preserved instead of being collapsed to `<div>{name}<!-- comment --></div>`:
- ```svelte
- <div>
- {name}<!-- comment -->
- </div>
- ```
- Similarly, HTML elements like `<span>` inside a `<div>` are now preserved when written on their own line:
- ```html
- <div>
- <span>text</span>
- </div>
- ```
- - [#10105](https://github.com/biomejs/biome/pull/10105) [`e7c1a6d`](https://github.com/biomejs/biome/commit/e7c1a6d5319908cf613f7fa80667e6981435508d) Thanks [@jiwon79](https://github.com/jiwon79)! - Fixed [#10039](https://github.com/biomejs/biome/issues/10039): [`useReadonlyClassProperties`](https://biomejs.dev/linter/rules/use-readonly-class-properties/) now detects unreassigned private members in class expressions and export default classes, not only in class declarations.
- The following patterns are now correctly flagged:
- ```ts
- const AnonClass = class {
- #prop = 123;
- constructor() {
- console.log(this.#prop);
- }
- };
- export default class {
- #prop = 123;
- constructor() {
- console.log(this.#prop);
- }
- }
- ```
- - [#10141](https://github.com/biomejs/biome/pull/10141) [`46a77d0`](https://github.com/biomejs/biome/commit/46a77d0a35e8dbbcefeca264e8630af83b21f1d9) Thanks [@minseong0324](https://github.com/minseong0324)! - Improved [`noUnnecessaryConditions`](https://biomejs.dev/linter/rules/no-unnecessary-conditions/) to detect conditions that are always truthy because they check built-in global class instances such as `Date`, `Map`, `Set`, `WeakMap`, and `Error`.
- - [#10178](https://github.com/biomejs/biome/pull/10178) [`7b05a89`](https://github.com/biomejs/biome/commit/7b05a893df8c9c950871b83ff1b3ae28113e8b15) Thanks [@dyc3](https://github.com/dyc3)! - Fixed [#10177](https://github.com/biomejs/biome/issues/10177): The HTML parser no longer reports lowercase `html` or `doctype` text as invalid after void elements such as `<br>`.
- - [#10155](https://github.com/biomejs/biome/pull/10155) [`0d4595d`](https://github.com/biomejs/biome/commit/0d4595dae68b034bd6de3bdfd15437a34fa53cb2) Thanks [@jiwon79](https://github.com/jiwon79)! - Fixed [#10045](https://github.com/biomejs/biome/issues/10045): the CSS formatter no longer compounds indentation inside nested functional pseudo-classes such as `:not(:where(...))`, `:is(:where(...))`, and similar combinations. The same fix also removes one level of unnecessary indentation that was added inside any pseudo-class function whose argument list wrapped onto multiple lines, including `:nth-child(... of ...)`, `::part(...)`, and `:active-view-transition-type(...)`.
- The following snippet is now correctly formatted, matching Prettier.
- ```css
- input:not(
- :where(
- [type="submit"],
- [type="checkbox"],
- [type="radio"],
- [type="button"],
- [type="reset"]
- )
- ) {
- inline-size: 100%;
- }
- ```
- - [#10112](https://github.com/biomejs/biome/pull/10112) [`6f0251e`](https://github.com/biomejs/biome/commit/6f0251ea12cddb6edcbf512e5608a7b502762423) Thanks [@dyc3](https://github.com/dyc3)! - Fixed [#10110](https://github.com/biomejs/biome/issues/10110): Biome's parser now accepts surrogate code points in JavaScript string `\u{...}` escapes.
- - [#10141](https://github.com/biomejs/biome/pull/10141) [`46a77d0`](https://github.com/biomejs/biome/commit/46a77d0a35e8dbbcefeca264e8630af83b21f1d9) Thanks [@minseong0324](https://github.com/minseong0324)! - Improved [`noMisleadingReturnType`](https://biomejs.dev/linter/rules/no-misleading-return-type/) to detect `object` return annotations that hide built-in global class instances such as `Date`, `Map`, `Set`, `WeakMap`, and `Error`.
- - [#10083](https://github.com/biomejs/biome/pull/10083) [`4a664c1`](https://github.com/biomejs/biome/commit/4a664c1c9ebee339ee4a8b971b0a345aa4dbbe70) Thanks [@ematipico](https://github.com/ematipico)! - Added two new options to [`noShadow`](https://biomejs.dev/linter/rules/no-shadow/), both defaulting to `true` to match typescript-eslint's behavior.
- Fixed [#9482](https://github.com/biomejs/biome/issues/9482): Added `ignoreFunctionTypeParameterNameValueShadow` option. When enabled, parameter names inside function type annotations (e.g. `(options: unknown) => void`) are not flagged as shadowing outer variables.
- Fixed [#7812](https://github.com/biomejs/biome/issues/7812): Added `ignoreTypeValueShadow` option. When enabled, a value binding that shares its name with a type-only declaration (type alias or interface) is not flagged, since types and values occupy separate namespaces in TypeScript.
- - [#9286](https://github.com/biomejs/biome/pull/9286) [`52695cf`](https://github.com/biomejs/biome/commit/52695cf52b3ff42ddfcaef040cfaa00e9a93a4b7) Thanks [@Hugo-Polloli](https://github.com/Hugo-Polloli)! - Fixed [#6316](https://github.com/biomejs/biome/issues/6316): Biome now resolves Svelte `$store` references to the underlying `store` binding in semantic analysis, preventing false `noUndeclaredVariables` diagnostics when the store is declared.
- - [#10188](https://github.com/biomejs/biome/pull/10188) [`ae659dd`](https://github.com/biomejs/biome/commit/ae659ddbd317753c4feb5e4d223b9159d272d01b) Thanks [@dyc3](https://github.com/dyc3)! - Added a new nursery rule [`noExcessiveNestedCallbacks`](https://biomejs.dev/linter/rules/no-excessive-nested-callbacks/), which disallows callbacks nested deeper than the configured maximum.
- - [#9757](https://github.com/biomejs/biome/pull/9757) [`2c62594`](https://github.com/biomejs/biome/commit/2c62594b84ae62fd5fa130adff917a1bcd8dfddd) Thanks [@dyc3](https://github.com/dyc3)! - Fixed [#9450](https://github.com/biomejs/biome/issues/9450): the HTML formatter now correctly preserves multiline formatting for nested `<template>` elements (e.g. `<template #body>`) when the source has children on separate lines. Previously, the children were collapsed onto a single line.
- ```diff
- <template>
- <UModal>
- - <template #body> <p>content</p> </template>
- + <template #body>
- + <p>content</p>
- + </template>
- </UModal>
- </template>
- ```
- - [#10118](https://github.com/biomejs/biome/pull/10118) [`c6edcb4`](https://github.com/biomejs/biome/commit/c6edcb493d42f05179167a8ff3be4549908e9d0b) Thanks [@Netail](https://github.com/Netail)! - Fixed [#10024](https://github.com/biomejs/biome/issues/10024): `biome migrate eslint` correctly migrates `eslint` rules that belong to multiple Biome rules.
- ## What's Changed
- * chore(docs): minor updates for contributing and skills by @dyc3 in https://github.com/biomejs/biome/pull/10098
- * fix(semantic): resolve Svelte $store references in semantic model by @Hugo-Polloli in https://github.com/biomejs/biome/pull/9286
- * fix(format/html): preserve block indentation if already present in some cases by @dyc3 in https://github.com/biomejs/biome/pull/9757
- * fix(md/formatter): nested italic by @tidefield in https://github.com/biomejs/biome/pull/10078
- * fix(deps): update @biomejs packages by @renovate[bot] in https://github.com/biomejs/biome/pull/10061
- * fix(analyzer): useReadonlyClassProperties detects non-declaration class forms by @jiwon79 in https://github.com/biomejs/biome/pull/10105
- * fix(noShadow): make sure it doesn't shadow types by @ematipico in https://github.com/biomejs/biome/pull/10083
- * chore: prepare goverance for contractors by @ematipico in https://github.com/biomejs/biome/pull/10087
- * feat(analyze/html): add some utilities to speed up lookups of multiple attributes by @dyc3 in https://github.com/biomejs/biome/pull/10109
- * fix(lint): resolve false positive in noAssignInExpressions for Svelte {@const} blocks by @Damix48 in https://github.com/biomejs/biome/pull/10079
- * fix(analyzer): noDuplicateSelectors false positives with scope at-rule by @jiwon79 in https://github.com/biomejs/biome/pull/10111
- * fix(parser): correctly consume closing parenthesis in Svelte each key expression by @Damix48 in https://github.com/biomejs/biome/pull/10080
- * feat(lint/js): add `useTestHooksOnTop` by @dyc3 in https://github.com/biomejs/biome/pull/9393
- * fix(deps): update dependency prettier to v3.8.3 by @renovate[bot] in https://github.com/biomejs/biome/pull/10062
- * fix(parse/js): lex surrogate codepoints in string literal escapes by @dyc3 in https://github.com/biomejs/biome/pull/10112
- * fix(analyzer): noUselessEscapeInRegex no longer flags `\\-` as useless by @jiwon79 in https://github.com/biomejs/biome/pull/10116
- * feat(css): support corner-shape, superellipse, and squircle by @denizdogan in https://github.com/biomejs/biome/pull/10117
- * fix(lsp): inform clients that .biome.json(c) should also be watched by @dyc3 in https://github.com/biomejs/biome/pull/10010
- * chore(deps): update rust crate jiff to 0.2.24 by @renovate[bot] in https://github.com/biomejs/biome/pull/10128
- * chore(deps): update dependency tombi to v0.9.22 by @renovate[bot] in https://github.com/biomejs/biome/pull/10127
- * fix(resolver): resolve typed package main entries by @bmish in https://github.com/biomejs/biome/pull/10125
- * chore(deps): update dependency @changesets/cli to v2.31.0 by @renovate[bot] in https://github.com/biomejs/biome/pull/10132
- * chore(deps): update dependency dprint to v0.54.0 by @renovate[bot] in https://github.com/biomejs/biome/pull/10133
- * fix(deps): update @biomejs packages by @renovate[bot] in https://github.com/biomejs/biome/pull/10130
- * chore(deps): update rust crate libc to 0.2.186 by @renovate[bot] in https://github.com/biomejs/biome/pull/10129
- * chore(deps): update rust crate mimalloc to 0.1.50 by @renovate[bot] in https://github.com/biomejs/biome/pull/10060
- * feat(parse/html/vue): parse v-for better by @dyc3 in https://github.com/biomejs/biome/pull/8620
- * feat(parse/html/vue): nested destructuring in v-for by @dyc3 in https://github.com/biomejs/biome/pull/10136
- * fix(noCommaOperator): remove vue v-for hack by @dyc3 in https://github.com/biomejs/biome/pull/10137
- * fix(10024): eslint generation by @Netail in https://github.com/biomejs/biome/pull/10118
- * feat(markdown_formatter): enable formatter ir debugger by @tidefield in https://github.com/biomejs/biome/pull/10144
- * fix(lint): detect misleading object returns for built-in class instances by @minseong0324 in https://github.com/biomejs/biome/pull/10141
- * fix: svelte missing expression crash by @solithcy in https://github.com/biomejs/biome/pull/10140
- * fix(md/fmt/parser): bom, quotes, trimming by @ematipico in https://github.com/biomejs/biome/pull/10040
- * fix(vue): recognize embedded bindings in v-for directives by @dyc3 in https://github.com/biomejs/biome/pull/10138
- * feat(css_formatter): improve SCSS include argument formatting by @denbezrukov in https://github.com/biomejs/biome/pull/10147
- * feat(css_formatter): align SCSS map closing comments by @denbezrukov in https://github.com/biomejs/biome/pull/10149
- * fix(organizeImports): doesn't add a blank line between a never-matched group and a matched group by @Conaclos in https://github.com/biomejs/biome/pull/10092
- * fix(parser/md): handle vertical tab by @ematipico in https://github.com/biomejs/biome/pull/10146
- * fix(lint): noMisleadingReturnType false positive on union with exhausted boolean by @minseong0324 in https://github.com/biomejs/biome/pull/10115
- * feat(css_formatter): include SCSS comments by @denbezrukov in https://github.com/biomejs/biome/pull/10150
- * refactor(css_formatter): clarify SCSS include closing comments by @denbezrukov in https://github.com/biomejs/biome/pull/10153
- * fix(format/css): align selector list indentation with Prettier by @jiwon79 in https://github.com/biomejs/biome/pull/10155
- * fix(lint): noMisleadingReturnType false negative on object keyword by @minseong0324 in https://github.com/biomejs/biome/pull/10054
- * feat(css_formatter): improve handling of SCSS trailing separator comm… by @denbezrukov in https://github.com/biomejs/biome/pull/10154
- * feat(css_formatter): improve handling of SCSS list trailing separator comments by @denbezrukov in https://github.com/biomejs/biome/pull/10156
- * feat(css_formatter): improve handling of SCSS expression item line comments by @denbezrukov in https://github.com/biomejs/biome/pull/10158
- * feat(css_formatter): improve handling of SCSS `@at-root` selector comments and formatting by @denbezrukov in https://github.com/biomejs/biome/pull/10160
- * feat(lint/js): add `noReactStringRefs` by @dyc3 in https://github.com/biomejs/biome/pull/9922
- * feat(lint/js): add `useMathMinMax` by @dyc3 in https://github.com/biomejs/biome/pull/9926
- * feat(css_formatter): improve handling of SCSS `@if-else` comments and formatting by @denbezrukov in https://github.com/biomejs/biome/pull/10162
- * feat(css_formatter): improve handling of SCSS `@while` rule formatting by @denbezrukov in https://github.com/biomejs/biome/pull/10164
- * feat(css_formatter): improve handling of SCSS `@for` rule formatting by @denbezrukov in https://github.com/biomejs/biome/pull/10165
- * feat(css_formatter): improve handling of SCSS parenthesized binary expressions formatting by @denbezrukov in https://github.com/biomejs/biome/pull/10167
- * fix(assist): useSortedAttributes no longer corrupts nested JSX attributes by @jiwon79 in https://github.com/biomejs/biome/pull/10163
- * feat(css_formatter): improve handling of SCSS `@each` rule formatting by @denbezrukov in https://github.com/biomejs/biome/pull/10169
- * fix(markdown_parser): blockquote list splitting and tightness by @jfmcdowell in https://github.com/biomejs/biome/pull/9990
- * chore(markdown_parser): remove unused lexer contexts by @jfmcdowell in https://github.com/biomejs/biome/pull/10173
- * fix(parse/html): relex keywords as text in text contexts by @dyc3 in https://github.com/biomejs/biome/pull/10178
- * feat(css_formatter): improve handling of SCSS list with trailing separator by @denbezrukov in https://github.com/biomejs/biome/pull/10172
- * fix(noThisInStatic): don't report `new this()` by @dyc3 in https://github.com/biomejs/biome/pull/10176
- * feat(css): support SCSS interpolated values by @denbezrukov in https://github.com/biomejs/biome/pull/10171
- * feat(css_formatter): improve handling of SCSS `@use` and `@forward` rule formatting by @denbezrukov in https://github.com/biomejs/biome/pull/10180
- * fix(markdown_parser): stop nested lazy lists from swallowing fences by @jfmcdowell in https://github.com/biomejs/biome/pull/10170
- * feat(css): add support for SCSS media query interpolation by @denbezrukov in https://github.com/biomejs/biome/pull/10181
- * feat(css_formatter): improve handling of spacing for SCSS unary expressions and functions by @denbezrukov in https://github.com/biomejs/biome/pull/10182
- * feat(lint/js): add `noExcessiveNestedCallbacks` by @dyc3 in https://github.com/biomejs/biome/pull/10188
- * fix(markdown_parser): keep lazy link references as text by @jfmcdowell in https://github.com/biomejs/biome/pull/10189
- * fix(lint/a11y/noStaticElementInteractions): exclude custom elements by @guney in https://github.com/biomejs/biome/pull/10191
- * fix(parse/html): improve the diagnostics when void elements have a closing tag by @dyc3 in https://github.com/biomejs/biome/pull/10157
- * ci: release by @github-actions[bot] in https://github.com/biomejs/biome/pull/10100
- ## New Contributors
- * @Hugo-Polloli made their first contribution in https://github.com/biomejs/biome/pull/9286
- * @Damix48 made their first contribution in https://github.com/biomejs/biome/pull/10079
- * @denizdogan made their first contribution in https://github.com/biomejs/biome/pull/10117
- * @solithcy made their first contribution in https://github.com/biomejs/biome/pull/10140
- * @guney made their first contribution in https://github.com/biomejs/biome/pull/10191
- **Full Changelog**: https://github.com/biomejs/biome/compare/@biomejs/biome@2.4.13...@biomejs/biome@2.4.14