github biomejs/biome @biomejs/biome@2.5.10
Biome CLI v2.5.10

5 hours ago

2.5.10

Patch Changes

  • #11403 8f7786f Thanks @Princesseuh! - Fixed Astro rejecting JavaScript comments between attributes.

    <div /* block comment */ class="something"></div>
    <Component /* c */ client:load />
  • #11403 8f7786f Thanks @Princesseuh! - Fixed a bare < in Astro text being treated as the start of a tag, such as <p>5 < 6 and 7 > 6</p>. As in HTML, a < that cannot open a tag is text and needs no escaping.

  • #11438 3133ffa Thanks @Princesseuh! - Fixed #8294: an Astro expression holding only a comment is no longer reported as a parse error, which also stopped the whole file from being formatted.

    <div>{/* a note */}</div>
    <div class={/* a note */}>x</div>
  • #11403 8f7786f Thanks @Princesseuh! - Fixed #9165: an empty Astro expression such as <div>{}</div> no longer fails to parse. Astro renders {} as nothing.

  • #11403 8f7786f Thanks @Princesseuh! - Fixed Astro expressions containing a comment failing to parse.

    <div>{/* block comment */ x}</div>
    <div>{/* only a comment */}</div>
  • #11403 8f7786f Thanks @Princesseuh! - Added support for Astro's fragment shorthand.

    <>
      <p>a</p>
    </>
  • #11403 8f7786f Thanks @Princesseuh! - Fixed an Astro frontmatter block being cut short by a closing tag inside a string or comment.

    ---
    const a = "</script>";
    // </script> in a comment
    ---
  • #11403 8f7786f Thanks @Princesseuh! - Fixed --- being read as an Astro frontmatter fence when markup precedes it. Astro only recognizes frontmatter at the very start of a file, so a file opening with a comment now has no frontmatter, and its --- lines are content.

    <!-- c -->
    ---
    this is text, not frontmatter
    ---
  • #11403 8f7786f Thanks @Princesseuh! - Fixed an Astro frontmatter block ending early on a line that merely starts with a dash.

    ---
    --count;
    ---
  • #11403 8f7786f Thanks @Princesseuh! - Fixed the children of an Astro element carrying is:raw being parsed as markup instead of raw text. This now also covers <script> and <style>, whose contents Astro emits verbatim rather than processing, so they are no longer linted as JavaScript or CSS.

    <article is:raw><% awesome %></article>
    <script is:raw>{{ mustache }}</script>
  • #11403 8f7786f Thanks @Princesseuh! - Fixed Astro rejecting attribute names that start with a colon, such as :href.

  • #11403 8f7786f Thanks @Princesseuh! - Fixed the Astro parser failing to recover from a malformed closing tag such as <div></{<//, so that a later mistake is reported where it happens rather than cascading.

  • #11403 8f7786f Thanks @Princesseuh! - Fixed { inside an Astro <math> element opening an expression. MathML is foreign content where Astro parses no expressions, so LaTeX such as R^{2x} now survives as text. <svg> is unaffected.

  • #11403 8f7786f Thanks @Princesseuh! - Fixed {{ at the start of an Astro expression being read as an interpolation. Astro has no {{ }} syntax, so {{ a: 1 }} and <Comp a={{ b: 1 }} /> are object literals.

  • #11403 8f7786f Thanks @Princesseuh! - Fixed expressions inside an Astro <pre> or <textarea> being read as raw text. Astro parses both as ordinary elements, so their markup and interpolations are now parsed, and a variable used only inside one is no longer reported as unused.

    <pre>{value}</pre>
    <textarea><div>{value}</div></textarea>
  • #11403 8f7786f Thanks @Princesseuh! - Added support for template literal attribute values in Astro, such as <div class=`a ${b} c`>.

  • #11403 8f7786f Thanks @Princesseuh! - Fixed Astro rejecting HTML5 unquoted attribute values that contain `, =, ' or ", such as <a href=a=b> and <a href=a'b>.

  • #11393 dec5a8f Thanks @1678092075! - Fixed #11207: useStrictMode no longer reports Vue event handlers such as @click="count++".

  • #11431 c065f99 Thanks @levrik! - Fixed #11429: Variables and imports used by Vue same-name bindings such as :disabled or v-bind:disabled are no longer reported as unused.

  • #11409 405dedb Thanks @ematipico! - Fixed a memory leak in the LSP server where memory usage kept growing over long editor sessions.

  • #11422 a51eff7 Thanks @dyc3! - Fixed #11416: Biome no longer crashes when parsing incomplete {let} or {const} declarations in Svelte files.

  • #11378 34b715c Thanks @Netail! - Added extra rule sources from @eslint/css. biome migrate eslint detects rules in your eslint configurations more reliably.

  • #11403 8f7786f Thanks @Princesseuh! - Fixed {#, {/, {: and {@ being read as Svelte block openings in every HTML-like file. They are now Svelte-only, so in HTML, Vue and Angular files a sequence such as {#if x} is ordinary text instead of a parse error.

  • #11443 8d45229 Thanks @ematipico! - Fixed #11390: noFloatingPromises no longer performs unnecessary type inference on call arguments when checking methods of non-generic class instances created with new.

  • #11425 9c2667b Thanks @dyc3! - Fixed #6426: GritQL plugins now match and rewrite metavariables embedded in quoted strings.

  • #11441 00317c3 Thanks @dyc3! - Improved performance of useNamedCaptureGroup, noMisplacedAssertion, noSkippedTests, noExportsInTest, noDuplicateTestHooks, noIdenticalTestTitle, useTestHooksInOrder, and useTestHooksOnTop.

