1
0
mirror of https://github.com/alecthomas/chroma.git synced 2026-06-11 21:52:26 +02:00
Files
renovate[bot] 786675b89c chore(deps): update all non-major dependencies (#1257)
> ℹ️ **Note**
> 
> This PR body was truncated due to platform limits.

This PR contains the following updates:

| Package | Type | Update | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|---|---|
| [biome](https://redirect.github.com/biomejs/biome) | | patch | `2.4.9`
→ `2.4.14` |
![age](https://developer.mend.io/api/mc/badges/age/hermit/biome/2.4.14?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/hermit/biome/2.4.9/2.4.14?slim=true)
|
| [enumer](https://redirect.github.com/dmarkham/enumer) | | patch |
`1.6.1` → `1.6.3` |
![age](https://developer.mend.io/api/mc/badges/age/hermit/enumer/1.6.3?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/hermit/enumer/1.6.1/1.6.3?slim=true)
|
| [esbuild](https://redirect.github.com/evanw/esbuild) | | minor |
`0.27.4` → `0.28.0` |
![age](https://developer.mend.io/api/mc/badges/age/hermit/esbuild/0.28.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/hermit/esbuild/0.27.4/0.28.0?slim=true)
|
|
[github.com/alecthomas/chroma/v2](https://redirect.github.com/alecthomas/chroma)
| require | minor | `v2.23.1` → `v2.24.1` |
![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2falecthomas%2fchroma%2fv2/v2.24.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2falecthomas%2fchroma%2fv2/v2.23.1/v2.24.1?slim=true)
|
| [go](https://redirect.github.com/golang/go) | | patch | `1.26.1` →
`1.26.3` |
![age](https://developer.mend.io/api/mc/badges/age/hermit/go/1.26.3?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/hermit/go/1.26.1/1.26.3?slim=true)
|
| [go](https://go.dev/)
([source](https://redirect.github.com/golang/go)) | toolchain | patch |
`1.26.2` → `1.26.3` |
![age](https://developer.mend.io/api/mc/badges/age/golang-version/go/1.26.3?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/golang-version/go/1.26.2/1.26.3?slim=true)
|
| [just](https://redirect.github.com/casey/just) | | minor | `1.48.0` →
`1.50.0` |
![age](https://developer.mend.io/api/mc/badges/age/hermit/just/1.50.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/hermit/just/1.48.0/1.50.0?slim=true)
|
| [svu](https://redirect.github.com/caarlos0/svu) | | patch | `3.4.0` →
`3.4.1` |
![age](https://developer.mend.io/api/mc/badges/age/hermit/svu/3.4.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/hermit/svu/3.4.0/3.4.1?slim=true)
|
| [tinygo](https://redirect.github.com/tinygo-org/tinygo) | | minor |
`0.40.1` → `0.41.1` |
![age](https://developer.mend.io/api/mc/badges/age/hermit/tinygo/0.41.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/hermit/tinygo/0.40.1/0.41.1?slim=true)
|
| [uv](https://redirect.github.com/astral-sh/uv) | | patch | `0.11.1` →
`0.11.12` |
![age](https://developer.mend.io/api/mc/badges/age/hermit/uv/0.11.12?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/hermit/uv/0.11.1/0.11.12?slim=true)
|
| [watchexec](https://redirect.github.com/watchexec/watchexec) | | patch
| `2.5.0` → `2.5.1` |
![age](https://developer.mend.io/api/mc/badges/age/hermit/watchexec/2.5.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/hermit/watchexec/2.5.0/2.5.1?slim=true)
|

---

### Release Notes

<details>
<summary>biomejs/biome (biome)</summary>

###
[`v2.4.14`](https://redirect.github.com/biomejs/biome/releases/tag/%40biomejs/biome%402.4.14):
Biome CLI v2.4.14

#### 2.4.14

##### Patch Changes

- [#&#8203;9393](https://redirect.github.com/biomejs/biome/pull/9393)
[`491b171`](https://redirect.github.com/biomejs/biome/commit/491b171e245aa1ad1063662d4408692b4fc11eae)
Thanks [@&#8203;dyc3](https://redirect.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.

- [#&#8203;10157](https://redirect.github.com/biomejs/biome/pull/10157)
[`eefc5ab`](https://redirect.github.com/biomejs/biome/commit/eefc5ab81709e78068774b0f5bc56af448a733d1)
Thanks [@&#8203;dyc3](https://redirect.github.com/dyc3)! - Fixed
[#&#8203;7882](https://redirect.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.

- [#&#8203;10054](https://redirect.github.com/biomejs/biome/pull/10054)
[`0e9f569`](https://redirect.github.com/biomejs/biome/commit/0e9f5696b1f2dec6e0d1f81b39192bdb07ab0c1a)
Thanks [@&#8203;minseong0324](https://redirect.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 };
  }
  ```

- [#&#8203;10116](https://redirect.github.com/biomejs/biome/pull/10116)
[`53269eb`](https://redirect.github.com/biomejs/biome/commit/53269ebe0a2f718213483444696b88c7e8d0e7c4)
Thanks [@&#8203;jiwon79](https://redirect.github.com/jiwon79)! - Fixed
[#&#8203;6201](https://redirect.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.

- [#&#8203;10092](https://redirect.github.com/biomejs/biome/pull/10092)
[`33d8543`](https://redirect.github.com/biomejs/biome/commit/33d8543da451e272000b84a8e29114d72923cdc1)
Thanks [@&#8203;Conaclos](https://redirect.github.com/Conaclos)! - Fixed
[#&#8203;9097](https://redirect.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";
  ```

- [#&#8203;10138](https://redirect.github.com/biomejs/biome/pull/10138)
[`a10b6c1`](https://redirect.github.com/biomejs/biome/commit/a10b6c119d1f3862da918ce7617ee365bb534c6e)
Thanks [@&#8203;dyc3](https://redirect.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.

- [#&#8203;10115](https://redirect.github.com/biomejs/biome/pull/10115)
[`d428d76`](https://redirect.github.com/biomejs/biome/commit/d428d76ba8be7131090c199cefa36613a332e75b)
Thanks [@&#8203;minseong0324](https://redirect.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.

- [#&#8203;9922](https://redirect.github.com/biomejs/biome/pull/9922)
[`7acf1e0`](https://redirect.github.com/biomejs/biome/commit/7acf1e0890d1e52b1cfa940554f6ebbd1bae20b3)
Thanks [@&#8203;dyc3](https://redirect.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()`.

- [#&#8203;10010](https://redirect.github.com/biomejs/biome/pull/10010)
[`f3e76ab`](https://redirect.github.com/biomejs/biome/commit/f3e76ab7befecca7cdc7a04edac1350de31029de)
Thanks [@&#8203;dyc3](https://redirect.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.

- [#&#8203;10176](https://redirect.github.com/biomejs/biome/pull/10176)
[`8a40ef8`](https://redirect.github.com/biomejs/biome/commit/8a40ef835db83277a15b4f0455b5b9b69c719ad3)
Thanks [@&#8203;dyc3](https://redirect.github.com/dyc3)! - Fixed
[#&#8203;10011](https://redirect.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.

- [#&#8203;10163](https://redirect.github.com/biomejs/biome/pull/10163)
[`6867e96`](https://redirect.github.com/biomejs/biome/commit/6867e96dacf0b96dfbefd51f95a29136d90b7bb4)
Thanks [@&#8203;jiwon79](https://redirect.github.com/jiwon79)! - Fixed
[#&#8203;9884](https://redirect.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.

- [#&#8203;10079](https://redirect.github.com/biomejs/biome/pull/10079)
[`d29dd19`](https://redirect.github.com/biomejs/biome/commit/d29dd1916bdfa4a13dba95cad57f61c65cb5739c)
Thanks [@&#8203;Damix48](https://redirect.github.com/Damix48)! - Fixed
false positive in `noAssignInExpressions` for Svelte `{@&#8203;const}`
blocks. Assignments in `{@&#8203;const name = value}` are now correctly
recognized as declarations rather than accidental assignments in
expressions.

- [#&#8203;10080](https://redirect.github.com/biomejs/biome/pull/10080)
[`5d8fdac`](https://redirect.github.com/biomejs/biome/commit/5d8fdac6d26987904130c2ef0db797c295922f08)
Thanks [@&#8203;Damix48](https://redirect.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}
  ```

- [#&#8203;10140](https://redirect.github.com/biomejs/biome/pull/10140)
[`e7024b9`](https://redirect.github.com/biomejs/biome/commit/e7024b92638090a9b8ccd064e0662f7994164621)
Thanks [@&#8203;solithcy](https://redirect.github.com/solithcy)! - Fixed
[#&#8203;10135](https://redirect.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}
  {@&#8203;const }
  <p>    ^ this would also crash</p>
  ```

- [#&#8203;10111](https://redirect.github.com/biomejs/biome/pull/10111)
[`7818009`](https://redirect.github.com/biomejs/biome/commit/7818009e23e12758d00665be6faf8471ca0b0027)
Thanks [@&#8203;jiwon79](https://redirect.github.com/jiwon79)! - Fixed
[#&#8203;9997](https://redirect.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;
  }

  @&#8203;scope (.theme-dark) {
    .Example {
      color: white;
    }
  }
  ```

- [#&#8203;9926](https://redirect.github.com/biomejs/biome/pull/9926)
[`d62b331`](https://redirect.github.com/biomejs/biome/commit/d62b331726c1b730ca2d1c38325ce6196beee7a4)
Thanks [@&#8203;dyc3](https://redirect.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);
  ```

- [#&#8203;10115](https://redirect.github.com/biomejs/biome/pull/10115)
[`d428d76`](https://redirect.github.com/biomejs/biome/commit/d428d76ba8be7131090c199cefa36613a332e75b)
Thanks [@&#8203;minseong0324](https://redirect.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.

- [#&#8203;10125](https://redirect.github.com/biomejs/biome/pull/10125)
[`a55a0b6`](https://redirect.github.com/biomejs/biome/commit/a55a0b6fe03f772316b76937b1292096cdc8a661)
Thanks [@&#8203;bmish](https://redirect.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.

- [#&#8203;10117](https://redirect.github.com/biomejs/biome/pull/10117)
[`895e809`](https://redirect.github.com/biomejs/biome/commit/895e809dc799cd6aa70032fbb56dfe0f9c0f6f39)
Thanks [@&#8203;denizdogan](https://redirect.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()`.

- [#&#8203;8620](https://redirect.github.com/biomejs/biome/pull/8620)
[`8df8f73`](https://redirect.github.com/biomejs/biome/commit/8df8f73ca1c18a688f64f304f0b9089797258a1e)
Thanks [@&#8203;dyc3](https://redirect.github.com/dyc3)! - Fixed
[#&#8203;8062](https://redirect.github.com/biomejs/biome/issues/8062):
Added support for parsing Vue `v-for` directives more accurately.

- [#&#8203;10191](https://redirect.github.com/biomejs/biome/pull/10191)
[`aa055cd`](https://redirect.github.com/biomejs/biome/commit/aa055cd74f82fac691dfa2f65dbfd255213cb884)
Thanks [@&#8203;guney](https://redirect.github.com/guney)! - Now the
rule
[`noStaticElementInteractions`](https://biomejs.dev/linter/rules/no-static-element-interactions/)
doesn't trigger custom elements.

- [#&#8203;9757](https://redirect.github.com/biomejs/biome/pull/9757)
[`2c62594`](https://redirect.github.com/biomejs/biome/commit/2c62594b84ae62fd5fa130adff917a1bcd8dfddd)
Thanks [@&#8203;dyc3](https://redirect.github.com/dyc3)! - Fixed
[#&#8203;9099](https://redirect.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>
  ```

- [#&#8203;10105](https://redirect.github.com/biomejs/biome/pull/10105)
[`e7c1a6d`](https://redirect.github.com/biomejs/biome/commit/e7c1a6d5319908cf613f7fa80667e6981435508d)
Thanks [@&#8203;jiwon79](https://redirect.github.com/jiwon79)! - Fixed
[#&#8203;10039](https://redirect.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);
    }
  }
  ```

- [#&#8203;10141](https://redirect.github.com/biomejs/biome/pull/10141)
[`46a77d0`](https://redirect.github.com/biomejs/biome/commit/46a77d0a35e8dbbcefeca264e8630af83b21f1d9)
Thanks [@&#8203;minseong0324](https://redirect.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`.

- [#&#8203;10178](https://redirect.github.com/biomejs/biome/pull/10178)
[`7b05a89`](https://redirect.github.com/biomejs/biome/commit/7b05a893df8c9c950871b83ff1b3ae28113e8b15)
Thanks [@&#8203;dyc3](https://redirect.github.com/dyc3)! - Fixed
[#&#8203;10177](https://redirect.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>`.

- [#&#8203;10155](https://redirect.github.com/biomejs/biome/pull/10155)
[`0d4595d`](https://redirect.github.com/biomejs/biome/commit/0d4595dae68b034bd6de3bdfd15437a34fa53cb2)
Thanks [@&#8203;jiwon79](https://redirect.github.com/jiwon79)! - Fixed
[#&#8203;10045](https://redirect.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%;
  }
  ```

- [#&#8203;10112](https://redirect.github.com/biomejs/biome/pull/10112)
[`6f0251e`](https://redirect.github.com/biomejs/biome/commit/6f0251ea12cddb6edcbf512e5608a7b502762423)
Thanks [@&#8203;dyc3](https://redirect.github.com/dyc3)! - Fixed
[#&#8203;10110](https://redirect.github.com/biomejs/biome/issues/10110):
Biome's parser now accepts surrogate code points in JavaScript string
`\u{...}` escapes.

- [#&#8203;10141](https://redirect.github.com/biomejs/biome/pull/10141)
[`46a77d0`](https://redirect.github.com/biomejs/biome/commit/46a77d0a35e8dbbcefeca264e8630af83b21f1d9)
Thanks [@&#8203;minseong0324](https://redirect.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`.

- [#&#8203;10083](https://redirect.github.com/biomejs/biome/pull/10083)
[`4a664c1`](https://redirect.github.com/biomejs/biome/commit/4a664c1c9ebee339ee4a8b971b0a345aa4dbbe70)
Thanks [@&#8203;ematipico](https://redirect.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
[#&#8203;9482](https://redirect.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
[#&#8203;7812](https://redirect.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.

- [#&#8203;9286](https://redirect.github.com/biomejs/biome/pull/9286)
[`52695cf`](https://redirect.github.com/biomejs/biome/commit/52695cf52b3ff42ddfcaef040cfaa00e9a93a4b7)
Thanks [@&#8203;Hugo-Polloli](https://redirect.github.com/Hugo-Polloli)!
- Fixed
[#&#8203;6316](https://redirect.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.

- [#&#8203;10188](https://redirect.github.com/biomejs/biome/pull/10188)
[`ae659dd`](https://redirect.github.com/biomejs/biome/commit/ae659ddbd317753c4feb5e4d223b9159d272d01b)
Thanks [@&#8203;dyc3](https://redirect.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.

- [#&#8203;9757](https://redirect.github.com/biomejs/biome/pull/9757)
[`2c62594`](https://redirect.github.com/biomejs/biome/commit/2c62594b84ae62fd5fa130adff917a1bcd8dfddd)
Thanks [@&#8203;dyc3](https://redirect.github.com/dyc3)! - Fixed
[#&#8203;9450](https://redirect.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>
  ```

- [#&#8203;10118](https://redirect.github.com/biomejs/biome/pull/10118)
[`c6edcb4`](https://redirect.github.com/biomejs/biome/commit/c6edcb493d42f05179167a8ff3be4549908e9d0b)
Thanks [@&#8203;Netail](https://redirect.github.com/Netail)! - Fixed
[#&#8203;10024](https://redirect.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
[@&#8203;dyc3](https://redirect.github.com/dyc3) in
[#&#8203;10098](https://redirect.github.com/biomejs/biome/pull/10098)
- fix(semantic): resolve Svelte $store references in semantic model by
[@&#8203;Hugo-Polloli](https://redirect.github.com/Hugo-Polloli) in
[#&#8203;9286](https://redirect.github.com/biomejs/biome/pull/9286)
- fix(format/html): preserve block indentation if already present in
some cases by [@&#8203;dyc3](https://redirect.github.com/dyc3) in
[#&#8203;9757](https://redirect.github.com/biomejs/biome/pull/9757)
- fix(md/formatter): nested italic by
[@&#8203;tidefield](https://redirect.github.com/tidefield) in
[#&#8203;10078](https://redirect.github.com/biomejs/biome/pull/10078)
- fix(deps): update
[@&#8203;biomejs](https://redirect.github.com/biomejs) packages by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;10061](https://redirect.github.com/biomejs/biome/pull/10061)
- fix(analyzer): useReadonlyClassProperties detects non-declaration
class forms by [@&#8203;jiwon79](https://redirect.github.com/jiwon79) in
[#&#8203;10105](https://redirect.github.com/biomejs/biome/pull/10105)
- fix(noShadow): make sure it doesn't shadow types by
[@&#8203;ematipico](https://redirect.github.com/ematipico) in
[#&#8203;10083](https://redirect.github.com/biomejs/biome/pull/10083)
- chore: prepare goverance for contractors by
[@&#8203;ematipico](https://redirect.github.com/ematipico) in
[#&#8203;10087](https://redirect.github.com/biomejs/biome/pull/10087)
- feat(analyze/html): add some utilities to speed up lookups of multiple
attributes by [@&#8203;dyc3](https://redirect.github.com/dyc3) in
[#&#8203;10109](https://redirect.github.com/biomejs/biome/pull/10109)
- fix(lint): resolve false positive in noAssignInExpressions for Svelte
{[@&#8203;const](https://redirect.github.com/const)} blocks by
[@&#8203;Damix48](https://redirect.github.com/Damix48) in
[#&#8203;10079](https://redirect.github.com/biomejs/biome/pull/10079)
- fix(analyzer): noDuplicateSelectors false positives with scope at-rule
by [@&#8203;jiwon79](https://redirect.github.com/jiwon79) in
[#&#8203;10111](https://redirect.github.com/biomejs/biome/pull/10111)
- fix(parser): correctly consume closing parenthesis in Svelte each key
expression by [@&#8203;Damix48](https://redirect.github.com/Damix48) in
[#&#8203;10080](https://redirect.github.com/biomejs/biome/pull/10080)
- feat(lint/js): add `useTestHooksOnTop` by
[@&#8203;dyc3](https://redirect.github.com/dyc3) in
[#&#8203;9393](https://redirect.github.com/biomejs/biome/pull/9393)
- fix(deps): update dependency prettier to v3.8.3 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;10062](https://redirect.github.com/biomejs/biome/pull/10062)
- fix(parse/js): lex surrogate codepoints in string literal escapes by
[@&#8203;dyc3](https://redirect.github.com/dyc3) in
[#&#8203;10112](https://redirect.github.com/biomejs/biome/pull/10112)
- fix(analyzer): noUselessEscapeInRegex no longer flags `\\-` as useless
by [@&#8203;jiwon79](https://redirect.github.com/jiwon79) in
[#&#8203;10116](https://redirect.github.com/biomejs/biome/pull/10116)
- feat(css): support corner-shape, superellipse, and squircle by
[@&#8203;denizdogan](https://redirect.github.com/denizdogan) in
[#&#8203;10117](https://redirect.github.com/biomejs/biome/pull/10117)
- fix(lsp): inform clients that .biome.json(c) should also be watched by
[@&#8203;dyc3](https://redirect.github.com/dyc3) in
[#&#8203;10010](https://redirect.github.com/biomejs/biome/pull/10010)
- chore(deps): update rust crate jiff to 0.2.24 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;10128](https://redirect.github.com/biomejs/biome/pull/10128)
- chore(deps): update dependency tombi to v0.9.22 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;10127](https://redirect.github.com/biomejs/biome/pull/10127)
- fix(resolver): resolve typed package main entries by
[@&#8203;bmish](https://redirect.github.com/bmish) in
[#&#8203;10125](https://redirect.github.com/biomejs/biome/pull/10125)
- chore(deps): update dependency
[@&#8203;changesets/cli](https://redirect.github.com/changesets/cli) to
v2.31.0 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;10132](https://redirect.github.com/biomejs/biome/pull/10132)
- chore(deps): update dependency dprint to v0.54.0 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;10133](https://redirect.github.com/biomejs/biome/pull/10133)
- fix(deps): update
[@&#8203;biomejs](https://redirect.github.com/biomejs) packages by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;10130](https://redirect.github.com/biomejs/biome/pull/10130)
- chore(deps): update rust crate libc to 0.2.186 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;10129](https://redirect.github.com/biomejs/biome/pull/10129)
- chore(deps): update rust crate mimalloc to 0.1.50 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;10060](https://redirect.github.com/biomejs/biome/pull/10060)
- feat(parse/html/vue): parse v-for better by
[@&#8203;dyc3](https://redirect.github.com/dyc3) in
[#&#8203;8620](https://redirect.github.com/biomejs/biome/pull/8620)
- feat(parse/html/vue): nested destructuring in v-for by
[@&#8203;dyc3](https://redirect.github.com/dyc3) in
[#&#8203;10136](https://redirect.github.com/biomejs/biome/pull/10136)
- fix(noCommaOperator): remove vue v-for hack by
[@&#8203;dyc3](https://redirect.github.com/dyc3) in
[#&#8203;10137](https://redirect.github.com/biomejs/biome/pull/10137)
- fix(10024): eslint generation by
[@&#8203;Netail](https://redirect.github.com/Netail) in
[#&#8203;10118](https://redirect.github.com/biomejs/biome/pull/10118)
- feat(markdown\_formatter): enable formatter ir debugger by
[@&#8203;tidefield](https://redirect.github.com/tidefield) in
[#&#8203;10144](https://redirect.github.com/biomejs/biome/pull/10144)
- fix(lint): detect misleading object returns for built-in class
instances by
[@&#8203;minseong0324](https://redirect.github.com/minseong0324) in
[#&#8203;10141](https://redirect.github.com/biomejs/biome/pull/10141)
- fix: svelte missing expression crash by
[@&#8203;solithcy](https://redirect.github.com/solithcy) in
[#&#8203;10140](https://redirect.github.com/biomejs/biome/pull/10140)
- fix(md/fmt/parser): bom, quotes, trimming by
[@&#8203;ematipico](https://redirect.github.com/ematipico) in
[#&#8203;10040](https://redirect.github.com/biomejs/biome/pull/10040)
- fix(vue): recognize embedded bindings in v-for directives by
[@&#8203;dyc3](https://redirect.github.com/dyc3) in
[#&#8203;10138](https://redirect.github.com/biomejs/biome/pull/10138)
- feat(css\_formatter): improve SCSS include argument formatting by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10147](https://redirect.github.com/biomejs/biome/pull/10147)
- feat(css\_formatter): align SCSS map closing comments by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10149](https://redirect.github.com/biomejs/biome/pull/10149)
- fix(organizeImports): doesn't add a blank line between a never-matched
group and a matched group by
[@&#8203;Conaclos](https://redirect.github.com/Conaclos) in
[#&#8203;10092](https://redirect.github.com/biomejs/biome/pull/10092)
- fix(parser/md): handle vertical tab by
[@&#8203;ematipico](https://redirect.github.com/ematipico) in
[#&#8203;10146](https://redirect.github.com/biomejs/biome/pull/10146)
- fix(lint): noMisleadingReturnType false positive on union with
exhausted boolean by
[@&#8203;minseong0324](https://redirect.github.com/minseong0324) in
[#&#8203;10115](https://redirect.github.com/biomejs/biome/pull/10115)
- feat(css\_formatter): include SCSS comments by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10150](https://redirect.github.com/biomejs/biome/pull/10150)
- refactor(css\_formatter): clarify SCSS include closing comments by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10153](https://redirect.github.com/biomejs/biome/pull/10153)
- fix(format/css): align selector list indentation with Prettier by
[@&#8203;jiwon79](https://redirect.github.com/jiwon79) in
[#&#8203;10155](https://redirect.github.com/biomejs/biome/pull/10155)
- fix(lint): noMisleadingReturnType false negative on object keyword by
[@&#8203;minseong0324](https://redirect.github.com/minseong0324) in
[#&#8203;10054](https://redirect.github.com/biomejs/biome/pull/10054)
- feat(css\_formatter): improve handling of SCSS trailing separator
comm… by [@&#8203;denbezrukov](https://redirect.github.com/denbezrukov)
in [#&#8203;10154](https://redirect.github.com/biomejs/biome/pull/10154)
- feat(css\_formatter): improve handling of SCSS list trailing separator
comments by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10156](https://redirect.github.com/biomejs/biome/pull/10156)
- feat(css\_formatter): improve handling of SCSS expression item line
comments by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10158](https://redirect.github.com/biomejs/biome/pull/10158)
- feat(css\_formatter): improve handling of SCSS `@at-root` selector
comments and formatting by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10160](https://redirect.github.com/biomejs/biome/pull/10160)
- feat(lint/js): add `noReactStringRefs` by
[@&#8203;dyc3](https://redirect.github.com/dyc3) in
[#&#8203;9922](https://redirect.github.com/biomejs/biome/pull/9922)
- feat(lint/js): add `useMathMinMax` by
[@&#8203;dyc3](https://redirect.github.com/dyc3) in
[#&#8203;9926](https://redirect.github.com/biomejs/biome/pull/9926)
- feat(css\_formatter): improve handling of SCSS `@if-else` comments and
formatting by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10162](https://redirect.github.com/biomejs/biome/pull/10162)
- feat(css\_formatter): improve handling of SCSS `@while` rule
formatting by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10164](https://redirect.github.com/biomejs/biome/pull/10164)
- feat(css\_formatter): improve handling of SCSS `@for` rule formatting
by [@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10165](https://redirect.github.com/biomejs/biome/pull/10165)
- feat(css\_formatter): improve handling of SCSS parenthesized binary
expressions formatting by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10167](https://redirect.github.com/biomejs/biome/pull/10167)
- fix(assist): useSortedAttributes no longer corrupts nested JSX
attributes by [@&#8203;jiwon79](https://redirect.github.com/jiwon79) in
[#&#8203;10163](https://redirect.github.com/biomejs/biome/pull/10163)
- feat(css\_formatter): improve handling of SCSS `@each` rule formatting
by [@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10169](https://redirect.github.com/biomejs/biome/pull/10169)
- fix(markdown\_parser): blockquote list splitting and tightness by
[@&#8203;jfmcdowell](https://redirect.github.com/jfmcdowell) in
[#&#8203;9990](https://redirect.github.com/biomejs/biome/pull/9990)
- chore(markdown\_parser): remove unused lexer contexts by
[@&#8203;jfmcdowell](https://redirect.github.com/jfmcdowell) in
[#&#8203;10173](https://redirect.github.com/biomejs/biome/pull/10173)
- fix(parse/html): relex keywords as text in text contexts by
[@&#8203;dyc3](https://redirect.github.com/dyc3) in
[#&#8203;10178](https://redirect.github.com/biomejs/biome/pull/10178)
- feat(css\_formatter): improve handling of SCSS list with trailing
separator by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10172](https://redirect.github.com/biomejs/biome/pull/10172)
- fix(noThisInStatic): don't report `new this()` by
[@&#8203;dyc3](https://redirect.github.com/dyc3) in
[#&#8203;10176](https://redirect.github.com/biomejs/biome/pull/10176)
- feat(css): support SCSS interpolated values by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10171](https://redirect.github.com/biomejs/biome/pull/10171)
- feat(css\_formatter): improve handling of SCSS `@use` and `@forward`
rule formatting by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10180](https://redirect.github.com/biomejs/biome/pull/10180)
- fix(markdown\_parser): stop nested lazy lists from swallowing fences
by [@&#8203;jfmcdowell](https://redirect.github.com/jfmcdowell) in
[#&#8203;10170](https://redirect.github.com/biomejs/biome/pull/10170)
- feat(css): add support for SCSS media query interpolation by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10181](https://redirect.github.com/biomejs/biome/pull/10181)
- feat(css\_formatter): improve handling of spacing for SCSS unary
expressions and functions by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10182](https://redirect.github.com/biomejs/biome/pull/10182)
- feat(lint/js): add `noExcessiveNestedCallbacks` by
[@&#8203;dyc3](https://redirect.github.com/dyc3) in
[#&#8203;10188](https://redirect.github.com/biomejs/biome/pull/10188)
- fix(markdown\_parser): keep lazy link references as text by
[@&#8203;jfmcdowell](https://redirect.github.com/jfmcdowell) in
[#&#8203;10189](https://redirect.github.com/biomejs/biome/pull/10189)
- fix(lint/a11y/noStaticElementInteractions): exclude custom elements by
[@&#8203;guney](https://redirect.github.com/guney) in
[#&#8203;10191](https://redirect.github.com/biomejs/biome/pull/10191)
- fix(parse/html): improve the diagnostics when void elements have a
closing tag by [@&#8203;dyc3](https://redirect.github.com/dyc3) in
[#&#8203;10157](https://redirect.github.com/biomejs/biome/pull/10157)
- ci: release by
[@&#8203;github-actions](https://redirect.github.com/github-actions)\[bot]
in [#&#8203;10100](https://redirect.github.com/biomejs/biome/pull/10100)

#### New Contributors

- [@&#8203;Hugo-Polloli](https://redirect.github.com/Hugo-Polloli) made
their first contribution in
[#&#8203;9286](https://redirect.github.com/biomejs/biome/pull/9286)
- [@&#8203;Damix48](https://redirect.github.com/Damix48) made their
first contribution in
[#&#8203;10079](https://redirect.github.com/biomejs/biome/pull/10079)
- [@&#8203;denizdogan](https://redirect.github.com/denizdogan) made
their first contribution in
[#&#8203;10117](https://redirect.github.com/biomejs/biome/pull/10117)
- [@&#8203;solithcy](https://redirect.github.com/solithcy) made their
first contribution in
[#&#8203;10140](https://redirect.github.com/biomejs/biome/pull/10140)
- [@&#8203;guney](https://redirect.github.com/guney) made their first
contribution in
[#&#8203;10191](https://redirect.github.com/biomejs/biome/pull/10191)

**Full Changelog**:
<https://github.com/biomejs/biome/compare/@biomejs/biome@2.4.13...@&#8203;biomejs/biome@2.4.14>

###
[`v2.4.13`](https://redirect.github.com/biomejs/biome/releases/tag/%40biomejs/biome%402.4.13):
Biome CLI v2.4.13

#### 2.4.13

##### Patch Changes

- [#&#8203;9969](https://redirect.github.com/biomejs/biome/pull/9969)
[`c5eb92b`](https://redirect.github.com/biomejs/biome/commit/c5eb92ba288ba13698b37e43617eed5339ad7007)
Thanks
[@&#8203;officialasishkumar](https://redirect.github.com/officialasishkumar)!
- Added the nursery rule
[`noUnnecessaryTemplateExpression`](https://biomejs.dev/linter/rules/no-unnecessary-template-expression/),
which disallows template literals that only contain string literal
expressions. These can be replaced with a simpler string literal.

  For example, the following code triggers the rule:

  ```js
  const a = `${"hello"}`; // can be 'hello'
  const b = `${"prefix"}_suffix`; // can be 'prefix_suffix'
  const c = `${"a"}${"b"}`; // can be 'ab'
  ```

- [#&#8203;10037](https://redirect.github.com/biomejs/biome/pull/10037)
[`f785e8c`](https://redirect.github.com/biomejs/biome/commit/f785e8c604879dd3dd17b53aae0e2feef4026c82)
Thanks [@&#8203;minseong0324](https://redirect.github.com/minseong0324)!
- Fixed
[#&#8203;9810](https://redirect.github.com/biomejs/biome/issues/9810):
[`noMisleadingReturnType`](https://biomejs.dev/linter/rules/no-misleading-return-type/)
no longer reports false positives on a getter with a matching setter in
the same namespace.

  ```ts
  class Store {
    get status(): string {
      if (Math.random() > 0.5) return "loading";
      return "idle";
    }
    set status(v: string) {}
  }
  ```

- [#&#8203;10084](https://redirect.github.com/biomejs/biome/pull/10084)
[`5e2f90c`](https://redirect.github.com/biomejs/biome/commit/5e2f90c045b4bd7006c96a9df123303d6c24e1d8)
Thanks [@&#8203;jiwon79](https://redirect.github.com/jiwon79)! - Fixed
[#&#8203;10034](https://redirect.github.com/biomejs/biome/issues/10034):
[`noUselessEscapeInRegex`](https://biomejs.dev/linter/rules/no-useless-escape-in-regex/)
no longer flags escapes of `ClassSetReservedPunctuator` characters (`&`,
`!`, `#`, `%`, `,`, `:`, `;`, `<`, `=`, `>`, `@`, `` ` ``, `~`) inside
`v`-flag character classes as useless. These characters are reserved as
individual code points in `v`-mode, so the escape is required.

  The following pattern is now considered valid:

  ```js
  /[a-z\&]/v;
  ```

- [#&#8203;10063](https://redirect.github.com/biomejs/biome/pull/10063)
[`c9ffa16`](https://redirect.github.com/biomejs/biome/commit/c9ffa16491c9f8c003eb945796911564fc981b71)
Thanks [@&#8203;Netail](https://redirect.github.com/Netail)! - Added
extra rule sources from ESLint CSS. `biome migrate eslint` should do a
bit better detecting rules in your eslint configurations.

- [#&#8203;10035](https://redirect.github.com/biomejs/biome/pull/10035)
[`946b50e`](https://redirect.github.com/biomejs/biome/commit/946b50e173e8c89a2d2b303cb159a05cbd068767)
Thanks [@&#8203;Netail](https://redirect.github.com/Netail)! - Fixed
[#&#8203;10032](https://redirect.github.com/biomejs/biome/issues/10032):
[useIframeSandbox](https://biomejs.dev/linter/rules/use-iframe-sandbox/)
now flags if there's no initializer value.

- [#&#8203;9865](https://redirect.github.com/biomejs/biome/pull/9865)
[`68fb8d4`](https://redirect.github.com/biomejs/biome/commit/68fb8d468c01732c4283a336eca42223983df09b)
Thanks [@&#8203;dyc3](https://redirect.github.com/dyc3)! - Added the new
nursery rule
[`useDomNodeTextContent`](https://biomejs.dev/linter/rules/use-dom-node-text-content/),
which prefers `textContent` over `innerText` for DOM node text access
and destructuring.

  For example, the following snippet triggers the rule:

  ```js
  const foo = node.innerText;
  ```

- [#&#8203;10023](https://redirect.github.com/biomejs/biome/pull/10023)
[`bd1e74f`](https://redirect.github.com/biomejs/biome/commit/bd1e74fd80b0cadafd091513950275e0ff75d80f)
Thanks [@&#8203;ematipico](https://redirect.github.com/ematipico)! -
Added a new nursery rule
[`noReactNativeDeepImports`](https://biomejs.dev/linter/rules/no-react-native-deep-imports/)
that disallows deep imports from the `react-native` package. Internal
paths like `react-native/Libraries/...` are not part of the public API
and may change between versions.

  For example, the following code triggers the rule:

  ```js
  import View from "react-native/Libraries/Components/View/View";
  ```

- [#&#8203;9885](https://redirect.github.com/biomejs/biome/pull/9885)
[`3dce737`](https://redirect.github.com/biomejs/biome/commit/3dce737e5050cfda7d2b9be8f809aee417f01196)
Thanks [@&#8203;dyc3](https://redirect.github.com/dyc3)! - Added a new
nursery rule
[`useDomQuerySelector`](https://biomejs.dev/linter/rules/use-dom-query-selector/)
that prefers `querySelector()` and `querySelectorAll()` over older DOM
query methods such as `getElementById()` and `getElementsByClassName()`.

- [#&#8203;9995](https://redirect.github.com/biomejs/biome/pull/9995)
[`4da9caf`](https://redirect.github.com/biomejs/biome/commit/4da9caf8281473177fac3332610c710b31e89546)
Thanks [@&#8203;siketyan](https://redirect.github.com/siketyan)! - Fixed
[#&#8203;9994](https://redirect.github.com/biomejs/biome/issues/9994):
Biome now parses nested CSS rules correctly when declarations follow
them inside embedded snippets.

- [#&#8203;10009](https://redirect.github.com/biomejs/biome/pull/10009)
[`b41cc5a`](https://redirect.github.com/biomejs/biome/commit/b41cc5a58c74fd6b237352c1772e64e74fcc7546)
Thanks [@&#8203;Jayllyz](https://redirect.github.com/Jayllyz)! - Fixed
[#&#8203;10004](https://redirect.github.com/biomejs/biome/issues/10004):
[`noComponentHookFactories`](https://biomejs.dev/linter/rules/no-component-hook-factories/)
no longer reports false positives for object methods and class methods.

- [#&#8203;9988](https://redirect.github.com/biomejs/biome/pull/9988)
[`eabf54a`](https://redirect.github.com/biomejs/biome/commit/eabf54ad03c6c1d63753a641c8ad1ef385e42d2b)
Thanks [@&#8203;Netail](https://redirect.github.com/Netail)! - Tweaked
the diagnostics range for
[useAltText](https://biomejs.dev/linter/rules/use-alt-text),
[useButtonType](https://biomejs.dev/linter/rules/use-button-type),
[useHtmlLang](https://biomejs.dev/linter/rules/use-html-lang),
[useIframeTitle](https://biomejs.dev/linter/rules/use-iframe-title),
[useValidAriaRole](https://biomejs.dev/linter/rules/use-valid-aria-role)
& [useIfameSandbox](https://biomejs.dev/linter/rules/use-iframe-sandbox)
to report on the opening tag instead of the full tag.

- [#&#8203;10043](https://redirect.github.com/biomejs/biome/pull/10043)
[`fc65902`](https://redirect.github.com/biomejs/biome/commit/fc65902f17cd548ae38ff916462291b51a32e356)
Thanks [@&#8203;mujpao](https://redirect.github.com/mujpao)! - Fixed
[#&#8203;10003](https://redirect.github.com/biomejs/biome/issues/10003):
Biome no longer panics when parsing Svelte files containing `{#}`.

- [#&#8203;9815](https://redirect.github.com/biomejs/biome/pull/9815)
[`5cc83b1`](https://redirect.github.com/biomejs/biome/commit/5cc83b177830bc21dc4d6e18343f58eca4ee0de6)
Thanks [@&#8203;dyc3](https://redirect.github.com/dyc3)! - Added the new
nursery rule
[`noLoopFunc`](https://biomejs.dev/linter/rules/no-loop-func/). When
enabled, it warns when a function declared inside a loop captures outer
variables that can change across iterations.

- [#&#8203;9702](https://redirect.github.com/biomejs/biome/pull/9702)
[`ef470ba`](https://redirect.github.com/biomejs/biome/commit/ef470ba2db119aa52c24f918bcef451cf2770ccb)
Thanks
[@&#8203;ryan-m-walker](https://redirect.github.com/ryan-m-walker)! -
Added the nursery rule
[`useRegexpTest`](https://biomejs.dev/linter/rules/use-regexp-test/)
that enforces `RegExp.prototype.test()` over `String.prototype.match()`
and `RegExp.prototype.exec()` in boolean contexts. `test()` returns a
boolean directly, avoiding unnecessary computation of match results.

  **Invalid**

  ```js
  if ("hello world".match(/hello/)) {
  }
  ```

  **Valid**

  ```js
  if (/hello/.test("hello world")) {
  }
  ```

- [#&#8203;9743](https://redirect.github.com/biomejs/biome/pull/9743)
[`245307d`](https://redirect.github.com/biomejs/biome/commit/245307dc4ee7af87f62873162107b608084d40f3)
Thanks [@&#8203;leetdavid](https://redirect.github.com/leetdavid)! -
Fixed
[#&#8203;2245](https://redirect.github.com/biomejs/biome/issues/2245):
Svelte `<script>` tag language detection when the `generics` attribute
contains `>` characters (e.g., `<script lang="ts" generics="T extends
Record<string, unknown>">`). Biome now correctly recognizes TypeScript
in such script blocks.

- [#&#8203;10046](https://redirect.github.com/biomejs/biome/pull/10046)
[`0707de7`](https://redirect.github.com/biomejs/biome/commit/0707de7d72f0c5e14f4d5c91524ad2a9d1f50b34)
Thanks [@&#8203;Conaclos](https://redirect.github.com/Conaclos)! - Fixed
[#&#8203;10038](https://redirect.github.com/biomejs/biome/issues/10038):
[`organizeImports`](https://biomejs.dev/assist/actions/organize-imports/)
now sorts imports in TypeScript modules and declaration files.

  ```diff
    declare module "mymodule" {
  -  	import type { B } from "b";
    	import type { A } from "a";
  +  	import type { B } from "b";
    }
  ```

- [#&#8203;10012](https://redirect.github.com/biomejs/biome/pull/10012)
[`94ccca9`](https://redirect.github.com/biomejs/biome/commit/94ccca96800e73732b3f26d7eb21a5e3e025e51e)
Thanks [@&#8203;ematipico](https://redirect.github.com/ematipico)! -
Added the nursery rule
[`noReactNativeLiteralColors`](https://biomejs.dev/linter/rules/no-react-native-literal-colors/),
which disallows color literals inside React Native styles.

The rule belongs to the `reactNative` domain. It reports properties
whose name contains `color` and whose value is a string literal when
they appear inside a `StyleSheet.create(...)` call or inside a JSX
attribute whose name contains `style`.

  ```jsx
  // Invalid
const Hello = () => <Text style={{ backgroundColor: "#FFFFFF"
}}>hi</Text>;

  const styles = StyleSheet.create({
    text: { color: "red" },
  });
  ```

  ```jsx
  // Valid
  const red = "#f00";
  const styles = StyleSheet.create({
    text: { color: red },
  });
  ```

- [#&#8203;10005](https://redirect.github.com/biomejs/biome/pull/10005)
[`131019e`](https://redirect.github.com/biomejs/biome/commit/131019e161b69fd755742ba509b1c51fcb2af183)
Thanks [@&#8203;ematipico](https://redirect.github.com/ematipico)! -
Added the nursery rule
[`noReactNativeRawText`](https://biomejs.dev/linter/rules/no-react-native-raw-text/),
which disallows raw text outside of `<Text>` components in React Native.

  The rule belongs to the new `reactNative` domain.

  ```jsx
  // Invalid
  <View>some text</View>
  <View>{'some text'}</View>
  ```

  ```jsx
  // Valid
  <View>
    <Text>some text</Text>
  </View>
  ```

  Additional components can be allowlisted through the `skip` option:

  ```json
  {
    "options": {
      "skip": ["Title"]
    }
  }
  ```

- [#&#8203;9911](https://redirect.github.com/biomejs/biome/pull/9911)
[`1603f78`](https://redirect.github.com/biomejs/biome/commit/1603f7893c9e249439fc3c22c02ec1a363cc54b9)
Thanks [@&#8203;Netail](https://redirect.github.com/Netail)! - Added the
nursery rule
[`noJsxLeakedDollar`](https://biomejs.dev/linter/rules/no-jsx-leaked-dollar),
which flags text nodes with a trailing `$` if the next sibling node is a
JSX expression. This could be an unintentional mistake, resulting in a
'$' being rendered as text in the output.

  **Invalid**:

  ```jsx
  function MyComponent({ user }) {
    return <div>Hello ${user.name}</div>;
  }
  ```

- [#&#8203;9999](https://redirect.github.com/biomejs/biome/pull/9999)
[`f42405f`](https://redirect.github.com/biomejs/biome/commit/f42405fca77302bbbca573474c59ae49f027f75d)
Thanks [@&#8203;minseong0324](https://redirect.github.com/minseong0324)!
- Fixed `noMisleadingReturnType` incorrectly flagging functions with
reassigned `let` variables.

- [#&#8203;10075](https://redirect.github.com/biomejs/biome/pull/10075)
[`295f97f`](https://redirect.github.com/biomejs/biome/commit/295f97fd538779eb9cc35b5bf54d37a90e0b5e9b)
Thanks [@&#8203;ematipico](https://redirect.github.com/ematipico)! -
Fixed [`#9983`](https://redirect.github.com/biomejs/biome/issues/9983):
Biome now parses functions declared inside Svelte `#snippet` blocks
without throwing errors.

- [#&#8203;10006](https://redirect.github.com/biomejs/biome/pull/10006)
[`cf4c1c9`](https://redirect.github.com/biomejs/biome/commit/cf4c1c943a53612648d052d843aaf977652c79d6)
Thanks [@&#8203;minseong0324](https://redirect.github.com/minseong0324)!
- Fixed
[#&#8203;9810](https://redirect.github.com/biomejs/biome/issues/9810):
`noMisleadingReturnType` incorrectly flagging nested object literals
with widened properties.

- [#&#8203;10033](https://redirect.github.com/biomejs/biome/pull/10033)
[`11ddc05`](https://redirect.github.com/biomejs/biome/commit/11ddc05713a1cb85b6748c865ee9dda91235a5d1)
Thanks [@&#8203;ematipico](https://redirect.github.com/ematipico)! -
Added the nursery rule
[`useReactNativePlatformComponents`](https://biomejs.dev/linter/rules/use-react-native-platform-components/)
that ensures platform-specific React Native components (e.g.
`ProgressBarAndroid`, `ActivityIndicatorIOS`) are only imported in files
with a matching platform suffix. It also reports when Android and iOS
components are mixed in the same file.

The following code triggers the rule when the file does not have an
`.android.js` suffix:

  ```js
  // file.js
  import { ProgressBarAndroid } from "react-native";
  ```

#### What's Changed

- docs(orgnizeImports): revamp user-facing docs by
[@&#8203;Conaclos](https://redirect.github.com/Conaclos) in
[#&#8203;9987](https://redirect.github.com/biomejs/biome/pull/9987)
- fix(md): code info string, and fmt advancement by
[@&#8203;ematipico](https://redirect.github.com/ematipico) in
[#&#8203;9979](https://redirect.github.com/biomejs/biome/pull/9979)
- fix(service): detect script language in Svelte files with generics
attribute by [@&#8203;leetdavid](https://redirect.github.com/leetdavid)
in [#&#8203;9743](https://redirect.github.com/biomejs/biome/pull/9743)
- chore: abstract html tag matcher by
[@&#8203;Netail](https://redirect.github.com/Netail) in
[#&#8203;9988](https://redirect.github.com/biomejs/biome/pull/9988)
- chore(deps): update rustls-webpki to 0.103.12 by
[@&#8203;siketyan](https://redirect.github.com/siketyan) in
[#&#8203;9996](https://redirect.github.com/biomejs/biome/pull/9996)
- fix(parser/css): handle nested rules in embedded snippets by
[@&#8203;siketyan](https://redirect.github.com/siketyan) in
[#&#8203;9995](https://redirect.github.com/biomejs/biome/pull/9995)
- chore: fix some node vulnerabilities by
[@&#8203;Netail](https://redirect.github.com/Netail) in
[#&#8203;10001](https://redirect.github.com/biomejs/biome/pull/10001)
- chore: fix more node vulnerabilities by
[@&#8203;Netail](https://redirect.github.com/Netail) in
[#&#8203;10002](https://redirect.github.com/biomejs/biome/pull/10002)
- feat(lint): implement use useRegexpTest nursery rule by
[@&#8203;ryan-m-walker](https://redirect.github.com/ryan-m-walker) in
[#&#8203;9702](https://redirect.github.com/biomejs/biome/pull/9702)
- feat(css): implement shared CSS scanner for parsing SCSS
interpolations and URL bodies by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;9948](https://redirect.github.com/biomejs/biome/pull/9948)
- feat(fmt/md): ordered lists and space normalization by
[@&#8203;ematipico](https://redirect.github.com/ematipico) in
[#&#8203;9998](https://redirect.github.com/biomejs/biome/pull/9998)
- chore: update rand & thin-vec by
[@&#8203;Netail](https://redirect.github.com/Netail) in
[#&#8203;10008](https://redirect.github.com/biomejs/biome/pull/10008)
- fix(lint/js): false positives in `noComponentHookFactories` by
[@&#8203;Jayllyz](https://redirect.github.com/Jayllyz) in
[#&#8203;10009](https://redirect.github.com/biomejs/biome/pull/10009)
- feat(lint): add `noReactNativeRawText` by
[@&#8203;ematipico](https://redirect.github.com/ematipico) in
[#&#8203;10005](https://redirect.github.com/biomejs/biome/pull/10005)
- refactor(css): rename scss declaration and module access syntax by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10014](https://redirect.github.com/biomejs/biome/pull/10014)
- fix(markdown\_parser): handle tab-separated container markers by
[@&#8203;jfmcdowell](https://redirect.github.com/jfmcdowell) in
[#&#8203;9965](https://redirect.github.com/biomejs/biome/pull/9965)
- chore: cleanup tests by
[@&#8203;Netail](https://redirect.github.com/Netail) in
[#&#8203;10016](https://redirect.github.com/biomejs/biome/pull/10016)
- feat(lint/js): add `useDomQuerySelector` by
[@&#8203;dyc3](https://redirect.github.com/dyc3) in
[#&#8203;9885](https://redirect.github.com/biomejs/biome/pull/9885)
- test(formatter): retain formatter failures in prettier snapshots by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10018](https://redirect.github.com/biomejs/biome/pull/10018)
- feat(css): support unquoted concatenation in SCSS interpolation
expressions by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10020](https://redirect.github.com/biomejs/biome/pull/10020)
- test(css\_formatter): import prettier scss mirror by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10025](https://redirect.github.com/biomejs/biome/pull/10025)
- refactor(tests): reorganize SCSS test specs into standalone `scss`
module by [@&#8203;denbezrukov](https://redirect.github.com/denbezrukov)
in [#&#8203;10030](https://redirect.github.com/biomejs/biome/pull/10030)
- test(prettier-compare): add scss compare support by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10031](https://redirect.github.com/biomejs/biome/pull/10031)
- fix(lint): fix false positive in noMisleadingReturnType for mutable
bindings by
[@&#8203;minseong0324](https://redirect.github.com/minseong0324) i

> ✂ **Note**
> 
> PR body was truncated to here.


</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - Between 12:00 AM and 03:59 AM, only on Monday (`* 0-3 * * 1`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/alecthomas/chroma).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNTkuMiIsInVwZGF0ZWRJblZlciI6IjQzLjE1OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-09 21:19:35 +10:00

Symbolic link
1 line
18 B
Plaintext