Skip to content

fix(linter): ignore svelte special elements in noStaticElementInteractions#10759

Merged
dyc3 merged 1 commit into
biomejs:mainfrom
henrybrewer00-dotcom:fix/no-static-element-interactions-svelte
Jun 30, 2026
Merged

fix(linter): ignore svelte special elements in noStaticElementInteractions#10759
dyc3 merged 1 commit into
biomejs:mainfrom
henrybrewer00-dotcom:fix/no-static-element-interactions-svelte

Conversation

@henrybrewer00-dotcom

Copy link
Copy Markdown
Contributor

Summary

Closes #10636. noStaticElementInteractions reported a false positive for event handlers on Svelte special elements like <svelte:window onkeydown={...} />, <svelte:document>, and <svelte:body>. These aren't real DOM elements, so the static-element check shouldn't apply to them.

Added AnyHtmlTagElement::is_svelte_special_element (tag name starting with svelte:) and the rule now bails out early for those elements.

Test Plan

Added a Svelte spec (noStaticElementInteractions/svelte/special-elements.svelte) with handlers on <svelte:window>, <svelte:document>, and <svelte:body>; it produces no diagnostics. The rule's existing specs still pass.

This PR was written with the help of Claude Code (AI assistance), including the test and this description; the change was reviewed and verified by me.

@changeset-bot

changeset-bot Bot commented Jun 25, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 70626f9

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 13 packages
Name Type
@biomejs/biome Patch
@biomejs/cli-win32-x64 Patch
@biomejs/cli-win32-arm64 Patch
@biomejs/cli-darwin-x64 Patch
@biomejs/cli-darwin-arm64 Patch
@biomejs/cli-linux-x64 Patch
@biomejs/cli-linux-arm64 Patch
@biomejs/cli-linux-x64-musl Patch
@biomejs/cli-linux-arm64-musl Patch
@biomejs/wasm-web Patch
@biomejs/wasm-bundler Patch
@biomejs/wasm-nodejs Patch
@biomejs/backend-jsonrpc Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@github-actions

Copy link
Copy Markdown
Contributor

✅ Organic activity

No automation signals detected in the analyzed events.

View full analysis →

This is an automated analysis by AgentScan

@github-actions github-actions Bot added A-Linter Area: linter A-Parser Area: parser L-HTML Language: HTML and super languages labels Jun 25, 2026
@coderabbitai

coderabbitai Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: b113cd6e-a48b-4730-af13-da6c9f08ae61

📥 Commits

Reviewing files that changed from the base of the PR and between 5a2e65b and 70626f9.

⛔ Files ignored due to path filters (1)
  • crates/biome_html_analyze/tests/specs/a11y/noStaticElementInteractions/svelte/special-elements.svelte.snap is excluded by !**/*.snap and included by **
📒 Files selected for processing (4)
  • .changeset/fix-no-static-element-interactions-svelte.md
  • crates/biome_html_analyze/src/lint/a11y/no_static_element_interactions.rs
  • crates/biome_html_analyze/tests/specs/a11y/noStaticElementInteractions/svelte/special-elements.svelte
  • crates/biome_html_syntax/src/element_ext.rs

Walkthrough

Adds Svelte special-element detection in HTML syntax and uses it to skip noStaticElementInteractions diagnostics for svelte:window, svelte:document, and svelte:body. A new spec covers those elements, and a changeset entry records the patch release.

Possibly related issues

Possibly related PRs

  • biomejs/biome#10069 — Directly related to the same accessibility rule implementation and its Svelte-specific handling.
  • biomejs/biome#10191 — Also changes NoStaticElementInteractions::run to widen the early-exit conditions for non-standard elements.

Suggested labels

A-Diagnostic

Suggested reviewers

  • ematipico
  • dyc3
🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly matches the main change: ignoring Svelte special elements in the noStaticElementInteractions rule.
Description check ✅ Passed The description is directly about the same lint fix and test addition, so it is relevant to the changeset.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@codspeed-hq

codspeed-hq Bot commented Jun 25, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 67 untouched benchmarks
⏩ 189 skipped benchmarks1


Comparing henrybrewer00-dotcom:fix/no-static-element-interactions-svelte (70626f9) with main (53c6efc)2

Open in CodSpeed

Footnotes

  1. 189 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

  2. No successful run was found on main (5a2e65b) during the generation of this report, so 53c6efc was used instead as the comparison base. There might be some changes unrelated to this pull request in this report.

@dyc3 dyc3 merged commit 34570b5 into biomejs:main Jun 30, 2026
33 checks passed
@github-actions github-actions Bot mentioned this pull request Jun 30, 2026
OIRNOIR pushed a commit to OIRNOIR/YouTube-Helper-Client that referenced this pull request Jul 4, 2026
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [@biomejs/biome](https://biomejs.dev) ([source](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome)) | imports | patch | [`2.5.1` -> `2.5.2`](https://renovatebot.com/diffs/npm/@biomejs%2fbiome/2.5.1/2.5.2) |

---

### Release Notes

<details>
<summary>biomejs/biome (@&#8203;biomejs/biome)</summary>

### [`v2.5.2`](https://github.com/biomejs/biome/blob/HEAD/packages/@&#8203;biomejs/biome/CHANGELOG.md#252)

[Compare Source](https://github.com/biomejs/biome/compare/@biomejs/biome@2.5.1...@biomejs/biome@2.5.2)

##### Patch Changes

- [#&#8203;10595](biomejs/biome#10595) [`f458028`](biomejs/biome@f458028) Thanks [@&#8203;pkallos](https://github.com/pkallos)! - Added the option `ignoreBooleanCoercion` to [useNullishCoalescing](https://biomejs.dev/linter/rules/use-nullish-coalescing/). When enabled, Biome ignores `||` and `||=` used inside a `Boolean()` call, where coalescing on falsy values is intentional.

- [#&#8203;10798](biomejs/biome#10798) [`4a32b63`](biomejs/biome@4a32b63) Thanks [@&#8203;pkallos](https://github.com/pkallos)! - Added the option `ignorePrimitives` to [useNullishCoalescing](https://biomejs.dev/linter/rules/use-nullish-coalescing/). When enabled, Biome ignores `||`, `||=`, and ternary expressions whose non-nullish operands are all primitives the option opts out of. Use `true` to ignore all primitives, or an object selecting `string`, `number`, `boolean`, or `bigint`.

- [#&#8203;10545](biomejs/biome#10545) [`f3d4c00`](biomejs/biome@f3d4c00) Thanks [@&#8203;Mokto](https://github.com/Mokto)! - Added the new nursery rule [`noSvelteUnnecessaryStateWrap`](https://biomejs.dev/linter/rules/no-svelte-unnecessary-state-wrap/), which reports unnecessary `$state()` wrapping of classes from `svelte/reactivity` that are already reactive.

  ```svelte
  <script>
  import { SvelteMap } from "svelte/reactivity";
  const map = $state(new SvelteMap()); // redundant
  </script>
  ```

- [#&#8203;10752](biomejs/biome#10752) [`f62fb8b`](biomejs/biome@f62fb8b) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed [#&#8203;10739](biomejs/biome#10739). Now the rule [`useValidAutocomplete`](https://biomejs.dev/linter/rules/use-valid-autocomplete/) correctly flags the `autoComplete` attribute.

- [#&#8203;10796](biomejs/biome#10796) [`f1b3ab2`](biomejs/biome@f1b3ab2) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed [#&#8203;10768](biomejs/biome#10768). Improved the performance of the Biome Language Server by cancelling certain in-flight operations when there are fast updates.

- [#&#8203;10719](biomejs/biome#10719) [`aa649b5`](biomejs/biome@aa649b5) Thanks [@&#8203;minseong0324](https://github.com/minseong0324)! - Fixed [`noMisleadingReturnType`](https://biomejs.dev/linter/rules/no-misleading-return-type/) false positive on returns that use a widening type assertion: `"a" as string` is no longer reported as misleading. The rule now also reports a literal-pinning assertion such as `false as false`, matching the existing `as const` behavior.

  ```ts
  // No longer flagged (returns are `string`):
  function getValue(b: boolean): string {
    if (b) return "a" as string;
    return "b" as string;
  }

  // Now also reported, like `as const` (returns `false`):
  function isReady(): boolean {
    return false as false;
  }
  ```

- [#&#8203;10678](biomejs/biome#10678) [`8f073a7`](biomejs/biome@8f073a7) Thanks [@&#8203;PranavAchar01](https://github.com/PranavAchar01)! - Fixed [#&#8203;7718](biomejs/biome#7718): Biome now correctly parses CSS nesting selectors when `&` appears as a trailing sub-selector after a type selector, e.g. `h1& { color: red; }`.

- [#&#8203;10756](biomejs/biome#10756) [`5ec965a`](biomejs/biome@5ec965a) Thanks [@&#8203;denbezrukov](https://github.com/denbezrukov)! - Fixed CSS formatter output for selector lists with `allowWrongLineComments` and `//` comments after a selector comma. Biome now keeps the selector before the line comment inline instead of breaking it across descendant combinators.

  ```diff
  -.powerPathNavigator
  -  .helm
  -  button.pressedButton, // pressed
  +.powerPathNavigator .helm button.pressedButton, // pressed
   .powerPathNavigator .helm button:active:not(.disabledButton) {
   }
  ```

- [#&#8203;10757](biomejs/biome#10757) [`6232fcd`](biomejs/biome@6232fcd) Thanks [@&#8203;PranavAchar01](https://github.com/PranavAchar01)! - Fixed [#&#8203;8269](biomejs/biome#8269): the CSS parser now accepts Tailwind `@variant` and `@utility` names that start with a digit, such as the `2xl` breakpoint.

  ```css
  @&#8203;utility container {
    @&#8203;variant 2xl {
      max-width: 1400px;
    }
  }
  ```

- [#&#8203;10777](biomejs/biome#10777) [`575ced6`](biomejs/biome@575ced6) Thanks [@&#8203;WaterWhisperer](https://github.com/WaterWhisperer)! - Fixed an issue reported in [#&#8203;10708](biomejs/biome#10708): the GitLab reporter now handles `--verbose` diagnostics filtering correctly.

- [#&#8203;10281](biomejs/biome#10281) [`0efe244`](biomejs/biome@0efe244) Thanks [@&#8203;Zelys-DFKH](https://github.com/Zelys-DFKH)! - Fixed a bug where GritQL patterns rejected positional (unkeyed) arguments.

- [#&#8203;10758](biomejs/biome#10758) [`e36fd8a`](biomejs/biome@e36fd8a) Thanks [@&#8203;henrybrewer00-dotcom](https://github.com/henrybrewer00-dotcom)! - Fixed [#&#8203;10697](biomejs/biome#10697): The formatter no longer removes the parentheses around an `await` or `yield` expression used as the target of a TypeScript instantiation expression. For example, `(await makeFactory)<Value>` is no longer reformatted to `await makeFactory<Value>`, which would change the meaning of the code.

- [#&#8203;10586](biomejs/biome#10586) [`3617094`](biomejs/biome@3617094) Thanks [@&#8203;IxxyDev](https://github.com/IxxyDev)! - Fixed [#&#8203;9568](biomejs/biome#9568): [`noFloatingPromises`](https://biomejs.dev/linter/rules/no-floating-promises/) no longer reports a false positive when calling an overloaded function and the selected overload does not return a promise.

  ```ts
  function bestEffort(cb: () => Promise<number>): Promise<number>;
  function bestEffort(cb: () => number): number;
  function bestEffort(
    cb: () => number | Promise<number>,
  ): Promise<number> | number {
    return cb() as Promise<number> | number;
  }

  // This resolves to the second overload, which returns `number`, so it is no
  // longer flagged as a floating promise.
  bestEffort(() => 42);
  ```

- [#&#8203;10766](biomejs/biome#10766) [`7aff4c1`](biomejs/biome@7aff4c1) Thanks [@&#8203;JamBalaya56562](https://github.com/JamBalaya56562)! - Fixed [#&#8203;2862](biomejs/biome#2862): [`noInteractiveElementToNoninteractiveRole`](https://biomejs.dev/linter/rules/no-interactive-element-to-noninteractive-role/) no longer reports custom elements (a tag name containing a dash, e.g. `<my-button role="img" />`). Per the [W3C HTML-ARIA specification](https://www.w3.org/TR/html-aria/#el-autonomous-custom-element), a custom element may be given any role or none.

- [#&#8203;10680](biomejs/biome#10680) [`771daa4`](biomejs/biome@771daa4) Thanks [@&#8203;WaterWhisperer](https://github.com/WaterWhisperer)! - Fixed [#&#8203;10635](biomejs/biome#10635): Biome now recognizes chained
  table tests such as `test.concurrent.each()` and `it.concurrent.each()` as test calls, fixing
  `noMisplacedAssertion` false positives and improving formatting for those test declarations.

- [#&#8203;10759](biomejs/biome#10759) [`34570b5`](biomejs/biome@34570b5) Thanks [@&#8203;henrybrewer00-dotcom](https://github.com/henrybrewer00-dotcom)! - Fixed [#&#8203;10636](biomejs/biome#10636): [noStaticElementInteractions](https://biomejs.dev/linter/rules/no-static-element-interactions/) no longer reports a false positive for event handlers on Svelte special elements such as `<svelte:window>`, `<svelte:document>`, and `<svelte:body>`. These are not real DOM elements, so they are now ignored by the rule.

- [#&#8203;10741](biomejs/biome#10741) [`bd2364e`](biomejs/biome@bd2364e) Thanks [@&#8203;JamBalaya56562](https://github.com/JamBalaya56562)! - Fixed [#&#8203;6686](biomejs/biome#6686): the `rage` command now respects the `--config-path` option and the `BIOME_CONFIG_PATH` environment variable when loading the Biome configuration. Previously it always used the default configuration resolution and reported the configuration as `Not set` when no `biome.json` existed in the working directory.

- [#&#8203;10763](biomejs/biome#10763) [`2c3e82d`](biomejs/biome@2c3e82d) Thanks [@&#8203;Aqu1bp](https://github.com/Aqu1bp)! - Fixed [#&#8203;10742](biomejs/biome#10742): [`noSolidDestructuredProps`](https://biomejs.dev/linter/rules/no-solid-destructured-props) now reports destructured props in Solid function components and JSX children.

- [#&#8203;10606](biomejs/biome#10606) [`a4cc4ab`](biomejs/biome@a4cc4ab) Thanks [@&#8203;Mokto](https://github.com/Mokto)! - Fixed false positives in `noUnusedImports`, `noUnusedVariables`, and `useImportType` for Svelte components that use both a `<script module>` and a `<script>` block. The two blocks compile to a single module and share a top-level scope, so a binding (import, function, or variable) declared in one block and used only in the other is no longer reported as unused.

- [#&#8203;10767](biomejs/biome#10767) [`36d5aa7`](biomejs/biome@36d5aa7) Thanks [@&#8203;otkrickey](https://github.com/otkrickey)! - Fixed [#&#8203;10754](biomejs/biome#10754): [`useVueValidVBind`](https://biomejs.dev/linter/rules/use-vue-valid-v-bind/) no longer reports the Vue 3.4+ same-name shorthand as missing a value. `:foo` and `v-bind:foo` are now accepted as equivalent to `:foo="foo"`, while `v-bind`, `v-bind:[dynamicArg]`, and `:[dynamicArg]` without a value continue to be reported.

- [#&#8203;10775](biomejs/biome#10775) [`a918af0`](biomejs/biome@a918af0) Thanks [@&#8203;WaterWhisperer](https://github.com/WaterWhisperer)! - Fixed an issue reported in [#&#8203;10708](biomejs/biome#10708): `biome rage` didn't detect running Biome daemon pipes on Windows.

- [#&#8203;10730](biomejs/biome#10730) [`5a2e65b`](biomejs/biome@5a2e65b) Thanks [@&#8203;dinocosta](https://github.com/dinocosta)! - Fixed an issue where Biome was resolving [the well-known Zed settings file](https://biomejs.dev/guides/configure-biome/#well-known-files) from the wrong location on macOS and Windows.

- [#&#8203;10807](biomejs/biome#10807) [`d97fffe`](biomejs/biome@d97fffe) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed an issue where `.scss` files were incorrectly analyzed when running `biome check`.

- [#&#8203;10672](biomejs/biome#10672) [`53c6efc`](biomejs/biome@53c6efc) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed a bug where Biome incorrectly formatted snippets that have parsing errors.

- [#&#8203;10719](biomejs/biome#10719) [`aa649b5`](biomejs/biome@aa649b5) Thanks [@&#8203;minseong0324](https://github.com/minseong0324)! - Fixed [`useAwaitThenable`](https://biomejs.dev/linter/rules/use-await-thenable/) false positive when awaiting a custom thenable that is not the global `Promise`. A value with a callable `then` member is now recognized as awaitable.

  ```ts
  interface Thenable<T> {
    then(onfulfilled: (value: T) => void): void;
  }
  declare const t: Thenable<number>;
  async function f() {
    await t;
  }
  ```

- [#&#8203;10734](biomejs/biome#10734) [`4396496`](biomejs/biome@4396496) Thanks [@&#8203;BangDori](https://github.com/BangDori)! - Fixed [#&#8203;10708](biomejs/biome#10708): `biome migrate` now preserves trivia when migrating the deprecated `recommended` option to `preset`.

- [#&#8203;10683](biomejs/biome#10683) [`ae31a00`](biomejs/biome@ae31a00) Thanks [@&#8203;Netail](https://github.com/Netail)! - Fixed [#&#8203;10657](biomejs/biome#10657) [#&#8203;10671](biomejs/biome#10671) [#&#8203;10661](biomejs/biome#10661) [#&#8203;10637](biomejs/biome#10637) [#&#8203;10718](biomejs/biome#10718): HTML rules now correctly handle dynamic attributes.

- [#&#8203;10746](biomejs/biome#10746) [`54e8239`](biomejs/biome@54e8239) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed an issue where [`noUndeclaredClasses`](https://biomejs.dev/linter/rules/no-undeclared-classes) didn't correctly detect styles defined inside the Astro directive `is:global`.

- [#&#8203;10770](biomejs/biome#10770) [`dd1429c`](biomejs/biome@dd1429c) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Improved the Biome Language Server DX by orchestrating certain operations, so that they won't block the editor during typing. This improvement is more visible in large documents.

- [#&#8203;10473](biomejs/biome#10473) [`d9b5133`](biomejs/biome@d9b5133) Thanks [@&#8203;Mokto](https://github.com/Mokto)! - Improved [`noUnusedImports`](https://biomejs.dev/linter/rules/no-unused-imports/), [`noUnusedVariables`](https://biomejs.dev/linter/rules/no-unused-variables/), [`noUnusedFunctionParameters`](https://biomejs.dev/linter/rules/no-unused-function-parameters/), and [`useImportType`](https://biomejs.dev/linter/rules/use-import-type/) for Svelte, Vue, and Astro files (with `html.experimentalFullSupportEnabled`). Bindings used only in the template — including component tags, attribute interpolations, directives, `bind:` shorthand, and snippet parameters — are no longer reported as unused, while genuinely unused ones still are.

- [#&#8203;10796](biomejs/biome#10796) [`f1b3ab2`](biomejs/biome@f1b3ab2) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed an issue where the Biome Language Server didn't enable project or type-aware lint rules, even when they were explicitly enabled.

- [#&#8203;10746](biomejs/biome#10746) [`54e8239`](biomejs/biome@54e8239) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed an issue where [`noUndeclaredClasses`](https://biomejs.dev/linter/rules/no-undeclared-classes) didn't detect styles declared inside HTML documents.

- [#&#8203;10774](biomejs/biome#10774) [`bde945b`](biomejs/biome@bde945b) Thanks [@&#8203;pattrickrice](https://github.com/pattrickrice)! - Fixed [#&#8203;10268](biomejs/biome#10268) where a race condition resulted in internal errors such as: `The file biome.json does not exist in the workspace`.

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- 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 has been generated by [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yMzQuMCIsInVwZGF0ZWRJblZlciI6IjQzLjIzNC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Reviewed-on: https://git.oirnoir.dev/OIRNOIR/YouTube-Helper-Client/pulls/9
metonym added a commit to metonym/svelte-highlight that referenced this pull request Jul 5, 2026
Drops the noStaticElementInteractions override for www/**/*.{svelte,astro},
fixed upstream in 2.5.2 (biomejs/biome#10759) for svelte:window/document/body.

Also works around a Biome cross-script-scope bug where a postfix increment
(uid++) read from a <script context="module"> binding isn't tracked as a
use, and removes a genuinely unused _3024 style import that 2.5.2 now
correctly flags.
OIRNOIR pushed a commit to OIRNOIR/YouTube-Helper-Server that referenced this pull request Jul 8, 2026
This PR contains the following updates:

| Package | Type | Update | Change | Pending |
|---|---|---|---|---|
| [@biomejs/biome](https://biomejs.dev) ([source](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome)) | imports | patch | [`2.5.1` -> `2.5.2`](https://renovatebot.com/diffs/npm/@biomejs%2fbiome/2.5.1/2.5.2) | `2.5.3` |

---

### Release Notes

<details>
<summary>biomejs/biome (@&#8203;biomejs/biome)</summary>

### [`v2.5.2`](https://github.com/biomejs/biome/blob/HEAD/packages/@&#8203;biomejs/biome/CHANGELOG.md#252)

[Compare Source](https://github.com/biomejs/biome/compare/@biomejs/biome@2.5.1...@biomejs/biome@2.5.2)

##### Patch Changes

- [#&#8203;10595](biomejs/biome#10595) [`f458028`](biomejs/biome@f458028) Thanks [@&#8203;pkallos](https://github.com/pkallos)! - Added the option `ignoreBooleanCoercion` to [useNullishCoalescing](https://biomejs.dev/linter/rules/use-nullish-coalescing/). When enabled, Biome ignores `||` and `||=` used inside a `Boolean()` call, where coalescing on falsy values is intentional.

- [#&#8203;10798](biomejs/biome#10798) [`4a32b63`](biomejs/biome@4a32b63) Thanks [@&#8203;pkallos](https://github.com/pkallos)! - Added the option `ignorePrimitives` to [useNullishCoalescing](https://biomejs.dev/linter/rules/use-nullish-coalescing/). When enabled, Biome ignores `||`, `||=`, and ternary expressions whose non-nullish operands are all primitives the option opts out of. Use `true` to ignore all primitives, or an object selecting `string`, `number`, `boolean`, or `bigint`.

- [#&#8203;10545](biomejs/biome#10545) [`f3d4c00`](biomejs/biome@f3d4c00) Thanks [@&#8203;Mokto](https://github.com/Mokto)! - Added the new nursery rule [`noSvelteUnnecessaryStateWrap`](https://biomejs.dev/linter/rules/no-svelte-unnecessary-state-wrap/), which reports unnecessary `$state()` wrapping of classes from `svelte/reactivity` that are already reactive.

  ```svelte
  <script>
  import { SvelteMap } from "svelte/reactivity";
  const map = $state(new SvelteMap()); // redundant
  </script>
  ```

- [#&#8203;10752](biomejs/biome#10752) [`f62fb8b`](biomejs/biome@f62fb8b) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed [#&#8203;10739](biomejs/biome#10739). Now the rule [`useValidAutocomplete`](https://biomejs.dev/linter/rules/use-valid-autocomplete/) correctly flags the `autoComplete` attribute.

- [#&#8203;10796](biomejs/biome#10796) [`f1b3ab2`](biomejs/biome@f1b3ab2) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed [#&#8203;10768](biomejs/biome#10768). Improved the performance of the Biome Language Server by cancelling certain in-flight operations when there are fast updates.

- [#&#8203;10719](biomejs/biome#10719) [`aa649b5`](biomejs/biome@aa649b5) Thanks [@&#8203;minseong0324](https://github.com/minseong0324)! - Fixed [`noMisleadingReturnType`](https://biomejs.dev/linter/rules/no-misleading-return-type/) false positive on returns that use a widening type assertion: `"a" as string` is no longer reported as misleading. The rule now also reports a literal-pinning assertion such as `false as false`, matching the existing `as const` behavior.

  ```ts
  // No longer flagged (returns are `string`):
  function getValue(b: boolean): string {
    if (b) return "a" as string;
    return "b" as string;
  }

  // Now also reported, like `as const` (returns `false`):
  function isReady(): boolean {
    return false as false;
  }
  ```

- [#&#8203;10678](biomejs/biome#10678) [`8f073a7`](biomejs/biome@8f073a7) Thanks [@&#8203;PranavAchar01](https://github.com/PranavAchar01)! - Fixed [#&#8203;7718](biomejs/biome#7718): Biome now correctly parses CSS nesting selectors when `&` appears as a trailing sub-selector after a type selector, e.g. `h1& { color: red; }`.

- [#&#8203;10756](biomejs/biome#10756) [`5ec965a`](biomejs/biome@5ec965a) Thanks [@&#8203;denbezrukov](https://github.com/denbezrukov)! - Fixed CSS formatter output for selector lists with `allowWrongLineComments` and `//` comments after a selector comma. Biome now keeps the selector before the line comment inline instead of breaking it across descendant combinators.

  ```diff
  -.powerPathNavigator
  -  .helm
  -  button.pressedButton, // pressed
  +.powerPathNavigator .helm button.pressedButton, // pressed
   .powerPathNavigator .helm button:active:not(.disabledButton) {
   }
  ```

- [#&#8203;10757](biomejs/biome#10757) [`6232fcd`](biomejs/biome@6232fcd) Thanks [@&#8203;PranavAchar01](https://github.com/PranavAchar01)! - Fixed [#&#8203;8269](biomejs/biome#8269): the CSS parser now accepts Tailwind `@variant` and `@utility` names that start with a digit, such as the `2xl` breakpoint.

  ```css
  @&#8203;utility container {
    @&#8203;variant 2xl {
      max-width: 1400px;
    }
  }
  ```

- [#&#8203;10777](biomejs/biome#10777) [`575ced6`](biomejs/biome@575ced6) Thanks [@&#8203;WaterWhisperer](https://github.com/WaterWhisperer)! - Fixed an issue reported in [#&#8203;10708](biomejs/biome#10708): the GitLab reporter now handles `--verbose` diagnostics filtering correctly.

- [#&#8203;10281](biomejs/biome#10281) [`0efe244`](biomejs/biome@0efe244) Thanks [@&#8203;Zelys-DFKH](https://github.com/Zelys-DFKH)! - Fixed a bug where GritQL patterns rejected positional (unkeyed) arguments.

- [#&#8203;10758](biomejs/biome#10758) [`e36fd8a`](biomejs/biome@e36fd8a) Thanks [@&#8203;henrybrewer00-dotcom](https://github.com/henrybrewer00-dotcom)! - Fixed [#&#8203;10697](biomejs/biome#10697): The formatter no longer removes the parentheses around an `await` or `yield` expression used as the target of a TypeScript instantiation expression. For example, `(await makeFactory)<Value>` is no longer reformatted to `await makeFactory<Value>`, which would change the meaning of the code.

- [#&#8203;10586](biomejs/biome#10586) [`3617094`](biomejs/biome@3617094) Thanks [@&#8203;IxxyDev](https://github.com/IxxyDev)! - Fixed [#&#8203;9568](biomejs/biome#9568): [`noFloatingPromises`](https://biomejs.dev/linter/rules/no-floating-promises/) no longer reports a false positive when calling an overloaded function and the selected overload does not return a promise.

  ```ts
  function bestEffort(cb: () => Promise<number>): Promise<number>;
  function bestEffort(cb: () => number): number;
  function bestEffort(
    cb: () => number | Promise<number>,
  ): Promise<number> | number {
    return cb() as Promise<number> | number;
  }

  // This resolves to the second overload, which returns `number`, so it is no
  // longer flagged as a floating promise.
  bestEffort(() => 42);
  ```

- [#&#8203;10766](biomejs/biome#10766) [`7aff4c1`](biomejs/biome@7aff4c1) Thanks [@&#8203;JamBalaya56562](https://github.com/JamBalaya56562)! - Fixed [#&#8203;2862](biomejs/biome#2862): [`noInteractiveElementToNoninteractiveRole`](https://biomejs.dev/linter/rules/no-interactive-element-to-noninteractive-role/) no longer reports custom elements (a tag name containing a dash, e.g. `<my-button role="img" />`). Per the [W3C HTML-ARIA specification](https://www.w3.org/TR/html-aria/#el-autonomous-custom-element), a custom element may be given any role or none.

- [#&#8203;10680](biomejs/biome#10680) [`771daa4`](biomejs/biome@771daa4) Thanks [@&#8203;WaterWhisperer](https://github.com/WaterWhisperer)! - Fixed [#&#8203;10635](biomejs/biome#10635): Biome now recognizes chained
  table tests such as `test.concurrent.each()` and `it.concurrent.each()` as test calls, fixing
  `noMisplacedAssertion` false positives and improving formatting for those test declarations.

- [#&#8203;10759](biomejs/biome#10759) [`34570b5`](biomejs/biome@34570b5) Thanks [@&#8203;henrybrewer00-dotcom](https://github.com/henrybrewer00-dotcom)! - Fixed [#&#8203;10636](biomejs/biome#10636): [noStaticElementInteractions](https://biomejs.dev/linter/rules/no-static-element-interactions/) no longer reports a false positive for event handlers on Svelte special elements such as `<svelte:window>`, `<svelte:document>`, and `<svelte:body>`. These are not real DOM elements, so they are now ignored by the rule.

- [#&#8203;10741](biomejs/biome#10741) [`bd2364e`](biomejs/biome@bd2364e) Thanks [@&#8203;JamBalaya56562](https://github.com/JamBalaya56562)! - Fixed [#&#8203;6686](biomejs/biome#6686): the `rage` command now respects the `--config-path` option and the `BIOME_CONFIG_PATH` environment variable when loading the Biome configuration. Previously it always used the default configuration resolution and reported the configuration as `Not set` when no `biome.json` existed in the working directory.

- [#&#8203;10763](biomejs/biome#10763) [`2c3e82d`](biomejs/biome@2c3e82d) Thanks [@&#8203;Aqu1bp](https://github.com/Aqu1bp)! - Fixed [#&#8203;10742](biomejs/biome#10742): [`noSolidDestructuredProps`](https://biomejs.dev/linter/rules/no-solid-destructured-props) now reports destructured props in Solid function components and JSX children.

- [#&#8203;10606](biomejs/biome#10606) [`a4cc4ab`](biomejs/biome@a4cc4ab) Thanks [@&#8203;Mokto](https://github.com/Mokto)! - Fixed false positives in `noUnusedImports`, `noUnusedVariables`, and `useImportType` for Svelte components that use both a `<script module>` and a `<script>` block. The two blocks compile to a single module and share a top-level scope, so a binding (import, function, or variable) declared in one block and used only in the other is no longer reported as unused.

- [#&#8203;10767](biomejs/biome#10767) [`36d5aa7`](biomejs/biome@36d5aa7) Thanks [@&#8203;otkrickey](https://github.com/otkrickey)! - Fixed [#&#8203;10754](biomejs/biome#10754): [`useVueValidVBind`](https://biomejs.dev/linter/rules/use-vue-valid-v-bind/) no longer reports the Vue 3.4+ same-name shorthand as missing a value. `:foo` and `v-bind:foo` are now accepted as equivalent to `:foo="foo"`, while `v-bind`, `v-bind:[dynamicArg]`, and `:[dynamicArg]` without a value continue to be reported.

- [#&#8203;10775](biomejs/biome#10775) [`a918af0`](biomejs/biome@a918af0) Thanks [@&#8203;WaterWhisperer](https://github.com/WaterWhisperer)! - Fixed an issue reported in [#&#8203;10708](biomejs/biome#10708): `biome rage` didn't detect running Biome daemon pipes on Windows.

- [#&#8203;10730](biomejs/biome#10730) [`5a2e65b`](biomejs/biome@5a2e65b) Thanks [@&#8203;dinocosta](https://github.com/dinocosta)! - Fixed an issue where Biome was resolving [the well-known Zed settings file](https://biomejs.dev/guides/configure-biome/#well-known-files) from the wrong location on macOS and Windows.

- [#&#8203;10807](biomejs/biome#10807) [`d97fffe`](biomejs/biome@d97fffe) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed an issue where `.scss` files were incorrectly analyzed when running `biome check`.

- [#&#8203;10672](biomejs/biome#10672) [`53c6efc`](biomejs/biome@53c6efc) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed a bug where Biome incorrectly formatted snippets that have parsing errors.

- [#&#8203;10719](biomejs/biome#10719) [`aa649b5`](biomejs/biome@aa649b5) Thanks [@&#8203;minseong0324](https://github.com/minseong0324)! - Fixed [`useAwaitThenable`](https://biomejs.dev/linter/rules/use-await-thenable/) false positive when awaiting a custom thenable that is not the global `Promise`. A value with a callable `then` member is now recognized as awaitable.

  ```ts
  interface Thenable<T> {
    then(onfulfilled: (value: T) => void): void;
  }
  declare const t: Thenable<number>;
  async function f() {
    await t;
  }
  ```

- [#&#8203;10734](biomejs/biome#10734) [`4396496`](biomejs/biome@4396496) Thanks [@&#8203;BangDori](https://github.com/BangDori)! - Fixed [#&#8203;10708](biomejs/biome#10708): `biome migrate` now preserves trivia when migrating the deprecated `recommended` option to `preset`.

- [#&#8203;10683](biomejs/biome#10683) [`ae31a00`](biomejs/biome@ae31a00) Thanks [@&#8203;Netail](https://github.com/Netail)! - Fixed [#&#8203;10657](biomejs/biome#10657) [#&#8203;10671](biomejs/biome#10671) [#&#8203;10661](biomejs/biome#10661) [#&#8203;10637](biomejs/biome#10637) [#&#8203;10718](biomejs/biome#10718): HTML rules now correctly handle dynamic attributes.

- [#&#8203;10746](biomejs/biome#10746) [`54e8239`](biomejs/biome@54e8239) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed an issue where [`noUndeclaredClasses`](https://biomejs.dev/linter/rules/no-undeclared-classes) didn't correctly detect styles defined inside the Astro directive `is:global`.

- [#&#8203;10770](biomejs/biome#10770) [`dd1429c`](biomejs/biome@dd1429c) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Improved the Biome Language Server DX by orchestrating certain operations, so that they won't block the editor during typing. This improvement is more visible in large documents.

- [#&#8203;10473](biomejs/biome#10473) [`d9b5133`](biomejs/biome@d9b5133) Thanks [@&#8203;Mokto](https://github.com/Mokto)! - Improved [`noUnusedImports`](https://biomejs.dev/linter/rules/no-unused-imports/), [`noUnusedVariables`](https://biomejs.dev/linter/rules/no-unused-variables/), [`noUnusedFunctionParameters`](https://biomejs.dev/linter/rules/no-unused-function-parameters/), and [`useImportType`](https://biomejs.dev/linter/rules/use-import-type/) for Svelte, Vue, and Astro files (with `html.experimentalFullSupportEnabled`). Bindings used only in the template — including component tags, attribute interpolations, directives, `bind:` shorthand, and snippet parameters — are no longer reported as unused, while genuinely unused ones still are.

- [#&#8203;10796](biomejs/biome#10796) [`f1b3ab2`](biomejs/biome@f1b3ab2) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed an issue where the Biome Language Server didn't enable project or type-aware lint rules, even when they were explicitly enabled.

- [#&#8203;10746](biomejs/biome#10746) [`54e8239`](biomejs/biome@54e8239) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed an issue where [`noUndeclaredClasses`](https://biomejs.dev/linter/rules/no-undeclared-classes) didn't detect styles declared inside HTML documents.

- [#&#8203;10774](biomejs/biome#10774) [`bde945b`](biomejs/biome@bde945b) Thanks [@&#8203;pattrickrice](https://github.com/pattrickrice)! - Fixed [#&#8203;10268](biomejs/biome#10268) where a race condition resulted in internal errors such as: `The file biome.json does not exist in the workspace`.

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- 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 has been generated by [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNDYuMSIsInVwZGF0ZWRJblZlciI6IjQzLjI0Ni4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Reviewed-on: https://git.oirnoir.dev/OIRNOIR/YouTube-Helper-Server/pulls/22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-Linter Area: linter A-Parser Area: parser L-HTML Language: HTML and super languages

Projects

None yet

Development

Successfully merging this pull request may close these issues.

💅 noStaticElementInteractions false positive for event handlers on <svelte:window/>

3 participants