What's Changed

  • refactor(analyze): avoid boxed rule state strings by @dyc3 in #11385
  • ci: fix advistories by @ematipico in #11391
  • chore: update spin to resolve yanked package warning by @dyc3 in #11392
  • fix(useStrictMode): ignore Vue event handlers by @1678092075 in #11393
  • refactor(core): settings as tracked functions by @ematipico in #11363
  • feat(md): frontmatter parsing support by @ematipico in #11395
  • chore: add CodSpeed and Cloudflare to sponsors by @ematipico in #11410
  • chore: missing rule sources by @Netail in #11378
  • chore: replace cargo-audit with cargo-deny by @Netail in #11413
  • feat(js_plugin): runtime AST bindings for JS plugins by @siketyan in #10954
  • chore: split just test-lintrule by @Netail in #11414
  • feat(js_plugin): query AST nodes by their kind by @siketyan in #11415
  • fix(core): files eviction and project by @ematipico in #11409
  • fix(parse/js): handle incomplete declarations more gracefully by @dyc3 in #11422
  • fix(grit): handle metavariables inside quoted strings by @dyc3 in #11425
  • chore(wasm): enable JS plugins via unstable feature by @siketyan in #11421
  • feat(js_transform): erase type annotations in TypeScript code by @siketyan in #11417
  • fix(html/parser): correct Astro document parsing by @Princesseuh in #11403
  • fix(visitor): register references from Vue same-name bindings by @levrik in #11431
  • refactor(deserialize): type-erased visitor for reduce binary size by @siketyan in #11428
  • fix(js_plugin): use web-time clock on Boa engine by @siketyan in #11434
  • fix(tools): conformance checkout by @ematipico in #11444
  • fix(js/parser): accept comment-only Astro template expressions by @Princesseuh in #11438
  • fix(inference): use local inference for constructor dependent members by @ematipico in #11443
  • perf(lint/js): optimize some rule queries and unit test call shared logic by @dyc3 in #11441
  • fix(parse/js): handle incomplete svelte declarations even more by @dyc3 in #11448
  • ci: release by @github-actions[bot] in #11450

New Contributors

Full Changelog: https://github.com/biomejs/biome/compare/@biomejs/biome@2.5.9...@biomejs/biome@2.5.10

Don't miss a new biome release

NewReleases is sending notifications on new releases.