1070 Commits
Author SHA1 Message Date
Alec Thomas ad9051e9fe chore: delete hcl lexer
The terraform lexer is more comprehensive.

Fixes #1281
2026-06-17 21:11:03 +10:00
Alec ThomasandClaude Opus 4.6 900164f7f4 fix: use v3 version in cmd go.mod require lines
Goreleaser builds without the replace directive, so the
require version must be valid for the v3 module path.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
v3.0.0-alpha.3
2026-06-17 16:30:52 +10:00
Alec ThomasandClaude Opus 4.6 ad6e131bfd feat!: unexport html.Formatter.Classes field
Use WithClasses() option to set it.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
v3.0.0-alpha.2
2026-06-17 15:58:50 +10:00
Alec ThomasandClaude Opus 4.6 ac8cad13c3 feat!: make formatter and style registries private
Replace direct map access with Get/Names/Lookup functions.
Add styles.Lookup() for callers that need to distinguish
unknown styles from the fallback.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-17 15:57:06 +10:00
Alec ThomasandClaude Opus 4.6 cf4561606a feat!: remove deprecated RegexLexer.Trace method
Use SetTracing() instead.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-17 15:54:13 +10:00
Alec ThomasandClaude Opus 4.6 bfbca1dd2e feat!: remove deprecated style compat vars
Use styles.Get(name) instead.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-17 15:53:32 +10:00
Alec Thomas af5ff8916c feat!: replace custom Iterator with iter.Seq[Token]
BREAKING CHANGE: Bump module to v3. Replace the custom
Iterator type with Go's built-in iter.Seq[Token]. Remove
EOF sentinel and EOFType. Callers should use range loops
and slices.Collect() instead of .Tokens()/.Stdlib().
v3.0.0-alpha.1
2026-06-17 15:47:45 +10:00
renovate[bot] 976b215e98 chore(deps): update dependency binaryen to v130 (#1288)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [binaryen](https://redirect.github.com/WebAssembly/binaryen) | major |
`129` → `130` |

---

### Release Notes

<details>
<summary>WebAssembly/binaryen (binaryen)</summary>

###
[`v130`](https://redirect.github.com/WebAssembly/binaryen/blob/HEAD/CHANGELOG.md#v130)

- MarkJSCalled pass, to help configureAll users.
([#&#8203;8733](https://redirect.github.com/WebAssembly/binaryen/issues/8733))
- RemoveExports pass, to allow easy export removal (e.g. after merge)
([#&#8203;8670](https://redirect.github.com/WebAssembly/binaryen/issues/8670))
- Wide Arithmetic support
([#&#8203;8544](https://redirect.github.com/WebAssembly/binaryen/issues/8544))
- New fuzzer mode: PreserveImportsExportsJS
([#&#8203;8592](https://redirect.github.com/WebAssembly/binaryen/issues/8592))
- New fuzzer mode: Fuzz against JavaScript
([#&#8203;8655](https://redirect.github.com/WebAssembly/binaryen/issues/8655))
- Increase Alpine stack size to 8MB for release builds
([#&#8203;8595](https://redirect.github.com/WebAssembly/binaryen/issues/8595))
- Rename relaxed SIMD instructions to prepend the `relaxed_` prefix.
([#&#8203;8673](https://redirect.github.com/WebAssembly/binaryen/issues/8673))
  - Rename C and JS API operations to prepend the `Relaxed` prefix:
    - `LaneselectI8x16` to `RelaxedLaneselectI8x16`
    - `LaneselectI16x8` to `RelaxedLaneselectI16x8`
    - `LaneselectI32x4` to `RelaxedLaneselectI32x4`
    - `LaneselectI64x2` to `RelaxedLaneselectI64x2`
- `DotI8x16I7x16AddSToVecI32x4` to `RelaxedDotI8x16I7x16AddSToVecI32x4`
    - `DotI8x16I7x16SToVecI16x8` to `RelaxedDotI8x16I7x16SToVecI16x8`
- \[JS & C API] Rename MemorySegment functions to DataSegment
([#&#8203;8576](https://redirect.github.com/WebAssembly/binaryen/issues/8576))
- Rename `BinaryenGetNumMemorySegments` to `BinaryenGetNumDataSegments`
in c api.
- Rename `BinaryenGetMemorySegmentByteOffset` to
`BinaryenGetDataSegmentByteOffset` in c api.
- Rename `BinaryenGetMemorySegmentByteLength` to
`BinaryenGetDataSegmentByteLength` in c api.
- Rename `BinaryenGetMemorySegmentPassive` to
`BinaryenGetDataSegmentPassive` in c api.
- Rename `BinaryenCopyMemorySegmentData` to
`BinaryenCopyDataSegmentData` in c api.
- Rename `module.getNumMemorySegments` to `module.getNumDataSegments` in
js api.
- Rename `module.getMemorySegmentInfo` to `module.getDataSegmentInfo` in
js api.

</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.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- 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:eyJjcmVhdGVkSW5WZXIiOiI0My4yMTkuMCIsInVwZGF0ZWRJblZlciI6IjQzLjIxOS4wIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-17 15:41:31 +10:00
renovate[bot] d44c33804e chore(deps): update actions/checkout digest to df4cb1c (#1284)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [actions/checkout](https://redirect.github.com/actions/checkout)
([changelog](https://redirect.github.com/actions/checkout/compare/de0fac2e4500dabe0009e67214ff5f5447ce83dd..df4cb1c069e1874edd31b4311f1884172cec0e10))
| action | digest | `de0fac2` → `df4cb1c` |

---

### 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.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- 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:eyJjcmVhdGVkSW5WZXIiOiI0My4yMDkuNCIsInVwZGF0ZWRJblZlciI6IjQzLjIwOS40IiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-17 15:41:20 +10:00
Bryce D. Greybeard f954f077eb Add Hyprlang lexer (#1286)
Adds a Hyprlang lexer for Hyprland configuration files.

Closes #1046.

The lexer covers common Hyprland config syntax including variables,
assignments, sections and device sections, exec/source directives,
colors, monitor dimensions, booleans, modifiers, and window-rule command
lists.

Test fixtures were generated for the lexer and analyser.

Validation run locally:

- `RECORD=true go test ./lexers`
- `go test ./lexers -count=1`
- `go test ./... -count=1`
- `./bin/golangci-lint run`
2026-06-17 15:41:01 +10:00
Alec ThomasandClaude Opus 4.6 a6d00fe2cd fix(html): make mode class output opt-in via WithModeClasses
Fixes #1287

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
v2.27.0
2026-06-17 12:07:01 +10:00
Alec Thomas f52d0150b8 chore: some house-keeping 2026-06-17 11:43:19 +10:00
Alec Thomas f08a9ab463 chore: add fmt + test to BUILD.bit 2026-06-17 11:39:10 +10:00
Kev 🐶andKev Kloss 6da8f88144 fix(yaml): comments can be key-values (#1289)
This fixes a bug where comments that come after a name tag and contain a
colon character are parsed as key-value pair instead of as comment.

For example, the following YAML is parsed as having the key `version: 2
# Required`:

```yaml
version: 2 # Required: Configuration format version
```

Therefore, this makes the `NameTag` regex stricter and doesn't allow the
hash character in name tags, avoiding the bad parsing.

## Example

A current example of how this breaks in practice is our [GitLab Caproni
docs site](https://gitlab-org.gitlab.io/caproni/config/), which uses
[imfing/hextra](https://github.com/imfing/hextra), which uses Chroma.
The YAML comments are treated partially as keys instead of comments.

<img width="568" height="155" alt="image"
src="https://github.com/user-attachments/assets/9d026526-de3f-4ff6-b6f6-cdbfb2af673e"
/>

Co-authored-by: Kev Kloss <kkloss@gitlab.com>
2026-06-17 00:08:28 +00:00
renovate[bot] 67785a4c2d chore(deps): update all non-major dependencies (#1285)
> ℹ️ **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/) |
|---|---|---|---|---|---|
| alpine | final | minor | `3.23` → `3.24` |
![age](https://developer.mend.io/api/mc/badges/age/docker/alpine/3.24?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/alpine/3.23/3.24?slim=true)
|
| [biome](https://redirect.github.com/biomejs/biome) | | minor |
`2.4.16` → `2.5.0` |
![age](https://developer.mend.io/api/mc/badges/age/hermit/biome/2.5.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/hermit/biome/2.4.16/2.5.0?slim=true)
|
| [esbuild](https://redirect.github.com/evanw/esbuild) | | patch |
`0.28.0` → `0.28.1` |
![age](https://developer.mend.io/api/mc/badges/age/hermit/esbuild/0.28.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/hermit/esbuild/0.28.0/0.28.1?slim=true)
|
|
[github.com/dlclark/regexp2/v2](https://redirect.github.com/dlclark/regexp2)
| require | minor | `v2.1.2` → `v2.2.1` |
![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fdlclark%2fregexp2%2fv2/v2.2.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fdlclark%2fregexp2%2fv2/v2.1.2/v2.2.1?slim=true)
|
| [just](https://redirect.github.com/casey/just) | | minor | `1.51.0` →
`1.52.0` |
![age](https://developer.mend.io/api/mc/badges/age/hermit/just/1.52.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/hermit/just/1.51.0/1.52.0?slim=true)
|
| [uv](https://redirect.github.com/astral-sh/uv) | | patch | `0.11.19` →
`0.11.21` |
![age](https://developer.mend.io/api/mc/badges/age/hermit/uv/0.11.21?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/hermit/uv/0.11.19/0.11.21?slim=true)
|

---

### Release Notes

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

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

#### 2.5.0

##### Minor Changes

- [#&#8203;9539](https://redirect.github.com/biomejs/biome/pull/9539)
[`f0615fd`](https://redirect.github.com/biomejs/biome/commit/f0615fdae80fa7257fc1d0448d2027cb1acff46e)
Thanks [@&#8203;ematipico](https://redirect.github.com/ematipico)! -
Added a new reporter called `concise`. When `--reporter=concise` is
passed the commands `format`, `lint`, `check` and `ci`, the diagnostics
are printed in a compact manner:

  ```
! index.ts:2:10: lint/correctness/noUnusedImports: Several of these
imports are unused.
! main.ts:9:7: lint/correctness/noUnusedVariables: This variable f is
unused.
× index.ts:8:5: lint/suspicious/noImplicitAnyLet: This variable
implicitly has the any type.
× main.ts:2:10: lint/suspicious/noRedeclare: Shouldn't redeclare 'z'.
Consider to delete it or rename it.
  ```

- [#&#8203;9495](https://redirect.github.com/biomejs/biome/pull/9495)
[`2056b23`](https://redirect.github.com/biomejs/biome/commit/2056b23812a17f9c9a9015e5b725faecb04647b5)
Thanks [@&#8203;aviraldua93](https://redirect.github.com/aviraldua93)! -
Added the
[`useKeyWithClickEvents`](https://biomejs.dev/linter/rules/use-key-with-click-events/)
a11y lint rule for HTML files (`.html`, `.vue`, `.svelte`, `.astro`).
This is a port of the existing JSX rule. The rule enforces that elements
with an `onclick` handler also have at least one keyboard event handler
(`onkeydown`, `onkeyup`, or `onkeypress`) to ensure keyboard
accessibility.

Inherently keyboard-accessible elements (`<a>`, `<button>`, `<input>`,
`<select>`, `<textarea>`, `<option>`) are excluded, as are elements
hidden from assistive technologies (`aria-hidden`) or with
`role="presentation"` / `role="none"`.

  ```html
  <!-- Invalid: no keyboard handler -->
  <div onclick="handleClick()">Click me</div>

  <!-- Valid: has keyboard handler -->
<div onclick="handleClick()" onkeydown="handleKeyDown()">Click me</div>

  <!-- Valid: inherently keyboard-accessible -->
  <button onclick="handleClick()">Submit</button>
  ```

- [#&#8203;9152](https://redirect.github.com/biomejs/biome/pull/9152)
[`9ec8500`](https://redirect.github.com/biomejs/biome/commit/9ec8500dabc7305cbe04ecf27a84a1450f012c0b)
Thanks [@&#8203;ematipico](https://redirect.github.com/ematipico)! -
Added new nursery lint rule
[`noUndeclaredClasses`](https://biomejs.dev/linter/rules/no-undeclared-classes/)
for HTML, JSX, and SFC files (Vue, Astro, Svelte). The rule detects CSS
class names used in `class="..."` (or `className`) attributes that are
not defined in any `<style>` block or linked stylesheet reachable from
the file.

  ```html
  <!-- .typo is used but never defined -->
  <html>
    <head>
      <style>
        .button {
          color: blue;
        }
      </style>
    </head>
    <body>
      <div class="button typo"></div>
    </body>
  </html>
  ```

- [#&#8203;9152](https://redirect.github.com/biomejs/biome/pull/9152)
[`9ec8500`](https://redirect.github.com/biomejs/biome/commit/9ec8500dabc7305cbe04ecf27a84a1450f012c0b)
Thanks [@&#8203;ematipico](https://redirect.github.com/ematipico)! -
Added new nursery lint rule
[`noUnusedClasses`](https://biomejs.dev/linter/rules/no-unused-classes/)
for CSS. The rule detects CSS class selectors that are never referenced
in any HTML or JSX file that imports the stylesheet. This is a
project-domain rule that requires the module graph.

  ```css
  /* styles.css — .ghost is never used in any importing file */
  .button {
    color: blue;
  }
  .ghost {
    color: red;
  }
  ```

  ```jsx
  /* App.jsx */
  import "./styles.css";
  export default () => <div className="button" />;
  ```

- [#&#8203;9546](https://redirect.github.com/biomejs/biome/pull/9546)
[`6567efa`](https://redirect.github.com/biomejs/biome/commit/6567efa51ba074436b017e49b1d2d369e7252e74)
Thanks [@&#8203;nhedger](https://redirect.github.com/nhedger)! - Added a
`biome upgrade` command for standalone installations. It upgrades
Homebrew installs with `brew upgrade biome`, updates manually installed
binaries from the latest GitHub release, and tells npm users to upgrade
with their package manager instead.

- [#&#8203;9716](https://redirect.github.com/biomejs/biome/pull/9716)
[`701767a`](https://redirect.github.com/biomejs/biome/commit/701767a3c4de8bce032933588ef2b6e5e252919f)
Thanks [@&#8203;faizkhairi](https://redirect.github.com/faizkhairi)! -
Added the HTML version of the
[`useHeadingContent`](https://biomejs.dev/linter/rules/use-heading-content/)
rule. The rule now enforces that heading elements (`h1`-`h6`) have
content accessible to screen readers in HTML, Vue, Svelte, and Astro
files.

  ```html
  <!-- Invalid: empty heading -->
  <h1></h1>

  <!-- Invalid: heading hidden from screen readers -->
  <h1 aria-hidden="true">invisible content</h1>

  <!-- Valid: heading with text content -->
  <h1>heading</h1>

  <!-- Valid: heading with accessible name -->
  <h1 aria-label="Screen reader content"></h1>
  ```

- [#&#8203;9582](https://redirect.github.com/biomejs/biome/pull/9582)
[`f437ef8`](https://redirect.github.com/biomejs/biome/commit/f437ef8b6b0eb8f909d523950cf2c543042083d5)
Thanks [@&#8203;rahuld109](https://redirect.github.com/rahuld109)! -
Added the HTML version of the
[`useKeyWithMouseEvents`](https://biomejs.dev/linter/rules/use-key-with-mouse-events/)
rule. The rule now enforces that `onmouseover` is accompanied by
`onfocus` and `onmouseout` is accompanied by `onblur` in HTML, Vue,
Svelte, and Astro files.

  ```html
  <!-- Invalid: onmouseover without onfocus -->
  <div onmouseover="handleMouseOver()"></div>

  <!-- Valid: onmouseover paired with onfocus -->
  <div onmouseover="handleMouseOver()" onfocus="handleFocus()"></div>
  ```

- [#&#8203;9275](https://redirect.github.com/biomejs/biome/pull/9275)
[`1fdbcee`](https://redirect.github.com/biomejs/biome/commit/1fdbceea62d373f24da9c1e5cc0cdd169b573e84)
Thanks [@&#8203;ff1451](https://redirect.github.com/ff1451)! - Added the
new assist action
[`useSortedTypeFields`](https://biomejs.dev/assist/actions/use-sorted-type-fields/),
which sorts the fields of GraphQL object types, interface types and
input object types alphabetically, e.g. `name, age, id` becomes `age,
id, name`.

- [#&#8203;10561](https://redirect.github.com/biomejs/biome/pull/10561)
[`78075b7`](https://redirect.github.com/biomejs/biome/commit/78075b7c7cb7490c730a96f4ee9776c9e77826e7)
Thanks [@&#8203;Conaclos](https://redirect.github.com/Conaclos)! - Added
a new `style` option to
[useExportType](https://biomejs.dev/linter/rules/use-export-type/),
  which enforces a style for exporting types.
  This is the same option as the one provided by `useImportType`.

- [#&#8203;8987](https://redirect.github.com/biomejs/biome/pull/8987)
[`d16e32b`](https://redirect.github.com/biomejs/biome/commit/d16e32b5b971a4ed9cd3bf5098782c8b752af69a)
Thanks [@&#8203;DerTimonius](https://redirect.github.com/DerTimonius)! -
Ported the
[`useValidAnchor`](https://biomejs.dev/linter/rules/use-valid-anchor/)
rule to HTML. This rule enforces that all anchors are valid and that
they are navigable elements.

- [#&#8203;9533](https://redirect.github.com/biomejs/biome/pull/9533)
[`4d251d4`](https://redirect.github.com/biomejs/biome/commit/4d251d489cfd33a83e42d425476f8d6c66b72d9b)
Thanks [@&#8203;ematipico](https://redirect.github.com/ematipico)! - The
`init` command now prints the Biome logo.

- [#&#8203;10069](https://redirect.github.com/biomejs/biome/pull/10069)
[`0eb9310`](https://redirect.github.com/biomejs/biome/commit/0eb93109e1f9bfbb20744961681b4f0b9b781ad5)
Thanks [@&#8203;Netail](https://redirect.github.com/Netail)! - Added the
HTML lint rule
[`noStaticElementInteractions`](https://biomejs.dev/linter/rules/no-static-element-interactions/),
which enforces that static, visible elements (such as `<div>`) that have
click handlers use the valid role attribute.

  **Invalid**:

  ```html
  <div onclick="myFunction()"></div>
  ```

- [#&#8203;9134](https://redirect.github.com/biomejs/biome/pull/9134)
[`2a43488`](https://redirect.github.com/biomejs/biome/commit/2a434882746d31e1bd3c8e0d711372a539ce88f8)
Thanks [@&#8203;ematipico](https://redirect.github.com/ematipico)! -
Added the assist action
[`useSortedPackageJson`](https://biomejs.dev/assist/actions/use-sorted-package-json).

This action organizes package.json fields according to the same
conventions as the popular
[sort-package-json](https://redirect.github.com/keithamus/sort-package-json)
tool.

- [#&#8203;9309](https://redirect.github.com/biomejs/biome/pull/9309)
[`7daa18b`](https://redirect.github.com/biomejs/biome/commit/7daa18b07f7ab348942f4cb83b475e6a4b3d1125)
Thanks [@&#8203;Bertie690](https://redirect.github.com/Bertie690)! - The
`allowDoubleNegation` option has been added to
[`noImplicitCoercions`](https://biomejs.dev/linter/rules/no-implicit-coercions)
to allow ignoring double negations inside code.

With the option enabled, the following example is considered valid and
is ignored by the rule:

  ```js
  const truthy = !!value;
  ```

- [#&#8203;9700](https://redirect.github.com/biomejs/biome/pull/9700)
[`894f3fb`](https://redirect.github.com/biomejs/biome/commit/894f3fb4c664b12ff9abd1527b535621fe4e22f6)
Thanks [@&#8203;ematipico](https://redirect.github.com/ematipico)! - The
Biome Language server now supports the "go-to definition" feature.

When the cursor of the mouse is hovering an entity (variable, CSS class,
type, etc.), and the command <kbd>CTRL</kbd> + click is triggered, the
editor jumps to where this entity is defined, if the language server can
find it.

  Here's what Biome is able to resolve:

- Variables and types used in JavaScript modules, defined in the same
file or imported from another module.
- JSX Components used in JavaScript modules, defined in the same file or
imported from another module.
- CSS classes used in JSX and HTML-ish files (Vue, Svelte and Astro),
and defined in CSS files.
  - Components used in HTML-ish files and defined in other HTML-ish.
- Variables used in HTML-ish files and defined in the same file or
imported from another module (JavaScript or HTML-ish).

- [#&#8203;10070](https://redirect.github.com/biomejs/biome/pull/10070)
[`bae0710`](https://redirect.github.com/biomejs/biome/commit/bae071050f5a9c335b4483ee384f21ac1e6f0b4d)
Thanks [@&#8203;Conaclos](https://redirect.github.com/Conaclos)! - Added
the `:STYLE:` group matcher for
[`organizeImports`](https://biomejs.dev/assist/actions/organize-imports/)
that matches style imports.

  For example, the following configuration...

  ```json
  {
    "assist": {
      "actions": {
        "source": {
          "organizeImports": {
            "level": "on",
            "options": {
              "groups": ["**", "!:STYLE:"],
              "sortBareImports": true
            }
          }
        }
      }
    }
  }
  ```

  ...places style imports last:

  ```diff
  - import "./style.css"
    import A from "./a.js"
  + import "./style.css"
  ```

- [#&#8203;9170](https://redirect.github.com/biomejs/biome/pull/9170)
[`e3107de`](https://redirect.github.com/biomejs/biome/commit/e3107deedcff0f02b61702c6645d89e8d8635b49)
Thanks [@&#8203;mdrobny](https://redirect.github.com/mdrobny)! - Added
`bundleDependencies` option to
[NoUndeclaredDependencies](https://biomejs.dev/linter/rules/no-undeclared-dependencies)
rule.

This rule now supports imports of packages that are defined only in
`bundleDependencies` and `bundledDependencies` arrays.

- [#&#8203;9547](https://redirect.github.com/biomejs/biome/pull/9547)
[`01f8473`](https://redirect.github.com/biomejs/biome/commit/01f847317820f805698e1b8ba9eaa8fa6c26205c)
Thanks [@&#8203;mujpao](https://redirect.github.com/mujpao)! - Added new
assist rule
[`useSortedAttributes`](https://biomejs.dev/assist/actions/use-sorted-attributes/)
for HTML, porting the existing JSX rule. This rule enforces sorted HTML
attributes.

  **Invalid**

  ```html
  <input type="text" id="name" name="name" />
  ```

- [#&#8203;9366](https://redirect.github.com/biomejs/biome/pull/9366)
[`2ca1117`](https://redirect.github.com/biomejs/biome/commit/2ca1117f1e63f6cd99c0ce8d4b82475625838e2e)
Thanks [@&#8203;dyc3](https://redirect.github.com/dyc3)! - Added the
`html.parser.vue` configuration option. When enabled, it adds support
for the parsing of Vue in `.html` files. Most Vue users don't need to
enable this option since Vue files typically use the `.vue` extension,
but it can be useful for projects that embed Vue syntax in regular HTML
files.

- [#&#8203;9073](https://redirect.github.com/biomejs/biome/pull/9073)
[`74b20ee`](https://redirect.github.com/biomejs/biome/commit/74b20eee556c9acc72ad5ea335b1bf0983d2eb2e)
Thanks [@&#8203;chocky335](https://redirect.github.com/chocky335)! -
Added support for applying GritQL plugin rewrites as code actions.
GritQL plugins that use the rewrite operator (`=>`) now produce fixable
diagnostics for JavaScript, CSS, and JSON files. By default, plugin
rewrites are treated as unsafe fixes and require `--write --unsafe` to
apply. Plugin authors can pass `fix_kind = "safe"` to
`register_diagnostic()` to mark a fix as safe, allowing it to be applied
with just `--write`.

  **Example plugin** (`useConsoleInfo.grit`):

  ```grit
  language js

  `console.log($msg)` as $call where {
register_diagnostic(span = $call, message = "Use console.info instead of
console.log.", severity = "warn", fix_kind = "safe"),
      $call => `console.info($msg)`
  }
  ```

Running `biome check --write` applies safe rewrites. Unsafe rewrites
(the default, or `fix_kind = "unsafe"`) still require `--write
--unsafe`.

- [#&#8203;9384](https://redirect.github.com/biomejs/biome/pull/9384)
[`f4c9edc`](https://redirect.github.com/biomejs/biome/commit/f4c9edca8f8772a1e65d9e6701fdc3f604a9f3fe)
Thanks [@&#8203;Conaclos](https://redirect.github.com/Conaclos)! - Added
the `sortBareImports` option to
[`organizeImports`](https://biomejs.dev/assist/actions/organize-imports/),
which allows bare imports to be sorted within other imports when set to
`false`.

  ```json
  {
    "assist": {
      "actions": {
        "source": {
          "organizeImports": {
            "level": "on",
            "options": { "sortBareImports": true }
          }
        }
      }
    }
  }
  ```

  ```diff
  - import "b";
    import "a";
  + import "b";
    import { A } from "a";
  + import "./file";
    import { Local } from "./file";
  - import "./file";
  ```

- [#&#8203;8731](https://redirect.github.com/biomejs/biome/pull/8731)
[`e7872bf`](https://redirect.github.com/biomejs/biome/commit/e7872bffba88f60d6c3cb6d0c2dd7a25452a0205)
Thanks [@&#8203;siketyan](https://redirect.github.com/siketyan)! - Added
the watch mode (`--watch`) to the CLI for `check`/`format`/`lint`
commands. By enabling this option, Biome will re-run the check
automatically when any file in the workspace has changed after the first
run.

- [#&#8203;10106](https://redirect.github.com/biomejs/biome/pull/10106)
[`9b35f78`](https://redirect.github.com/biomejs/biome/commit/9b35f78e183edf44a3d8b7077ebb0c548a7e92f5)
Thanks [@&#8203;ematipico](https://redirect.github.com/ematipico)! -
Biome can now format and lint `.svg` files.

- [#&#8203;9967](https://redirect.github.com/biomejs/biome/pull/9967)
[`e9b6c17`](https://redirect.github.com/biomejs/biome/commit/e9b6c17cd6f7e870aea68da3b6c6474aa1a9b4f6)
Thanks [@&#8203;dyc3](https://redirect.github.com/dyc3)! - Added HTML
support for
[`noExcessiveLinesPerFile`](https://biomejs.dev/linter/rules/no-excessive-lines-per-file/).
Biome now reports HTML files that exceed the configured line limit,
including when `skipBlankLines` is enabled.

- [#&#8203;9491](https://redirect.github.com/biomejs/biome/pull/9491)
[`b3eb63c`](https://redirect.github.com/biomejs/biome/commit/b3eb63c7e19e6ebd41e463289de098bb003686e1)
Thanks [@&#8203;IxxyDev](https://redirect.github.com/IxxyDev)! - Added
the HTML lint rule
[`noAriaUnsupportedElements`](https://biomejs.dev/linter/rules/no-aria-unsupported-elements/).
This rule enforces that elements that do not support ARIA roles, states,
and properties (`meta`, `html`, `script`, `style`) do not have `role` or
`aria-*` attributes.

  ```html
  <!-- Invalid: meta does not support aria attributes -->
  <meta charset="UTF-8" role="meta" />
  ```

- [#&#8203;9306](https://redirect.github.com/biomejs/biome/pull/9306)
[`afd57a6`](https://redirect.github.com/biomejs/biome/commit/afd57a634bdb6b0b161dc8a2522ac460503569b1)
Thanks [@&#8203;viraxslot](https://redirect.github.com/viraxslot)! -
Added the
[`noNoninteractiveTabindex`](https://biomejs.dev/linter/rules/no-noninteractive-tabindex/)
lint rule for HTML. This rule enforces that `tabindex` is not used on
non-interactive elements, as it can cause usability issues for keyboard
users.

  ```html
  <div tabindex="0">Invalid: non-interactive element</div>
  `
  ```

- [#&#8203;9276](https://redirect.github.com/biomejs/biome/pull/9276)
[`6d041d9`](https://redirect.github.com/biomejs/biome/commit/6d041d919e06595553093e084e6aad0d39fb8109)
Thanks [@&#8203;IxxyDev](https://redirect.github.com/IxxyDev)! - Added
the HTML lint rule
[`noRedundantRoles`](https://biomejs.dev/linter/rules/no-redundant-roles/).
This rule enforces that explicit `role` attributes are not the same as
the implicit/default role of an HTML element. It supports HTML, Vue,
Svelte, and Astro files.

  ```html
  <!-- Invalid: role="button" is redundant on <button> -->
  <button role="button"></button>
  ```

- [#&#8203;9813](https://redirect.github.com/biomejs/biome/pull/9813)
[`69aadc2`](https://redirect.github.com/biomejs/biome/commit/69aadc27741bb8a74c926e14a2a9777064cb1e03)
Thanks [@&#8203;ematipico](https://redirect.github.com/ematipico)! -
Added a new linter configuration called `preset`. With the new option,
users can enable different kinds of rules at once.

  The following presets are available:

- `"recommended"`: it enables all Biome-recommended rules, or
recommended rules of a group;
- `"all"`: it enables all Biome rules, or enables all rules of a group;
- `"none"`: it disables all Biome rules, or disable all rules of a
group.

  You can enable recommended rules:

  ```json
  {
    "linter": {
      "rules": {
        "preset": "recommended"
      }
    }
  }
  ```

  You can enable **all rules** at once:

  ```json5
  {
    linter: {
      rules: {
        preset: "all", // enables all rules
      },
    },
  }
  ```

  Or enable all rules for a group:

  ```json5
  {
    linter: {
      rules: {
        style: {
          preset: "all", // enables all rules in the style group
        },
      },
    },
  }
  ```

This new option, however, doesn't affect how nursery rules work. Nursery
rules must be enabled singularly, due to their nature.

This new option is meant to replace `recommended`, so make sure to run
the `migrate` command.

- [#&#8203;10022](https://redirect.github.com/biomejs/biome/pull/10022)
[`3422d71`](https://redirect.github.com/biomejs/biome/commit/3422d71bc5e9d7f07fd4e7509566427e1591d760)
Thanks [@&#8203;Netail](https://redirect.github.com/Netail)! - Added the
HTML lint rule
[`noNoninteractiveElementToInteractiveRole`](https://biomejs.dev/linter/rules/no-noninteractive-element-to-interactive-role/),
which enforces that interactive ARIA roles are not assigned to
non-interactive HTML elements.

  **Invalid**:

  ```html
  <h1 role="checkbox"></h1>
  ```

- [#&#8203;8396](https://redirect.github.com/biomejs/biome/pull/8396)
[`13785fc`](https://redirect.github.com/biomejs/biome/commit/13785fc8f4be068eccff84a8ad90ac8530d5c992)
Thanks [@&#8203;apple-yagi](https://redirect.github.com/apple-yagi)! -
Biome now supports pnpm catalogs (default and named) when resolving
dependencies for linting. This behavior is opt-in and requires setting
`javascript.resolver.experimentalPnpmCatalogs` to `true`.

- [#&#8203;10028](https://redirect.github.com/biomejs/biome/pull/10028)
[`1009414`](https://redirect.github.com/biomejs/biome/commit/100941409f3ec5e6653e92b2cfbb4100df1becb0)
Thanks [@&#8203;Netail](https://redirect.github.com/Netail)! - Added the
HTML lint rule
[`noInteractiveElementToNoninteractiveRole`](https://biomejs.dev/linter/rules/no-interactive-element-to-noninteractive-role/),
which enforces that non-interactive ARIA roles are not assigned to
interactive HTML elements.

  **Invalid**:

  ```html
  <input role="img" />
  ```

- [#&#8203;9853](https://redirect.github.com/biomejs/biome/pull/9853)
[`816302f`](https://redirect.github.com/biomejs/biome/commit/816302f8c8c9862585c283fce22ffd1817dedf9f)
Thanks [@&#8203;Netail](https://redirect.github.com/Netail)! - Added the
new assist action
[`useSortedSelectionSet`](https://biomejs.dev/assist/actions/use-sorted-selection-set/),
which sorts GraphQL selection sets alphabetically, e.g. `name, age, id`
becomes `age, id, name`.

  **Invalid**:

  ```graphql
  query {
    name
    age
    id
  }
  ```

- [#&#8203;10074](https://redirect.github.com/biomejs/biome/pull/10074)
[`9c7c6eb`](https://redirect.github.com/biomejs/biome/commit/9c7c6eb99f6880aa87ae0e7aff357e978361c4a3)
Thanks
[@&#8203;georgephillips](https://redirect.github.com/georgephillips)! -
Added a `kind` field to the `ImportMatcher` used by the
[`organizeImports`](https://biomejs.dev/assist/actions/organize-imports/)
assist action. The new field selects imports by their syntactic kind and
currently supports `bare` (matching side-effect imports such as `import
"polyfill"`) with optional `!` negation (`!bare`). The matcher composes
with the existing `type` and `source` fields, so users can express
patterns such as "only bare imports that import a CSS file" (`{ "kind":
"bare", "source": "**/*.css" }`).

  For example, with the following configuration:

  ```json
  {
    "assist": {
      "actions": {
        "source": {
          "organizeImports": {
            "level": "on",
            "options": {
              "sortBareImports": true,
              "groups": [
                { "kind": "!bare" },
                ":BLANK_LINE:",
                { "kind": "bare" }
              ]
            }
          }
        }
      }
    }
  }
  ```

  ...the following code:

  ```ts
  import "./register-my-component";
  import { render } from "react-dom";
  import "./polyfill";
  import { Button } from "@&#8203;/components/Button";
  ```

  ...is organized as:

  ```ts
  import { render } from "react-dom";
  import { Button } from "@&#8203;/components/Button";

  import "./polyfill";
  import "./register-my-component";
  ```

- [#&#8203;9171](https://redirect.github.com/biomejs/biome/pull/9171)
[`ce65710`](https://redirect.github.com/biomejs/biome/commit/ce65710f591eb2676df6833e9cd00e310981692b)
Thanks [@&#8203;chocky335](https://redirect.github.com/chocky335)! -
Added `includes` option for plugin file scoping. Plugins can now be
configured with glob patterns to restrict which files they run on. Use
negated globs for exclusions.

  ```json
  {
    "plugins": [
      "global-plugin.grit",
      {
        "path": "scoped-plugin.grit",
        "includes": ["src/**/*.ts", "!**/*.test.ts"]
      }
    ]
  }
  ```

- [#&#8203;9617](https://redirect.github.com/biomejs/biome/pull/9617)
[`dcb99ef`](https://redirect.github.com/biomejs/biome/commit/dcb99ef0305d8431af40b526c449316bb8a70efa)
Thanks [@&#8203;faizkhairi](https://redirect.github.com/faizkhairi)! -
Ported
[`useAriaActivedescendantWithTabindex`](https://biomejs.dev/linter/rules/use-aria-activedescendant-with-tabindex/)
a11y rule to HTML.

- [#&#8203;9496](https://redirect.github.com/biomejs/biome/pull/9496)
[`1dfb829`](https://redirect.github.com/biomejs/biome/commit/1dfb8291a0a2340e7c9220f9126317a7490ec466)
Thanks [@&#8203;aviraldua93](https://redirect.github.com/aviraldua93)! -
Added HTML support for the
[`noAriaHiddenOnFocusable`](https://biomejs.dev/linter/rules/no-aria-hidden-on-focusable/)
accessibility lint rule, which enforces that `aria-hidden="true"` is not
set on focusable elements. Focusable elements include native interactive
elements (`<button>`, `<input>`, `<select>`, `<textarea>`), elements
with `href` (`<a>`, `<area>`), elements with `tabindex >= 0`, and
editing hosts (`contenteditable`). Includes an unsafe fix to remove the
`aria-hidden` attribute.

  ```html
  <!-- Invalid: aria-hidden on a focusable element -->
  <button aria-hidden="true">Submit</button>

  <!-- Valid: aria-hidden on a non-focusable element -->
  <div aria-hidden="true">decorative content</div>
  ```

- [#&#8203;9792](https://redirect.github.com/biomejs/biome/pull/9792)
[`f516854`](https://redirect.github.com/biomejs/biome/commit/f51685404f015a5c6f0fc87b9070ac5d9f0a7b6b)
Thanks
[@&#8203;Maximiliano-Zeballos](https://redirect.github.com/Maximiliano-Zeballos)!
- Added the
[`useSemanticElements`](https://biomejs.dev/linter/rules/use-semantic-elements/)
lint rule for HTML. The rule now detects the use of `role` attributes in
HTML elements and suggests using semantic elements instead.

  For example, the following code is now flagged:

  ```html
  <div role="navigation"></div>
  ```

  The rule suggests using `<nav>` instead.

- [#&#8203;9761](https://redirect.github.com/biomejs/biome/pull/9761)
[`cbbb7d5`](https://redirect.github.com/biomejs/biome/commit/cbbb7d5bf21d8fb6db275da7adcc03c034538635)
Thanks
[@&#8203;Maximiliano-Zeballos](https://redirect.github.com/Maximiliano-Zeballos)!
- Ported the
[`useValidAriaProps`](https://biomejs.dev/linter/rules/use-valid-aria-props/)
lint rule to HTML. This rule checks that all `aria-*` attributes used in
HTML elements are valid ARIA attributes as defined by the WAI-ARIA
specification.

- [#&#8203;9928](https://redirect.github.com/biomejs/biome/pull/9928)
[`aa82576`](https://redirect.github.com/biomejs/biome/commit/aa82576ff66e03924e07729051ac9bfc59cd5aa1)
Thanks [@&#8203;aviraldua93](https://redirect.github.com/aviraldua93)! -
Ported
[`useValidAriaValues`](https://biomejs.dev/linter/rules/use-valid-aria-values/)
to HTML. Biome now validates static `aria-*` attribute values in HTML
elements against WAI-ARIA types, catching invalid values such as
`aria-hidden="yes"`.

- [#&#8203;10562](https://redirect.github.com/biomejs/biome/pull/10562)
[`6642895`](https://redirect.github.com/biomejs/biome/commit/66428957e6ca393a802f365b8e643438f19a3039)
Thanks [@&#8203;ematipico](https://redirect.github.com/ematipico)! -
Promoted 73 nursery rules to stable groups.

  Four rules were renamed as part of the promotion:

- `noFloatingClasses` is now
[`noUnusedInstantiation`](https://biomejs.dev/linter/rules/no-unused-instantiation/),
because the rule checks any discarded `new` expression, not only
classes.
- `noMultiStr` is now
[`noMultilineString`](https://biomejs.dev/linter/rules/no-multiline-string/).
- `useFind` is now
[`useArrayFind`](https://biomejs.dev/linter/rules/use-array-find/).
- `useSpread` is now
[`useSpreadOverApply`](https://biomejs.dev/linter/rules/use-spread-over-apply/),
because the rule enforces spread call arguments over `Function.apply()`,
not array or object spread.

##### Correctness

Promoted the following rules to the `correctness` group:

-
[`noBeforeInteractiveScriptOutsideDocument`](https://biomejs.dev/linter/rules/no-before-interactive-script-outside-document/)
-
[`noUnusedInstantiation`](https://biomejs.dev/linter/rules/no-unused-instantiation/)
-
[`useInlineScriptId`](https://biomejs.dev/linter/rules/use-inline-script-id/)
(recommended, Next.js domain)
-
[`noVueVIfWithVFor`](https://biomejs.dev/linter/rules/no-vue-v-if-with-v-for/)
(recommended, Vue domain)
-
[`useVueValidVBind`](https://biomejs.dev/linter/rules/use-vue-valid-v-bind/)
(recommended, Vue domain)
-
[`useVueValidVElse`](https://biomejs.dev/linter/rules/use-vue-valid-v-else/)
(recommended, Vue domain)
-
[`useVueValidVElseIf`](https://biomejs.dev/linter/rules/use-vue-valid-v-else-if/)
(recommended, Vue domain)
-
[`useVueValidVHtml`](https://biomejs.dev/linter/rules/use-vue-valid-v-html/)
(recommended, Vue domain)
-
[`useVueValidVIf`](https://biomejs.dev/linter/rules/use-vue-valid-v-if/)
(recommended, Vue domain)
-
[`useVueValidVOn`](https://biomejs.dev/linter/rules/use-vue-valid-v-on/)
(recommended, Vue domain)
-
[`useVueValidVText`](https://biomejs.dev/linter/rules/use-vue-valid-v-text/)
(recommended, Vue domain)
-
[`useVueValidTemplateRoot`](https://biomejs.dev/linter/rules/use-vue-valid-template-root/)
(recommended, Vue domain)
-
[`useVueValidVCloak`](https://biomejs.dev/linter/rules/use-vue-valid-v-cloak/)
(recommended, Vue domain)
-
[`useVueValidVOnce`](https://biomejs.dev/linter/rules/use-vue-valid-v-once/)
(recommended, Vue domain)
-
[`useVueValidVPre`](https://biomejs.dev/linter/rules/use-vue-valid-v-pre/)
(recommended, Vue domain)
- [`useVueVForKey`](https://biomejs.dev/linter/rules/use-vue-v-for-key/)
(recommended, Vue domain)
-
[`noDuplicateAttributes`](https://biomejs.dev/linter/rules/no-duplicate-attributes/)
(recommended)
-
[`noDuplicateArgumentNames`](https://biomejs.dev/linter/rules/no-duplicate-argument-names/)
(recommended)
-
[`noDuplicateInputFieldNames`](https://biomejs.dev/linter/rules/no-duplicate-input-field-names/)
(recommended)
-
[`noDuplicateVariableNames`](https://biomejs.dev/linter/rules/no-duplicate-variable-names/)
(recommended)
-
[`noDuplicateEnumValueNames`](https://biomejs.dev/linter/rules/no-duplicate-enum-value-names/)
(recommended)
-
[`useLoneAnonymousOperation`](https://biomejs.dev/linter/rules/use-lone-anonymous-operation/)
(recommended)

##### Suspicious

Promoted the following rules to the `suspicious` group:

- [`noShadow`](https://biomejs.dev/linter/rules/no-shadow/)
-
[`noUnnecessaryConditions`](https://biomejs.dev/linter/rules/no-unnecessary-conditions/)
-
[`noParametersOnlyUsedInRecursion`](https://biomejs.dev/linter/rules/no-parameters-only-used-in-recursion/)
-
[`noUnknownAttribute`](https://biomejs.dev/linter/rules/no-unknown-attribute/)
-
[`useArraySortCompare`](https://biomejs.dev/linter/rules/use-array-sort-compare/)
- [`noForIn`](https://biomejs.dev/linter/rules/no-for-in/)
-
[`noDuplicatedSpreadProps`](https://biomejs.dev/linter/rules/no-duplicated-spread-props/)
-
[`noEqualsToNull`](https://biomejs.dev/linter/rules/no-equals-to-null/)
- [`noProto`](https://biomejs.dev/linter/rules/no-proto/) (recommended)
-
[`noUndeclaredEnvVars`](https://biomejs.dev/linter/rules/no-undeclared-env-vars/)
(recommended, Turborepo domain)
- [`noReturnAssign`](https://biomejs.dev/linter/rules/no-return-assign/)
(default severity: `error`)
-
[`noDuplicateEnumValues`](https://biomejs.dev/linter/rules/no-duplicate-enum-values/)
(recommended)
-
[`noVueArrowFuncInWatch`](https://biomejs.dev/linter/rules/no-vue-arrow-func-in-watch/)
(recommended, Vue domain)
-
[`noNestedPromises`](https://biomejs.dev/linter/rules/no-nested-promises/)
- [`noLeakedRender`](https://biomejs.dev/linter/rules/no-leaked-render/)
-
[`noDeprecatedMediaType`](https://biomejs.dev/linter/rules/no-deprecated-media-type/)
(recommended)
-
[`noDuplicateGraphqlOperationName`](https://biomejs.dev/linter/rules/no-duplicate-graphql-operation-name/)
-
[`useRequiredScripts`](https://biomejs.dev/linter/rules/use-required-scripts/)

##### Style

Promoted the following rules to the `style` group:

-
[`useVueMultiWordComponentNames`](https://biomejs.dev/linter/rules/use-vue-multi-word-component-names/)
(recommended, Vue domain)
-
[`useVueDefineMacrosOrder`](https://biomejs.dev/linter/rules/use-vue-define-macros-order/)
-
[`noIncrementDecrement`](https://biomejs.dev/linter/rules/no-increment-decrement/)
- [`noContinue`](https://biomejs.dev/linter/rules/no-continue/)
-
[`useSpreadOverApply`](https://biomejs.dev/linter/rules/use-spread-over-apply/)
- [`noTernary`](https://biomejs.dev/linter/rules/no-ternary/)
-
[`noMultilineString`](https://biomejs.dev/linter/rules/no-multiline-string/)
- [`noMultiAssign`](https://biomejs.dev/linter/rules/no-multi-assign/)
-
[`noExcessiveClassesPerFile`](https://biomejs.dev/linter/rules/no-excessive-classes-per-file/)
-
[`noExcessiveLinesPerFile`](https://biomejs.dev/linter/rules/no-excessive-lines-per-file/)
-
[`noVueOptionsApi`](https://biomejs.dev/linter/rules/no-vue-options-api/)
- [`useErrorCause`](https://biomejs.dev/linter/rules/use-error-cause/)
-
[`useConsistentEnumValueType`](https://biomejs.dev/linter/rules/use-consistent-enum-value-type/)
-
[`useConsistentMethodSignatures`](https://biomejs.dev/linter/rules/use-consistent-method-signatures/)
- [`useGlobalThis`](https://biomejs.dev/linter/rules/use-global-this/)
(default severity: `warn`)
-
[`useDestructuring`](https://biomejs.dev/linter/rules/use-destructuring/)
-
[`useVueHyphenatedAttributes`](https://biomejs.dev/linter/rules/use-vue-hyphenated-attributes/)
(recommended, Vue domain)
-
[`useVueConsistentVBindStyle`](https://biomejs.dev/linter/rules/use-vue-consistent-v-bind-style/)
(recommended, Vue domain)
-
[`useVueConsistentVOnStyle`](https://biomejs.dev/linter/rules/use-vue-consistent-v-on-style/)
(recommended, Vue domain)
- [`noHexColors`](https://biomejs.dev/linter/rules/no-hex-colors/)
-
[`useConsistentGraphqlDescriptions`](https://biomejs.dev/linter/rules/use-consistent-graphql-descriptions/)
- [`noRootType`](https://biomejs.dev/linter/rules/no-root-type/)
-
[`useLoneExecutableDefinition`](https://biomejs.dev/linter/rules/use-lone-executable-definition/)
- [`useInputName`](https://biomejs.dev/linter/rules/use-input-name/)

##### Complexity

Promoted the following rules to the `complexity` group:

- [`useArrayFind`](https://biomejs.dev/linter/rules/use-array-find/)
-
[`noRedundantDefaultExport`](https://biomejs.dev/linter/rules/no-redundant-default-export/)
(default severity: `warn`)
-
[`noUselessReturn`](https://biomejs.dev/linter/rules/no-useless-return/)
- [`noDivRegex`](https://biomejs.dev/linter/rules/no-div-regex/)

##### Performance

Promoted the following rules to the `performance` group:

- [`noSyncScripts`](https://biomejs.dev/linter/rules/no-sync-scripts/)
-
[`noJsxPropsBind`](https://biomejs.dev/linter/rules/no-jsx-props-bind/)
- [`useVueVapor`](https://biomejs.dev/linter/rules/use-vue-vapor/)

##### Security

Promoted the following rules to the `security` group:

- [`noScriptUrl`](https://biomejs.dev/linter/rules/no-script-url/)
(recommended)

##### A11y

Promoted the following rules to the `a11y` group:

-
[`noAmbiguousAnchorText`](https://biomejs.dev/linter/rules/no-ambiguous-anchor-text/)
(recommended)

- [#&#8203;10121](https://redirect.github.com/biomejs/biome/pull/10121)
[`450f8e1`](https://redirect.github.com/biomejs/biome/commit/450f8e1c0a46e8c867a63a0842deaa50dee95176)
Thanks [@&#8203;jongwan56](https://redirect.github.com/jongwan56)! -
Biome now applies Git's local exclude file when VCS ignore files are
enabled. Files listed in `.git/info/exclude` are skipped the same way as
files listed in `.gitignore`, including in linked worktrees.

- [#&#8203;9397](https://redirect.github.com/biomejs/biome/pull/9397)
[`d5913c9`](https://redirect.github.com/biomejs/biome/commit/d5913c9d57b771b0b1c0097f8014017878cc14c2)
Thanks [@&#8203;mvarendorff](https://redirect.github.com/mvarendorff)! -
Added `ignore` option to the
[noUnusedVariables](https://biomejs.dev/linter/rules/no-unused-variables/)
rule. The option allows excluding identifiers by providing a list of
ignored names. It also allows excluding kinds of identifiers from this
rule entirely, which may be useful when loading classes dynamically.

For example, unused classes as well as all unused variables, functions,
etc. called "unused" may be ignored entirely with the following
configuration:

  ```json
  {
    "ignore": {
      "*": ["unused"],
      "class": ["*"]
    }
  }
  ```

- [#&#8203;10089](https://redirect.github.com/biomejs/biome/pull/10089)
[`71a21f0`](https://redirect.github.com/biomejs/biome/commit/71a21f0ab4fd32739331d3b3068c6c1ae6392290)
Thanks [@&#8203;Netail](https://redirect.github.com/Netail)! - Added the
lint rule
[`noLabelWithoutControl`](https://biomejs.dev/linter/rules/no-label-without-control/)
to HTML, which enforces that a label element or component has a text
label and an associated input.

  ```html
  <label></label>
  ```

- [#&#8203;10015](https://redirect.github.com/biomejs/biome/pull/10015)
[`1828261`](https://redirect.github.com/biomejs/biome/commit/182826178de9c1b23bad2e997c3567a9d5176ba2)
Thanks [@&#8203;Netail](https://redirect.github.com/Netail)! - Added the
HTML lint rule
[`useAriaPropsSupportedByRole`](https://biomejs.dev/linter/rules/use-aria-props-supported-by-role/),
which enforces that ARIA properties are valid for the roles that are
supported by the element.

  ```html
  <a href="#" aria-checked></a>
  ```

- [#&#8203;10234](https://redirect.github.com/biomejs/biome/pull/10234)
[`1a51569`](https://redirect.github.com/biomejs/biome/commit/1a51569229936b9ad1191d081ed6742e8342badd)
Thanks [@&#8203;ematipico](https://redirect.github.com/ematipico)! -
Added the `delimiterSpacing` formatter option. This option inserts
spaces inside delimiters (after the opening delimiter and before the
closing delimiter) when the content fits on a single line. Empty
delimiters are not affected, and no space is added before the opening
delimiter. The specific delimiters affected depend on the language. It
can be configured globally via `formatter.delimiterSpacing` or
per-language via `javascript.formatter.delimiterSpacing`,
`json.formatter.delimiterSpacing`, and `css.formatter.delimiterSpacing`.
Defaults to `false`.

  ```diff
  - callFn(foo)
  + callFn( foo )
  ```

  ```diff
  - const arr = [1, 2, 3];
  + const arr = [ 1, 2, 3 ];
  ```

  ##### JavaScript

When enabled, Biome inserts spaces inside parentheses (e.g., `foo( a, b
)`), square brackets (e.g., `[ a, b ]`), template literal interpolations
(e.g., `${ expr }`), and the logical NOT operator (e.g., `! x`, but in
chains only after the last one: `!! x`). Only applies when the content
fits on a single line. Empty delimiters and the space before the opening
delimiter are not affected.

  ```diff
  - if (condition) {}
  + if ( condition ) {}
  ```

  ```diff
  - `Hello ${name}!`
  + `Hello ${ name }!`
  ```

  ##### JSX

When enabled, Biome inserts spaces inside JSX expression braces (e.g.,
`attr={ value }`) and spread attributes (e.g., `{ ...props }`). Only
applies when the content fits on a single line. Empty delimiters are not
affected.

  ```diff
  - <Foo bar={value} />
  + <Foo bar={ value } />
  ```

  ##### TypeScript

When enabled, Biome inserts spaces inside TypeScript angle brackets
(e.g., `foo< T >()`), indexed access types (e.g., `T[ K ]`), mapped
types, tuple types, type parameters, and index signatures. Only applies
when the content fits on a single line. Empty delimiters are not
affected.

  ```diff
  - type Result = Map<string, number>;
  + type Result = Map< string, number >;
  ```

  ##### JSON

When enabled, Biome inserts spaces inside square brackets when the
content fits on a single line. Empty brackets are not affected.

  ```diff
  - [1, 2, 3]
  + [ 1, 2, 3 ]
  ```

  ##### CSS

When enabled, Biome inserts spaces inside parentheses and square
brackets when the content fits on a single line. Empty delimiters are
not affected.

  ```diff
  - rgba(0, 0, 0, 1)
  + rgba( 0, 0, 0, 1 )
  ```

  ```diff
  - [data-attr]
  + [ data-attr ]
  ```

- [#&#8203;10461](https://redirect.github.com/biomejs/biome/pull/10461)
[`6bac1c3`](https://redirect.github.com/biomejs/biome/commit/6bac1c3457d396215e4daed5fc59eaf23b42f4eb)
Thanks [@&#8203;TXWSLYF](https://redirect.github.com/TXWSLYF)! -
Implements
[#&#8203;9445](https://redirect.github.com/biomejs/biome/issues/9445).
Added the `allowImplicit` option to
[`useIterableCallbackReturn`](https://biomejs.dev/linter/rules/use-iterable-callback-return/).
When enabled, callbacks can use `return;` to implicitly return
`undefined`, matching ESLint's `array-callback-return` rule.

- [#&#8203;9571](https://redirect.github.com/biomejs/biome/pull/9571)
[`5a8eb75`](https://redirect.github.com/biomejs/biome/commit/5a8eb755fe07b38760d2b72ec46e24cd108f6619)
Thanks [@&#8203;dyc3](https://redirect.github.com/dyc3)! - Added
configurable options to the
[`useNumericSeparators`](https://biomejs.dev/linter/rules/use-numeric-separators/)
rule. Users can now customize the minimum number of digits required
before adding separators and the group length for each type of numeric
literal (`binary`, `octal`, `decimal`, `hexadecimal`).

  ```json
  {
    "linter": {
      "rules": {
        "style": {
          "useNumericSeparators": {
            "level": "error",
            "options": {
              "decimal": {
                "minimumDigits": 7,
                "groupLength": 3
              },
              "hexadecimal": {
                "minimumDigits": 4,
                "groupLength": 2
              }
            }
          }
        }
      }
    }
  }
  ```

- [#&#8203;10067](https://redirect.github.com/biomejs/biome/pull/10067)
[`6064312`](https://redirect.github.com/biomejs/biome/commit/60643120b5593104b311e184cf9581b9c7c2254d)
Thanks [@&#8203;Netail](https://redirect.github.com/Netail)! - Added the
lint rule
[`useFocusableInteractive`](https://biomejs.dev/linter/rules/use-focusable-interactive/)
to HTML, which enforces elements with an interactive role and
interaction handler to be focusable.

  **Invalid**:

  ```html
  <div role="button"></div>
  ```

- [#&#8203;10026](https://redirect.github.com/biomejs/biome/pull/10026)
[`fb42ac4`](https://redirect.github.com/biomejs/biome/commit/fb42ac42079ec7b8e699a507bce332f4446ac7f2)
Thanks [@&#8203;Netail](https://redirect.github.com/Netail)! - Added the
HTML lint rule
[`noNoninteractiveElementInteractions`](https://biomejs.dev/linter/rules/no-noninteractive-element-interactions/),
which disallows use event handlers on non-interactive elements.

  **Invalid**:

  ```html
  <div onclick="myFunction()">button</div>
  ```

- [#&#8203;10000](https://redirect.github.com/biomejs/biome/pull/10000)
[`2093e3e`](https://redirect.github.com/biomejs/biome/commit/2093e3ee2a615abecae159d35a5a17fe0df5f506)
Thanks [@&#8203;Netail](https://redirect.github.com/Netail)! - Added the
new assist action
[`useSortedEnumMembers`](https://biomejs.dev/assist/actions/use-sorted-enum-members/),
which sorts TypeScript & GraphQL enum members.

  **Invalid**:

  ```graphql
  enum Role {
    SUPER_ADMIN
    ADMIN
    USER
    GOD
  }
  ```

- [#&#8203;10013](https://redirect.github.com/biomejs/biome/pull/10013)
[`ad01d3d`](https://redirect.github.com/biomejs/biome/commit/ad01d3d882276b070433822f01cdf6afed63ca4e)
Thanks [@&#8203;Netail](https://redirect.github.com/Netail)! - Added the
HTML lint rule
[`useValidAutocomplete`](https://biomejs.dev/linter/rules/use-valid-autocomplete/),
which enforces using valid values for the `autocomplete` attribute on
`input` elements.

  ```html
  <input autocomplete="incorrect" />
  ```

##### Patch Changes

- [#&#8203;10498](https://redirect.github.com/biomejs/biome/pull/10498)
[`995c1ff`](https://redirect.github.com/biomejs/biome/commit/995c1ffeca039787c93370fed8b970a057e9c073)
Thanks [@&#8203;citadelgrad](https://redirect.github.com/citadelgrad)! -
Added the nursery rule
[`useReactFunctionComponentDefinition`](https://biomejs.dev/linter/rules/use-react-function-component-definition),
which enforces a consistent function type for named React function
components.

  For example, the following snippet triggers the rule by default.

  ```jsx
  const MyComponent = (props) => {
    return <div>{props.name}</div>;
  };
  ```

- [#&#8203;9974](https://redirect.github.com/biomejs/biome/pull/9974)
[`ff635a9`](https://redirect.github.com/biomejs/biome/commit/ff635a90da3567a9006ae947b6c5983d87dfbb9f)
Thanks [@&#8203;pkallos](https://redirect.github.com/pkallos)! - Added
`ignoreMixedLogicalExpressions` to
[useNullishCoalescing](https://biomejs.dev/linter/rules/use-nullish-coalescing/),
partially addressing
[#&#8203;9232](https://redirect.github.com/biomejs/biome/issues/9232).
When enabled, Biome ignores `||` and `||=` mixed with `&&` in the same
expression tree.

- [#&#8203;10503](https://redirect.github.com/biomejs/biome/pull/10503)
[`c656679`](https://redirect.github.com/biomejs/biome/commit/c656679d1f9e725a42e5d60fb3b9e76bb03d7f88)
Thanks [@&#8203;Mokto](https://redirect.github.com/Mokto)! - Added the
new nursery rule `useSvelteRequireEachKey`, a Svelte lint rule that
reports `{#each}` blocks with item bindings that are missing a key.

- [#&#8203;10516](https://redirect.github.com/biomejs/biome/pull/10516)
[`0f29b83`](https://redirect.github.com/biomejs/biome/commit/0f29b8361ba3cd11bdbfb91f8ff722184cfadf08)
Thanks [@&#8203;Dotify71](https://redirect.github.com/Dotify71)! - Added
[`useIncludes`](https://biomejs.dev/linter/rules/use-includes/) to the
nursery group. This rule flags comparisons of
`String.prototype.indexOf()` or `Array.prototype.indexOf()` against `-1`
and suggests replacing them with the clearer `includes()` /
`!includes()` form.

- [#&#8203;10487](https://redirect.github.com/biomejs/biome/pull/10487)
[`0c03ee3`](https://redirect.github.com/biomejs/biome/commit/0c03ee3deee068220175c3599e6bc3c4ed8ad247)
Thanks [@&#8203;Mokto](https://redirect.github.com/Mokto)! - Fixed a
Svelte parser error that incorrectly required a binding variable after
`{:then}` and `{:catch}`. Biome now correctly accepts `{:then}` and
`{:catch}` without a binding, as well as the `{#await expr then}` and
`{#await expr catch}` shorthand forms.

- [#&#8203;10566](https://redirect.github.com/biomejs/biome/pull/10566)
[`a4a294c`](https://redirect.github.com/biomejs/biome/commit/a4a294c3c1128fc5b38634262d499d3d2601bf3b)
Thanks [@&#8203;dyc3](https://redirect.github.com/dyc3)! - Fixed
[`useVueHyphenatedAttributes`](https://biomejs.dev/linter/rules/use-vue-hyphenated-attributes/):
The rule now only reports diagnostics in Vue files and ignores SVG
elements.

- [#&#8203;10565](https://redirect.github.com/biomejs/biome/pull/10565)
[`72ccf3b`](https://redirect.github.com/biomejs/biome/commit/72ccf3b042c4258f9871ff5b99d87f879cecccde)
Thanks [@&#8203;dyc3](https://redirect.github.com/dyc3)! - Fixed
[`useVueConsistentVBindStyle`](https://biomejs.dev/linter/rules/use-vue-consistent-v-bind-style/):
The rule no longer reports argument-less `v-bind` directives because
they cannot be converted to shorthand syntax.

- [#&#8203;10591](https://redirect.github.com/biomejs/biome/pull/10591)
[`6e8557b`](https://redirect.github.com/biomejs/biome/commit/6e8557b1b8e49ce2383f6089a46624eb030178ad)
Thanks
[@&#8203;xsourabhsharma](https://redirect.github.com/xsourabhsharma)! -
Fixed
[#&#8203;10563](https://redirect.github.com/biomejs/biome/issues/10563):
Biome now parses comma-separated CSS Modules `composes` values, such as
`composes: classA from "./a.css", classB from "./b.css";`.

- [#&#8203;10603](https://redirect.github.com/biomejs/biome/pull/10603)
[`174b21b`](https://redirect.github.com/biomejs/biome/commit/174b21b52993fc3e0237ceefe97c0d71c9b5264e)
Thanks [@&#8203;denbezrukov](https://redirect.github.com/denbezrukov)! -
Fixed CSS formatting for `grid-template-areas` declarations with
comments before multiline values. Biome now keeps grid area rows aligned
instead of adding an extra declaration-boundary indent.

  ```diff
   .grid {
     grid-template-areas:
   /* row */
  -      "header header"
  -      "footer footer";
  +    "header header"
  +    "footer footer";
   }
  ```

- [#&#8203;10542](https://redirect.github.com/biomejs/biome/pull/10542)
[`c3f07f7`](https://redirect.github.com/biomejs/biome/commit/c3f07f773edeb7f098c778392c5e2d6bb92b78fb)
Thanks [@&#8203;dyc3](https://redirect.github.com/dyc3)! - Fixed
[#&#8203;10513](https://redirect.github.com/biomejs/biome/issues/10513):
Biome no longer rejects literal `\u` sequences in quoted HTML attribute
values.

- [#&#8203;10108](https://redirect.github.com/biomejs/biome/pull/10108)
[`24e51d6`](https://redirect.github.com/biomejs/biome/commit/24e51d6edebaee0ffb938bc20633d9c3403110c9)
Thanks [@&#8203;IxxyDev](https://redirect.github.com/IxxyDev)! - Fixed
[#&#8203;6611](https://redirect.github.com/biomejs/biome/issues/6611):
[`noUnnecessaryConditions`](https://biomejs.dev/linter/rules/no-unnecessary-conditions/)
now uses type information to detect more redundant conditions, including
`?.`, `??`, `||`, `&&`, comparisons against `null`/`undefined` on
non-nullish operands, and `case` clauses that can never match the
`switch` value.

- [#&#8203;10568](https://redirect.github.com/biomejs/biome/pull/10568)
[`eb1ed0e`](https://redirect.github.com/biomejs/biome/commit/eb1ed0e90395a07e64ee763fe15ae00fb77682e0)
Thanks [@&#8203;harsha-cpp](https://redirect.github.com/harsha-cpp)! -
Fixed
[#&#8203;10564](https://redirect.github.com/biomejs/biome/issues/10564):
`useAriaPropsForRole` no longer reports false positives for Vue v-bind
shorthand bindings (`:aria-checked`, `:aria-level`, etc.).

- [#&#8203;10570](https://redirect.github.com/biomejs/biome/pull/10570)
[`2ceb4fe`](https://redirect.github.com/biomejs/biome/commit/2ceb4fe437b77b08a60ad48efde2a6c311b7d2e3)
Thanks [@&#8203;Conaclos](https://redirect.github.com/Conaclos)! -
Improved [`noTsIgnore`](https://biomejs.dev/linter/rules/no-ts-ignore/).
The rule now reports more precisely the range of the `@ts-ignore`
comment.

- [#&#8203;10520](https://redirect.github.com/biomejs/biome/pull/10520)
[`b55d10f`](https://redirect.github.com/biomejs/biome/commit/b55d10f5e8f3099b3f246911ca19cc79758d55e0)
Thanks [@&#8203;dyc3](https://redirect.github.com/dyc3)! - Fixed
[#&#8203;10519](https://redirect.github.com/biomejs/biome/issues/10519):
Vue `v-on` event handlers with multiple inline statements are now parsed
consistently with Vue.

- [#&#8203;10204](https://redirect.github.com/biomejs/biome/pull/10204)
[`ebbf0bd`](https://redirect.github.com/biomejs/biome/commit/ebbf0bd382059936ac00de29fc58931728f854d9)
Thanks [@&#8203;ematipico](https://redirect.github.com/ematipico)! -
Improved the performance of the Biome linter. The improvements are more
visible in bigger projects that have more than \~1k files. Early tests
showed that in a code base with \~2k files, Biome took less than 26% of
time to finish the command.

- [#&#8203;10546](https://redirect.github.com/biomejs/biome/pull/10546)
[`e39bb2c`](https://redirect.github.com/biomejs/biome/commit/e39bb2c23063ad0384a12e01d666909fd6b26735)
Thanks [@&#8203;tim-we](https://redirect.github.com/tim-we)! - Fixed
[`#10536`](https://redirect.github.com/biomejs/biome/issues/10536):
[noUnknownFunction](https://biomejs.dev/linter/rules/no-unknown-function/)
no longer flagged CSS `contrast-color()` as unknown. `contrast-color()`
is Baseline 2026.

- [#&#8203;8012](https://redirect.github.com/biomejs/biome/pull/8012)
[`2be0264`](https://redirect.github.com/biomejs/biome/commit/2be02648a090153a93cf71fb63ef68feefd495c2)
Thanks [@&#8203;denbezrukov](https://redirect.github.com/denbezrukov)! -
Improved the performance of the formatter in some cases. The formatter
is now up to \~20% faster at formatting files.

- [#&#8203;10467](https://redirect.github.com/biomejs/biome/pull/10467)
[`9a5855e`](https://redirect.github.com/biomejs/biome/commit/9a5855e4191c98149f8278289569b2272b992684)
Thanks [@&#8203;Netail](https://redirect.github.com/Netail)! - Added a
new nursery rule
[`noRestrictedDependencies`](https://biomejs.dev/linter/rules/no-restricted-dependencies/),
which flags imports and `package.json` dependency entries that have
better alternatives in e18e's module replacement data.

For example, the package `globby` is reported because there's a better
alternative:

  ```js
  import glob from "globby";
  ```

  ```json
  {
    "dependencies": {
      "globby": "x.x.x"
    }
  }
  ```

- [#&#8203;10470](https://redirect.github.com/biomejs/biome/pull/10470)
[`84b43c5`](https://redirect.github.com/biomejs/biome/commit/84b43c5969569cb3eea3d51ea6c602276723306b)
Thanks
[@&#8203;ShaharAviram1](https://redirect.github.com/ShaharAviram1)! -
Fixed
[#&#8203;10447](https://redirect.github.com/biomejs/biome/issues/10447):
now the rule
[`noProcessEnv`](https://biomejs.dev/linter/rules/no-process-env)
detects the use of `env` when it's imported from `process` and
`node:process`.

- [#&#8203;10556](https://redirect.github.com/biomejs/biome/pull/10556)
[`7ff6b16`](https://redirect.github.com/biomejs/biome/commit/7ff6b165f2f62a0836446dee889d9868f12fb06e)
Thanks [@&#8203;ematipico](https://redirect.github.com/ematipico)! -
Fixed
[#&#8203;10492](https://redirect.github.com/biomejs/biome/issues/10492):
Biome no longer crashes with a stack overflow on certain code when a
type-aware rule such as
[`noFloatingPromises`](https://biomejs.dev/linter/rules/no-floating-promises/),
[`noMisusedPromises`](https://biomejs.dev/linter/rules/no-misused-promises/),
or
[`noUnnecessaryConditions`](https://biomejs.dev/linter/rules/no-unnecessary-conditions/)
is enabled. For example, the following code used to crash Biome:

  ```js
  function f(visitor) {
    let ctrl = visitor();
    for (const x of [0]) ctrl = ctrl();
  }
  ```

- [#&#8203;10532](https://redirect.github.com/biomejs/biome/pull/10532)
[`1da3c75`](https://redirect.github.com/biomejs/biome/commit/1da3c7573cdb1d097fc1773fee686140d95f3f35)
Thanks [@&#8203;denbezrukov](https://redirect.github.com/denbezrukov)! -
CSS declarations with comments before `:` or after `!important` now
preserve spaces before `:` and `;`.

  ```diff
   .selector {
  -  padding/* name */: 1px;
  -  color: red !important /* note */;
  +  padding/* name */ : 1px;
  +  color: red !important /* note */ ;
   }
  ```

- [#&#8203;10491](https://redirect.github.com/biomejs/biome/pull/10491)
[`a1b5834`](https://redirect.github.com/biomejs/biome/commit/a1b5834d4968fd518cc4adfa0e8b4b65b2232637)
Thanks [@&#8203;Mokto](https://redirect.github.com/Mokto)! - Fixed the
Svelte parser rejecting `{#each}` blocks where the binding uses object
destructuring with property renaming, e.g. `{#each items as { id,
component: Filter }}`. Biome now correctly parses and formats these
rename bindings.

- [#&#8203;10490](https://redirect.github.com/biomejs/biome/pull/10490)
[`99bc7df`](https://redirect.github.com/biomejs/biome/commit/99bc7df1d1cbb599e9713da56c29763cd04bb53c)
Thanks [@&#8203;Mokto](https://redirect.github.com/Mokto)! - Fixed the
CSS parser rejecting comma-separated selector lists inside `:global()`
and `:local()` pseudo-class functions. Biome now correctly parses
`:global(.foo, .bar)`.

- [#&#8203;10543](https://redirect.github.com/biomejs/biome/pull/10543)
[`c394fae`](https://redirect.github.com/biomejs/biome/commit/c394faeaa27f9f7db8ba075afc6657c0245d8276)
Thanks [@&#8203;mangod12](https://redirect.github.com/mangod12)! - Fixed
[#&#8203;10477](https://redirect.github.com/biomejs/biome/issues/10477):
The RDJSON reporter now emits code replacement text for fix suggestions
instead of the human-readable fix description.

- [#&#8203;10530](https://

> ✂ **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:eyJjcmVhdGVkSW5WZXIiOiI0My4yMDkuNCIsInVwZGF0ZWRJblZlciI6IjQzLjIxOS4wIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-13 16:44:35 +10:00
Bryce D. Greybeard d9dd73f5b6 Add templ XML lexer (#1283)
Adds a templ lexer as an XML lexer definition under
`lexers/embedded/templ.xml`.

This replaces the earlier Go-based lexer approach from #1277, following
maintainer feedback to use an XML lexer instead.

Includes fixtures for:
- templ component declarations
- HTML tags and attributes
- Go expressions in `{ ... }`
- braced attribute values
- templ control flow (`if` / `else`)
- component calls with `@Button(...)`
- analyser coverage

Local test gates:
- `go test ./lexers -count=1`
- `go test ./... -count=1`
2026-06-08 00:00:31 +00:00
renovate[bot] effffdb6de chore(deps): update all non-major dependencies (#1280)
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.15` → `2.4.16` |
![age](https://developer.mend.io/api/mc/badges/age/hermit/biome/2.4.16?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/hermit/biome/2.4.15/2.4.16?slim=true)
|
| [bit](https://redirect.github.com/alecthomas/bit) | | patch | `0.20.1`
→ `0.20.2` |
![age](https://developer.mend.io/api/mc/badges/age/hermit/bit/0.20.2?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/hermit/bit/0.20.1/0.20.2?slim=true)
|
| [caddy](https://redirect.github.com/caddyserver/caddy) | | patch |
`2.11.3` → `2.11.4` |
![age](https://developer.mend.io/api/mc/badges/age/hermit/caddy/2.11.4?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/hermit/caddy/2.11.3/2.11.4?slim=true)
|
|
[github.com/alecthomas/chroma/v2](https://redirect.github.com/alecthomas/chroma)
| require | minor | `v2.24.1` → `v2.26.1` |
![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2falecthomas%2fchroma%2fv2/v2.26.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2falecthomas%2fchroma%2fv2/v2.24.1/v2.26.1?slim=true)
|
|
[github.com/dlclark/regexp2/v2](https://redirect.github.com/dlclark/regexp2)
| require | patch | `v2.1.1` → `v2.1.2` |
![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fdlclark%2fregexp2%2fv2/v2.1.2?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fdlclark%2fregexp2%2fv2/v2.1.1/v2.1.2?slim=true)
|
|
[github.com/mattn/go-colorable](https://redirect.github.com/mattn/go-colorable)
| require | patch | `v0.1.14` → `v0.1.15` |
![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fmattn%2fgo-colorable/v0.1.15?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fmattn%2fgo-colorable/v0.1.14/v0.1.15?slim=true)
|
| [go](https://redirect.github.com/golang/go) | | patch | `1.26.3` →
`1.26.4` |
![age](https://developer.mend.io/api/mc/badges/age/hermit/go/1.26.4?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/hermit/go/1.26.3/1.26.4?slim=true)
|
| [uv](https://redirect.github.com/astral-sh/uv) | | patch | `0.11.16` →
`0.11.19` |
![age](https://developer.mend.io/api/mc/badges/age/hermit/uv/0.11.19?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/hermit/uv/0.11.16/0.11.19?slim=true)
|

---

### Release Notes

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

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

#### 2.4.16

##### Patch Changes

- [#&#8203;10329](https://redirect.github.com/biomejs/biome/pull/10329)
[`ef764d5`](https://redirect.github.com/biomejs/biome/commit/ef764d51b9f5be18ec5a4f9b4dce732512e5d805)
Thanks [@&#8203;Conaclos](https://redirect.github.com/Conaclos)! - Fixed
an issue where diagnostics showed an incorrect location in Astro files.

- [#&#8203;10363](https://redirect.github.com/biomejs/biome/pull/10363)
[`50aa415`](https://redirect.github.com/biomejs/biome/commit/50aa4157599a1ac5c77c13bce81f5c87240beff0)
Thanks [@&#8203;dyc3](https://redirect.github.com/dyc3)! - Fixed HTML
formatting for a case where comments could cause the formatter to split
up a closing tag, which would cause the resulting HTML to be
syntactically invalid.

  Input:

  ```html
  <span
    ><!-- 1
  --><span>a</span
    ><!-- 2
  --><span>b</span
    ><!-- 3
  --></span>
  ```

  Output:

  ```diff
    <span
  	  ><!-- 1
  - --> <span>a</span<!-- 2
  - --> ><span>b</span><!-- 3
  + --><span>a</span><!-- 2
  + --><span>b</span><!-- 3
    --></span
    >
  ```

- [#&#8203;10465](https://redirect.github.com/biomejs/biome/pull/10465)
[`0c718da`](https://redirect.github.com/biomejs/biome/commit/0c718da81770f47d65845bc1a006f99512d9359b)
Thanks
[@&#8203;dfedoryshchev](https://redirect.github.com/dfedoryshchev)! -
Fixed diagnostics emitted by the `noUntrustedLicenses` rule.

- [#&#8203;10358](https://redirect.github.com/biomejs/biome/pull/10358)
[`05c2617`](https://redirect.github.com/biomejs/biome/commit/05c26176573534a0abfa92d454d244f9569bc77d)
Thanks [@&#8203;dyc3](https://redirect.github.com/dyc3)! - Fixed
[#&#8203;10356](https://redirect.github.com/biomejs/biome/issues/10356):
`biome rage --linter` now displays rules enabled through linter domains
in the enabled rules list.

- [#&#8203;10300](https://redirect.github.com/biomejs/biome/pull/10300)
[`950247c`](https://redirect.github.com/biomejs/biome/commit/950247c389e693c16b47d61d8ef0f1b85d1a1b02)
Thanks [@&#8203;dyc3](https://redirect.github.com/dyc3)! - Fixed
[#&#8203;10265](https://redirect.github.com/biomejs/biome/issues/10265):
Svelte function bindings such as `bind:value={get, set}` are now parsed
more precisely, so
[`noCommaOperator`](https://biomejs.dev/linter/rules/no-comma-operator/)
won't emit false positives for that syntax anymore.

- [#&#8203;9786](https://redirect.github.com/biomejs/biome/pull/9786)
[`e71f584`](https://redirect.github.com/biomejs/biome/commit/e71f58490f3121432d1bc24ae5330ecf96391a40)
Thanks [@&#8203;MeGaNeKoS](https://redirect.github.com/MeGaNeKoS)! -
Fixed
[#&#8203;8480](https://redirect.github.com/biomejs/biome/issues/8480):
[`useDestructuring`](https://biomejs.dev/linter/rules/use-destructuring/)
now provides `variableDeclarator` and `assignmentExpression` options to
control which contexts enforce destructuring, matching ESLint's
`prefer-destructuring` configuration. Both default to `{array: true,
object: true}`. The diagnostic for object destructuring in assignment
expressions now instructs users to wrap the assignment in parentheses.

- [#&#8203;10425](https://redirect.github.com/biomejs/biome/pull/10425)
[`1948b72`](https://redirect.github.com/biomejs/biome/commit/1948b7242e092ed0cfcf501ef6f119202b8ea93b)
Thanks [@&#8203;sjh9714](https://redirect.github.com/sjh9714)! - Fixed
[#&#8203;10244](https://redirect.github.com/biomejs/biome/issues/10244):
The `useOptionalChain` rule now detects negated guard inequality chains
like `!foo || foo.bar !== "x"`.

- [#&#8203;10442](https://redirect.github.com/biomejs/biome/pull/10442)
[`001f94f`](https://redirect.github.com/biomejs/biome/commit/001f94f696d9baca3c231d39895a01d4dd528d52)
Thanks [@&#8203;ematipico](https://redirect.github.com/ematipico)! -
Fixed
[#&#8203;10411](https://redirect.github.com/biomejs/biome/issues/10411):
[`noMisusedPromises`](https://biomejs.dev/linter/rules/no-misused-promises/)
no longer causes a stack overflow when a nested function returns an
object with shorthand properties that shadow destructured variables from
an outer scope.

- [#&#8203;10318](https://redirect.github.com/biomejs/biome/pull/10318)
[`9b1577f`](https://redirect.github.com/biomejs/biome/commit/9b1577fa400279d9b0222cbc920cfa9ddcf1c9d6)
Thanks [@&#8203;dyc3](https://redirect.github.com/dyc3)! - Added support
for `formatter.trailingCommas` in overrides. This option was previously
available in the top-level formatter configuration but missing from
formatter overrides.

- [#&#8203;10319](https://redirect.github.com/biomejs/biome/pull/10319)
[`2e37709`](https://redirect.github.com/biomejs/biome/commit/2e3770923f9fb4e33606113e726014f7b63730d0)
Thanks [@&#8203;dyc3](https://redirect.github.com/dyc3)! - Fixed Vue and
Svelte formatting for standalone interpolations in inline elements.
Biome now preserves existing newlines in cases like:

  ```diff
  - <span> {{ value }} </span>
  + <span>
  +   {{ value }}
  + </span>
  ```

- [#&#8203;10365](https://redirect.github.com/biomejs/biome/pull/10365)
[`0a58eb0`](https://redirect.github.com/biomejs/biome/commit/0a58eb0982460b757a26f94d958a7e40c0686227)
Thanks [@&#8203;Netail](https://redirect.github.com/Netail)! - Fixed
[#&#8203;10361](https://redirect.github.com/biomejs/biome/issues/10361):
[`noUnusedFunctionParameters`](https://biomejs.dev/linter/rules/no-unused-function-parameters/)
now mentions the parameter name in the diagnostic.

- [#&#8203;10439](https://redirect.github.com/biomejs/biome/pull/10439)
[`df6b867`](https://redirect.github.com/biomejs/biome/commit/df6b867bb6fd210cc75ac03d832e7281eced5b61)
Thanks [@&#8203;denbezrukov](https://redirect.github.com/denbezrukov)! -
Fixed CSS and SCSS formatting for comments around declaration colons so
comments between property names, colons, and values stay at the same
boundary as Prettier.

  ```diff
   .selector {
  -  color: /* red, */
  -    blue;
  +  color: /* red, */ blue;
   }
  ```

- [#&#8203;10344](https://redirect.github.com/biomejs/biome/pull/10344)
[`b30208c`](https://redirect.github.com/biomejs/biome/commit/b30208c06365907d6fb376f030bc75bbf5e3dea9)
Thanks [@&#8203;siketyan](https://redirect.github.com/siketyan)! - Fixed
[`#10123`](https://redirect.github.com/biomejs/biome/issues/10123):
Corrected the
[`noReactNativeDeepImports`](https://biomejs.dev/linter/rules/no-react-native-deep-imports/)
source rule to point to the proper upstream rule, so users can migrate
from the original rule correctly.

- [#&#8203;10328](https://redirect.github.com/biomejs/biome/pull/10328)
[`b59133f`](https://redirect.github.com/biomejs/biome/commit/b59133fd2a8afa33564914df531f7f752b48ecee)
Thanks [@&#8203;dyc3](https://redirect.github.com/dyc3)! - Fixed
[#&#8203;10309](https://redirect.github.com/biomejs/biome/issues/10309):
Biome no longer adds newlines to Astro frontmatter when linter or assist
`--write` mode is enabled.

#### What's Changed

- fix(format/html/vue): preserve newlines around standalone
interpolations by [@&#8203;dyc3](https://redirect.github.com/dyc3) in
[#&#8203;10319](https://redirect.github.com/biomejs/biome/pull/10319)
- refactor(css\_parser): remove `allow_css_ratio` from SCSS expression
parsing functions by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10325](https://redirect.github.com/biomejs/biome/pull/10325)
- fix(astro): display diagnostic advices with the correct location by
[@&#8203;Conaclos](https://redirect.github.com/Conaclos) in
[#&#8203;10329](https://redirect.github.com/biomejs/biome/pull/10329)
- fix: trim astro frontmatter content before processing it by
[@&#8203;dyc3](https://redirect.github.com/dyc3) in
[#&#8203;10328](https://redirect.github.com/biomejs/biome/pull/10328)
- fix(config): support trailingCommas in overrides by
[@&#8203;dyc3](https://redirect.github.com/dyc3) in
[#&#8203;10318](https://redirect.github.com/biomejs/biome/pull/10318)
- chore(deps): update rust:1.95.0-bullseye docker digest to
[`b26cecc`](https://redirect.github.com/biomejs/biome/commit/b26cecc) by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;10334](https://redirect.github.com/biomejs/biome/pull/10334)
- chore(deps): update rust:1.95.0-trixie docker digest to
[`5b1e348`](https://redirect.github.com/biomejs/biome/commit/5b1e348) by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;10335](https://redirect.github.com/biomejs/biome/pull/10335)
- chore(deps): update dependency
[@&#8203;types/node](https://redirect.github.com/types/node) to v24.12.3
by [@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;10336](https://redirect.github.com/biomejs/biome/pull/10336)
- chore(deps): update dependency tombi to v0.10.6 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;10337](https://redirect.github.com/biomejs/biome/pull/10337)
- feat(css\_parser): support for SCSS `@include ... using` clauses by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10327](https://redirect.github.com/biomejs/biome/pull/10327)
- chore(deps): update github-actions by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;10338](https://redirect.github.com/biomejs/biome/pull/10338)
- chore(deps): update pnpm to v10.33.4 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;10339](https://redirect.github.com/biomejs/biome/pull/10339)
- chore(deps): update rust crate filetime to 0.2.28 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;10340](https://redirect.github.com/biomejs/biome/pull/10340)
- chore(deps): update dependency
[@&#8203;changesets/changelog-github](https://redirect.github.com/changesets/changelog-github)
to v0.7.0 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;10342](https://redirect.github.com/biomejs/biome/pull/10342)
- feat(parse/tailwind): differentiate between number and non-number
values by [@&#8203;dyc3](https://redirect.github.com/dyc3) in
[#&#8203;10332](https://redirect.github.com/biomejs/biome/pull/10332)
- chore(deps): update rust crate rayon to 1.12.0 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;10343](https://redirect.github.com/biomejs/biome/pull/10343)
- fix(markdown\_parser): parse tab-indented siblings by
[@&#8203;jfmcdowell](https://redirect.github.com/jfmcdowell) in
[#&#8203;10333](https://redirect.github.com/biomejs/biome/pull/10333)
- fix(lint/js): correct the rule source of `noReactNativeDeepImports` by
[@&#8203;siketyan](https://redirect.github.com/siketyan) in
[#&#8203;10344](https://redirect.github.com/biomejs/biome/pull/10344)
- fix(markdown\_parser): column-aware tab handling around block
containers by
[@&#8203;jfmcdowell](https://redirect.github.com/jfmcdowell) in
[#&#8203;10345](https://redirect.github.com/biomejs/biome/pull/10345)
- chore: update pnpm to the lateset by
[@&#8203;ematipico](https://redirect.github.com/ematipico) in
[#&#8203;10348](https://redirect.github.com/biomejs/biome/pull/10348)
- chore: fix renovate config by
[@&#8203;dyc3](https://redirect.github.com/dyc3) in
[#&#8203;10352](https://redirect.github.com/biomejs/biome/pull/10352)
- feat(css\_parser): support SCSS interpolated selector by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10351](https://redirect.github.com/biomejs/biome/pull/10351)
- feat(useDestructuring): add options for assignment/declaration and
improve diagnostic for bare object assignments by
[@&#8203;MeGaNeKoS](https://redirect.github.com/MeGaNeKoS) in
[#&#8203;9786](https://redirect.github.com/biomejs/biome/pull/9786)
- chore: remove benchmark from repository by
[@&#8203;ematipico](https://redirect.github.com/ematipico) in
[#&#8203;10355](https://redirect.github.com/biomejs/biome/pull/10355)
- fix(rage): print rules enabled by domains by
[@&#8203;dyc3](https://redirect.github.com/dyc3) in
[#&#8203;10358](https://redirect.github.com/biomejs/biome/pull/10358)
- feat(css): support SCSS interpolation in attribute selectors by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10357](https://redirect.github.com/biomejs/biome/pull/10357)
- fix(js\_analyze): noUnusedFunctionParameters mention parameter name by
[@&#8203;Netail](https://redirect.github.com/Netail) in
[#&#8203;10365](https://redirect.github.com/biomejs/biome/pull/10365)
- feat(parse/html): parse svelte function bindings more precisely by
[@&#8203;dyc3](https://redirect.github.com/dyc3) in
[#&#8203;10300](https://redirect.github.com/biomejs/biome/pull/10300)
- feat(css\_formatter): add support for formatting SCSS keyframes
selectors by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10362](https://redirect.github.com/biomejs/biome/pull/10362)
- fix: yaml linting panic fixes by
[@&#8203;jjroush](https://redirect.github.com/jjroush) in
[#&#8203;10287](https://redirect.github.com/biomejs/biome/pull/10287)
- feat(css\_parser): add support for SCSS interpolated dashed
identifiers and properties by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10367](https://redirect.github.com/biomejs/biome/pull/10367)
- fix(markdown\_parser): handle ordered sublist continuation by
[@&#8203;jfmcdowell](https://redirect.github.com/jfmcdowell) in
[#&#8203;10349](https://redirect.github.com/biomejs/biome/pull/10349)
- docs: fix duplicate-word typos in code comments by
[@&#8203;dfedoryshchev](https://redirect.github.com/dfedoryshchev) in
[#&#8203;10371](https://redirect.github.com/biomejs/biome/pull/10371)
- test(markdown\_parser): add CST list invariants by
[@&#8203;jfmcdowell](https://redirect.github.com/jfmcdowell) in
[#&#8203;10369](https://redirect.github.com/biomejs/biome/pull/10369)
- chore: yaml formatting infra by
[@&#8203;ematipico](https://redirect.github.com/ematipico) in
[#&#8203;10366](https://redirect.github.com/biomejs/biome/pull/10366)
- chore(goverance): cover expenses for representing Biome at a
conference by [@&#8203;Conaclos](https://redirect.github.com/Conaclos)
in [#&#8203;10246](https://redirect.github.com/biomejs/biome/pull/10246)
- docs: clarify vcs.root description by
[@&#8203;Dotify71](https://redirect.github.com/Dotify71) in
[#&#8203;10379](https://redirect.github.com/biomejs/biome/pull/10379)
- Revert "docs: clarify vcs.root description" by
[@&#8203;ematipico](https://redirect.github.com/ematipico) in
[#&#8203;10381](https://redirect.github.com/biomejs/biome/pull/10381)
- feat(css\_parser): add support for SCSS parent selectors by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10370](https://redirect.github.com/biomejs/biome/pull/10370)
- fix(css\_parser): parse CSS custom functions in SCSS by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10387](https://redirect.github.com/biomejs/biome/pull/10387)
- feat(useSortedClasses): scaffold v4 parser-based sort module by
[@&#8203;jiwon79](https://redirect.github.com/jiwon79) in
[#&#8203;10291](https://redirect.github.com/biomejs/biome/pull/10291)
- fix(css\_parser): support semicolonless SCSS statement at-rules by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10389](https://redirect.github.com/biomejs/biome/pull/10389)
- fix(format/html): fix case where comments cause invalid html by
[@&#8203;dyc3](https://redirect.github.com/dyc3) in
[#&#8203;10363](https://redirect.github.com/biomejs/biome/pull/10363)
- fix(markdown\_parser): break paragraph at sibling list marker without
tab by [@&#8203;jfmcdowell](https://redirect.github.com/jfmcdowell) in
[#&#8203;10376](https://redirect.github.com/biomejs/biome/pull/10376)
- feat(css\_formatter): preserve raw scss string interpolation by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10388](https://redirect.github.com/biomejs/biome/pull/10388)
- fix(service): correct FileExistsParams typo by
[@&#8203;yanthomasdev](https://redirect.github.com/yanthomasdev) in
[#&#8203;10399](https://redirect.github.com/biomejs/biome/pull/10399)
- chore(deps): update rust crate bpaf to 0.9.26 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;10403](https://redirect.github.com/biomejs/biome/pull/10403)
- chore(deps): update rust crate filetime to 0.2.29 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;10404](https://redirect.github.com/biomejs/biome/pull/10404)
- chore(deps): update dependency tombi to v0.11.4 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;10405](https://redirect.github.com/biomejs/biome/pull/10405)
- chore(deps): update rust crate dashmap to 6.2.1 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;10406](https://redirect.github.com/biomejs/biome/pull/10406)
- chore: remove dashmap from project by
[@&#8203;ematipico](https://redirect.github.com/ematipico) in
[#&#8203;10407](https://redirect.github.com/biomejs/biome/pull/10407)
- chore(deps): update dependency
[@&#8203;types/node](https://redirect.github.com/types/node) to v24.12.4
by [@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;10400](https://redirect.github.com/biomejs/biome/pull/10400)
- chore(deps): update pnpm to v11.1.2 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;10401](https://redirect.github.com/biomejs/biome/pull/10401)
- fix(css\_formatter): preserve scss identifier interpolation spacing by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10398](https://redirect.github.com/biomejs/biome/pull/10398)
- chore(format/html): fix unused code warnings in release builds by
[@&#8203;dyc3](https://redirect.github.com/dyc3) in
[#&#8203;10412](https://redirect.github.com/biomejs/biome/pull/10412)
- chore(service): make grit opt-in by
[@&#8203;ematipico](https://redirect.github.com/ematipico) in
[#&#8203;10410](https://redirect.github.com/biomejs/biome/pull/10410)
- feat(css\_formatter): preserve source-tight scss binary edges by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10413](https://redirect.github.com/biomejs/biome/pull/10413)
- refactor: make yaml, md and graphql gated via rust features by
[@&#8203;ematipico](https://redirect.github.com/ematipico) in
[#&#8203;10416](https://redirect.github.com/biomejs/biome/pull/10416)
- feat(css\_parser): add support for parsing and formatting unknown
SCSS/CSS at-rules by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10397](https://redirect.github.com/biomejs/biome/pull/10397)
- refactor: make plugins opt-in via feature gate by
[@&#8203;ematipico](https://redirect.github.com/ematipico) in
[#&#8203;10418](https://redirect.github.com/biomejs/biome/pull/10418)
- feat(css\_formatter): align SCSS map pair value layout by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10417](https://redirect.github.com/biomejs/biome/pull/10417)
- fix: incorrect build when using build or test by
[@&#8203;ematipico](https://redirect.github.com/ematipico) in
[#&#8203;10426](https://redirect.github.com/biomejs/biome/pull/10426)
- ci: agent scan, zizmor and reduce permissions by
[@&#8203;ematipico](https://redirect.github.com/ematipico) in
[#&#8203;10428](https://redirect.github.com/biomejs/biome/pull/10428)
- ci: remove checkout step from agentscan workflow by
[@&#8203;MatteoGabriele](https://redirect.github.com/MatteoGabriele) in
[#&#8203;10429](https://redirect.github.com/biomejs/biome/pull/10429)
- fix(css\_parser): classify interpolated query feature ranges correctly
by [@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10421](https://redirect.github.com/biomejs/biome/pull/10421)
- docs: remove outdated Caveats section in `useImportExtensions` by
[@&#8203;Dotify71](https://redirect.github.com/Dotify71) in
[#&#8203;10431](https://redirect.github.com/biomejs/biome/pull/10431)
- docs: remove redundant default phrase in
`useConsistentObjectDefinitions` rule by
[@&#8203;Dotify71](https://redirect.github.com/Dotify71) in
[#&#8203;10430](https://redirect.github.com/biomejs/biome/pull/10430)
- fix(css\_formatter): preserve blank lines between SCSS map pairs by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10427](https://redirect.github.com/biomejs/biome/pull/10427)
- ci: fix preview releases by
[@&#8203;dyc3](https://redirect.github.com/dyc3) in
[#&#8203;10436](https://redirect.github.com/biomejs/biome/pull/10436)
- fix(useSortedClasses): sort Tailwind v4 arbitrary values by
[@&#8203;jiwon79](https://redirect.github.com/jiwon79) in
[#&#8203;10414](https://redirect.github.com/biomejs/biome/pull/10414)
- fix(css\_parser): improve diagnostics for missing attribute names and
empty selectors in SCSS by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10437](https://redirect.github.com/biomejs/biome/pull/10437)
- ci: remove corepack by
[@&#8203;ematipico](https://redirect.github.com/ematipico) in
[#&#8203;10440](https://redirect.github.com/biomejs/biome/pull/10440)
- fix(css\_formatter): improve comment handling in generic CSS
properties by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10439](https://redirect.github.com/biomejs/biome/pull/10439)
- fix(css\_formatter): align commented SCSS map value layout by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10445](https://redirect.github.com/biomejs/biome/pull/10445)
- fix(css\_formatter): handle control variable maps in SCSS map
expressions by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10446](https://redirect.github.com/biomejs/biome/pull/10446)
- fix(inference): pass correct scope on return statements by
[@&#8203;ematipico](https://redirect.github.com/ematipico) in
[#&#8203;10442](https://redirect.github.com/biomejs/biome/pull/10442)
- feat(css\_parser): parse interpolated scss nested properties by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10455](https://redirect.github.com/biomejs/biome/pull/10455)
- chore(deps): update rust:1.95.0-bullseye docker digest to
[`28afaeb`](https://redirect.github.com/biomejs/biome/commit/28afaeb) by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;10457](https://redirect.github.com/biomejs/biome/pull/10457)
- fix(test): leaky CLI tests by
[@&#8203;ematipico](https://redirect.github.com/ematipico) in
[#&#8203;10463](https://redirect.github.com/biomejs/biome/pull/10463)
- fix(css\_formatter): align SCSS map comment trailing commas by
[@&#8203;denbezrukov](https://redirect.github.com/denbezrukov) in
[#&#8203;10449](https://redirect.github.com/biomejs/biome/pull/10449)
- fix(markdown\_parser): keep list blank-line separators inside the
preceding item by
[@&#8203;jfmcdowell](https://redirect.github.com/jfmcdowell) in
[#&#8203;10466](https://redirect.github.com/biomejs/biome/pull/10466)
- chore(deps): update rust crate jiff to 0.2.27 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;10459](https://redirect.github.com/biomejs/biome/pull/10459)
- docs: fix duplicate "from" in noUntrustedLicenses diagnostic by
[@&#8203;dfedoryshchev](https://redirect.github.com/dfedoryshchev) in
[#&#8203;10465](https://redirect.github.com/biomejs/biome/pull/10465)
- fix(lint): detect optional-chain inequality guards by
[@&#8203;sjh9714](https://redirect.github.com/sjh9714) in
[#&#8203;10425](https://redirect.github.com/biomejs/biome/pull/10425)
- chore(deps): update dependency tombi to v0.11.7 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;10458](https://redirect.github.com/biomejs/biome/pull/10458)
- fix(core): regression in emitted types by
[@&#8203;ematipico](https://redirect.github.com/ematipico) in
[#&#8203;10478](https://redirect.github.com/biomejs/biome/pull/10478)
- fix(parser/yaml): correctly lex and parse alias as mapping key by
[@&#8203;siketyan](https://redirect.github.com/siketyan) in
[#&#8203;10472](https://redirect.github.com/biomejs/biome/pull/10472)
- fix(markdown\_parser): terminate fenced code blocks at list-item
boundaries by
[@&#8203;jfmcdowell](https://redirect.github.com/jfmcdowell) in
[#&#8203;10471](https://redirect.github.com/biomejs/biome/pull/10471)
- ci: release by
[@&#8203;github-actions](https://redirect.github.com/github-actions)\[bot]
in [#&#8203;10326](https://redirect.github.com/biomejs/biome/pull/10326)

#### New Contributors

- [@&#8203;jjroush](https://redirect.github.com/jjroush) made their
first contribution in
[#&#8203;10287](https://redirect.github.com/biomejs/biome/pull/10287)
- [@&#8203;Dotify71](https://redirect.github.com/Dotify71) made their
first contribution in
[#&#8203;10379](https://redirect.github.com/biomejs/biome/pull/10379)
- [@&#8203;MatteoGabriele](https://redirect.github.com/MatteoGabriele)
made their first contribution in
[#&#8203;10429](https://redirect.github.com/biomejs/biome/pull/10429)
- [@&#8203;sjh9714](https://redirect.github.com/sjh9714) made their
first contribution in
[#&#8203;10425](https://redirect.github.com/biomejs/biome/pull/10425)

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

</details>

<details>
<summary>alecthomas/bit (bit)</summary>

###
[`v0.20.2`](https://redirect.github.com/alecthomas/bit/releases/tag/v0.20.2)

#### What's Changed

- **chore:** add `just bump` command by
[@&#8203;alecthomas](https://redirect.github.com/alecthomas) in
[`6518324`](https://redirect.github.com/alecthomas/bit/commit/65183247bc44e5c903280aed0e993d3ec8e5c628)
- **chore:** fix state drift in example BUILD.bit by
[@&#8203;alecthomas](https://redirect.github.com/alecthomas) in
[`d4a232f`](https://redirect.github.com/alecthomas/bit/commit/d4a232f876abecdc48b5cefac1b14396a679999e)
- **fix(go.test):** show build errors on failure by
[@&#8203;alecthomas](https://redirect.github.com/alecthomas) in
[`29234ea`](https://redirect.github.com/alecthomas/bit/commit/29234ead99467111955c1c500eac30d53ccdb541)

</details>

<details>
<summary>caddyserver/caddy (caddy)</summary>

###
[`v2.11.4`](https://redirect.github.com/caddyserver/caddy/releases/tag/v2.11.4)

This release patches more security, security-adjacent, and normal bugs.
The FrankenPHP project has collaborated on PHP-adjacent patches, which
we are grateful for.

The recent surge of patches is mostly attributed to token predictors. We
have had to reject more than 75% of "security" reports because they were
AI slop spam (or just lazy/incorrect). Please use LLMs and agents wisely
to avoid wasting precious maintainer resources. We have started blocking
offending accounts that spam slop reports. Thank you to all who submit
responsible reports following our security policy to make the project
better. We appreciate that the community deems the Caddy project worthy
of contribution to improve the broader ecosystem!

Security-related patches:

- caddyhttp: Normalize Windows backslashes in path matcher (thanks
[@&#8203;Vincent550102](https://redirect.github.com/Vincent550102))
- rewrite: Prevent placeholder re-expansion in injected query (thanks
[@&#8203;WhiskerEnt](https://redirect.github.com/WhiskerEnt))
- templates: Improved `stripHTML` action to more reliably remove
malformed HTML (thanks to
[@&#8203;jmrcsnchz](https://redirect.github.com/jmrcsnchz))
- caddyhttp: Ignore header fields with underscores to prevent collisions
(thanks
[@&#8203;Vincent550102](https://redirect.github.com/Vincent550102) for
the report and [@&#8203;dunglas](https://redirect.github.com/dunglas)
for the patch)

There are also several other various fixes and enhancements by many
other contributors. Thank you everyone who participated!

#### What's Changed

- reverseproxy: further prevent body closes from dial errors by
[@&#8203;jameshartig](https://redirect.github.com/jameshartig) in
[#&#8203;7715](https://redirect.github.com/caddyserver/caddy/pull/7715)
- caddytls: Fix client auth (fix
[#&#8203;7724](https://redirect.github.com/caddyserver/caddy/issues/7724))
by [@&#8203;mholt](https://redirect.github.com/mholt) in
[#&#8203;7727](https://redirect.github.com/caddyserver/caddy/pull/7727)
- chore: deps upgrade by
[@&#8203;mohammed90](https://redirect.github.com/mohammed90) in
[#&#8203;7751](https://redirect.github.com/caddyserver/caddy/pull/7751)
- caddyhttp: omit Last-Modified for unusable mod times by
[@&#8203;bb4242](https://redirect.github.com/bb4242) in
[#&#8203;7740](https://redirect.github.com/caddyserver/caddy/pull/7740)
- caddytls: fix TLS state races and ECH rotation retry by
[@&#8203;broady](https://redirect.github.com/broady) in
[#&#8203;7756](https://redirect.github.com/caddyserver/caddy/pull/7756)
- chore: clean up wording and typo fixes by
[@&#8203;steadytao](https://redirect.github.com/steadytao) in
[#&#8203;7745](https://redirect.github.com/caddyserver/caddy/pull/7745)
- reverseproxy: Add regression test for DialInfo network override by
[@&#8203;eyupcanakman](https://redirect.github.com/eyupcanakman) in
[#&#8203;7758](https://redirect.github.com/caddyserver/caddy/pull/7758)
- caddyauth: add candidate placeholders for rejected identities by
[@&#8203;steadytao](https://redirect.github.com/steadytao) in
[#&#8203;7698](https://redirect.github.com/caddyserver/caddy/pull/7698)
- cmd: support caddy start on IPv6-only hosts by
[@&#8203;steadytao](https://redirect.github.com/steadytao) in
[#&#8203;7744](https://redirect.github.com/caddyserver/caddy/pull/7744)
- caddyfile: preserve implicit TLS issuer semantics by
[@&#8203;steadytao](https://redirect.github.com/steadytao) in
[#&#8203;7743](https://redirect.github.com/caddyserver/caddy/pull/7743)
- reverseproxy: wraps request body to prevent closing if not read by
[@&#8203;WeidiDeng](https://redirect.github.com/WeidiDeng) in
[#&#8203;7719](https://redirect.github.com/caddyserver/caddy/pull/7719)
- caddytls: match IDN SNI in connection policies by
[@&#8203;steadytao](https://redirect.github.com/steadytao) in
[#&#8203;7742](https://redirect.github.com/caddyserver/caddy/pull/7742)
- build(deps): bump the all-updates group across 1 directory with 9
updates by
[@&#8203;dependabot](https://redirect.github.com/dependabot)\[bot] in
[#&#8203;7752](https://redirect.github.com/caddyserver/caddy/pull/7752)
- caddyhttp: normalize Windows backslashes in path matcher by
[@&#8203;Vincent550102](https://redirect.github.com/Vincent550102) in
[#&#8203;7763](https://redirect.github.com/caddyserver/caddy/pull/7763)
- go.mod: update x/net by
[@&#8203;steadytao](https://redirect.github.com/steadytao) in
[#&#8203;7767](https://redirect.github.com/caddyserver/caddy/pull/7767)
- rewrite: prevent placeholder re-expansion in injected query by
[@&#8203;WhiskerEnt](https://redirect.github.com/WhiskerEnt) in
[#&#8203;7761](https://redirect.github.com/caddyserver/caddy/pull/7761)
- perf(replacer): optimize memory allocation for file placeholders by
[@&#8203;Jualhosting](https://redirect.github.com/Jualhosting) in
[#&#8203;7773](https://redirect.github.com/caddyserver/caddy/pull/7773)
- caddytls: skip idna.ToASCII for pure ASCII SNI values by
[@&#8203;sleet0922](https://redirect.github.com/sleet0922) in
[#&#8203;7770](https://redirect.github.com/caddyserver/caddy/pull/7770)
- encode: prioritize zstd and br over gzip in content negotiation by
[@&#8203;Jualhosting](https://redirect.github.com/Jualhosting) in
[#&#8203;7772](https://redirect.github.com/caddyserver/caddy/pull/7772)
- httpcaddyfile: fix incorrect error message on duplicate matchers by
[@&#8203;Brunotlps](https://redirect.github.com/Brunotlps) in
[#&#8203;7780](https://redirect.github.com/caddyserver/caddy/pull/7780)
- Patch for GHSA-vcc4-2c75-vc9v by
[@&#8203;jmrcsnchz](https://redirect.github.com/jmrcsnchz) in
[#&#8203;7785](https://redirect.github.com/caddyserver/caddy/pull/7785)

#### New Contributors

- [@&#8203;jameshartig](https://redirect.github.com/jameshartig) made
their first contribution in
[#&#8203;7715](https://redirect.github.com/caddyserver/caddy/pull/7715)
- [@&#8203;bb4242](https://redirect.github.com/bb4242) made their first
contribution in
[#&#8203;7740](https://redirect.github.com/caddyserver/caddy/pull/7740)
- [@&#8203;broady](https://redirect.github.com/broady) made their first
contribution in
[#&#8203;7756](https://redirect.github.com/caddyserver/caddy/pull/7756)
- [@&#8203;eyupcanakman](https://redirect.github.com/eyupcanakman) made
their first contribution in
[#&#8203;7758](https://redirect.github.com/caddyserver/caddy/pull/7758)
- [@&#8203;Vincent550102](https://redirect.github.com/Vincent550102)
made their first contribution in
[#&#8203;7763](https://redirect.github.com/caddyserver/caddy/pull/7763)
- [@&#8203;WhiskerEnt](https://redirect.github.com/WhiskerEnt) made
their first contribution in
[#&#8203;7761](https://redirect.github.com/caddyserver/caddy/pull/7761)
- [@&#8203;Jualhosting](https://redirect.github.com/Jualhosting) made
their first contribution in
[#&#8203;7773](https://redirect.github.com/caddyserver/caddy/pull/7773)
- [@&#8203;sleet0922](https://redirect.github.com/sleet0922) made their
first contribution in
[#&#8203;7770](https://redirect.github.com/caddyserver/caddy/pull/7770)
- [@&#8203;Brunotlps](https://redirect.github.com/Brunotlps) made their
first contribution in
[#&#8203;7780](https://redirect.github.com/caddyserver/caddy/pull/7780)
- [@&#8203;jmrcsnchz](https://redirect.github.com/jmrcsnchz) made their
first contribution in
[#&#8203;7785](https://redirect.github.com/caddyserver/caddy/pull/7785)

**Full Changelog**:
<https://github.com/caddyserver/caddy/compare/v2.11.3...v2.11.4>

</details>

<details>
<summary>alecthomas/chroma (github.com/alecthomas/chroma/v2)</summary>

###
[`v2.26.1`](https://redirect.github.com/alecthomas/chroma/releases/tag/v2.26.1)

[Compare
Source](https://redirect.github.com/alecthomas/chroma/compare/v2.26.0...v2.26.1)

#### Changelog

-
[`56c7702`](https://redirect.github.com/alecthomas/chroma/commit/56c7702)
fix: downgrade go.mod version to 1.25

###
[`v2.26.0`](https://redirect.github.com/alecthomas/chroma/releases/tag/v2.26.0)

[Compare
Source](https://redirect.github.com/alecthomas/chroma/compare/v2.25.0...v2.26.0)

#### Changelog

-
[`a4d3f60`](https://redirect.github.com/alecthomas/chroma/commit/a4d3f60)
feat(chromad): use style counterparts for theme switching
-
[`ce159e6`](https://redirect.github.com/alecthomas/chroma/commit/ce159e6)
chore: migrate to new bit format
-
[`180ea9f`](https://redirect.github.com/alecthomas/chroma/commit/180ea9f)
perf(colour): replace Sprintf/ParseUint round-trip in NewColour with
direct bit arithmetic
([#&#8203;1274](https://redirect.github.com/alecthomas/chroma/issues/1274))
-
[`68a08b0`](https://redirect.github.com/alecthomas/chroma/commit/68a08b0)
docs: how to support dynamic theme switching
-
[`6fb9d92`](https://redirect.github.com/alecthomas/chroma/commit/6fb9d92)
feat(html): tag output with style mode
-
[`a71fea3`](https://redirect.github.com/alecthomas/chroma/commit/a71fea3)
feat(styles): add light/dark mode support

###
[`v2.25.0`](https://redirect.github.com/alecthomas/chroma/releases/tag/v2.25.0)

[Compare
Source](https://redirect.github.com/alecthomas/chroma/compare/v2.24.1...v2.25.0)

#### Changelog

-
[`c3826f0`](https://redirect.github.com/alecthomas/chroma/commit/c3826f0)
chore: go mod tidy
-
[`fb5bc39`](https://redirect.github.com/alecthomas/chroma/commit/fb5bc39)
fix: emit HTTP body tokens without Coalesce
-
[`a3c2946`](https://redirect.github.com/alecthomas/chroma/commit/a3c2946)
Improve Nu file detection
([#&#8203;1260](https://redirect.github.com/alecthomas/chroma/issues/1260))
-
[`e841b1a`](https://redirect.github.com/alecthomas/chroma/commit/e841b1a)
chore(deps): update all non-major dependencies
([#&#8203;1272](https://redirect.github.com/alecthomas/chroma/issues/1272))
-
[`3ed2db8`](https://redirect.github.com/alecthomas/chroma/commit/3ed2db8)
Add Gemfile.lock lexer (& ruby improvements)
([#&#8203;1269](https://redirect.github.com/alecthomas/chroma/issues/1269))
-
[`41fb546`](https://redirect.github.com/alecthomas/chroma/commit/41fb546)
Add YAML+Jinja lexer
([#&#8203;1268](https://redirect.github.com/alecthomas/chroma/issues/1268))
-
[`e99b881`](https://redirect.github.com/alecthomas/chroma/commit/e99b881)
chore(deps): update all non-major dependencies
([#&#8203;1263](https://redirect.github.com/alecthomas/chroma/issues/1263))
-
[`e67dd2f`](https://redirect.github.com/alecthomas/chroma/commit/e67dd2f)
(Markless) Fix parse issue for embed directives without options
([#&#8203;1266](https://redirect.github.com/alecthomas/chroma/issues/1266))
-
[`dffa370`](https://redirect.github.com/alecthomas/chroma/commit/dffa370)
fix(go): tokenize trailing // as comment instead of consuming next line
([#&#8203;1265](https://redirect.github.com/alecthomas/chroma/issues/1265))
-
[`1cf1560`](https://redirect.github.com/alecthomas/chroma/commit/1cf1560)
chore: upgrade to github.com/dlclark/regexp2/v2
-
[`2cbcf7b`](https://redirect.github.com/alecthomas/chroma/commit/2cbcf7b)
chore: upgrade golangci-lint
-
[`786675b`](https://redirect.github.com/alecthomas/chroma/commit/786675b)
chore(deps): update all non-major dependencies
([#&#8203;1257](https://redirect.github.com/alecthomas/chroma/issues/1257))
-
[`235590c`](https://redirect.github.com/alecthomas/chroma/commit/235590c)
feat: add JSONL support to JSON lexer
([#&#8203;1262](https://redirect.github.com/alecthomas/chroma/issues/1262))
-
[`f9b5c97`](https://redirect.github.com/alecthomas/chroma/commit/f9b5c97)
fix(dart): match single-line comments without trailing newline
([#&#8203;1225](https://redirect.github.com/alecthomas/chroma/issues/1225))
([#&#8203;1261](https://redirect.github.com/alecthomas/chroma/issues/1261))
-
[`097f8e9`](https://redirect.github.com/alecthomas/chroma/commit/097f8e9)
Mention Arturo in README
([#&#8203;1256](https://redirect.github.com/alecthomas/chroma/issues/1256))
-
[`d46ce60`](https://redirect.github.com/alecthomas/chroma/commit/d46ce60)
feat(markdown): highlight frontmatter and comments
([#&#8203;1245](https://redirect.github.com/alecthomas/chroma/issues/1245))
-
[`f786b2a`](https://redirect.github.com/alecthomas/chroma/commit/f786b2a)
feat(lexers): add support for LilyPond
([#&#8203;1255](https://redirect.github.com/alecthomas/chroma/issues/1255))
-
[`0a02b98`](https://redirect.github.com/alecthomas/chroma/commit/0a02b98)
chore(deps): update actions/checkout digest to
[`de0fac2`](https://redirect.github.com/alecthomas/chroma/commit/de0fac2)
([#&#8203;1212](https://redirect.github.com/alecthomas/chroma/issues/1212))
-
[`c55009e`](https://redirect.github.com/alecthomas/chroma/commit/c55009e)
Fix AGENTS.md referencing a non-existent scripts directory
([#&#8203;1231](https://redirect.github.com/alecthomas/chroma/issues/1231))
-
[`c5e763e`](https://redirect.github.com/alecthomas/chroma/commit/c5e763e)
Improve protobuf lexer
([#&#8203;1253](https://redirect.github.com/alecthomas/chroma/issues/1253))
-
[`113cd0e`](https://redirect.github.com/alecthomas/chroma/commit/113cd0e)
Add Arturo lexer
([#&#8203;1232](https://redirect.github.com/alecthomas/chroma/issues/1232))
-
[`4498d71`](https://redirect.github.com/alecthomas/chroma/commit/4498d71)
chore(deps): update dependency binaryen to v129
([#&#8203;1238](https://redirect.github.com/alecthomas/chroma/issues/1238))
-
[`885f912`](https://redirect.github.com/alecthomas/chroma/commit/885f912)
Added f4 to "Projects using Chroma" list
([#&#8203;1242](https://redirect.github.com/alecthomas/chroma/issues/1242))
-
[`c42c9ef`](https://redirect.github.com/alecthomas/chroma/commit/c42c9ef)
Update java lexer
([#&#8203;1254](https://redirect.github.com/alecthomas/chroma/issues/1254))

</details>

<details>
<summary>dlclark/regexp2 (github.com/dlclark/regexp2/v2)</summary>

###
[`v2.1.2`](https://redirect.github.com/dlclark/regexp2/compare/v2.1.1...v2.1.2)

[Compare
Source](https://redirect.github.com/dlclark/regexp2/compare/v2.1.1...v2.1.2)

</details>

<details>
<summary>mattn/go-colorable (github.com/mattn/go-colorable)</summary>

###
[`v0.1.15`](https://redirect.github.com/mattn/go-colorable/compare/v0.1.14...v0.1.15)

[Compare
Source](https://redirect.github.com/mattn/go-colorable/compare/v0.1.14...v0.1.15)

</details>

<details>
<summary>golang/go (go)</summary>

###
[`v1.26.4`](https://redirect.github.com/golang/go/compare/go1.26.3...go1.26.4)

</details>

<details>
<summary>astral-sh/uv (uv)</summary>

###
[`v0.11.19`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#01119)

[Compare
Source](https://redirect.github.com/astral-sh/uv/compare/0.11.18...0.11.19)

Released on 2026-06-03.

##### Python

- Add CPython 3.15.0b2
([#&#8203;19531](https://redirect.github.com/astral-sh/uv/pull/19531))

##### Enhancements

- Always compute SHA256 for remote distributions
([#&#8203;19662](https://redirect.github.com/astral-sh/uv/pull/19662))
- Add PyEmscripten platform (PEP 783)
([#&#8203;19629](https://redirect.github.com/astral-sh/uv/pull/19629))
- Add Pyodide 2025 target triple
([#&#8203;19653](https://redirect.github.com/astral-sh/uv/pull/19653))

##### Preview features

- Make preview features for commands have names that aren't ambiguous
with the command
([#&#8203;19645](https://redirect.github.com/astral-sh/uv/pull/19645))
- Respect `--isolated` in `uv check`
([#&#8203;19666](https://redirect.github.com/astral-sh/uv/pull/19666))

##### Bug fixes

- Continue tool uninstall after dangling receipts
([#&#8203;19623](https://redirect.github.com/astral-sh/uv/pull/19623))
- Skip Unix-specific installation steps when cross-installing Windows
Python distributions
([#&#8203;19424](https://redirect.github.com/astral-sh/uv/pull/19424))

###
[`v0.11.18`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#01118)

[Compare
Source](https://redirect.github.com/astral-sh/uv/compare/0.11.17...0.11.18)

Released on 2026-06-01.

##### Performance

- Fix performance regression in unzip of local wheels
([#&#8203;19637](https://redirect.github.com/astral-sh/uv/pull/19637))

##### Preview

- Add `uv check` to run `ty` from uv
([#&#8203;19605](https://redirect.github.com/astral-sh/uv/pull/19605))

##### Bug fixes

- Update activation scripts with upstream fixes
([#&#8203;19628](https://redirect.github.com/astral-sh/uv/pull/19628))

##### Other changes

- Bump MSRV to 1.94
([#&#8203;19600](https://redirect.github.com/astral-sh/uv/pull/19600))

###
[`v0.11.17`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#01117)

[Compare
Source](https://redirect.github.com/astral-sh/uv/compare/0.11.16...0.11.17)

Released on 2026-05-28.

##### Enhancements

- Add a diagnostic for `uv add` with standard library modules
([#&#8203;19572](https://redirect.github.com/astral-sh/uv/pull/19572))
- Expose `uv workspace` and its `list` subcommand in help output
([#&#8203;19533](https://redirect.github.com/astral-sh/uv/pull/19533))
- Improve the "403 forbidden" hint to suggest `ignore-error-codes` when
applicable
([#&#8203;19521](https://redirect.github.com/astral-sh/uv/pull/19521))
- Skip direct URL lock freshness checks while offline
([#&#8203;19596](https://redirect.github.com/astral-sh/uv/pull/19596))
- Add `import-names` and `import-namespaces` support to `uv-build` ([PEP
794](https://peps.python.org/pep-0794/))
([#&#8203;19380](https://redirect.github.com/astral-sh/uv/pull/19380))
- Add a `--no-editable-package` flag to various commands
([#&#8203;19584](https://redirect.github.com/astral-sh/uv/pull/19584))
- Infer Python version requests from source trees in `uv tool`
invocations
([#&#8203;19577](https://redirect.github.com/astral-sh/uv/pull/19577))

##### Preview features

- Add module owners to `uv workspace metadata`
([#&#8203;19122](https://redirect.github.com/astral-sh/uv/pull/19122))
- Do not allow `uv venv --clear` to remove non-virtual environments
([#&#8203;19595](https://redirect.github.com/astral-sh/uv/pull/19595))

##### Bug fixes

- Improve the performance of large entries in `tool.uv.conflicts`
([#&#8203;19538](https://redirect.github.com/astral-sh/uv/pull/19538))
- Avoid modifying the parent process' env with `--env-file` in `uv run`
([#&#8203;19567](https://redirect.github.com/astral-sh/uv/pull/19567))
- Fix script environment creation for scripts with long filenames
([#&#8203;19539](https://redirect.github.com/astral-sh/uv/pull/19539))
- Fix transitive Git archive dependencies in lockfiles
([#&#8203;19589](https://redirect.github.com/astral-sh/uv/pull/19589))
- Preserve Git repository URLs in direct URL metadata
([#&#8203;19590](https://redirect.github.com/astral-sh/uv/pull/19590))
- Support redirects in `--check-url`
([#&#8203;19594](https://redirect.github.com/astral-sh/uv/pull/19594))
- Accept case-insensitive HTML tags in `--find-links` parsing
([#&#8203;19537](https://redirect.github.com/astral-sh/uv/pull/19537))
- Reject duplicate script metadata blocks
([#&#8203;19544](https://redirect.github.com/astral-sh/uv/pull/19544))
- Ban names like "python3" as script entry points
([#&#8203;19535](https://redirect.github.com/astral-sh/uv/pull/19535),
[#&#8203;19536](https://redirect.github.com/astral-sh/uv/pull/19536))
- Validate Git LFS artifacts for Git archives
([#&#8203;19592](https://redirect.github.com/astral-sh/uv/pull/19592))
- Use a relative path when creating symlinks in cache to improve
relocatability
([#&#8203;19033](https://redirect.github.com/astral-sh/uv/pull/19033))

##### Documentation

- Fix malformed positional anchors in the CLI reference
([#&#8203;19575](https://redirect.github.com/astral-sh/uv/pull/19575))

</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:eyJjcmVhdGVkSW5WZXIiOiI0My4yMDIuMSIsInVwZGF0ZWRJblZlciI6IjQzLjIwOS40IiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-05 18:20:01 +10:00
Peter Kleiweg 03236a483a support for PostScript font files (#1282)
PostScript font files contain valid PostScript code, so they can be
colorized just like other PostScript files.
2026-06-04 23:01:56 +00:00
Rayan Salhabandcyphercodes e10d53260e Fix YAML slash comments with colons (#1278)
Fixes #1271.

## Summary
- Treat `//` inline comment text as `Comment` in YAML highlighting.
- Keep key matching from running through `//` comment text before a
later colon.
- Add YAML lexer fixture coverage for `//` comments with colon text.

## Tests
- `PATH=/root/sdk/go1.26.2/bin:$PATH go test ./lexers -run
'TestLexers/YAML' -count=1`
- `PATH=/root/sdk/go1.26.2/bin:$PATH go test ./... -count=1`
- `git diff --check`

Co-authored-by: cyphercodes <cyphercodes@users.noreply.github.com>
2026-05-30 04:24:57 +00:00
Alec Thomas 56c7702e16 fix: downgrade go.mod version to 1.25
Fixes #1276
v2.26.1
2026-05-29 10:48:13 +10:00
Alec Thomas a4d3f60813 feat(chromad): use style counterparts for theme switching v2.26.0 2026-05-28 11:58:56 +10:00
Alec Thomas ce159e61b0 chore: migrate to new bit format 2026-05-27 21:41:33 +10:00
bahati.wulan 180ea9f54d perf(colour): replace Sprintf/ParseUint round-trip in NewColour with direct bit arithmetic (#1274) 2026-05-26 07:38:19 +00:00
Alec Thomas 68a08b0f9a docs: how to support dynamic theme switching 2026-05-26 14:05:49 +10:00
Alec Thomas 6fb9d920b5 feat(html): tag output with style mode
The HTML formatter now emits a "light" or "dark" class alongside
"chroma" on the wrapper (and on standalone <body>) when classes are
enabled. WriteCSS scopes its rules by the same mode class so two
themes can share a stylesheet and be toggled at the wrapper level.

Fixes #1162
2026-05-26 13:37:19 +10:00
Alec Thomas a71fea3435 feat(styles): add light/dark mode support
Style.Mode() derives Light/Dark from the Background entry's luminosity.
A new optional Counterpart field (and counterpart="..." XML attribute)
points at the opposite-mode style. styles.GetForMode(name, mode) follows
the counterpart, and RegisterPair links a Light/Dark pair both ways.
Wires counterparts on the obvious paired bundled styles.
2026-05-26 12:48:10 +10:00
Alec Thomas c3826f007c chore: go mod tidy v2.25.0 2026-05-26 11:20:06 +10:00
Alec Thomas fb5bc39d40 fix: emit HTTP body tokens without Coalesce
The body sub-lexer was set up but EOF was returned immediately,
causing callers that stop at EOF to drop the body. Return the
first sub-iterator token instead.

Fixes #1273
2026-05-26 11:16:34 +10:00
alterNERDtive a3c2946ab1 Improve Nu file detection (#1260)
This adds shebang detection (including arguments to `env`) and
`x-shellscript` mime types to the Nu lexer.

As far as I can see there are no tests for this that I could/should
update. Please do point out if I missed anything in that regard.

Fixes #1259.
2026-05-26 01:05:18 +00:00
renovate[bot] e841b1a4e3 chore(deps): update all non-major dependencies (#1272)
This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) | Type |
Update |
|---|---|---|---|---|---|
|
[github.com/dlclark/regexp2/v2](https://redirect.github.com/dlclark/regexp2)
| `v2.0.3` → `v2.1.0` |
![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fdlclark%2fregexp2%2fv2/v2.1.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fdlclark%2fregexp2%2fv2/v2.0.3/v2.1.0?slim=true)
| require | minor |
| [uv](https://redirect.github.com/astral-sh/uv) | `0.11.14` → `0.11.16`
|
![age](https://developer.mend.io/api/mc/badges/age/hermit/uv/0.11.16?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/hermit/uv/0.11.14/0.11.16?slim=true)
| | patch |

---

### Release Notes

<details>
<summary>dlclark/regexp2 (github.com/dlclark/regexp2/v2)</summary>

###
[`v2.1.0`](https://redirect.github.com/dlclark/regexp2/compare/v2.0.3...v2.1.0)

[Compare
Source](https://redirect.github.com/dlclark/regexp2/compare/v2.0.3...v2.1.0)

</details>

<details>
<summary>astral-sh/uv (uv)</summary>

###
[`v0.11.16`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#01116)

[Compare
Source](https://redirect.github.com/astral-sh/uv/compare/0.11.15...0.11.16)

Released on 2026-05-21.

##### Enhancements

- Add support for direct archive dependencies in Git
([#&#8203;10072](https://redirect.github.com/astral-sh/uv/pull/10072))
- Adjust hint rendering
([#&#8203;18090](https://redirect.github.com/astral-sh/uv/pull/18090))

##### Preview features

- uv audit: specialize malformed OSV error
([#&#8203;19515](https://redirect.github.com/astral-sh/uv/pull/19515))
- Reject locked malware installations
([#&#8203;18936](https://redirect.github.com/astral-sh/uv/pull/18936))

##### Configuration

- Allow disabling reading the system config with `UV_NO_SYSTEM_CONFIG`
([#&#8203;19476](https://redirect.github.com/astral-sh/uv/pull/19476))

##### Bug fixes

- Allow environment variables that take a list to be empty
([#&#8203;19503](https://redirect.github.com/astral-sh/uv/pull/19503))
- Ensure that incompatible wheel hints do not leak secrets
([#&#8203;19504](https://redirect.github.com/astral-sh/uv/pull/19504))
- Reject unsafe entry points in `uv-build`
([#&#8203;19495](https://redirect.github.com/astral-sh/uv/pull/19495))
- Restrict delimiters in entry point parsing
([#&#8203;19471](https://redirect.github.com/astral-sh/uv/pull/19471))
- uv-netrc: fix multi-word no-space comment lines causing parse errors
([#&#8203;19494](https://redirect.github.com/astral-sh/uv/pull/19494))

##### Documentation

- Document and test relative exclude-newer support for uv pip
([#&#8203;19475](https://redirect.github.com/astral-sh/uv/pull/19475))

###
[`v0.11.15`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#01115)

[Compare
Source](https://redirect.github.com/astral-sh/uv/compare/0.11.14...0.11.15)

Released on 2026-05-18.

##### Security

- Fix a TAR partial differential, see
[GHSA-3cv2-h65g-fgmm](https://redirect.github.com/astral-sh/tokio-tar/security/advisories/GHSA-3cv2-h65g-fgmm)
([#&#8203;19463](https://redirect.github.com/astral-sh/uv/pull/19463))
- Enforce that entry points cannot escape in the scripts directory, see
[GHSA-4gg8-gxpx-9rph](https://redirect.github.com/astral-sh/tokio-tar/security/advisories/GHSA-4gg8-gxpx-9rph)
([#&#8203;19464](https://redirect.github.com/astral-sh/uv/pull/19464))

##### Enhancements

- Add TOML v1.1 -> v1.0 backwards compatibility for source distributions
([#&#8203;18741](https://redirect.github.com/astral-sh/uv/pull/18741))
- Add support for Azure request signing
([#&#8203;19421](https://redirect.github.com/astral-sh/uv/pull/19421))
- Apply stricter validation to all wheel filename segments
([#&#8203;19364](https://redirect.github.com/astral-sh/uv/pull/19364))
- Reject empty strings as an invalid package name
([#&#8203;19435](https://redirect.github.com/astral-sh/uv/pull/19435))
- Use structured errors for signing authentication failures
([#&#8203;19422](https://redirect.github.com/astral-sh/uv/pull/19422))

##### Preview

- uv audit: Add JSON output
([#&#8203;19305](https://redirect.github.com/astral-sh/uv/pull/19305))

##### Configuration

- Respect `required-environments` in `uv pip compile`
([#&#8203;19378](https://redirect.github.com/astral-sh/uv/pull/19378))

##### Performance

- Avoid parsing JSON manifest when local Python is available
([#&#8203;19398](https://redirect.github.com/astral-sh/uv/pull/19398))
- Avoid walking nested directories in linker conflict registration
([#&#8203;19382](https://redirect.github.com/astral-sh/uv/pull/19382))
- Optimize async wheel ZIP writing
([#&#8203;19383](https://redirect.github.com/astral-sh/uv/pull/19383))
- Fix dead "already trimmed" fast-path in
`Version::only_release_trimmed`
([#&#8203;19425](https://redirect.github.com/astral-sh/uv/pull/19425))

##### Bug fixes

- Apply workspace-member `[tool.uv.sources]` credentials under `uv sync
--frozen`
([#&#8203;19423](https://redirect.github.com/astral-sh/uv/pull/19423))
- Skip empty directories in uv build outputs
([#&#8203;19437](https://redirect.github.com/astral-sh/uv/pull/19437))
- Fix Git submodule handling when using relative paths
([#&#8203;12156](https://redirect.github.com/astral-sh/uv/pull/12156))
- Fix line number reporting in netrc parsing
([#&#8203;19452](https://redirect.github.com/astral-sh/uv/pull/19452))

##### Documentation

- Move Bazel auth helper setup into integration guide
([#&#8203;19392](https://redirect.github.com/astral-sh/uv/pull/19392))

</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:eyJjcmVhdGVkSW5WZXIiOiI0My4xOTQuMCIsInVwZGF0ZWRJblZlciI6IjQzLjE5NC4wIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-26 09:26:45 +10:00
Reece Dunham 3ed2db889f Add Gemfile.lock lexer (& ruby improvements) (#1269)
This PR adds highlighting for [Bundler](https://bundler.io)'s lockfiles,
and adds a few Ruby file extensions to the list.

- `*.json.jbuilder` for the
[`jbuilder`](https://github.com/rails/jbuilder) gem
- `.pryrc` for [`pry`](https://pry.github.io/)'s configuration file
- `Appraisals` for the
[`appraisal`](https://github.com/thoughtbot/appraisal) gem
2026-05-18 17:06:34 +10:00
Kotaro Yoshimatsu 41fb546f72 Add YAML+Jinja lexer (#1268)
## Summary

Adds a `YAML+Jinja` lexer that combines the existing YAML and
Django/Jinja lexers via `DelegatingLexer`. This is the equivalent of
Pygments'
[`YamlJinjaLexer`](https://pygments.org/docs/lexers/#pygments.lexers.templates.YamlJinjaLexer)
and covers two common formats that the current lexers cannot highlight
correctly on their own:

- Ansible playbooks (Jinja2 expressions embedded in YAML)
- Salt SLS files

Implementation follows the same pattern as `ERB`, `PHTML`, `Svelte`, and
`Go HTML Template`: a small Go file wraps two existing lexers with
`DelegatingLexer`, reusing `embedded/yaml.xml` and
`embedded/django_jinja.xml`. No new XML file is introduced.

## Lexer config

| Field | Value |
| ----- | ----- |
| Name | `YAML+Jinja` |
| Aliases | `yaml+jinja`, `salt`, `sls`, `ansible` |
| Filenames | `*.sls` |
| MIME types | `text/x-yaml+jinja`, `text/x-sls` |

### Why no `*.yml` / `*.yaml`?

Ansible playbooks and Salt SLS files often use `*.yml`. Claiming those
globs would route every plain YAML file through this lexer and create an
ambiguous match against the built-in `YAML` lexer. To stay non-invasive,
the lexer only claims `*.sls`; for Ansible playbooks the user is
expected to select the lexer explicitly (`chroma -l ansible …`),
matching Pygments' behavior.

Existing lexers remain unaffected:

| Input | Resolved lexer |
| ----- | -------------- |
| `*.yml` / `*.yaml` | `YAML` (unchanged) |
| `*.sls` | `YAML+Jinja` (new) |
| `text/x-yaml` | `YAML` (unchanged) |
| `application/x-jinja` | `Django/Jinja` (unchanged) |
| `text/x-yaml+jinja`, `text/x-sls` | `YAML+Jinja` (new) |

## Test plan

- [x] `go test ./...` passes (new
`TestLexers/YAML+Jinja/testdata/ansible.actual` case included;
`.expected` generated via `RECORD=true go test ./lexers`)
- [x] `golangci-lint run ./...` passes
- [x] `gofmt -l` clean
- [x] Manual smoke test: `lexers.Get("ansible")`,
`lexers.Get("yaml+jinja")`, `lexers.Get("salt")`, `lexers.Get("sls")`
all resolve to the new `YAML+Jinja` lexer
- [x] Verified that `*.yml`, `*.yaml`, `text/x-yaml`, and
`application/x-jinja` still resolve to the previous lexers (no
regression)
2026-05-18 08:05:56 +10:00
renovate[bot] e99b88182b chore(deps): update all non-major dependencies (#1263)
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.14` → `2.4.15` |
![age](https://developer.mend.io/api/mc/badges/age/hermit/biome/2.4.15?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/hermit/biome/2.4.14/2.4.15?slim=true)
|
| [caddy](https://redirect.github.com/caddyserver/caddy) | | patch |
`2.11.2` → `2.11.3` |
![age](https://developer.mend.io/api/mc/badges/age/hermit/caddy/2.11.3?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/hermit/caddy/2.11.2/2.11.3?slim=true)
|
|
[github.com/dlclark/regexp2/v2](https://redirect.github.com/dlclark/regexp2)
| require | patch | `v2.0.2` → `v2.0.3` |
![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fdlclark%2fregexp2%2fv2/v2.0.3?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fdlclark%2fregexp2%2fv2/v2.0.2/v2.0.3?slim=true)
|
| [just](https://redirect.github.com/casey/just) | | minor | `1.50.0` →
`1.51.0` |
![age](https://developer.mend.io/api/mc/badges/age/hermit/just/1.51.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/hermit/just/1.50.0/1.51.0?slim=true)
|
| [uv](https://redirect.github.com/astral-sh/uv) | | patch | `0.11.12` →
`0.11.14` |
![age](https://developer.mend.io/api/mc/badges/age/hermit/uv/0.11.14?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/hermit/uv/0.11.12/0.11.14?slim=true)
|

---

### Release Notes

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

###
[`v2.4.15`](https://redirect.github.com/biomejs/biome/compare/46393e0240944064eb2a33c1810fc4204ced0cf7...9dd3271eef16090416b6e77615a01e3bfbcf7993)

</details>

<details>
<summary>caddyserver/caddy (caddy)</summary>

###
[`v2.11.3`](https://redirect.github.com/caddyserver/caddy/releases/tag/v2.11.3)

This release improves several aspects of Caddy with minor features, bug
fixes, and security patches. Thank you to everyone and their bots who
contributed to help make this release the best one yet!

**Security patches:**

- fastcgi: Carrying over a patch from FrankenPHP for a bug that could
allow non-PHP files to be executed; collaborated on by
[@&#8203;dunglas](https://redirect.github.com/dunglas),
[@&#8203;KC1zs4](https://redirect.github.com/KC1zs4), and
[@&#8203;chenjj](https://redirect.github.com/chenjj).
- vars: A more thorough fix for
<https://github.com/advisories/GHSA-m2w3-8f23-hxxf>, collaborated by
[@&#8203;everping](https://redirect.github.com/everping) and
[@&#8203;vnxme](https://redirect.github.com/vnxme).
- admin: Array index normalization to prevent remote admin socket auth
bypass, by [@&#8203;Amemoyoi](https://redirect.github.com/Amemoyoi) and
bot.
- admin: More rigorous path prefix matching to prevent remote admin
socket auth bypass, by
[@&#8203;Amemoyoi](https://redirect.github.com/Amemoyoi) and bot.

We've also merged a couple PRs that fix upstream security bugs in other
projects like quic-go and CertMagic. Thank you to
[@&#8203;marten-seemann](https://redirect.github.com/marten-seemann) for
maintaining quic-go so diligently!

#### What's Changed

- caddyhttp: Sync placeholder expansion in `vars` and `vars_regexp` by
[@&#8203;vnxme](https://redirect.github.com/vnxme) in
[#&#8203;7573](https://redirect.github.com/caddyserver/caddy/pull/7573)
- caddytls: Avoid ACME fallback for implicit Tailscale \*.ts.net
policies by [@&#8203;steadytao](https://redirect.github.com/steadytao)
in
[#&#8203;7577](https://redirect.github.com/caddyserver/caddy/pull/7577)
- chore: Resolve recent CI failures by
[@&#8203;mholt](https://redirect.github.com/mholt) in
[#&#8203;7593](https://redirect.github.com/caddyserver/caddy/pull/7593)
- caddytls: Consolidate empty APs more smartly by
[@&#8203;mholt](https://redirect.github.com/mholt) in
[#&#8203;7567](https://redirect.github.com/caddyserver/caddy/pull/7567)
- rewrite: skip query rename when source key is absent by
[@&#8203;steadytao](https://redirect.github.com/steadytao) in
[#&#8203;7599](https://redirect.github.com/caddyserver/caddy/pull/7599)
- root: introduce down-propagating Helper.BlockState for other
directives/plugins to use by
[@&#8203;henderkes](https://redirect.github.com/henderkes) in
[#&#8203;7594](https://redirect.github.com/caddyserver/caddy/pull/7594)
- http: make zstd checksum configurable by
[@&#8203;ottenhoff](https://redirect.github.com/ottenhoff) in
[#&#8203;7586](https://redirect.github.com/caddyserver/caddy/pull/7586)
- notify: Always send "READY=1" even after an error by
[@&#8203;francislavoie](https://redirect.github.com/francislavoie) in
[#&#8203;7597](https://redirect.github.com/caddyserver/caddy/pull/7597)
- reverseproxy: Fix check for `header_up Host {upstream_hostport}`
redundancy by [@&#8203;yubiuser](https://redirect.github.com/yubiuser)
in
[#&#8203;7564](https://redirect.github.com/caddyserver/caddy/pull/7564)
- caddytls: Expand placeholders in dns\_challenge override\_domain tls
parameter by [@&#8203;pberkel](https://redirect.github.com/pberkel) in
[#&#8203;7609](https://redirect.github.com/caddyserver/caddy/pull/7609)
- tls: add system and combined CA pool modules by
[@&#8203;HarshPatel5940](https://redirect.github.com/HarshPatel5940) in
[#&#8203;7406](https://redirect.github.com/caddyserver/caddy/pull/7406)
- vars: Don't expand placeholders in values by
[@&#8203;vnxme](https://redirect.github.com/vnxme) in
[#&#8203;7629](https://redirect.github.com/caddyserver/caddy/pull/7629)
- build(deps): bump
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp from
1.42.0 to 1.43.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot)\[bot] in
[#&#8203;7637](https://redirect.github.com/caddyserver/caddy/pull/7637)
- build(deps): bump the all-updates group across 1 directory with 11
updates by
[@&#8203;dependabot](https://redirect.github.com/dependabot)\[bot] in
[#&#8203;7641](https://redirect.github.com/caddyserver/caddy/pull/7641)
- reverseproxy: make stream copy buffer size configurable by
[@&#8203;steadytao](https://redirect.github.com/steadytao) in
[#&#8203;7627](https://redirect.github.com/caddyserver/caddy/pull/7627)
- vars: Add matcher placeholder handling tests by
[@&#8203;steadytao](https://redirect.github.com/steadytao) in
[#&#8203;7640](https://redirect.github.com/caddyserver/caddy/pull/7640)
- build(deps): bump github.com/go-jose/go-jose/v4 from 4.1.3 to 4.1.4 by
[@&#8203;dependabot](https://redirect.github.com/dependabot)\[bot] in
[#&#8203;7621](https://redirect.github.com/caddyserver/caddy/pull/7621)
- logging: Add journald encoder wrapper by
[@&#8203;steadytao](https://redirect.github.com/steadytao) in
[#&#8203;7623](https://redirect.github.com/caddyserver/caddy/pull/7623)
- caddyfile: Improve import/global options UX for imports before global
options by [@&#8203;steadytao](https://redirect.github.com/steadytao) in
[#&#8203;7642](https://redirect.github.com/caddyserver/caddy/pull/7642)
- chore: replace `interface{}` with `any` for modernization by
[@&#8203;tsinglua](https://redirect.github.com/tsinglua) in
[#&#8203;7571](https://redirect.github.com/caddyserver/caddy/pull/7571)
- chore: bump timberjack to v1.4.1 by
[@&#8203;DeRuina](https://redirect.github.com/DeRuina) in
[#&#8203;7618](https://redirect.github.com/caddyserver/caddy/pull/7618)
- logging: Preserve ts for journald-wrapped JSON logs by
[@&#8203;steadytao](https://redirect.github.com/steadytao) in
[#&#8203;7644](https://redirect.github.com/caddyserver/caddy/pull/7644)
- fileserver: show symlink targets verbatim
([#&#8203;7476](https://redirect.github.com/caddyserver/caddy/issues/7476))
by [@&#8203;maxtruxa](https://redirect.github.com/maxtruxa) in
[#&#8203;7579](https://redirect.github.com/caddyserver/caddy/pull/7579)
- fix(caddyfile): {block} in snippet by
[@&#8203;prettysunflower](https://redirect.github.com/prettysunflower)
in
[#&#8203;7558](https://redirect.github.com/caddyserver/caddy/pull/7558)
- caddyhttp: Document missing placeholders for escaped URI and prefixed
query by
[@&#8203;steffenbusch](https://redirect.github.com/steffenbusch) in
[#&#8203;7659](https://redirect.github.com/caddyserver/caddy/pull/7659)
- chore: add `AGENTS.md` by
[@&#8203;mohammed90](https://redirect.github.com/mohammed90) in
[#&#8203;7652](https://redirect.github.com/caddyserver/caddy/pull/7652)
- build(deps): bump github.com/jackc/pgx/v5 from 5.8.0 to 5.9.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot)\[bot] in
[#&#8203;7655](https://redirect.github.com/caddyserver/caddy/pull/7655)
- admin: Redact sensitive request headers in API logs by
[@&#8203;steadytao](https://redirect.github.com/steadytao) in
[#&#8203;7578](https://redirect.github.com/caddyserver/caddy/pull/7578)
- reverseproxy: add `lb_retry_match` condition on response status by
[@&#8203;seroperson](https://redirect.github.com/seroperson) in
[#&#8203;7569](https://redirect.github.com/caddyserver/caddy/pull/7569)
- caddyhttp: prefer port 443 in auto-HTTPS and add tests by
[@&#8203;mholt](https://redirect.github.com/mholt) in
[#&#8203;7666](https://redirect.github.com/caddyserver/caddy/pull/7666)
- fix: Propagate ECH keys to the QUIC listener by
[@&#8203;steadytao](https://redirect.github.com/steadytao) in
[#&#8203;7670](https://redirect.github.com/caddyserver/caddy/pull/7670)
- chore: Use atomics where appropriate by
[@&#8203;francislavoie](https://redirect.github.com/francislavoie) in
[#&#8203;7648](https://redirect.github.com/caddyserver/caddy/pull/7648)
- metrics: Implement pushing via OLTP by
[@&#8203;dunglas](https://redirect.github.com/dunglas) in
[#&#8203;7664](https://redirect.github.com/caddyserver/caddy/pull/7664)
- logging: Add regression coverage for rotated file mode by
[@&#8203;steadytao](https://redirect.github.com/steadytao) in
[#&#8203;7620](https://redirect.github.com/caddyserver/caddy/pull/7620)
- httpcaddyfile: Inherit global ACME issuer settings in tls shortcuts by
[@&#8203;steadytao](https://redirect.github.com/steadytao) in
[#&#8203;7617](https://redirect.github.com/caddyserver/caddy/pull/7617)
- build(deps): bump github.com/jackc/pgx/v5 from 5.9.0 to 5.9.2 by
[@&#8203;dependabot](https://redirect.github.com/dependabot)\[bot] in
[#&#8203;7668](https://redirect.github.com/caddyserver/caddy/pull/7668)
- admin: require path segment boundary in remote access control by
[@&#8203;Amemoyoi](https://redirect.github.com/Amemoyoi) in
[#&#8203;7673](https://redirect.github.com/caddyserver/caddy/pull/7673)
- reverseproxy: Add ability to clear dynamic upstreams cache during
retries by [@&#8203;mholt](https://redirect.github.com/mholt) in
[#&#8203;7662](https://redirect.github.com/caddyserver/caddy/pull/7662)
- listeners: clean up stale Unix socket files on Windows by
[@&#8203;mfrischknecht](https://redirect.github.com/mfrischknecht) in
[#&#8203;7676](https://redirect.github.com/caddyserver/caddy/pull/7676)
- admin: reject non-canonical config array indices by
[@&#8203;Amemoyoi](https://redirect.github.com/Amemoyoi) in
[#&#8203;7592](https://redirect.github.com/caddyserver/caddy/pull/7592)
- caddytls: Expand ACME credentials by
[@&#8203;tribut](https://redirect.github.com/tribut) in
[#&#8203;7554](https://redirect.github.com/caddyserver/caddy/pull/7554)
- caddyauth: set user placeholders before auth rejection by
[@&#8203;cyphercodes](https://redirect.github.com/cyphercodes) in
[#&#8203;7685](https://redirect.github.com/caddyserver/caddy/pull/7685)
- caddyauth: revert user placeholders on auth rejection by
[@&#8203;steadytao](https://redirect.github.com/steadytao) in
[#&#8203;7688](https://redirect.github.com/caddyserver/caddy/pull/7688)
- chore: Fix golangci-lint 2.12.1 findings by
[@&#8203;steadytao](https://redirect.github.com/steadytao) in
[#&#8203;7690](https://redirect.github.com/caddyserver/caddy/pull/7690)
- httpcaddyfile: accept duration strings for log sampling interval by
[@&#8203;tomholford](https://redirect.github.com/tomholford) in
[#&#8203;7694](https://redirect.github.com/caddyserver/caddy/pull/7694)
- tls: Add alpn to managed HTTPS records by
[@&#8203;steadytao](https://redirect.github.com/steadytao) in
[#&#8203;7653](https://redirect.github.com/caddyserver/caddy/pull/7653)
- caddytls: avoid duplicate automation for wildcard-covered hosts by
[@&#8203;Rijul-A](https://redirect.github.com/Rijul-A) in
[#&#8203;7697](https://redirect.github.com/caddyserver/caddy/pull/7697)
- docs: add documentation for fileExists and fileStat template functions
by [@&#8203;steffenbusch](https://redirect.github.com/steffenbusch) in
[#&#8203;7700](https://redirect.github.com/caddyserver/caddy/pull/7700)
- rewrite: escape file matcher paths before rewriting by
[@&#8203;cyphercodes](https://redirect.github.com/cyphercodes) in
[#&#8203;7683](https://redirect.github.com/caddyserver/caddy/pull/7683)
- metrics: Add nil check for metricsHandler in AdminMetrics.serveHTTP by
[@&#8203;Br1an67](https://redirect.github.com/Br1an67) in
[#&#8203;7553](https://redirect.github.com/caddyserver/caddy/pull/7553)

#### New Contributors

- [@&#8203;steadytao](https://redirect.github.com/steadytao) made their
first contribution in
[#&#8203;7577](https://redirect.github.com/caddyserver/caddy/pull/7577)
- [@&#8203;henderkes](https://redirect.github.com/henderkes) made their
first contribution in
[#&#8203;7594](https://redirect.github.com/caddyserver/caddy/pull/7594)
- [@&#8203;yubiuser](https://redirect.github.com/yubiuser) made their
first contribution in
[#&#8203;7564](https://redirect.github.com/caddyserver/caddy/pull/7564)
- [@&#8203;pberkel](https://redirect.github.com/pberkel) made their
first contribution in
[#&#8203;7609](https://redirect.github.com/caddyserver/caddy/pull/7609)
- [@&#8203;HarshPatel5940](https://redirect.github.com/HarshPatel5940)
made their first contribution in
[#&#8203;7406](https://redirect.github.com/caddyserver/caddy/pull/7406)
- [@&#8203;tsinglua](https://redirect.github.com/tsinglua) made their
first contribution in
[#&#8203;7571](https://redirect.github.com/caddyserver/caddy/pull/7571)
- [@&#8203;maxtruxa](https://redirect.github.com/maxtruxa) made their
first contribution in
[#&#8203;7579](https://redirect.github.com/caddyserver/caddy/pull/7579)
- [@&#8203;seroperson](https://redirect.github.com/seroperson) made
their first contribution in
[#&#8203;7569](https://redirect.github.com/caddyserver/caddy/pull/7569)
- [@&#8203;Amemoyoi](https://redirect.github.com/Amemoyoi) made their
first contribution in
[#&#8203;7673](https://redirect.github.com/caddyserver/caddy/pull/7673)
- [@&#8203;mfrischknecht](https://redirect.github.com/mfrischknecht)
made their first contribution in
[#&#8203;7676](https://redirect.github.com/caddyserver/caddy/pull/7676)
- [@&#8203;tribut](https://redirect.github.com/tribut) made their first
contribution in
[#&#8203;7554](https://redirect.github.com/caddyserver/caddy/pull/7554)
- [@&#8203;cyphercodes](https://redirect.github.com/cyphercodes) made
their first contribution in
[#&#8203;7685](https://redirect.github.com/caddyserver/caddy/pull/7685)
- [@&#8203;tomholford](https://redirect.github.com/tomholford) made
their first contribution in
[#&#8203;7694](https://redirect.github.com/caddyserver/caddy/pull/7694)
- [@&#8203;Rijul-A](https://redirect.github.com/Rijul-A) made their
first contribution in
[#&#8203;7697](https://redirect.github.com/caddyserver/caddy/pull/7697)
- [@&#8203;Br1an67](https://redirect.github.com/Br1an67) made their
first contribution in
[#&#8203;7553](https://redirect.github.com/caddyserver/caddy/pull/7553)

**Full Changelog**:
<https://github.com/caddyserver/caddy/compare/v2.11.2...v2.11.3>

</details>

<details>
<summary>dlclark/regexp2 (github.com/dlclark/regexp2/v2)</summary>

###
[`v2.0.3`](https://redirect.github.com/dlclark/regexp2/compare/v2.0.2...v2.0.3)

[Compare
Source](https://redirect.github.com/dlclark/regexp2/compare/v2.0.2...v2.0.3)

</details>

<details>
<summary>casey/just (just)</summary>

###
[`v1.51.0`](https://redirect.github.com/casey/just/blob/HEAD/CHANGELOG.md#1510---2026-05-09)

[Compare
Source](https://redirect.github.com/casey/just/compare/1.50.0...1.51.0)

##### Added

- Add `no-cd` setting
([#&#8203;2981](https://redirect.github.com/casey/just/pull/2981) by
[hans-d](https://redirect.github.com/hans-d))

##### Changed

- Allow `[env]` attribute to take expressions
([#&#8203;3329](https://redirect.github.com/casey/just/pull/3329) by
[casey](https://redirect.github.com/casey))
- Allow using expressions with `[working-directory]`
([#&#8203;3326](https://redirect.github.com/casey/just/pull/3326) by
[casey](https://redirect.github.com/casey))
- Read justfile from standard input with `--justfile -`
([#&#8203;3325](https://redirect.github.com/casey/just/pull/3325) by
[casey](https://redirect.github.com/casey))
- Make `parent_directory()` of bare filename return `.`
([#&#8203;3313](https://redirect.github.com/casey/just/pull/3313) by
[casey](https://redirect.github.com/casey))
- Make `[env]` override module-level exports
([#&#8203;3312](https://redirect.github.com/casey/just/pull/3312) by
[casey](https://redirect.github.com/casey))

##### Fixed

- Fail on deep recursion instead of overflowing stack
([#&#8203;3319](https://redirect.github.com/casey/just/pull/3319) by
[casey](https://redirect.github.com/casey))
- Invoke chooser selections separately
([#&#8203;3311](https://redirect.github.com/casey/just/pull/3311) by
[casey](https://redirect.github.com/casey))
- Don't evaluate unused assertions
([#&#8203;3310](https://redirect.github.com/casey/just/pull/3310) by
[casey](https://redirect.github.com/casey))
- Respect lazy setting in submodules
([#&#8203;3308](https://redirect.github.com/casey/just/pull/3308) by
[casey](https://redirect.github.com/casey))
- Fix overrides not being visible in user-defined functions
([#&#8203;3307](https://redirect.github.com/casey/just/pull/3307) by
[casey](https://redirect.github.com/casey))
- Don't panic on invalid datetime format string
([#&#8203;3304](https://redirect.github.com/casey/just/pull/3304) by
[casey](https://redirect.github.com/casey))

##### Misc

- Use `cargo-limit` commands in justfile
([#&#8203;3331](https://redirect.github.com/casey/just/pull/3331) by
[casey](https://redirect.github.com/casey))
- Simplify code more
([#&#8203;3330](https://redirect.github.com/casey/just/pull/3330) by
[casey](https://redirect.github.com/casey))
- Update install-dev-deps recipe with compatible mdbook
([#&#8203;3328](https://redirect.github.com/casey/just/pull/3328) by
[casey](https://redirect.github.com/casey))
- Simplify code
([#&#8203;3327](https://redirect.github.com/casey/just/pull/3327) by
[casey](https://redirect.github.com/casey))
- Link to duplicate recipe issue in readme
([#&#8203;3321](https://redirect.github.com/casey/just/pull/3321) by
[casey](https://redirect.github.com/casey))
- Remove periods from error messages
([#&#8203;3316](https://redirect.github.com/casey/just/pull/3316) by
[casey](https://redirect.github.com/casey))
- Avoid multi-sentence error messagess
([#&#8203;3315](https://redirect.github.com/casey/just/pull/3315) by
[casey](https://redirect.github.com/casey))
- Make error messages lowercase
([#&#8203;3314](https://redirect.github.com/casey/just/pull/3314) by
[casey](https://redirect.github.com/casey))
- Actually bump version to 1.50.0
([#&#8203;3303](https://redirect.github.com/casey/just/pull/3303) by
[casey](https://redirect.github.com/casey))

</details>

<details>
<summary>astral-sh/uv (uv)</summary>

###
[`v0.11.14`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#01114)

[Compare
Source](https://redirect.github.com/astral-sh/uv/compare/0.11.13...0.11.14)

Released on 2026-05-12.

##### Enhancements

- Add Astral mirror URL override
([#&#8203;19206](https://redirect.github.com/astral-sh/uv/pull/19206))
- Ignore `top_level.txt` entries in uninstall that are not valid Python
identifiers
([#&#8203;19340](https://redirect.github.com/astral-sh/uv/pull/19340))

##### Bug fixes

- Avoid applying `.env` files in parent process
([#&#8203;19343](https://redirect.github.com/astral-sh/uv/pull/19343))
- Filter ANSI codes in logging output
([#&#8203;19311](https://redirect.github.com/astral-sh/uv/pull/19311))
- Fix `uv tree` showing extra-conditional deps for packages required
without extras
([#&#8203;19332](https://redirect.github.com/astral-sh/uv/pull/19332))
- Respect build options (e.g., `--no-build`) during lock validation
([#&#8203;19366](https://redirect.github.com/astral-sh/uv/pull/19366))

###
[`v0.11.13`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#01113)

[Compare
Source](https://redirect.github.com/astral-sh/uv/compare/0.11.12...0.11.13)

Released on 2026-05-10.

##### Bug fixes

- Include data files in editable builds
([#&#8203;19312](https://redirect.github.com/astral-sh/uv/pull/19312))
- Respect `--require-hashes` when installing from `pylock.toml` files
([#&#8203;19334](https://redirect.github.com/astral-sh/uv/pull/19334))

##### Python

- Add CPython 3.14.5

</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:eyJjcmVhdGVkSW5WZXIiOiI0My4xNTkuMiIsInVwZGF0ZWRJblZlciI6IjQzLjE3OS4zIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-15 15:42:05 +10:00
Yukari Hafner e67dd2f4f7 (Markless) Fix parse issue for embed directives without options (#1266)
This fixes an issue with misparsing embed directives that don't include
any options, such as:

```markless
[ image foo ]
```
2026-05-15 05:31:47 +10:00
Sai Asish Y dffa370b98 fix(go): tokenize trailing // as comment instead of consuming next line (#1265)
The Go single-line comment rule `//\s+[^\n\r]*` requires a non-newline
char after the whitespace, so a `//` at end of line falls through to the
rule with greedy `\s+` which consumes the trailing newline plus the next
line's indent, swallowing the following line into the comment token.

Switches the rules to `//[^\s\n\r][^\n\r]*` (CommentPreproc) and
`//[^\n\r]*` (CommentSingle), which keeps build-tag preproc handling
intact and matches an empty-body comment correctly.

Closes #1264
2026-05-13 20:23:08 +10:00
Alec Thomas 1cf15602ee chore: upgrade to github.com/dlclark/regexp2/v2 2026-05-12 16:56:00 +10:00
Alec Thomas 2cbcf7b18b chore: upgrade golangci-lint 2026-05-12 16:48:00 +10:00
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
Johan Walles 235590cd47 feat: add JSONL support to JSON lexer (#1262)
### Description
This PR adds support for JSON Lines (JSONL) to the existing JSON lexer.

Because the existing JSON lexer already handles repeating objects
natively, this implementation simply maps the \`jsonl\` file extension,
alias, and mime type to the \`JSON\` lexer configuration without needing
any underlying state machine changes.

Inspired by https://github.com/walles/moor/pull/407.

### Changes
* **Alias added:** \`jsonl\`
* **File extension added:** \`*.jsonl\`
* **MIME type added:** \`application/jsonl\`
* **Tests:** Added \`jsonl.actual\` and \`jsonl.expected\` validation
files to ensure tokens are correctly extracted across newlines in
\`.jsonl\` files.

### Testing
Ran \`go test ./lexers -run TestLexers\` locally to verify that JSON
Lines objects format accurately and consistently.
2026-05-09 20:57:46 +10:00
David Tran f9b5c97433 fix(dart): match single-line comments without trailing newline (#1225) (#1261)
Fixes the Dart single-line comment rule so a `// …` comment that ends a
file without a trailing newline is tokenized as `CommentSingle` instead
of falling through to the operator/name rules.

`//.*?\n` → `//[^\n]*\n?` in `lexers/embedded/dart.xml`:

- `\n?` makes the trailing newline optional so final-line comments at
EOF match.
- `[^\n]*` (instead of `.*?`) keeps the pattern correct under
  `<dot_all>true</dot_all>`, where `.` would otherwise match `\n`.
- Mirrors the pattern already used in `lexers/embedded/kotlin.xml`.

Before: `printf '%s' '// test'` → `Operator / Operator / Text / Name`
After:  `printf '%s' '// test'` → `CommentSingle "// test"`

Fixes #1225

---

Happy to address any feedback. Wanted to flag because the prior fix at
#1243 was closed without comments, so I wasn't sure if there was
something specific blocking it.
2026-05-09 16:01:21 +10:00
Evan Hahn 097f8e9ea4 Mention Arturo in README (#1256)
Arturo support was added in 113cd0ee34
(#1232). Let's mention that it's supported.
2026-05-04 01:08:59 +10:00
Paulo Pacitti d46ce60ea1 feat(markdown): highlight frontmatter and comments (#1245)
Adds Markdown frontmatter and HTML comment highlighting, including a
dedicated frontmatter split path for top-of-file YAML blocks. Also
updates gruvbox themes so frontmatter tokens render consistently, with
tests covering the new tokenization.
2026-05-03 09:12:08 +10:00
Christoph Wagner f786b2a4a2 feat(lexers): add support for LilyPond (#1255)
Add LilyPond support (see #809) based on the pygments lexer.
2026-05-02 08:57:30 +10:00
renovate[bot] 0a02b9816f chore(deps): update actions/checkout digest to de0fac2 (#1212)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [actions/checkout](https://redirect.github.com/actions/checkout)
([changelog](https://redirect.github.com/actions/checkout/compare/8e8c483db84b4bee98b60c0593521ed34d9990e8..de0fac2e4500dabe0009e67214ff5f5447ce83dd))
| action | digest | `8e8c483` → `de0fac2` |

---

### 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.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- 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:eyJjcmVhdGVkSW5WZXIiOiI0Mi45NS4yIiwidXBkYXRlZEluVmVyIjoiNDMuMTEwLjIiLCJ0YXJnZXRCcmFuY2giOiJtYXN0ZXIiLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-02 08:56:38 +10:00
Evan Hahn c55009e353 Fix AGENTS.md referencing a non-existent scripts directory (#1231)
AGENTS.md referenced `./scripts`, which doesn't exist. This updates the
file to reference `./_tools`.
2026-05-02 08:56:15 +10:00
Stefan VanBuren c5e763e1a3 Improve protobuf lexer (#1253)
This takes a pass at adding editions support to the protobuf lexer,
alongside a couple other minor tweaks. Added some additional test files
for editions 2023/2024.

Worked on this with `claude`, comparing against the [tree-sitter-proto
repository](https://github.com/coder3101/tree-sitter-proto) I help to
maintain. Open to any suggestions.

Thanks for the project — using it personally between `hugo` and my own
little toy [`buftui`](https://github.com/stefanvanburen/buftui) project.
2026-05-02 08:55:27 +10:00
Evan Hahn 113cd0ee34 Add Arturo lexer (#1232)
This is a port of `pygments.lexers.arturo` from Pygments.
2026-05-02 08:55:13 +10:00
renovate[bot] 4498d71bf4 chore(deps): update dependency binaryen to v129 (#1238)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [binaryen](https://redirect.github.com/WebAssembly/binaryen) | major |
`125` → `129` |

---

### Release Notes

<details>
<summary>WebAssembly/binaryen (binaryen)</summary>

###
[`v129`](https://redirect.github.com/WebAssembly/binaryen/blob/HEAD/CHANGELOG.md#v129)

- Add a `BinaryenDataSegmentRef` type to the C API.
([#&#8203;8286](https://redirect.github.com/WebAssembly/binaryen/issues/8286))
- Add `BinaryenGetDataSegment` and `BinaryenGetDataSegmentByIndex` to
the C API, which allow looking up a data segment by name or index.
- Add `BinaryenDataSegmentGetName` to the C API, which allows looking up
a data segment's name.
- Convert `BinaryenGetMemorySegmentByteOffset`,
`BinaryenGetMemorySegmentByteLength`, `BinaryenGetMemorySegmentPassive`
and `BinaryenCopyMemorySegmentData` to take a `BinaryenDataSegmentRef`
instead of a name.
- Add `module.getDataSegment`, `module.getDataSegmentByIndex` to the JS
API, which allows looking up a data segment by name or index.
- Convert `module.getMemorySegmentInfo` to take a data segment reference
instead of a name, and return the name as part of the info.
- Add support for non-nullable table types and initialization
expressions for
tables. This comes with a breaking change to C API: `BinaryenAddTable`
takes
an additional `BinaryenExpressionRef` parameter to provide an
initialization
expression. This may be set to NULL for tables without an initializer.
In JS
this parameter is optional and so is not breaking.
([#&#8203;8405](https://redirect.github.com/WebAssembly/binaryen/issues/8405))
- \[multibyte] Add multibyte array store and load instructions.
([#&#8203;8059](https://redirect.github.com/WebAssembly/binaryen/issues/8059),
[#&#8203;8504](https://redirect.github.com/WebAssembly/binaryen/issues/8504))
- MinifyImportsAndExports now has a new output format using JSON. This
was
changed while fixing bugs with colliding module names (to avoid two
breaking
changes to the output).
([#&#8203;8550](https://redirect.github.com/WebAssembly/binaryen/issues/8550))
- Update from C++17 to C++20
([#&#8203;8218](https://redirect.github.com/WebAssembly/binaryen/issues/8218))

###
[`v128`](https://redirect.github.com/WebAssembly/binaryen/blob/HEAD/CHANGELOG.md#v128)

- (bugfix release)

###
[`v127`](https://redirect.github.com/WebAssembly/binaryen/blob/HEAD/CHANGELOG.md#v127)

- Implement the Custom Page Sizes proposal.
([#&#8203;8307](https://redirect.github.com/WebAssembly/binaryen/issues/8307))
- New intrinsic: `@binaryen.idempotent`.
([#&#8203;8354](https://redirect.github.com/WebAssembly/binaryen/issues/8354))
- Add --strip-debug option to wasm-split
([#&#8203;8432](https://redirect.github.com/WebAssembly/binaryen/issues/8432))
- The emscripten build of binaryen no longer targets pure JS (via
wasm2js) by
default. This allows us to enable WASM\_BIGINT and other features that
wasm2js does not support. There is now just a single binaryen\_js
target. It
should still be possible to inject `-sWASM=0` as a linker flag but this
is
not officially supported.
([#&#8203;7995](https://redirect.github.com/WebAssembly/binaryen/issues/7995))
- As part of enabling the `WASM_BIGINT` in the emscripten build the JS
API for
manipulating 64-bit values was changed. These APIs, such as `i64.const`
and `setValueI64`, previously took a hi/low pair but now take a single
value
which can be bigint or a number. Passing two values to these APIs will
now
trigger an assertion.
([#&#8203;7984](https://redirect.github.com/WebAssembly/binaryen/issues/7984))

###
[`v126`](https://redirect.github.com/WebAssembly/binaryen/blob/HEAD/CHANGELOG.md#v126)

- New intrinsic: `@binaryen.removable.if.unused`.
([#&#8203;8268](https://redirect.github.com/WebAssembly/binaryen/issues/8268))
- New intrinsic: `@binaryen.js.called`.
([#&#8203;8324](https://redirect.github.com/WebAssembly/binaryen/issues/8324))
- Add a pass to remove toolchain annotations,
`--strip-toolchain-annotations`,
for the above two intrinsics and future ones.
([#&#8203;8301](https://redirect.github.com/WebAssembly/binaryen/issues/8301))
- Add a pass to remove relaxed SIMD instructions,
`--remove-relaxed-simd`

([#&#8203;8300](https://redirect.github.com/WebAssembly/binaryen/issues/8300))
- JS API: Throw useful exceptions on parse errors in binaryen.js, rather
than
fatally error and shut down the entire process.
([#&#8203;8264](https://redirect.github.com/WebAssembly/binaryen/issues/8264))
- Implement function-level inlining hints (previously we only supported
this
annotation on calls, not functions themselves).
([#&#8203;8265](https://redirect.github.com/WebAssembly/binaryen/issues/8265))
- Update C and JS libraries with relaxed atomics support
([#&#8203;8248](https://redirect.github.com/WebAssembly/binaryen/issues/8248))
- wasm-split: Export/Import only necessary elements, avoiding bloat.
([#&#8203;8221](https://redirect.github.com/WebAssembly/binaryen/issues/8221))
- Use `std::quick_exit` in `wasm-opt` etc. tools, to skip cleanup.
([#&#8203;8212](https://redirect.github.com/WebAssembly/binaryen/issues/8212))
- The C API now has separate functions for `CallRef` and `ReturnCallRef`
matching the semantics of `Call` and `ReturnCall`
([#&#8203;8121](https://redirect.github.com/WebAssembly/binaryen/issues/8121)).
- Breaking changes to the C and JS APIs related to atomic operations, in
order
to support the relaxed atomics proposal (currently a part of the [shared
everything threads
proposal](https://redirect.github.com/WebAssembly/shared-everything-threads))
([#&#8203;8248](https://redirect.github.com/WebAssembly/binaryen/issues/8248)).
- `setAtomic` on atomic loads/stores is removed in favor of
`setMemoryOrder`.
`BinaryenLoadSetAtomic(expr, false)` / `load.setAtomic(false)` may be
    replaced with `BinaryenLoadSetMemoryOrder(expr,
BinaryenMemoryOrderUnordered())`, `BinaryenLoadSetAtomic(expr, true)` /
    `load.setAtomic(true)` may be replaced with
    `BinaryenLoadSetMemoryOrder(expr, BinaryenMemoryOrderSeqCst())`, and
likewise for `Store`s. In addition to Unordered and SeqCst, these
functions
    support AcqRel which implements acquire/release semantics.
- Likewise `BinaryenAtomicLoad`, `BinaryenAtomicStore`,
`BinaryenAtomicRMW`,
    and `BinaryenAtomicCmpxchg` are updated with an additional
    `BinaryenMemoryOrder` param. The functions formerly implicitly used
`BinaryenMemoryOrderSeqCst()`. In JS this param is optional and thus not
    breaking.

</details>

---

### Configuration

📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, only on
Monday ( * 0-3 * * 1 ) (UTC), 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.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- 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:eyJjcmVhdGVkSW5WZXIiOiI0My4xMDIuMTEiLCJ1cGRhdGVkSW5WZXIiOiI0My4xMDIuMTEiLCJ0YXJnZXRCcmFuY2giOiJtYXN0ZXIiLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-02 08:54:15 +10:00
unxed 885f9128d4 Added f4 to "Projects using Chroma" list (#1242)
Fixes #1241
2026-05-02 08:53:26 +10:00
otbutz c42c9ef421 Update java lexer (#1254)
Generated from pygments 2.2.0, incorporating the changes introduced by
https://github.com/pygments/pygments/pull/2955

```sh
uv run --script _tools/pygments2chroma_xml.py pygments.lexers.jvm.JavaLexer > lexers/embedded/java.xml
```
2026-05-01 15:18:33 +10:00