Skip to content

fix(lint): suppress false positives in noUnusedVariables for Svelte store subscriptions and $bindable() props - #10534

Merged
dyc3 merged 3 commits into
biomejs:mainfrom
Mokto:fix/svelte-store-subscription-unused
Jul 3, 2026
Merged

fix(lint): suppress false positives in noUnusedVariables for Svelte store subscriptions and $bindable() props#10534
dyc3 merged 3 commits into
biomejs:mainfrom
Mokto:fix/svelte-store-subscription-unused

Conversation

@Mokto

@Mokto Mokto commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

Depends on #10473 — this PR should not be merged until that one lands. Once it does, the diff here will reduce to only the two commits below.

Summary

Two false-positive patterns in noUnusedVariables for Svelte files, both building on the cross-script reference tracking introduced in #10473.

1. Svelte store auto-subscription

When a variable is declared in <script> and only used in the template via Svelte's $store auto-subscription syntax, it was incorrectly flagged as unused:

<script>
  const { form, errors } = superForm(...);
  // $form used in script → not flagged ✓
  // $errors only in template → was falsely flagged ✗
</script>
<input bind:value={$form.email} errors={$errors.email} />

Fix: when collecting template references in EmbeddedValueReferencesBuilder, in Svelte mode, $-prefixed identifiers that are not runes ($state, $derived, etc.) also register the store name without the $ prefix.

2. Svelte 5 $bindable() props

Variables declared as = $bindable() in a $props() destructuring and only assigned to (never read) were flagged as unused. In Svelte 5, assigning to a $bindable() prop reflects the value back to the parent — the write IS the observable use.

<script>
  let { backButton = $bindable() } = $props();
  backButton = { label: 'Back', onClick: goBack }; // write → reflected to parent
</script>

Fix: in no_unused_variables.rs, when the binding is a shorthand property whose default initializer is $bindable() and whose enclosing declarator is initialized from $props(), suppress the diagnostic.

This PR was written primarily by Claude Code.

Test Plan

New fixtures valid-svelte-store-subscription.svelte and valid-svelte-bindable-props.svelte added to noUnusedVariables test specs. All existing tests pass.

Docs

N/A

@changeset-bot

changeset-bot Bot commented Jun 2, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 2e2bc63

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

github-actions Bot commented Jun 2, 2026

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-CLI Area: CLI A-Project Area: project A-Linter Area: linter L-JavaScript Language: JavaScript and super languages labels Jun 2, 2026
@Mokto Mokto changed the title fix(lint): suppress false positives in noUnusedVariables for Svelte store subscriptions and $bindable() props [WIP - waiting for 10473] fix(lint): suppress false positives in noUnusedVariables for Svelte store subscriptions and $bindable() props Jun 2, 2026
@Mokto
Mokto force-pushed the fix/svelte-store-subscription-unused branch from 285021a to d6a8610 Compare June 24, 2026 12:43
@Mokto Mokto changed the title [WIP - waiting for 10473] fix(lint): suppress false positives in noUnusedVariables for Svelte store subscriptions and $bindable() props fix(lint): suppress false positives in noUnusedVariables for Svelte store subscriptions and $bindable() props Jun 24, 2026
@Mokto
Mokto marked this pull request as ready for review June 24, 2026 12:44
@coderabbitai

coderabbitai Bot commented Jun 24, 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: ff0388cb-05c6-4be9-aba4-fbe417681bd7

📥 Commits

Reviewing files that changed from the base of the PR and between ac05664 and 2e2bc63.

📒 Files selected for processing (3)
  • crates/biome_js_analyze/src/lint/correctness/no_unused_variables.rs
  • crates/biome_js_analyze/src/services/embedded.rs
  • crates/biome_workspace_db/src/embedded/references.rs
👮 Files not reviewed due to content moderation or server errors (3)
  • crates/biome_js_analyze/src/lint/correctness/no_unused_variables.rs
  • crates/biome_workspace_db/src/embedded/references.rs
  • crates/biome_js_analyze/src/services/embedded.rs

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarises the main change: suppressing noUnusedVariables false positives for Svelte subscriptions and $bindable() props.
Description check ✅ Passed The description is clearly related to the changeset and matches the Svelte lint fix and tests.
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.
✨ 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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.changeset/fix-svelte-store-bindable.md:
- Line 5: The changeset description in the markdown file needs the required
bugfix prefix format. Update the opening sentence so it starts with Fixed
[`#NUMBER`](issue link): followed by the summary, while keeping the existing
noUnusedVariables rule link in the rest of the text. Make sure the description
also includes the issue link and preserves the references to the Svelte store
subscription and $bindable() false-positive fix.

