Skip to content

fix(grit): support positional arguments in pattern, function, and node calls#10281

Merged
ematipico merged 5 commits into
biomejs:mainfrom
Zelys-DFKH:fix/gritql-positional-args
Jun 25, 2026
Merged

fix(grit): support positional arguments in pattern, function, and node calls#10281
ematipico merged 5 commits into
biomejs:mainfrom
Zelys-DFKH:fix/gritql-positional-args

Conversation

@Zelys-DFKH

Copy link
Copy Markdown
Contributor

Fixes #10114.

The GritQL spec says positional arguments are valid, so console_method_to_info(\log`)should work the same asconsole_method_to_info(method = `log`)`. Biome was rejecting them.

The fix needed two places. In the parser, parse_maybe_named_arg sent every GRIT_NAME token to parse_named_arg, which requires =. A positional call like is_log() would get misparsed as a broken named arg. One token of lookahead fixes it.

In the pattern compiler, node_to_args_pairs rejected any positional arg that wasn't a GritVariable — backtick snippets and other patterns were all refused with ExpectedVariable. The same restriction in node_pattern_from_node_with_name_and_kind blocked AST node patterns too. Both now resolve the parameter name by position.

AI assistance was used in writing this PR.

Test Plan

  • ok/positional_args.grit — the exact GritQL from the issue parses without errors
  • ok/positional_args_pattern_call.grit — positional pattern call (is_log()) parses correctly
  • specs/ts/positional_args.{grit,ts,snap} — end-to-end: the pattern compiles and matches console.log(...) but not console.warn(...)

…e calls

Fixes biomejs#10114. GritQL allows omitting parameter names when arguments are given in order, but Biome rejected all positional args.

- Parser: parse_maybe_named_arg now uses a one-token lookahead to distinguish a positional pattern call from a named arg, instead of unconditionally routing GRIT_NAME to parse_named_arg
- Compiler: node_to_args_pairs now accepts any AnyGritPattern as a positional arg and resolves the parameter name by position, instead of rejecting non-GritVariable args with ExpectedVariable
- Compiler: node_pattern_from_node_with_name_and_kind applies the same fix for AST node patterns
@github-actions github-actions Bot added A-Parser Area: parser L-Grit Language: GritQL labels May 6, 2026
@coderabbitai

coderabbitai Bot commented May 6, 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: a746d935-0709-4125-9a99-31f525ff55d7

📥 Commits

Reviewing files that changed from the base of the PR and between 88adfe1 and bf33b69.

📒 Files selected for processing (1)
  • crates/biome_grit_patterns/src/pattern_compiler/call_compiler.rs
🚧 Files skipped from review as they are similar to previous changes (1)
  • crates/biome_grit_patterns/src/pattern_compiler/call_compiler.rs

Walkthrough

The change enables positional (unkeyed) arguments in GritQL patterns, functions, predicates, and AST node patterns. The parser's parse_maybe_named_arg now treats a GRIT_NAME as a named argument only when followed by =, otherwise it parses a pattern. The pattern compiler was refactored to accept non-variable positional argument patterns by resolving parameters by position when names are omitted, and deriving parameter names from patterns when possible. Tests demonstrating positional calls were added across both parser and pattern compiler levels.

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely summarises the main change: adding support for positional arguments in GritQL pattern, function, and node calls.
Description check ✅ Passed The description relates directly to the changeset, explaining the problem, the two-part fix (parser and compiler), and providing test coverage details.
Linked Issues check ✅ Passed All changes directly address the requirements from issue #10114: supporting positional arguments in pattern/function/node calls through parser one-token lookahead and compiler position-based parameter resolution.
Out of Scope Changes check ✅ Passed All changes focus narrowly on supporting positional arguments in GritQL calls, with test files validating the fix. No unrelated modifications detected.

✏️ 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 and usage tips.

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

🧹 Nitpick comments (2)
crates/biome_grit_patterns/src/pattern_compiler/call_compiler.rs (1)

207-218: 💤 Low value

Tiny nit: expected_params.as_ref().map_or(0, |p| p.len()) could be 0 literally.

We only enter this ok_or_else when expected_params.as_ref().and_then(...) returned None. That's either because expected_params was None (→ 0) or because params.get(i) was out of range (→ params.len() <= i, but reporting params.len() is exactly what we want). So the current expression is correct — it's the expected_params is None case where reporting max_args: 0 feels a bit terse for an unknown callee. Not blocking; just flagging in case you'd rather route the None case through MissingArgumentName or skip the error here entirely.

🤖 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_grit_patterns/src/pattern_compiler/call_compiler.rs` around
lines 207 - 218, The current ok_or_else builds
NodeLikeArgumentError::TooManyArguments with max_args computed as
expected_params.as_ref().map_or(0, |p| p.len()), which yields 0 when
expected_params is None; instead, first test expected_params: if
expected_params.is_none() return a clearer error such as
NodeLikeArgumentError::MissingArgumentName { name: fn_name.to_string() } and
only construct NodeLikeArgumentError::TooManyArguments when expected_params is
Some—using params.len() for max_args; update the branch around expected_params,
NodeLikeArgumentError::TooManyArguments, and fn_name in call_compiler.rs
accordingly.
.changeset/fix-gritql-positional-args.md (1)

5-5: ⚡ Quick win

Use the Fixed [#NUMBER](issue link): … prefix.

Issue #10114 exists for this fix, so per the changeset convention the description should lead with the linked-issue prefix instead of plain prose.

📝 Suggested tweak
-Fixed a bug where GritQL patterns rejected positional (unkeyed) arguments.
+Fixed [`#10114`](https://github.com/biomejs/biome/issues/10114): GritQL patterns rejected positional (unkeyed) arguments.

As per coding guidelines: "For bug fixes, start with 'Fixed [#NUMBER](issue link): ...'".

🤖 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-gritql-positional-args.md at line 5, Replace the changeset
description line so it follows the convention for bug fixes: change the current
sentence "Fixed a bug where GritQL patterns rejected positional (unkeyed)
arguments." to start with the linked-issue prefix, e.g. "Fixed [`#10114`](issue
link): GritQL patterns rejected positional (unkeyed) arguments.", ensuring the
issue number 10114 is used and the rest of the text remains the same.
🤖 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.

Nitpick comments:
In @.changeset/fix-gritql-positional-args.md:
- Line 5: Replace the changeset description line so it follows the convention
for bug fixes: change the current sentence "Fixed a bug where GritQL patterns
rejected positional (unkeyed) arguments." to start with the linked-issue prefix,
e.g. "Fixed [`#10114`](issue link): GritQL patterns rejected positional (unkeyed)
arguments.", ensuring the issue number 10114 is used and the rest of the text
remains the same.

In `@crates/biome_grit_patterns/src/pattern_compiler/call_compiler.rs`:
- Around line 207-218: The current ok_or_else builds
NodeLikeArgumentError::TooManyArguments with max_args computed as
expected_params.as_ref().map_or(0, |p| p.len()), which yields 0 when
expected_params is None; instead, first test expected_params: if
expected_params.is_none() return a clearer error such as
NodeLikeArgumentError::MissingArgumentName { name: fn_name.to_string() } and
only construct NodeLikeArgumentError::TooManyArguments when expected_params is
Some—using params.len() for max_args; update the branch around expected_params,
NodeLikeArgumentError::TooManyArguments, and fn_name in call_compiler.rs
accordingly.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 7f760091-2a20-4acb-92c4-1768b9a35428

📥 Commits

Reviewing files that changed from the base of the PR and between 04e22a1 and 34a3094.

⛔ Files ignored due to path filters (3)
  • crates/biome_grit_parser/tests/grit_test_suite/ok/positional_args.grit.snap is excluded by !**/*.snap and included by **
  • crates/biome_grit_parser/tests/grit_test_suite/ok/positional_args_pattern_call.grit.snap is excluded by !**/*.snap and included by **
  • crates/biome_grit_patterns/tests/specs/ts/positional_args.snap is excluded by !**/*.snap and included by **
📒 Files selected for processing (8)
  • .changeset/fix-gritql-positional-args.md
  • crates/biome_grit_parser/src/parser/mod.rs
  • crates/biome_grit_parser/tests/grit_test_suite/ok/positional_args.grit
  • crates/biome_grit_parser/tests/grit_test_suite/ok/positional_args_pattern_call.grit
  • crates/biome_grit_patterns/src/pattern_compiler/call_compiler.rs
  • crates/biome_grit_patterns/src/pattern_compiler/node_like_compiler.rs
  • crates/biome_grit_patterns/tests/specs/ts/positional_args.grit
  • crates/biome_grit_patterns/tests/specs/ts/positional_args.ts

When a non-variable positional argument is passed to a function with no
known parameter list, emit MissingArgumentName instead of TooManyArguments
with max_args=0. When the parameter list is known but the index is out of
range, use the actual parameter count in TooManyArguments.
@changeset-bot

changeset-bot Bot commented May 6, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 91d5017

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

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

🧹 Nitpick comments (1)
crates/biome_grit_patterns/src/pattern_compiler/call_compiler.rs (1)

174-228: 💤 Low value

Logic looks correct — consider deduping the positional fallback.

The two arms of the inner match &pattern share the same "look up expected_params[i], otherwise emit TooManyArguments (when params are known) or MissingArgumentName (when they aren't)" routine. Pulling that into a small closure tightens the code and keeps the two error policies in one place.

♻️ Sketch of a shared fallback helper
             Ok(AnyGritMaybeNamedArg::AnyGritPattern(pattern)) => {
+                let positional_name = |missing_var: &str| -> Result<String, NodeLikeArgumentError> {
+                    expected_params
+                        .as_ref()
+                        .and_then(|params| params.get(i))
+                        .map(|p| {
+                            p.strip_prefix(lang.metavariable_prefix())
+                                .unwrap_or(p)
+                                .to_owned()
+                        })
+                        .ok_or_else(|| {
+                            if let Some(params) = expected_params.as_ref() {
+                                NodeLikeArgumentError::TooManyArguments {
+                                    name: fn_name.to_string(),
+                                    max_args: params.len(),
+                                }
+                            } else {
+                                NodeLikeArgumentError::MissingArgumentName {
+                                    name: fn_name.to_string(),
+                                    variable: missing_var.to_owned(),
+                                }
+                            }
+                        })
+                };
                 let name = match &pattern {
                     AnyGritPattern::GritVariable(var) => {
                         let var_name = var.to_trimmed_string();
-                        let name = var_name
+                        match var_name
                             .strip_prefix(lang.metavariable_prefix())
                             .filter(|stripped| {
                                 expected_params.as_ref().is_none_or(|expected| {
                                     expected.iter().any(|exp| exp == &var_name || exp == stripped)
                                 })
                             })
-                            .or_else(|| { ... })
-                            .ok_or_else(|| { ... })?;
-                        name.to_owned()
+                        {
+                            Some(name) => name.to_owned(),
+                            None => positional_name(&var_name)?,
+                        }
                     }
-                    _ => { ... }
+                    _ => positional_name("")?,
                 };
                 Ok((name, pattern))
             }

Purely cosmetic — feel free to ignore if you'd rather not touch it again.

A couple of small things worth noting (no action required):

  • For a variable whose name doesn't match any expected param (e.g. a typo like $methdo), the new behaviour silently rebinds it positionally rather than raising UnknownVariable. That's the natural cost of supporting positional variable binding, and matches the issue's intent — just flagging it so you're not surprised by it later in a bug report.
  • Line 222's variable: String::new() only fires when expected_params is None and the positional arg is not a variable; downstream you'd typically hit UnknownFunctionOrPattern first, so it's effectively defensive. Leaving as-is is fine.
🤖 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_grit_patterns/src/pattern_compiler/call_compiler.rs` around
lines 174 - 228, The two branches inside the
AnyGritMaybeNamedArg::AnyGritPattern handling duplicate the logic for resolving
expected_params[i] and producing NodeLikeArgumentError variants; extract that
positional-fallback lookup into a small helper/closure (e.g., let
resolve_positional = |i: usize| -> Result<String, NodeLikeArgumentError> { ...
}) that captures expected_params and fn_name and returns the stripped name or
the appropriate TooManyArguments/MissingArgumentName error, then call this
helper from both the AnyGritPattern::GritVariable fallback path and the
non-variable arm to eliminate duplication and centralize the error policy.
🤖 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.

Nitpick comments:
In `@crates/biome_grit_patterns/src/pattern_compiler/call_compiler.rs`:
- Around line 174-228: The two branches inside the
AnyGritMaybeNamedArg::AnyGritPattern handling duplicate the logic for resolving
expected_params[i] and producing NodeLikeArgumentError variants; extract that
positional-fallback lookup into a small helper/closure (e.g., let
resolve_positional = |i: usize| -> Result<String, NodeLikeArgumentError> { ...
}) that captures expected_params and fn_name and returns the stripped name or
the appropriate TooManyArguments/MissingArgumentName error, then call this
helper from both the AnyGritPattern::GritVariable fallback path and the
non-variable arm to eliminate duplication and centralize the error policy.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 854eef94-010a-4f8b-9d4e-dc5a5e15cd8f

📥 Commits

Reviewing files that changed from the base of the PR and between 34a3094 and 7de0f51.

📒 Files selected for processing (1)
  • crates/biome_grit_patterns/src/pattern_compiler/call_compiler.rs

@dyc3 dyc3 added M-Likely Agent Meta: this was likely an automated PR without a human in the loop labels May 6, 2026
Comment thread .changeset/fix-gritql-positional-args.md Outdated
@codspeed-hq

codspeed-hq Bot commented Jun 19, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 9 untouched benchmarks
⏩ 247 skipped benchmarks1


Comparing Zelys-DFKH:fix/gritql-positional-args (91d5017) with main (3bd2b6a)

Open in CodSpeed

Footnotes

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

@dyc3

dyc3 commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

@Zelys-DFKH looks like there was a regression, can you take a look?

…e output

The pattern now correctly produces a Rewrite effect for positional arg
invocations, so the snapshot must record the rewritten file content.
@ematipico ematipico merged commit 0efe244 into biomejs:main Jun 25, 2026
29 checks passed
@github-actions github-actions Bot mentioned this pull request Jun 25, 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
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-Parser Area: parser L-Grit Language: GritQL M-Likely Agent Meta: this was likely an automated PR without a human in the loop

Projects

None yet

Development

Successfully merging this pull request may close these issues.

🐛 GritQL parser errors on unkeyed pattern/function/predicate arguments

3 participants