In `@crates/biome_js_analyze/src/lint/correctness/no_unused_variables.rs`:
- Around line 449-456: The $bindable() suppression in no_unused_variables
currently hides all bindable props from $props(), even when they are never used,
so tighten the check to only return None for write-only bindings. Update the
logic around is_svelte_bindable_prop(binding) in the unused-variable diagnostic
path to require an explicit write-only usage condition before suppressing, and
mirror the same fix anywhere else the same suppression is applied. Add a
regression test covering a $bindable() prop that is neither read nor written so
it still reports unused.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: d5d8f8da-8aaa-4a25-8ca6-94e766914e70

📥 Commits

Reviewing files that changed from the base of the PR and between 13ee358 and d6a8610.

⛔ Files ignored due to path filters (2)
  • crates/biome_js_analyze/tests/specs/correctness/noUnusedVariables/valid-svelte-bindable-props.svelte.snap is excluded by !**/*.snap and included by **
  • crates/biome_js_analyze/tests/specs/correctness/noUnusedVariables/valid-svelte-store-subscription.svelte.snap is excluded by !**/*.snap and included by **
📒 Files selected for processing (6)
  • .changeset/fix-svelte-store-bindable.md
  • crates/biome_js_analyze/src/lint/correctness/no_unused_variables.rs
  • crates/biome_js_analyze/tests/specs/correctness/noUnusedVariables/valid-svelte-bindable-props.svelte
  • crates/biome_js_analyze/tests/specs/correctness/noUnusedVariables/valid-svelte-store-subscription.svelte
  • crates/biome_service/src/workspace/document/services/embedded_value_references.rs
  • crates/biome_service/src/workspace/server.rs

"@biomejs/biome": patch
---

Fixed [`noUnusedVariables`](https://biomejs.dev/linter/rules/no-unused-variables/) false positives in Svelte files: Svelte store subscriptions (`$store` references in templates now keep the underlying `store` binding from being flagged), and `$bindable()` props that are only written to in the script block (write-only is intentional for bindable props) are no longer reported as unused.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Use the required bugfix prefix with an issue link.

For bug fixes, this should start with Fixed [#NUMBER](issue link): ...; keep the rule link in the rest of the sentence.
As per coding guidelines, "for bug fixes start with 'Fixed [#NUMBER](issue link): ...'" and "include issue links, rule links, and assist links in changeset descriptions." Based on learnings, Biome changesets require the exact Fixed [#NUMBER](issue link): ... prefix format.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.changeset/fix-svelte-store-bindable.md at line 5, The changeset description
in the markdown file needs the required bugfix prefix format. Update the opening
sentence so it starts with Fixed [`#NUMBER`](issue link): followed by the summary,
while keeping the existing noUnusedVariables rule link in the rest of the text.
Make sure the description also includes the issue link and preserves the
references to the Svelte store subscription and $bindable() false-positive fix.

Sources: Coding guidelines, Learnings

Comment on lines +449 to +456
// In Svelte 5, assigning to a `$bindable()` prop reflects the value back to the
// parent component. Such a variable may be write-only in the script block but is
// still meaningful — suppress the diagnostic to avoid a false positive.
if matches!(file_source.as_embedding_kind(), JsEmbeddingKind::Svelte { .. })
&& is_svelte_bindable_prop(binding)
{
return None;
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Gate $bindable() suppression to write-only bindings only.

This currently suppresses any unused $bindable() prop from $props(), including truly untouched ones, which can create false negatives. Please require a write-only usage condition before returning None, and add a regression case where a $bindable() prop is never read or written.

Also applies to: 703-738

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@crates/biome_js_analyze/src/lint/correctness/no_unused_variables.rs` around
lines 449 - 456, The $bindable() suppression in no_unused_variables currently
hides all bindable props from $props(), even when they are never used, so
tighten the check to only return None for write-only bindings. Update the logic
around is_svelte_bindable_prop(binding) in the unused-variable diagnostic path
to require an explicit write-only usage condition before suppressing, and mirror
the same fix anywhere else the same suppression is applied. Add a regression
test covering a $bindable() prop that is neither read nor written so it still
reports unused.

@codspeed-hq

codspeed-hq Bot commented Jun 24, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 58 untouched benchmarks
⏩ 196 skipped benchmarks1


Comparing Mokto:fix/svelte-store-subscription-unused (2e2bc63) with main (f1d3877)

Open in CodSpeed

Footnotes

  1. 196 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.

@ematipico

Copy link
Copy Markdown
Member

Hey @Mokto can you rebase the branch and address linting?

@dyc3 dyc3 self-assigned this Jul 1, 2026
Mokto and others added 2 commits July 1, 2026 11:16
…in templates

When a Svelte template expression like `{$errors.email}` references a
store subscription, only the `$errors` identifier was registered in the
embedded value references, so `is_used_as_value("errors")` returned
false and the bound variable `const { errors } = superForm(...)` was
incorrectly flagged as unused.

Fix: when building value references from Svelte non-source snippets, any
`$store`-style identifier that is not a Svelte rune also registers the
un-prefixed store name. The `$` prefix is stripped using
`TokenText::slice`, keeping the reference as a zero-copy view into the
same underlying token.

The server-side snippet collector is updated to use a Svelte-aware
builder for Svelte non-source snippets.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ble() props in Svelte 5

In Svelte 5, assigning to a prop declared with $bindable() as its default
reflects the new value back to the parent component. Such props may be
write-only in the script block yet serve a real purpose, so flagging them
as unused variables is a false positive.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@dyc3
dyc3 force-pushed the fix/svelte-store-subscription-unused branch from d6a8610 to b334de7 Compare July 1, 2026 16:45
@github-actions github-actions Bot removed the A-Project Area: project label Jul 1, 2026
Comment thread crates/biome_workspace_db/src/embedded/references.rs
@dyc3
dyc3 force-pushed the fix/svelte-store-subscription-unused branch from b334de7 to ac05664 Compare July 2, 2026 11:27
@dyc3
dyc3 force-pushed the fix/svelte-store-subscription-unused branch from ac05664 to 2e2bc63 Compare July 2, 2026 11:30
@dyc3
dyc3 requested a review from ematipico July 2, 2026 11:30
@dyc3
dyc3 merged commit da9b403 into biomejs:main Jul 3, 2026
31 of 32 checks passed
@github-actions github-actions Bot mentioned this pull request Jul 3, 2026
OIRNOIR pushed a commit to OIRNOIR/YouTube-Helper-Client that referenced this pull request Jul 15, 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.2` -> `2.5.3`](https://renovatebot.com/diffs/npm/@biomejs%2fbiome/2.5.2/2.5.3) | `2.5.4` |

---

### Release Notes

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

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

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

##### Patch Changes

- [#&#8203;10815](biomejs/biome#10815) [`86613d5`](biomejs/biome@86613d5) Thanks [@&#8203;WaterWhisperer](https://github.com/WaterWhisperer)! - Fixed a parser panic reported in [#&#8203;10708](biomejs/biome#10708): Biome now recovers when unsupported CSS Modules `@value` rules or scoped `@keyframes` names end at EOF.

- [#&#8203;10534](biomejs/biome#10534) [`da9b403`](biomejs/biome@da9b403) Thanks [@&#8203;Mokto](https://github.com/Mokto)! - Fixed [`noUnusedVariables`](https://biomejs.dev/linter/rules/no-unused-variables/) false positives in Svelte files: Svelte store subscriptions (`$store` references in templates now keep the underlying `store` binding from being flagged), and `$bindable()` props that are only written to in the script block (write-only is intentional for bindable props) are no longer reported as unused.

- [#&#8203;10827](biomejs/biome#10827) [`098ba41`](biomejs/biome@098ba41) Thanks [@&#8203;Aqu1bp](https://github.com/Aqu1bp)! - Fixed [#&#8203;10698](biomejs/biome#10698): The [`noUnsafeOptionalChaining`](https://biomejs.dev/linter/rules/no-unsafe-optional-chaining/) rule now reports unsafe optional chains wrapped in TypeScript `as`, `satisfies`, type assertion, and instantiation expressions, such as `new (value?.constructor as Constructor)()`.

- [#&#8203;10773](biomejs/biome#10773) [`3c6513d`](biomejs/biome@3c6513d) Thanks [@&#8203;otkrickey](https://github.com/otkrickey)! - Fixed [#&#8203;10772](biomejs/biome#10772): [`useVueValidVOn`](https://biomejs.dev/linter/rules/use-vue-valid-v-on/) no longer reports a missing handler for v-on directives using a verb modifier (`.stop` / `.prevent`) without an expression, e.g. `<div @&#8203;click.stop></div>`. The rule also accepts the arg-less object syntax `<div v-on="$listeners"></div>` instead of reporting a missing event name.

- [#&#8203;10721](biomejs/biome#10721) [`d83c66b`](biomejs/biome@d83c66b) Thanks [@&#8203;minseong0324](https://github.com/minseong0324)! - Improved type-aware lint rule inference for built-in globals and indexed function calls. Biome now resolves `Error(...)`, `new Error(...)`, optional `Error#stack`, and calls through indexed function values such as `handlers[0]()` more accurately.

- [#&#8203;10865](biomejs/biome#10865) [`6450276`](biomejs/biome@6450276) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed [#&#8203;10845](biomejs/biome#10845). Biome Language Server no longer goes in deadlock when the scanner is enabled.

- [#&#8203;10853](biomejs/biome#10853) [`93d8e53`](biomejs/biome@93d8e53) Thanks [@&#8203;Netail](https://github.com/Netail)! - Fixed [#&#8203;10840](biomejs/biome#10840): Astro shorthand attribute syntax is now correctly being parsed from embedded nodes.

- [#&#8203;10820](biomejs/biome#10820) [`bba3092`](biomejs/biome@bba3092) Thanks [@&#8203;JamBalaya56562](https://github.com/JamBalaya56562)! - Fixed [#&#8203;10619](biomejs/biome#10619): [`noProcessEnv`](https://biomejs.dev/linter/rules/no-process-env/) now also reports computed (bracket) member access. Previously only dot access was checked, so `process["env"]` and `env["NODE_ENV"]` (where `env` is imported from `node:process`) were missed. Both static and computed accesses are now reported.

- [#&#8203;10835](biomejs/biome#10835) [`3447b2f`](biomejs/biome@3447b2f) Thanks [@&#8203;dyc3](https://github.com/dyc3)! - Fixed [#&#8203;10824](biomejs/biome#10824): [`useDomQuerySelector`](https://biomejs.dev/linter/rules/use-dom-query-selector/) now supports an `ignore` option for receiver identifiers that should not be reported.

- [#&#8203;10875](biomejs/biome#10875) [`b12e486`](biomejs/biome@b12e486) Thanks [@&#8203;dyc3](https://github.com/dyc3)! - Fixed [#&#8203;10795](biomejs/biome#10795): `--profile-rules` now reports timings for each plugin separately as `plugin/<pluginName>`, matching the naming used by plugin suppressions, instead of aggregating all plugins under a single `plugin/plugin` entry.

- [#&#8203;10877](biomejs/biome#10877) [`d6bc447`](biomejs/biome@d6bc447) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed [biome-zed#164](biomejs/biome-zed#164): Biome no longer inserts stray whitespace when format-on-type runs after closing delimiters such as `)`, `]`, and `}`.

- [#&#8203;10867](biomejs/biome#10867) [`a21463e`](biomejs/biome@a21463e) Thanks [@&#8203;dyc3](https://github.com/dyc3)! - Fixed [#&#8203;10864](biomejs/biome#10864): Biome no longer crashes when checking or linting HTML files with unquoted attribute values such as `<textarea rows=4></textarea>`.

</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:eyJjcmVhdGVkSW5WZXIiOiI0My4yNTIuMyIsInVwZGF0ZWRJblZlciI6IjQzLjI1Mi4zIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Reviewed-on: https://git.oirnoir.dev/OIRNOIR/YouTube-Helper-Client/pulls/12
OIRNOIR pushed a commit to OIRNOIR/YouTube-Helper-Server that referenced this pull request Jul 15, 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.2` -> `2.5.3`](https://renovatebot.com/diffs/npm/@biomejs%2fbiome/2.5.2/2.5.3) | `2.5.4` |

---

### Release Notes

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

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

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

##### Patch Changes

- [#&#8203;10815](biomejs/biome#10815) [`86613d5`](biomejs/biome@86613d5) Thanks [@&#8203;WaterWhisperer](https://github.com/WaterWhisperer)! - Fixed a parser panic reported in [#&#8203;10708](biomejs/biome#10708): Biome now recovers when unsupported CSS Modules `@value` rules or scoped `@keyframes` names end at EOF.

- [#&#8203;10534](biomejs/biome#10534) [`da9b403`](biomejs/biome@da9b403) Thanks [@&#8203;Mokto](https://github.com/Mokto)! - Fixed [`noUnusedVariables`](https://biomejs.dev/linter/rules/no-unused-variables/) false positives in Svelte files: Svelte store subscriptions (`$store` references in templates now keep the underlying `store` binding from being flagged), and `$bindable()` props that are only written to in the script block (write-only is intentional for bindable props) are no longer reported as unused.

- [#&#8203;10827](biomejs/biome#10827) [`098ba41`](biomejs/biome@098ba41) Thanks [@&#8203;Aqu1bp](https://github.com/Aqu1bp)! - Fixed [#&#8203;10698](biomejs/biome#10698): The [`noUnsafeOptionalChaining`](https://biomejs.dev/linter/rules/no-unsafe-optional-chaining/) rule now reports unsafe optional chains wrapped in TypeScript `as`, `satisfies`, type assertion, and instantiation expressions, such as `new (value?.constructor as Constructor)()`.

- [#&#8203;10773](biomejs/biome#10773) [`3c6513d`](biomejs/biome@3c6513d) Thanks [@&#8203;otkrickey](https://github.com/otkrickey)! - Fixed [#&#8203;10772](biomejs/biome#10772): [`useVueValidVOn`](https://biomejs.dev/linter/rules/use-vue-valid-v-on/) no longer reports a missing handler for v-on directives using a verb modifier (`.stop` / `.prevent`) without an expression, e.g. `<div @&#8203;click.stop></div>`. The rule also accepts the arg-less object syntax `<div v-on="$listeners"></div>` instead of reporting a missing event name.

- [#&#8203;10721](biomejs/biome#10721) [`d83c66b`](biomejs/biome@d83c66b) Thanks [@&#8203;minseong0324](https://github.com/minseong0324)! - Improved type-aware lint rule inference for built-in globals and indexed function calls. Biome now resolves `Error(...)`, `new Error(...)`, optional `Error#stack`, and calls through indexed function values such as `handlers[0]()` more accurately.

- [#&#8203;10865](biomejs/biome#10865) [`6450276`](biomejs/biome@6450276) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed [#&#8203;10845](biomejs/biome#10845). Biome Language Server no longer goes in deadlock when the scanner is enabled.

- [#&#8203;10853](biomejs/biome#10853) [`93d8e53`](biomejs/biome@93d8e53) Thanks [@&#8203;Netail](https://github.com/Netail)! - Fixed [#&#8203;10840](biomejs/biome#10840): Astro shorthand attribute syntax is now correctly being parsed from embedded nodes.

- [#&#8203;10820](biomejs/biome#10820) [`bba3092`](biomejs/biome@bba3092) Thanks [@&#8203;JamBalaya56562](https://github.com/JamBalaya56562)! - Fixed [#&#8203;10619](biomejs/biome#10619): [`noProcessEnv`](https://biomejs.dev/linter/rules/no-process-env/) now also reports computed (bracket) member access. Previously only dot access was checked, so `process["env"]` and `env["NODE_ENV"]` (where `env` is imported from `node:process`) were missed. Both static and computed accesses are now reported.

- [#&#8203;10835](biomejs/biome#10835) [`3447b2f`](biomejs/biome@3447b2f) Thanks [@&#8203;dyc3](https://github.com/dyc3)! - Fixed [#&#8203;10824](biomejs/biome#10824): [`useDomQuerySelector`](https://biomejs.dev/linter/rules/use-dom-query-selector/) now supports an `ignore` option for receiver identifiers that should not be reported.

- [#&#8203;10875](biomejs/biome#10875) [`b12e486`](biomejs/biome@b12e486) Thanks [@&#8203;dyc3](https://github.com/dyc3)! - Fixed [#&#8203;10795](biomejs/biome#10795): `--profile-rules` now reports timings for each plugin separately as `plugin/<pluginName>`, matching the naming used by plugin suppressions, instead of aggregating all plugins under a single `plugin/plugin` entry.

- [#&#8203;10877](biomejs/biome#10877) [`d6bc447`](biomejs/biome@d6bc447) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed [biome-zed#164](biomejs/biome-zed#164): Biome no longer inserts stray whitespace when format-on-type runs after closing delimiters such as `)`, `]`, and `}`.

- [#&#8203;10867](biomejs/biome#10867) [`a21463e`](biomejs/biome@a21463e) Thanks [@&#8203;dyc3](https://github.com/dyc3)! - Fixed [#&#8203;10864](biomejs/biome#10864): Biome no longer crashes when checking or linting HTML files with unquoted attribute values such as `<textarea rows=4></textarea>`.

</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:eyJjcmVhdGVkSW5WZXIiOiI0My4yNTIuMyIsInVwZGF0ZWRJblZlciI6IjQzLjI1Mi4zIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

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

Labels

A-CLI Area: CLI A-Linter Area: linter L-JavaScript Language: JavaScript and super languages

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants