chore(deps): update dependency @biomejs/biome to v2.5.12 - #18

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/biomejs-biome-2.x
Open

chore(deps): update dependency @biomejs/biome to v2.5.12#18
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/biomejs-biome-2.x

Conversation

@renovate

@renovaterenovateBot commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

PackageChangeAgeConfidence
@biomejs/biome (source)2.5.02.5.12ageconfidence

Release Notes

biomejs/biome (@​biomejs/biome)

v2.5.12

Compare Source

Patch Changes
  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed Astro attribute expressions rejecting TypeScript and JSX syntax that is accepted in text expressions.

    <Componenticon={<Icon />}count={totalasnumber}onSelect={(e:Event) =>e} />
  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed Astro attribute names being split on : and . inside an expression, such as {x && <button x-on:keyup.enter={go} client:load.foo />}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed a bare > in the children of an Astro expression being treated as markup, such as {x && <div>a > b</div>}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed HTML comments inside an Astro expression failing to parse. They are now read as trivia, wherever they appear among the children.

    {x&& <div><!-- first -->text<!-- last --></div>}{cond&& <a></a><!--c--><b></b>}
  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed is:raw children inside an Astro expression being read as JSX, such as {x && <div is:raw>{not js} < & text</div>}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed an apostrophe or quote in the text of a JSX element inside an Astro expression ending the expression early, such as {items.map((i) => <li>it's {i}</li>)}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed the children of a <script> or <style> inside an Astro expression being read as JSX. Their contents are text, so braces and comparisons no longer have to be escaped.

    {cond&& <style>a {color: red}</style>}{cond&& <script>let x = {a: 1};</script>}
  • #​11440b88f1ea Thanks @​Princesseuh! - Added support for template literal attribute values inside an Astro expression, such as {x && <C data-x=`t${x}` />}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed unquoted attribute values being rejected inside an Astro expression, such as {x && <a class=foo maxlength=255 href=/about>go</a>}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed a template literal nested inside ${} breaking the rest of an Astro file, such as const href = `/blog${page === 0 ? '' : `/${page + 1}`}`;.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed a quote inside a regex character class breaking the rest of an Astro file, such as const unsafe = /[/"]/;.

  • #​1150854f3a2e Thanks @​dyc3! - Added the nursery rule useFlatMathMinMax. Because Math.min() and Math.max() accept any number of arguments, the rule reports unnecessary nested calls to the same method:

    Math.max(Math.max(a,b),c);

    The fix flattens this expression to Math.max(a, b, c).

  • #​11585c5c8315 Thanks @​Netail! - Fixed #​11475: noUnresolvedImports no longer reports Bun runtime built-in modules (bun, bun:bundle, bun:ffi, bun:jsc, bun:sqlite, bun:test).

  • #​1136852a57b3 Thanks @​Austin1serb! - Fixed #​6830: Biome now reports a diagnostic for excessively deep syntax instead of overflowing the native stack while releasing the parsed tree.

  • #​115961fc42ed Thanks @​dyc3! - Added the nursery rule noThisOutsideOfClass. The rule reports this outside class members and TypeScript functions with an explicit this parameter.

    functionPerson(name){this.name=name;}
  • #​115552516335 Thanks @​dyc3! - Fixed #​11529, where noFloatingPromises missed unhandled Promise chains when the imported function's module belonged to an import cycle. Cyclic modules now preserve types for exports that do not participate in recursive type dependencies.

  • #​115180fee70c Thanks @​HarperZ9! - Fixed #​11500: the formatter now prints the declare modifier before accessibility modifiers on class properties. private declare readonly name: string is now formatted as declare private readonly name: string, matching Prettier and TypeScript's canonical modifier order.

  • #​115801277af2 Thanks @​ematipico! - Fixed #​5091: Biome no longer moves comments next to the < of a generic, which causes invalid TypeScript syntax:

    - Generic<// a comment+ Generic<+ // a comment
  • #​1157742995d2 Thanks @​ematipico! - Fixed #​4592. Biome no longer crashes while parsing malformed delete expressions.

  • #​1159067963b4 Thanks @​ematipico! - Fixed #​6427 so Grit plugins can use function = ... as a node argument.

  • #​11600a689cb5 Thanks @​ematipico! - Fixed #​6644: noUnusedVariables now recognizes all interface declarations in a TypeScript declaration-merging group when the interface is referenced.

    The following snippet no longer triggers the rule.

    interfaceThings{foo: string;}interfaceThings{bar: string;}exporttypeKey=keyofThings;interfaceThings{baz: string;}
  • #​11591d4a0716 Thanks @​ematipico! - Fixed #​6615. noDuplicateProperties no longer reports declarations nested in block at-rules as duplicates of declarations in their parent block.

  • #​11492f2a07aa Thanks @​santichausis! - Fixed #​11454: noMisplacedAssertion now recognises @fast-check/vitest's test.prop(...) (and .concurrent.prop, .skip.prop, etc.) as a test function, the same way it already recognises test.each. The JS formatter picks up the same recognition, so a curried test.prop(...)(...) call is now formatted with the regular breakable argument layout used for test.each/test.for, instead of the single-line-hugging layout used for plain it/test calls.

    For example, Biome no longer reports the assertion below as misplaced:

    import{fc,test}from"@fast-check/vitest";test.prop([fc.string()])("round-trips",(s)=>{expect(s).toBe(s);});
  • #​1158965742b3 Thanks @​ematipico! - Fixed #​4928: noUnusedVariables no longer reports a value declaration as unused when its merged namespace is referenced.

  • #​11559472dbc2 Thanks @​levrik! - Fixed a false positive in noVueDuplicateKeys where a <script setup> variable initialized from props was reported as a duplicate of the prop it derives from. Biome now exempts any variable whose initializer references props, instead of only recognizing defineProps() and toRefs(props).

    For example, Biome no longer reports foo below as a duplicate key:

    <script setup>import { toRef } from'vue';constprops=defineProps(['foo']);constfoo=toRef(props, 'foo');</script>
  • #​115946586ceb Thanks @​ematipico! - Fixed #​6640. Biome no longer crashes when linting malformed for...of statements.

  • #​1157185b197d Thanks @​ematipico! - Fixed #​10838: useSortedAttributes no longer corrupts JSX attributes when nested JSX elements also require sorting.

  • #​1153397e76c0 Thanks @​ematipico! - Fixed #​11520, where the Biome scanner would start analysing dependencies multiple times, leading to long and unresponsive sessions.

  • #​1156418a0e1f Thanks @​Netail! - Fixed the diagnostic range of noInferrableTypes so it now highlights only the type instead of including the leading : colon, spaces and comments.

  • #​11540124fdaa Thanks @​ematipico! - Fixed #11537: noShorthandPropertyOverrides now compares declarations only within the same block. The rule no longer reports @supports feature queries and correctly checks nested, @keyframes, and @page blocks.

  • #​115327ceb0ee Thanks @​dyc3! - Fixed #​11528: noFloatingPromises no longer reports statement-level await expressions that handle Promise values, including overloaded calls returning Promise aliases. Awaited values that resolve to arrays of Promises remain reported because their element Promises are not handled by await.

  • #​114743c6412e Thanks @​dyc3! - Fixed #​10241. Biome no longer reports unsupported text expression diagnostics for double-curly text in vanilla HTML, and the formatter preserves adjacent curly-brace text.

  • #​115936c7fd27 Thanks @​dyc3! - Added the nursery rule noVueDeprecatedScopedSlots. It reports deprecated $scopedSlots references in Vue templates and component objects, and offers an unsafe replacement with $slots. For example, Biome now reports this.$scopedSlots.default inside a Vue component.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed the formatter crashing on an Astro or Svelte expression spanning several lines in a file with CRLF line endings, such as <p>{a +\r\n b}</p>.

  • #​11581f4e5ebb Thanks @​dyc3! - Added the nursery rule useModernMathApis. The rule reports legacy mathematical patterns that have direct modern Math equivalents.

    Math.sqrt(a*a+b*b);
  • #​11597a20f44a Thanks @​Netail! - Added the nursery rule noBunModules, which forbids the use of Bun builtin modules (e.g. bun:sqlite, bun:ffi).

  • #​115457d54688 Thanks @​dyc3! - Fixed #​11542: Biome now reports HTML comments between Svelte tag attributes as parse errors.

  • #​11582b6611dd Thanks @​ematipico! - Fixed #​3862. Biome now parses legacy Internet Explorer filter and -ms-filter values such as progid:DXImageTransform... and alpha(opacity=40).

  • #​1157565da251 Thanks @​dyc3! - Improved the Tailwind parser's ability to recover from parsing failures. Whitespace now always allows the parser to recover and start parsing a new class.

  • #​115760f78499 Thanks @​ematipico! - Fixed #​3515 and #​10395, where Biome could corrupt Unicode characters while writing source received through standard input to standard output. Characters such as and are now preserved.

  • #​115390fca643 Thanks @​ematipico! - Fixed #​11512, where style/noDescendingSpecificity missed lower-specificity selectors after a later higher-specificity selector with the same tail selector.

  • #​11544040f867 Thanks @​dyc3! - Fixed #​11541: formatting a Svelte render tag followed by an HTML comment no longer duplicates the comment.

     <div>
    {@render children?.()}
    <!-- comment -->
    - <!-- comment -->
    </div>
  • #​11565ee69e0e Thanks @​ematipico! - Fixed #​11525. Now the configuration schema correctly provides auto-completion for linter domains.

  • #​11583b19390c Thanks @​dyc3! - Fixed #​11352: useExplicitLengthCheck no longer reports length-like properties used as value-producing || fallbacks or optional chains, and it no longer offers fixes for value-producing && checks or unsafe negations.

  • #​11562753e955 Thanks @​ematipico! - Fixed an issue where the Biome Language Server would start with logging level set to debug. This would cause logs to grow exponentially in long sessions.

  • #​112177d3ee9c Thanks @​dyc3! - Fixed handling of biome-ignore format suppression comments on TypeScript declared class properties with string literal names.

    classA{declare/* biome-ignore format: exercise suppression checking */'a-b': 0;}
  • #​11497f5d7896 Thanks @​dyc3! - Added the noInvalidFileInputAccept nursery rule. The rule reports invalid literal accept values on file inputs in JSX and HTML, and normalizes common mistakes.

    <inputtype="file"accept="image/jpg"/>
  • #​11345ac58958 Thanks @​jakeleventhal! - Improved type inference performance by avoiding resolution of unused members in object arguments.

  • #​115542d55931 Thanks @​Netail! - Added the new nursery rule useReactNamingConvention, which enforces naming conventions for React values assigned from createContext, useId, and useRef. A value from createContext must be a PascalCase component name ending with Context, a value from useId must be named id or end with Id, and a value from useRef must be named ref or end with Ref.

  • #​114911d6210b Thanks @​dyc3! - Added the nursery rule noUnmodifiedLoopCondition, which reports variables in loop conditions that are never modified in the loop.

    letnode=getNode();while(node){process(node);}

v2.5.11

Compare Source

Patch Changes
  • #​114999743d0c Thanks @​scs0209! - Fixed #​11496: useValidAnchor now treats Astro JSX shorthand attributes like <a {href}> as a valid href.

  • #​1143788f805e Thanks @​Princesseuh! - Fixed #​9944: adjacent elements inside an Astro expression now parse as an implicit fragment instead of raising an error.

    {options.map(() =>
    <div />
    <div />
    )}
  • #​1143788f805e Thanks @​Princesseuh! - Fixed Astro templates rejecting unclosed HTML void elements, such as {cond && <br>}.

  • #​11507e2fc036 Thanks @​dyc3! - Fixed #​11157: noUnusedVariables no longer reports Vue <script setup> bindings used by CSS v-bind() as unused.

  • #​11398afc4615 Thanks @​dyc3! - Fixed #​11389: Files passed through --stdin-file-path now use full HTML support for Astro, Svelte, and Vue when it is enabled.

  • #​11526372cd68 Thanks @​dyc3! - Fixed noVueRefAsOperand to track Vue refs through declaration aliases and toRefs() properties, and to recognize useTemplateRef() results. The rule no longer reports false positives such as plain ref transfers, plain toRefs() property access, defineModel() modifiers, or the supported .effect member as operands.

    The refactor enabling these fixes also improves the performance of the rule.

  • #​11458a7cd286 Thanks @​dyc3! - Fixed #​11436: GritQL snippets such as export { $specifiers } from $source now match named re-exports with aliases, inline type modifiers, and multiple specifiers.

  • #​11515382b15d Thanks @​dyc3! - Fixed #​11390, where noFloatingPromises performed expensive full type inference for calls to non-Promise methods declared on third-party TypeScript classes. The rule now classifies those calls using targeted type information.

  • #​115166f40e82 Thanks @​levrik! - Fixed noVueRefAsOperand so it no longer reports a callback parameter (e.g. from .find(), .map()) as an unwrapped ref value just because it's nested inside a ref(), computed(), or similar call.

    constresult=computed(()=>list.find((item)=>item.label==="a"));

    Previously, item here was incorrectly treated as a ref value because the rule attributed it to the outer computed() call.

  • #​11495496268d Thanks @​Netail! - Fixed useGraphqlNamingConvention so it no longer reports GraphQL enum value definitions with comments & descriptions and now displays a more accurate diagnostic range.

  • #​114076ef52b0 Thanks @​1678092075! - Fixed #​11214: noUnusedVariables no longer reports type parameters declared by non-default function overload signatures that have an implementation.

  • #​113225c353e6 Thanks @​jp-knj! - Added a new nursery rule noAstroSetHtmlDirective, which disallows Astro's set:html directive because untrusted content can introduce cross-site scripting vulnerabilities.

    For example, the following snippet triggers the rule:

    <divset:html={content} />
  • #​1146218883b7 Thanks @​dyc3! - Fixed #​10776: useVueHyphenatedAttributes no longer reports lowercase attribute names containing punctuation, such as pt:header:data-test-id and some_attr.

  • #​114763270ca4 Thanks @​dyc3! - Fixed #​10330: Vue interpolation delimiters now stay attached to whitespace-sensitive element boundaries and adjacent inline siblings, wrapping their expression when needed to fit the configured line width. Interpolations followed by text now also converge after one formatting pass.

    -<v-btn v-if="store.state.user" variant="text" to="/my-rooms"- >{{ $t("nav.my-rooms") }}</v-btn->+<v-btn v-if="store.state.user" variant="text" to="/my-rooms">{{+ $t("nav.my-rooms")+}}</v-btn>
  • #​111913e5367f Thanks @​ematipico! - Added the nursery rule noUndeclaredCustomProperties, which reports references to custom properties that are not defined in available CSS, static HTML-like style attributes, or JSX string style attributes.

    For example, the following snippet triggers the rule:

    a { color:var(--undefined-color); }
  • #​114357754894 Thanks @​levrik! - Fixed: Variables and imports used as custom Vue directives are no longer reported as unused.

    For example:

    <script setup>constvHighlight= {mounted: (element) => {element.style.color="red"; },};</script>
    <template>
    <pv-highlight>Hello</p>
    </template>
  • #​11501e6acded Thanks @​aminya! - Improved the performance of useArraySortCompare by skipping type inference for calls to unrelated methods.

  • #​1146766b282c Thanks @​dyc3! - Fixed #​11464: Biome now parses parenthesized object literals returned from arrow functions when they contain a conditional expression and a nested arrow function.

  • #​11456db9aa2a Thanks @​dyc3! - Fixed #​10278: Marked the fix for noThisInStatic as unsafe by default.

  • #​11502652aedb Thanks @​levrik! - noGlobalAssign no longer reports assignments to a Vue <script setup> binding from a template expression, when the binding's name happens to match a built-in global (e.g. open, parent, top).

    For example, this no longer triggers a diagnostic:

    <script setup>constopen=defineModel();</script>
    <template>
    <button@click="open = !open">Toggle</button>
    </template>

v2.5.10

Compare Source

Patch Changes
  • #​114038f7786f Thanks @​Princesseuh! - Fixed Astro rejecting JavaScript comments between attributes.

    <div /* blockcomment */ class="something"></div>
    <Component /* c */ client:load />
  • #​114038f7786f 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.

  • #​114383133ffa 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>
    <divclass={/* a note */}>x</div>
  • #​114038f7786f Thanks @​Princesseuh! - Fixed #​9165: an empty Astro expression such as <div>{}</div> no longer fails to parse. Astro renders {} as nothing.

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

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

    <>
    <p>a</p>
    </>
  • #​114038f7786f 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---
  • #​114038f7786f 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
    ---
  • #​114038f7786f Thanks @​Princesseuh! - Fixed an Astro frontmatter block ending early on a line that merely starts with a dash.

    -----count;---
  • #​114038f7786f 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.

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

  • #​114038f7786f 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.

  • #​114038f7786f 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.

  • #​114038f7786f 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.

  • #​114038f7786f 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>
  • #​114038f7786f Thanks @​Princesseuh! - Added support for template literal attribute values in Astro, such as <div class=`a ${b} c`>.

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

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

  • #​11431c065f99 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.

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

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

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

  • #​114038f7786f 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.

  • #​114438d45229 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.

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

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

v2.5.9

Compare Source

Patch Changes
  • #​1132141386f3 Thanks @​dyc3! - Fixed #​11315: The CSS parser now recovers at declaration boundaries after bogus declarations, allowing subsequent valid declarations to be parsed.

  • #​1124857b197e Thanks @​yanthomasdev! - Expanded the environment variable metadata used by biome rage to include BIOME_BINARY, BIOME_LOG_FILE, and RUST_BACKTRACE as well as reworded explanations for better readability.

  • #​11377a8798ea Thanks @​Netail! - Added a new nursery rule useNamedLayer which disallows anonymous cascade layers.

    @layer {
    a {
    color: red;
    }
    }
  • #​113276771cf5 Thanks @​dyc3! - The HTML formatter now preserves meaningful blank lines in HTML, including spacing after elements with trailing spaces and blank lines between comment groups.

     <div>
    <!-- first group -->
    +
    <!-- second group -->
    </div>
  • #​10312ba8aa18 Thanks @​dyc3! - Added the nursery rule useTailwindShorthandClasses, which suggests shorter Tailwind utility classes. For example, the rule suggests replacing w-4 h-4 with size-4.

  • #​11333715e0cd Thanks @​kkkhs! - Fixed #​11328: lint/nursery/useExpect now recognizes Vitest Browser Mode expect.element() calls as assertions.

  • #​113439b98211 Thanks @​johncarmack1984! - Fixed #​11311: the CSS parser now accepts Tailwind container-query variant names in @variant, such as @xl and @max-xl. These previously produced a parse error and a noUnknownAtRules diagnostic.

    @variant@xl {
    div {
    background: red;
    }
    }
  • #​112203e8c488 Thanks @​santichausis! - Fixed #​9541: noUndeclaredVariables, noUnusedImports, and noUnusedVariables now correctly recognise exported variables and functions declared in one embedded <script> block as usable from a sibling <script> block, in Svelte's <script module>/<script> pair and Vue's non-setup<script> blocks.

    For example, Biome no longer reports greet as undeclared in the following Svelte component:

    <scriptmodule>exportfunctiongreet() {console.log("Hello!"); }</script>
    <script>greet();</script>
  • #​1130036430eb Thanks @​dyc3! - Fixed the HTML formatter's whitespace handling for marquee, noscript, video, audio, and object elements.

    - <marquee behavior="alternate"> This text will bounce </marquee>+ <marquee behavior="alternate">This text will bounce</marquee>
  • #​112996559e6c Thanks @​jp-knj! - Added the nursery rule useAstroClientOnlyDirectiveValue, which reports Astro client:only directives without an initializer.

    For example, <Component client:only /> triggers the rule.

  • #​113657529811 Thanks @​MHJahanbakhsh! - Fixed #​11229: The useGenericFontNames rule now treats math as a valid generic font family.

  • #​11346674f5f4 Thanks @​Jayllyz! - Fixed #​11335: noComponentHookFactories now reports a use-prefixed variable only when a function is assigned to it directly.

    functionfactory(){constuseColors=true;// no longer reportedconstuseStore=createStore({count: 0});// no longer reportedconstuseData=()=>useState(null);// still reportedreturnuseColors;}
  • #​11334c87c46a Thanks @​zkasuran! - Fixed #​11317: noSvgWithoutTitle no longer reports an svg that uses the boolean shorthand aria-hidden (equivalent to aria-hidden={true} in React).

  • #​1136413853b1 Thanks @​ematipico! - Fixed a bug where useJsxKeyInIterable incorrectly flagged Astro files.

  • #​1132141386f3 Thanks @​dyc3! - Fixed #​11315: Invalid CSS declarations in HTML style attributes now produce parser diagnostics instead of causing a panic.

  • #​1132567c3bf0 Thanks @​dyc3! - Fixed HTML text wrapping to account for the width of an adjacent closing tag, avoiding lines that exceed t

Note

PR body was truncated to here.


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.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@pkg-pr-new

pkg-pr-newBot commented Jun 23, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/@faststats/cli@db02cba

commit: db02cba

@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.1chore(deps): update dependency @biomejs/biome to v2.5.2Jul 1, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from da0f755 to db08b5eCompareJuly 1, 2026 21:38
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.2chore(deps): update dependency @biomejs/biome to v2.5.3Jul 8, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from db08b5e to 062f6f0CompareJuly 8, 2026 08:58
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.3chore(deps): update dependency @biomejs/biome to v2.5.4Jul 15, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch 2 times, most recently from 5f5750b to 02907f1CompareJuly 21, 2026 03:13
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.4chore(deps): update dependency @biomejs/biome to v2.5.5Jul 21, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from 02907f1 to 84f8166CompareJuly 21, 2026 09:52
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from 84f8166 to c72550bCompareJuly 28, 2026 12:37
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.5chore(deps): update dependency @biomejs/biome to v2.5.6Jul 28, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from c72550b to 4cb2285CompareAugust 4, 2026 18:45
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.6chore(deps): update dependency @biomejs/biome to v2.5.7Aug 4, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from 4cb2285 to 1968b9cCompareAugust 11, 2026 22:49
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.7chore(deps): update dependency @biomejs/biome to v2.5.8Aug 11, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from 1968b9c to a608389CompareAugust 18, 2026 02:55
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.8chore(deps): update dependency @biomejs/biome to v2.5.9Aug 18, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from a608389 to dea7b5cCompareAugust 21, 2026 23:10
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.9chore(deps): update dependency @biomejs/biome to v2.5.10Aug 21, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from dea7b5c to efd04a3CompareAugust 28, 2026 01:31
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.10chore(deps): update dependency @biomejs/biome to v2.5.11Aug 28, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from efd04a3 to db02cbaCompareSeptember 3, 2026 18:41
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.11chore(deps): update dependency @biomejs/biome to v2.5.12Sep 3, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

chore(deps): update dependency @biomejs/biome to v2.5.12 - #18

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/biomejs-biome-2.x
Open

chore(deps): update dependency @biomejs/biome to v2.5.12#18
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/biomejs-biome-2.x

Conversation

@renovate

@renovaterenovateBot commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

PackageChangeAgeConfidence
@biomejs/biome (source)2.5.02.5.12ageconfidence

Release Notes

biomejs/biome (@​biomejs/biome)

v2.5.12

Compare Source

Patch Changes
  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed Astro attribute expressions rejecting TypeScript and JSX syntax that is accepted in text expressions.

    <Componenticon={<Icon />}count={totalasnumber}onSelect={(e:Event) =>e} />
  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed Astro attribute names being split on : and . inside an expression, such as {x && <button x-on:keyup.enter={go} client:load.foo />}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed a bare > in the children of an Astro expression being treated as markup, such as {x && <div>a > b</div>}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed HTML comments inside an Astro expression failing to parse. They are now read as trivia, wherever they appear among the children.

    {x&& <div><!-- first -->text<!-- last --></div>}{cond&& <a></a><!--c--><b></b>}
  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed is:raw children inside an Astro expression being read as JSX, such as {x && <div is:raw>{not js} < & text</div>}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed an apostrophe or quote in the text of a JSX element inside an Astro expression ending the expression early, such as {items.map((i) => <li>it's {i}</li>)}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed the children of a <script> or <style> inside an Astro expression being read as JSX. Their contents are text, so braces and comparisons no longer have to be escaped.

    {cond&& <style>a {color: red}</style>}{cond&& <script>let x = {a: 1};</script>}
  • #​11440b88f1ea Thanks @​Princesseuh! - Added support for template literal attribute values inside an Astro expression, such as {x && <C data-x=`t${x}` />}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed unquoted attribute values being rejected inside an Astro expression, such as {x && <a class=foo maxlength=255 href=/about>go</a>}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed a template literal nested inside ${} breaking the rest of an Astro file, such as const href = `/blog${page === 0 ? '' : `/${page + 1}`}`;.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed a quote inside a regex character class breaking the rest of an Astro file, such as const unsafe = /[/"]/;.

  • #​1150854f3a2e Thanks @​dyc3! - Added the nursery rule useFlatMathMinMax. Because Math.min() and Math.max() accept any number of arguments, the rule reports unnecessary nested calls to the same method:

    Math.max(Math.max(a,b),c);

    The fix flattens this expression to Math.max(a, b, c).

  • #​11585c5c8315 Thanks @​Netail! - Fixed #​11475: noUnresolvedImports no longer reports Bun runtime built-in modules (bun, bun:bundle, bun:ffi, bun:jsc, bun:sqlite, bun:test).

  • #​1136852a57b3 Thanks @​Austin1serb! - Fixed #​6830: Biome now reports a diagnostic for excessively deep syntax instead of overflowing the native stack while releasing the parsed tree.

  • #​115961fc42ed Thanks @​dyc3! - Added the nursery rule noThisOutsideOfClass. The rule reports this outside class members and TypeScript functions with an explicit this parameter.

    functionPerson(name){this.name=name;}
  • #​115552516335 Thanks @​dyc3! - Fixed #​11529, where noFloatingPromises missed unhandled Promise chains when the imported function's module belonged to an import cycle. Cyclic modules now preserve types for exports that do not participate in recursive type dependencies.

  • #​115180fee70c Thanks @​HarperZ9! - Fixed #​11500: the formatter now prints the declare modifier before accessibility modifiers on class properties. private declare readonly name: string is now formatted as declare private readonly name: string, matching Prettier and TypeScript's canonical modifier order.

  • #​115801277af2 Thanks @​ematipico! - Fixed #​5091: Biome no longer moves comments next to the < of a generic, which causes invalid TypeScript syntax:

    - Generic<// a comment+ Generic<+ // a comment
  • #​1157742995d2 Thanks @​ematipico! - Fixed #​4592. Biome no longer crashes while parsing malformed delete expressions.

  • #​1159067963b4 Thanks @​ematipico! - Fixed #​6427 so Grit plugins can use function = ... as a node argument.

  • #​11600a689cb5 Thanks @​ematipico! - Fixed #​6644: noUnusedVariables now recognizes all interface declarations in a TypeScript declaration-merging group when the interface is referenced.

    The following snippet no longer triggers the rule.

    interfaceThings{foo: string;}interfaceThings{bar: string;}exporttypeKey=keyofThings;interfaceThings{baz: string;}
  • #​11591d4a0716 Thanks @​ematipico! - Fixed #​6615. noDuplicateProperties no longer reports declarations nested in block at-rules as duplicates of declarations in their parent block.

  • #​11492f2a07aa Thanks @​santichausis! - Fixed #​11454: noMisplacedAssertion now recognises @fast-check/vitest's test.prop(...) (and .concurrent.prop, .skip.prop, etc.) as a test function, the same way it already recognises test.each. The JS formatter picks up the same recognition, so a curried test.prop(...)(...) call is now formatted with the regular breakable argument layout used for test.each/test.for, instead of the single-line-hugging layout used for plain it/test calls.

    For example, Biome no longer reports the assertion below as misplaced:

    import{fc,test}from"@fast-check/vitest";test.prop([fc.string()])("round-trips",(s)=>{expect(s).toBe(s);});
  • #​1158965742b3 Thanks @​ematipico! - Fixed #​4928: noUnusedVariables no longer reports a value declaration as unused when its merged namespace is referenced.

  • #​11559472dbc2 Thanks @​levrik! - Fixed a false positive in noVueDuplicateKeys where a <script setup> variable initialized from props was reported as a duplicate of the prop it derives from. Biome now exempts any variable whose initializer references props, instead of only recognizing defineProps() and toRefs(props).

    For example, Biome no longer reports foo below as a duplicate key:

    <script setup>import { toRef } from'vue';constprops=defineProps(['foo']);constfoo=toRef(props, 'foo');</script>
  • #​115946586ceb Thanks @​ematipico! - Fixed #​6640. Biome no longer crashes when linting malformed for...of statements.

  • #​1157185b197d Thanks @​ematipico! - Fixed #​10838: useSortedAttributes no longer corrupts JSX attributes when nested JSX elements also require sorting.

  • #​1153397e76c0 Thanks @​ematipico! - Fixed #​11520, where the Biome scanner would start analysing dependencies multiple times, leading to long and unresponsive sessions.

  • #​1156418a0e1f Thanks @​Netail! - Fixed the diagnostic range of noInferrableTypes so it now highlights only the type instead of including the leading : colon, spaces and comments.

  • #​11540124fdaa Thanks @​ematipico! - Fixed #11537: noShorthandPropertyOverrides now compares declarations only within the same block. The rule no longer reports @supports feature queries and correctly checks nested, @keyframes, and @page blocks.

  • #​115327ceb0ee Thanks @​dyc3! - Fixed #​11528: noFloatingPromises no longer reports statement-level await expressions that handle Promise values, including overloaded calls returning Promise aliases. Awaited values that resolve to arrays of Promises remain reported because their element Promises are not handled by await.

  • #​114743c6412e Thanks @​dyc3! - Fixed #​10241. Biome no longer reports unsupported text expression diagnostics for double-curly text in vanilla HTML, and the formatter preserves adjacent curly-brace text.

  • #​115936c7fd27 Thanks @​dyc3! - Added the nursery rule noVueDeprecatedScopedSlots. It reports deprecated $scopedSlots references in Vue templates and component objects, and offers an unsafe replacement with $slots. For example, Biome now reports this.$scopedSlots.default inside a Vue component.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed the formatter crashing on an Astro or Svelte expression spanning several lines in a file with CRLF line endings, such as <p>{a +\r\n b}</p>.

  • #​11581f4e5ebb Thanks @​dyc3! - Added the nursery rule useModernMathApis. The rule reports legacy mathematical patterns that have direct modern Math equivalents.

    Math.sqrt(a*a+b*b);
  • #​11597a20f44a Thanks @​Netail! - Added the nursery rule noBunModules, which forbids the use of Bun builtin modules (e.g. bun:sqlite, bun:ffi).

  • #​115457d54688 Thanks @​dyc3! - Fixed #​11542: Biome now reports HTML comments between Svelte tag attributes as parse errors.

  • #​11582b6611dd Thanks @​ematipico! - Fixed #​3862. Biome now parses legacy Internet Explorer filter and -ms-filter values such as progid:DXImageTransform... and alpha(opacity=40).

  • #​1157565da251 Thanks @​dyc3! - Improved the Tailwind parser's ability to recover from parsing failures. Whitespace now always allows the parser to recover and start parsing a new class.

  • #​115760f78499 Thanks @​ematipico! - Fixed #​3515 and #​10395, where Biome could corrupt Unicode characters while writing source received through standard input to standard output. Characters such as and are now preserved.

  • #​115390fca643 Thanks @​ematipico! - Fixed #​11512, where style/noDescendingSpecificity missed lower-specificity selectors after a later higher-specificity selector with the same tail selector.

  • #​11544040f867 Thanks @​dyc3! - Fixed #​11541: formatting a Svelte render tag followed by an HTML comment no longer duplicates the comment.

     <div>
    {@render children?.()}
    <!-- comment -->
    - <!-- comment -->
    </div>
  • #​11565ee69e0e Thanks @​ematipico! - Fixed #​11525. Now the configuration schema correctly provides auto-completion for linter domains.

  • #​11583b19390c Thanks @​dyc3! - Fixed #​11352: useExplicitLengthCheck no longer reports length-like properties used as value-producing || fallbacks or optional chains, and it no longer offers fixes for value-producing && checks or unsafe negations.

  • #​11562753e955 Thanks @​ematipico! - Fixed an issue where the Biome Language Server would start with logging level set to debug. This would cause logs to grow exponentially in long sessions.

  • #​112177d3ee9c Thanks @​dyc3! - Fixed handling of biome-ignore format suppression comments on TypeScript declared class properties with string literal names.

    classA{declare/* biome-ignore format: exercise suppression checking */'a-b': 0;}
  • #​11497f5d7896 Thanks @​dyc3! - Added the noInvalidFileInputAccept nursery rule. The rule reports invalid literal accept values on file inputs in JSX and HTML, and normalizes common mistakes.

    <inputtype="file"accept="image/jpg"/>
  • #​11345ac58958 Thanks @​jakeleventhal! - Improved type inference performance by avoiding resolution of unused members in object arguments.

  • #​115542d55931 Thanks @​Netail! - Added the new nursery rule useReactNamingConvention, which enforces naming conventions for React values assigned from createContext, useId, and useRef. A value from createContext must be a PascalCase component name ending with Context, a value from useId must be named id or end with Id, and a value from useRef must be named ref or end with Ref.

  • #​114911d6210b Thanks @​dyc3! - Added the nursery rule noUnmodifiedLoopCondition, which reports variables in loop conditions that are never modified in the loop.

    letnode=getNode();while(node){process(node);}

v2.5.11

Compare Source

Patch Changes
  • #​114999743d0c Thanks @​scs0209! - Fixed #​11496: useValidAnchor now treats Astro JSX shorthand attributes like <a {href}> as a valid href.

  • #​1143788f805e Thanks @​Princesseuh! - Fixed #​9944: adjacent elements inside an Astro expression now parse as an implicit fragment instead of raising an error.

    {options.map(() =>
    <div />
    <div />
    )}
  • #​1143788f805e Thanks @​Princesseuh! - Fixed Astro templates rejecting unclosed HTML void elements, such as {cond && <br>}.

  • #​11507e2fc036 Thanks @​dyc3! - Fixed #​11157: noUnusedVariables no longer reports Vue <script setup> bindings used by CSS v-bind() as unused.

  • #​11398afc4615 Thanks @​dyc3! - Fixed #​11389: Files passed through --stdin-file-path now use full HTML support for Astro, Svelte, and Vue when it is enabled.

  • #​11526372cd68 Thanks @​dyc3! - Fixed noVueRefAsOperand to track Vue refs through declaration aliases and toRefs() properties, and to recognize useTemplateRef() results. The rule no longer reports false positives such as plain ref transfers, plain toRefs() property access, defineModel() modifiers, or the supported .effect member as operands.

    The refactor enabling these fixes also improves the performance of the rule.

  • #​11458a7cd286 Thanks @​dyc3! - Fixed #​11436: GritQL snippets such as export { $specifiers } from $source now match named re-exports with aliases, inline type modifiers, and multiple specifiers.

  • #​11515382b15d Thanks @​dyc3! - Fixed #​11390, where noFloatingPromises performed expensive full type inference for calls to non-Promise methods declared on third-party TypeScript classes. The rule now classifies those calls using targeted type information.

  • #​115166f40e82 Thanks @​levrik! - Fixed noVueRefAsOperand so it no longer reports a callback parameter (e.g. from .find(), .map()) as an unwrapped ref value just because it's nested inside a ref(), computed(), or similar call.

    constresult=computed(()=>list.find((item)=>item.label==="a"));

    Previously, item here was incorrectly treated as a ref value because the rule attributed it to the outer computed() call.

  • #​11495496268d Thanks @​Netail! - Fixed useGraphqlNamingConvention so it no longer reports GraphQL enum value definitions with comments & descriptions and now displays a more accurate diagnostic range.

  • #​114076ef52b0 Thanks @​1678092075! - Fixed #​11214: noUnusedVariables no longer reports type parameters declared by non-default function overload signatures that have an implementation.

  • #​113225c353e6 Thanks @​jp-knj! - Added a new nursery rule noAstroSetHtmlDirective, which disallows Astro's set:html directive because untrusted content can introduce cross-site scripting vulnerabilities.

    For example, the following snippet triggers the rule:

    <divset:html={content} />
  • #​1146218883b7 Thanks @​dyc3! - Fixed #​10776: useVueHyphenatedAttributes no longer reports lowercase attribute names containing punctuation, such as pt:header:data-test-id and some_attr.

  • #​114763270ca4 Thanks @​dyc3! - Fixed #​10330: Vue interpolation delimiters now stay attached to whitespace-sensitive element boundaries and adjacent inline siblings, wrapping their expression when needed to fit the configured line width. Interpolations followed by text now also converge after one formatting pass.

    -<v-btn v-if="store.state.user" variant="text" to="/my-rooms"- >{{ $t("nav.my-rooms") }}</v-btn->+<v-btn v-if="store.state.user" variant="text" to="/my-rooms">{{+ $t("nav.my-rooms")+}}</v-btn>
  • #​111913e5367f Thanks @​ematipico! - Added the nursery rule noUndeclaredCustomProperties, which reports references to custom properties that are not defined in available CSS, static HTML-like style attributes, or JSX string style attributes.

    For example, the following snippet triggers the rule:

    a { color:var(--undefined-color); }
  • #​114357754894 Thanks @​levrik! - Fixed: Variables and imports used as custom Vue directives are no longer reported as unused.

    For example:

    <script setup>constvHighlight= {mounted: (element) => {element.style.color="red"; },};</script>
    <template>
    <pv-highlight>Hello</p>
    </template>
  • #​11501e6acded Thanks @​aminya! - Improved the performance of useArraySortCompare by skipping type inference for calls to unrelated methods.

  • #​1146766b282c Thanks @​dyc3! - Fixed #​11464: Biome now parses parenthesized object literals returned from arrow functions when they contain a conditional expression and a nested arrow function.

  • #​11456db9aa2a Thanks @​dyc3! - Fixed #​10278: Marked the fix for noThisInStatic as unsafe by default.

  • #​11502652aedb Thanks @​levrik! - noGlobalAssign no longer reports assignments to a Vue <script setup> binding from a template expression, when the binding's name happens to match a built-in global (e.g. open, parent, top).

    For example, this no longer triggers a diagnostic:

    <script setup>constopen=defineModel();</script>
    <template>
    <button@click="open = !open">Toggle</button>
    </template>

v2.5.10

Compare Source

Patch Changes
  • #​114038f7786f Thanks @​Princesseuh! - Fixed Astro rejecting JavaScript comments between attributes.

    <div /* blockcomment */ class="something"></div>
    <Component /* c */ client:load />
  • #​114038f7786f 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.

  • #​114383133ffa 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>
    <divclass={/* a note */}>x</div>
  • #​114038f7786f Thanks @​Princesseuh! - Fixed #​9165: an empty Astro expression such as <div>{}</div> no longer fails to parse. Astro renders {} as nothing.

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

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

    <>
    <p>a</p>
    </>
  • #​114038f7786f 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---
  • #​114038f7786f 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
    ---
  • #​114038f7786f Thanks @​Princesseuh! - Fixed an Astro frontmatter block ending early on a line that merely starts with a dash.

    -----count;---
  • #​114038f7786f 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.

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

  • #​114038f7786f 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.

  • #​114038f7786f 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.

  • #​114038f7786f 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.

  • #​114038f7786f 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>
  • #​114038f7786f Thanks @​Princesseuh! - Added support for template literal attribute values in Astro, such as <div class=`a ${b} c`>.

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

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

  • #​11431c065f99 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.

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

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

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

  • #​114038f7786f 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.

  • #​114438d45229 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.

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

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

v2.5.9

Compare Source

Patch Changes
  • #​1132141386f3 Thanks @​dyc3! - Fixed #​11315: The CSS parser now recovers at declaration boundaries after bogus declarations, allowing subsequent valid declarations to be parsed.

  • #​1124857b197e Thanks @​yanthomasdev! - Expanded the environment variable metadata used by biome rage to include BIOME_BINARY, BIOME_LOG_FILE, and RUST_BACKTRACE as well as reworded explanations for better readability.

  • #​11377a8798ea Thanks @​Netail! - Added a new nursery rule useNamedLayer which disallows anonymous cascade layers.

    @layer {
    a {
    color: red;
    }
    }
  • #​113276771cf5 Thanks @​dyc3! - The HTML formatter now preserves meaningful blank lines in HTML, including spacing after elements with trailing spaces and blank lines between comment groups.

     <div>
    <!-- first group -->
    +
    <!-- second group -->
    </div>
  • #​10312ba8aa18 Thanks @​dyc3! - Added the nursery rule useTailwindShorthandClasses, which suggests shorter Tailwind utility classes. For example, the rule suggests replacing w-4 h-4 with size-4.

  • #​11333715e0cd Thanks @​kkkhs! - Fixed #​11328: lint/nursery/useExpect now recognizes Vitest Browser Mode expect.element() calls as assertions.

  • #​113439b98211 Thanks @​johncarmack1984! - Fixed #​11311: the CSS parser now accepts Tailwind container-query variant names in @variant, such as @xl and @max-xl. These previously produced a parse error and a noUnknownAtRules diagnostic.

    @variant@xl {
    div {
    background: red;
    }
    }
  • #​112203e8c488 Thanks @​santichausis! - Fixed #​9541: noUndeclaredVariables, noUnusedImports, and noUnusedVariables now correctly recognise exported variables and functions declared in one embedded <script> block as usable from a sibling <script> block, in Svelte's <script module>/<script> pair and Vue's non-setup<script> blocks.

    For example, Biome no longer reports greet as undeclared in the following Svelte component:

    <scriptmodule>exportfunctiongreet() {console.log("Hello!"); }</script>
    <script>greet();</script>
  • #​1130036430eb Thanks @​dyc3! - Fixed the HTML formatter's whitespace handling for marquee, noscript, video, audio, and object elements.

    - <marquee behavior="alternate"> This text will bounce </marquee>+ <marquee behavior="alternate">This text will bounce</marquee>
  • #​112996559e6c Thanks @​jp-knj! - Added the nursery rule useAstroClientOnlyDirectiveValue, which reports Astro client:only directives without an initializer.

    For example, <Component client:only /> triggers the rule.

  • #​113657529811 Thanks @​MHJahanbakhsh! - Fixed #​11229: The useGenericFontNames rule now treats math as a valid generic font family.

  • #​11346674f5f4 Thanks @​Jayllyz! - Fixed #​11335: noComponentHookFactories now reports a use-prefixed variable only when a function is assigned to it directly.

    functionfactory(){constuseColors=true;// no longer reportedconstuseStore=createStore({count: 0});// no longer reportedconstuseData=()=>useState(null);// still reportedreturnuseColors;}
  • #​11334c87c46a Thanks @​zkasuran! - Fixed #​11317: noSvgWithoutTitle no longer reports an svg that uses the boolean shorthand aria-hidden (equivalent to aria-hidden={true} in React).

  • #​1136413853b1 Thanks @​ematipico! - Fixed a bug where useJsxKeyInIterable incorrectly flagged Astro files.

  • #​1132141386f3 Thanks @​dyc3! - Fixed #​11315: Invalid CSS declarations in HTML style attributes now produce parser diagnostics instead of causing a panic.

  • #​1132567c3bf0 Thanks @​dyc3! - Fixed HTML text wrapping to account for the width of an adjacent closing tag, avoiding lines that exceed t

Note

PR body was truncated to here.


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.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@pkg-pr-new

pkg-pr-newBot commented Jun 23, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/@faststats/cli@db02cba

commit: db02cba

@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.1chore(deps): update dependency @biomejs/biome to v2.5.2Jul 1, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from da0f755 to db08b5eCompareJuly 1, 2026 21:38
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.2chore(deps): update dependency @biomejs/biome to v2.5.3Jul 8, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from db08b5e to 062f6f0CompareJuly 8, 2026 08:58
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.3chore(deps): update dependency @biomejs/biome to v2.5.4Jul 15, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch 2 times, most recently from 5f5750b to 02907f1CompareJuly 21, 2026 03:13
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.4chore(deps): update dependency @biomejs/biome to v2.5.5Jul 21, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from 02907f1 to 84f8166CompareJuly 21, 2026 09:52
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from 84f8166 to c72550bCompareJuly 28, 2026 12:37
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.5chore(deps): update dependency @biomejs/biome to v2.5.6Jul 28, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from c72550b to 4cb2285CompareAugust 4, 2026 18:45
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.6chore(deps): update dependency @biomejs/biome to v2.5.7Aug 4, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from 4cb2285 to 1968b9cCompareAugust 11, 2026 22:49
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.7chore(deps): update dependency @biomejs/biome to v2.5.8Aug 11, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from 1968b9c to a608389CompareAugust 18, 2026 02:55
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.8chore(deps): update dependency @biomejs/biome to v2.5.9Aug 18, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from a608389 to dea7b5cCompareAugust 21, 2026 23:10
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.9chore(deps): update dependency @biomejs/biome to v2.5.10Aug 21, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from dea7b5c to efd04a3CompareAugust 28, 2026 01:31
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.10chore(deps): update dependency @biomejs/biome to v2.5.11Aug 28, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from efd04a3 to db02cbaCompareSeptember 3, 2026 18:41
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.11chore(deps): update dependency @biomejs/biome to v2.5.12Sep 3, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore(deps): update dependency @biomejs/biome to v2.5.12 - #18

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/biomejs-biome-2.x
Open

chore(deps): update dependency @biomejs/biome to v2.5.12#18
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/biomejs-biome-2.x

Conversation

@renovate

@renovaterenovateBot commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

PackageChangeAgeConfidence
@biomejs/biome (source)2.5.02.5.12ageconfidence

Release Notes

biomejs/biome (@​biomejs/biome)

v2.5.12

Compare Source

Patch Changes
  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed Astro attribute expressions rejecting TypeScript and JSX syntax that is accepted in text expressions.

    <Componenticon={<Icon />}count={totalasnumber}onSelect={(e:Event) =>e} />
  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed Astro attribute names being split on : and . inside an expression, such as {x && <button x-on:keyup.enter={go} client:load.foo />}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed a bare > in the children of an Astro expression being treated as markup, such as {x && <div>a > b</div>}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed HTML comments inside an Astro expression failing to parse. They are now read as trivia, wherever they appear among the children.

    {x&& <div><!-- first -->text<!-- last --></div>}{cond&& <a></a><!--c--><b></b>}
  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed is:raw children inside an Astro expression being read as JSX, such as {x && <div is:raw>{not js} < & text</div>}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed an apostrophe or quote in the text of a JSX element inside an Astro expression ending the expression early, such as {items.map((i) => <li>it's {i}</li>)}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed the children of a <script> or <style> inside an Astro expression being read as JSX. Their contents are text, so braces and comparisons no longer have to be escaped.

    {cond&& <style>a {color: red}</style>}{cond&& <script>let x = {a: 1};</script>}
  • #​11440b88f1ea Thanks @​Princesseuh! - Added support for template literal attribute values inside an Astro expression, such as {x && <C data-x=`t${x}` />}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed unquoted attribute values being rejected inside an Astro expression, such as {x && <a class=foo maxlength=255 href=/about>go</a>}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed a template literal nested inside ${} breaking the rest of an Astro file, such as const href = `/blog${page === 0 ? '' : `/${page + 1}`}`;.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed a quote inside a regex character class breaking the rest of an Astro file, such as const unsafe = /[/"]/;.

  • #​1150854f3a2e Thanks @​dyc3! - Added the nursery rule useFlatMathMinMax. Because Math.min() and Math.max() accept any number of arguments, the rule reports unnecessary nested calls to the same method:

    Math.max(Math.max(a,b),c);

    The fix flattens this expression to Math.max(a, b, c).

  • #​11585c5c8315 Thanks @​Netail! - Fixed #​11475: noUnresolvedImports no longer reports Bun runtime built-in modules (bun, bun:bundle, bun:ffi, bun:jsc, bun:sqlite, bun:test).

  • #​1136852a57b3 Thanks @​Austin1serb! - Fixed #​6830: Biome now reports a diagnostic for excessively deep syntax instead of overflowing the native stack while releasing the parsed tree.

  • #​115961fc42ed Thanks @​dyc3! - Added the nursery rule noThisOutsideOfClass. The rule reports this outside class members and TypeScript functions with an explicit this parameter.

    functionPerson(name){this.name=name;}
  • #​115552516335 Thanks @​dyc3! - Fixed #​11529, where noFloatingPromises missed unhandled Promise chains when the imported function's module belonged to an import cycle. Cyclic modules now preserve types for exports that do not participate in recursive type dependencies.

  • #​115180fee70c Thanks @​HarperZ9! - Fixed #​11500: the formatter now prints the declare modifier before accessibility modifiers on class properties. private declare readonly name: string is now formatted as declare private readonly name: string, matching Prettier and TypeScript's canonical modifier order.

  • #​115801277af2 Thanks @​ematipico! - Fixed #​5091: Biome no longer moves comments next to the < of a generic, which causes invalid TypeScript syntax:

    - Generic<// a comment+ Generic<+ // a comment
  • #​1157742995d2 Thanks @​ematipico! - Fixed #​4592. Biome no longer crashes while parsing malformed delete expressions.

  • #​1159067963b4 Thanks @​ematipico! - Fixed #​6427 so Grit plugins can use function = ... as a node argument.

  • #​11600a689cb5 Thanks @​ematipico! - Fixed #​6644: noUnusedVariables now recognizes all interface declarations in a TypeScript declaration-merging group when the interface is referenced.

    The following snippet no longer triggers the rule.

    interfaceThings{foo: string;}interfaceThings{bar: string;}exporttypeKey=keyofThings;interfaceThings{baz: string;}
  • #​11591d4a0716 Thanks @​ematipico! - Fixed #​6615. noDuplicateProperties no longer reports declarations nested in block at-rules as duplicates of declarations in their parent block.

  • #​11492f2a07aa Thanks @​santichausis! - Fixed #​11454: noMisplacedAssertion now recognises @fast-check/vitest's test.prop(...) (and .concurrent.prop, .skip.prop, etc.) as a test function, the same way it already recognises test.each. The JS formatter picks up the same recognition, so a curried test.prop(...)(...) call is now formatted with the regular breakable argument layout used for test.each/test.for, instead of the single-line-hugging layout used for plain it/test calls.

    For example, Biome no longer reports the assertion below as misplaced:

    import{fc,test}from"@fast-check/vitest";test.prop([fc.string()])("round-trips",(s)=>{expect(s).toBe(s);});
  • #​1158965742b3 Thanks @​ematipico! - Fixed #​4928: noUnusedVariables no longer reports a value declaration as unused when its merged namespace is referenced.

  • #​11559472dbc2 Thanks @​levrik! - Fixed a false positive in noVueDuplicateKeys where a <script setup> variable initialized from props was reported as a duplicate of the prop it derives from. Biome now exempts any variable whose initializer references props, instead of only recognizing defineProps() and toRefs(props).

    For example, Biome no longer reports foo below as a duplicate key:

    <script setup>import { toRef } from'vue';constprops=defineProps(['foo']);constfoo=toRef(props, 'foo');</script>
  • #​115946586ceb Thanks @​ematipico! - Fixed #​6640. Biome no longer crashes when linting malformed for...of statements.

  • #​1157185b197d Thanks @​ematipico! - Fixed #​10838: useSortedAttributes no longer corrupts JSX attributes when nested JSX elements also require sorting.

  • #​1153397e76c0 Thanks @​ematipico! - Fixed #​11520, where the Biome scanner would start analysing dependencies multiple times, leading to long and unresponsive sessions.

  • #​1156418a0e1f Thanks @​Netail! - Fixed the diagnostic range of noInferrableTypes so it now highlights only the type instead of including the leading : colon, spaces and comments.

  • #​11540124fdaa Thanks @​ematipico! - Fixed #11537: noShorthandPropertyOverrides now compares declarations only within the same block. The rule no longer reports @supports feature queries and correctly checks nested, @keyframes, and @page blocks.

  • #​115327ceb0ee Thanks @​dyc3! - Fixed #​11528: noFloatingPromises no longer reports statement-level await expressions that handle Promise values, including overloaded calls returning Promise aliases. Awaited values that resolve to arrays of Promises remain reported because their element Promises are not handled by await.

  • #​114743c6412e Thanks @​dyc3! - Fixed #​10241. Biome no longer reports unsupported text expression diagnostics for double-curly text in vanilla HTML, and the formatter preserves adjacent curly-brace text.

  • #​115936c7fd27 Thanks @​dyc3! - Added the nursery rule noVueDeprecatedScopedSlots. It reports deprecated $scopedSlots references in Vue templates and component objects, and offers an unsafe replacement with $slots. For example, Biome now reports this.$scopedSlots.default inside a Vue component.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed the formatter crashing on an Astro or Svelte expression spanning several lines in a file with CRLF line endings, such as <p>{a +\r\n b}</p>.

  • #​11581f4e5ebb Thanks @​dyc3! - Added the nursery rule useModernMathApis. The rule reports legacy mathematical patterns that have direct modern Math equivalents.

    Math.sqrt(a*a+b*b);
  • #​11597a20f44a Thanks @​Netail! - Added the nursery rule noBunModules, which forbids the use of Bun builtin modules (e.g. bun:sqlite, bun:ffi).

  • #​115457d54688 Thanks @​dyc3! - Fixed #​11542: Biome now reports HTML comments between Svelte tag attributes as parse errors.

  • #​11582b6611dd Thanks @​ematipico! - Fixed #​3862. Biome now parses legacy Internet Explorer filter and -ms-filter values such as progid:DXImageTransform... and alpha(opacity=40).

  • #​1157565da251 Thanks @​dyc3! - Improved the Tailwind parser's ability to recover from parsing failures. Whitespace now always allows the parser to recover and start parsing a new class.

  • #​115760f78499 Thanks @​ematipico! - Fixed #​3515 and #​10395, where Biome could corrupt Unicode characters while writing source received through standard input to standard output. Characters such as and are now preserved.

  • #​115390fca643 Thanks @​ematipico! - Fixed #​11512, where style/noDescendingSpecificity missed lower-specificity selectors after a later higher-specificity selector with the same tail selector.

  • #​11544040f867 Thanks @​dyc3! - Fixed #​11541: formatting a Svelte render tag followed by an HTML comment no longer duplicates the comment.

     <div>
    {@render children?.()}
    <!-- comment -->
    - <!-- comment -->
    </div>
  • #​11565ee69e0e Thanks @​ematipico! - Fixed #​11525. Now the configuration schema correctly provides auto-completion for linter domains.

  • #​11583b19390c Thanks @​dyc3! - Fixed #​11352: useExplicitLengthCheck no longer reports length-like properties used as value-producing || fallbacks or optional chains, and it no longer offers fixes for value-producing && checks or unsafe negations.

  • #​11562753e955 Thanks @​ematipico! - Fixed an issue where the Biome Language Server would start with logging level set to debug. This would cause logs to grow exponentially in long sessions.

  • #​112177d3ee9c Thanks @​dyc3! - Fixed handling of biome-ignore format suppression comments on TypeScript declared class properties with string literal names.

    classA{declare/* biome-ignore format: exercise suppression checking */'a-b': 0;}
  • #​11497f5d7896 Thanks @​dyc3! - Added the noInvalidFileInputAccept nursery rule. The rule reports invalid literal accept values on file inputs in JSX and HTML, and normalizes common mistakes.

    <inputtype="file"accept="image/jpg"/>
  • #​11345ac58958 Thanks @​jakeleventhal! - Improved type inference performance by avoiding resolution of unused members in object arguments.

  • #​115542d55931 Thanks @​Netail! - Added the new nursery rule useReactNamingConvention, which enforces naming conventions for React values assigned from createContext, useId, and useRef. A value from createContext must be a PascalCase component name ending with Context, a value from useId must be named id or end with Id, and a value from useRef must be named ref or end with Ref.

  • #​114911d6210b Thanks @​dyc3! - Added the nursery rule noUnmodifiedLoopCondition, which reports variables in loop conditions that are never modified in the loop.

    letnode=getNode();while(node){process(node);}

v2.5.11

Compare Source

Patch Changes
  • #​114999743d0c Thanks @​scs0209! - Fixed #​11496: useValidAnchor now treats Astro JSX shorthand attributes like <a {href}> as a valid href.

  • #​1143788f805e Thanks @​Princesseuh! - Fixed #​9944: adjacent elements inside an Astro expression now parse as an implicit fragment instead of raising an error.

    {options.map(() =>
    <div />
    <div />
    )}
  • #​1143788f805e Thanks @​Princesseuh! - Fixed Astro templates rejecting unclosed HTML void elements, such as {cond && <br>}.

  • #​11507e2fc036 Thanks @​dyc3! - Fixed #​11157: noUnusedVariables no longer reports Vue <script setup> bindings used by CSS v-bind() as unused.

  • #​11398afc4615 Thanks @​dyc3! - Fixed #​11389: Files passed through --stdin-file-path now use full HTML support for Astro, Svelte, and Vue when it is enabled.

  • #​11526372cd68 Thanks @​dyc3! - Fixed noVueRefAsOperand to track Vue refs through declaration aliases and toRefs() properties, and to recognize useTemplateRef() results. The rule no longer reports false positives such as plain ref transfers, plain toRefs() property access, defineModel() modifiers, or the supported .effect member as operands.

    The refactor enabling these fixes also improves the performance of the rule.

  • #​11458a7cd286 Thanks @​dyc3! - Fixed #​11436: GritQL snippets such as export { $specifiers } from $source now match named re-exports with aliases, inline type modifiers, and multiple specifiers.

  • #​11515382b15d Thanks @​dyc3! - Fixed #​11390, where noFloatingPromises performed expensive full type inference for calls to non-Promise methods declared on third-party TypeScript classes. The rule now classifies those calls using targeted type information.

  • #​115166f40e82 Thanks @​levrik! - Fixed noVueRefAsOperand so it no longer reports a callback parameter (e.g. from .find(), .map()) as an unwrapped ref value just because it's nested inside a ref(), computed(), or similar call.

    constresult=computed(()=>list.find((item)=>item.label==="a"));

    Previously, item here was incorrectly treated as a ref value because the rule attributed it to the outer computed() call.

  • #​11495496268d Thanks @​Netail! - Fixed useGraphqlNamingConvention so it no longer reports GraphQL enum value definitions with comments & descriptions and now displays a more accurate diagnostic range.

  • #​114076ef52b0 Thanks @​1678092075! - Fixed #​11214: noUnusedVariables no longer reports type parameters declared by non-default function overload signatures that have an implementation.

  • #​113225c353e6 Thanks @​jp-knj! - Added a new nursery rule noAstroSetHtmlDirective, which disallows Astro's set:html directive because untrusted content can introduce cross-site scripting vulnerabilities.

    For example, the following snippet triggers the rule:

    <divset:html={content} />
  • #​1146218883b7 Thanks @​dyc3! - Fixed #​10776: useVueHyphenatedAttributes no longer reports lowercase attribute names containing punctuation, such as pt:header:data-test-id and some_attr.

  • #​114763270ca4 Thanks @​dyc3! - Fixed #​10330: Vue interpolation delimiters now stay attached to whitespace-sensitive element boundaries and adjacent inline siblings, wrapping their expression when needed to fit the configured line width. Interpolations followed by text now also converge after one formatting pass.

    -<v-btn v-if="store.state.user" variant="text" to="/my-rooms"- >{{ $t("nav.my-rooms") }}</v-btn->+<v-btn v-if="store.state.user" variant="text" to="/my-rooms">{{+ $t("nav.my-rooms")+}}</v-btn>
  • #​111913e5367f Thanks @​ematipico! - Added the nursery rule noUndeclaredCustomProperties, which reports references to custom properties that are not defined in available CSS, static HTML-like style attributes, or JSX string style attributes.

    For example, the following snippet triggers the rule:

    a { color:var(--undefined-color); }
  • #​114357754894 Thanks @​levrik! - Fixed: Variables and imports used as custom Vue directives are no longer reported as unused.

    For example:

    <script setup>constvHighlight= {mounted: (element) => {element.style.color="red"; },};</script>
    <template>
    <pv-highlight>Hello</p>
    </template>
  • #​11501e6acded Thanks @​aminya! - Improved the performance of useArraySortCompare by skipping type inference for calls to unrelated methods.

  • #​1146766b282c Thanks @​dyc3! - Fixed #​11464: Biome now parses parenthesized object literals returned from arrow functions when they contain a conditional expression and a nested arrow function.

  • #​11456db9aa2a Thanks @​dyc3! - Fixed #​10278: Marked the fix for noThisInStatic as unsafe by default.

  • #​11502652aedb Thanks @​levrik! - noGlobalAssign no longer reports assignments to a Vue <script setup> binding from a template expression, when the binding's name happens to match a built-in global (e.g. open, parent, top).

    For example, this no longer triggers a diagnostic:

    <script setup>constopen=defineModel();</script>
    <template>
    <button@click="open = !open">Toggle</button>
    </template>

v2.5.10

Compare Source

Patch Changes
  • #​114038f7786f Thanks @​Princesseuh! - Fixed Astro rejecting JavaScript comments between attributes.

    <div /* blockcomment */ class="something"></div>
    <Component /* c */ client:load />
  • #​114038f7786f 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.

  • #​114383133ffa 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>
    <divclass={/* a note */}>x</div>
  • #​114038f7786f Thanks @​Princesseuh! - Fixed #​9165: an empty Astro expression such as <div>{}</div> no longer fails to parse. Astro renders {} as nothing.

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

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

    <>
    <p>a</p>
    </>
  • #​114038f7786f 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---
  • #​114038f7786f 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
    ---
  • #​114038f7786f Thanks @​Princesseuh! - Fixed an Astro frontmatter block ending early on a line that merely starts with a dash.

    -----count;---
  • #​114038f7786f 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.

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

  • #​114038f7786f 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.

  • #​114038f7786f 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.

  • #​114038f7786f 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.

  • #​114038f7786f 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>
  • #​114038f7786f Thanks @​Princesseuh! - Added support for template literal attribute values in Astro, such as <div class=`a ${b} c`>.

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

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

  • #​11431c065f99 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.

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

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

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

  • #​114038f7786f 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.

  • #​114438d45229 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.

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

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

v2.5.9

Compare Source

Patch Changes
  • #​1132141386f3 Thanks @​dyc3! - Fixed #​11315: The CSS parser now recovers at declaration boundaries after bogus declarations, allowing subsequent valid declarations to be parsed.

  • #​1124857b197e Thanks @​yanthomasdev! - Expanded the environment variable metadata used by biome rage to include BIOME_BINARY, BIOME_LOG_FILE, and RUST_BACKTRACE as well as reworded explanations for better readability.

  • #​11377a8798ea Thanks @​Netail! - Added a new nursery rule useNamedLayer which disallows anonymous cascade layers.

    @layer {
    a {
    color: red;
    }
    }
  • #​113276771cf5 Thanks @​dyc3! - The HTML formatter now preserves meaningful blank lines in HTML, including spacing after elements with trailing spaces and blank lines between comment groups.

     <div>
    <!-- first group -->
    +
    <!-- second group -->
    </div>
  • #​10312ba8aa18 Thanks @​dyc3! - Added the nursery rule useTailwindShorthandClasses, which suggests shorter Tailwind utility classes. For example, the rule suggests replacing w-4 h-4 with size-4.

  • #​11333715e0cd Thanks @​kkkhs! - Fixed #​11328: lint/nursery/useExpect now recognizes Vitest Browser Mode expect.element() calls as assertions.

  • #​113439b98211 Thanks @​johncarmack1984! - Fixed #​11311: the CSS parser now accepts Tailwind container-query variant names in @variant, such as @xl and @max-xl. These previously produced a parse error and a noUnknownAtRules diagnostic.

    @variant@xl {
    div {
    background: red;
    }
    }
  • #​112203e8c488 Thanks @​santichausis! - Fixed #​9541: noUndeclaredVariables, noUnusedImports, and noUnusedVariables now correctly recognise exported variables and functions declared in one embedded <script> block as usable from a sibling <script> block, in Svelte's <script module>/<script> pair and Vue's non-setup<script> blocks.

    For example, Biome no longer reports greet as undeclared in the following Svelte component:

    <scriptmodule>exportfunctiongreet() {console.log("Hello!"); }</script>
    <script>greet();</script>
  • #​1130036430eb Thanks @​dyc3! - Fixed the HTML formatter's whitespace handling for marquee, noscript, video, audio, and object elements.

    - <marquee behavior="alternate"> This text will bounce </marquee>+ <marquee behavior="alternate">This text will bounce</marquee>
  • #​112996559e6c Thanks @​jp-knj! - Added the nursery rule useAstroClientOnlyDirectiveValue, which reports Astro client:only directives without an initializer.

    For example, <Component client:only /> triggers the rule.

  • #​113657529811 Thanks @​MHJahanbakhsh! - Fixed #​11229: The useGenericFontNames rule now treats math as a valid generic font family.

  • #​11346674f5f4 Thanks @​Jayllyz! - Fixed #​11335: noComponentHookFactories now reports a use-prefixed variable only when a function is assigned to it directly.

    functionfactory(){constuseColors=true;// no longer reportedconstuseStore=createStore({count: 0});// no longer reportedconstuseData=()=>useState(null);// still reportedreturnuseColors;}
  • #​11334c87c46a Thanks @​zkasuran! - Fixed #​11317: noSvgWithoutTitle no longer reports an svg that uses the boolean shorthand aria-hidden (equivalent to aria-hidden={true} in React).

  • #​1136413853b1 Thanks @​ematipico! - Fixed a bug where useJsxKeyInIterable incorrectly flagged Astro files.

  • #​1132141386f3 Thanks @​dyc3! - Fixed #​11315: Invalid CSS declarations in HTML style attributes now produce parser diagnostics instead of causing a panic.

  • #​1132567c3bf0 Thanks @​dyc3! - Fixed HTML text wrapping to account for the width of an adjacent closing tag, avoiding lines that exceed t

Note

PR body was truncated to here.


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.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@pkg-pr-new

pkg-pr-newBot commented Jun 23, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/@faststats/cli@db02cba

commit: db02cba

@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.1chore(deps): update dependency @biomejs/biome to v2.5.2Jul 1, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from da0f755 to db08b5eCompareJuly 1, 2026 21:38
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.2chore(deps): update dependency @biomejs/biome to v2.5.3Jul 8, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from db08b5e to 062f6f0CompareJuly 8, 2026 08:58
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.3chore(deps): update dependency @biomejs/biome to v2.5.4Jul 15, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch 2 times, most recently from 5f5750b to 02907f1CompareJuly 21, 2026 03:13
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.4chore(deps): update dependency @biomejs/biome to v2.5.5Jul 21, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from 02907f1 to 84f8166CompareJuly 21, 2026 09:52
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from 84f8166 to c72550bCompareJuly 28, 2026 12:37
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.5chore(deps): update dependency @biomejs/biome to v2.5.6Jul 28, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from c72550b to 4cb2285CompareAugust 4, 2026 18:45
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.6chore(deps): update dependency @biomejs/biome to v2.5.7Aug 4, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from 4cb2285 to 1968b9cCompareAugust 11, 2026 22:49
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.7chore(deps): update dependency @biomejs/biome to v2.5.8Aug 11, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from 1968b9c to a608389CompareAugust 18, 2026 02:55
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.8chore(deps): update dependency @biomejs/biome to v2.5.9Aug 18, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from a608389 to dea7b5cCompareAugust 21, 2026 23:10
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.9chore(deps): update dependency @biomejs/biome to v2.5.10Aug 21, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from dea7b5c to efd04a3CompareAugust 28, 2026 01:31
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.10chore(deps): update dependency @biomejs/biome to v2.5.11Aug 28, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from efd04a3 to db02cbaCompareSeptember 3, 2026 18:41
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.11chore(deps): update dependency @biomejs/biome to v2.5.12Sep 3, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore(deps): update dependency @biomejs/biome to v2.5.12 - #18

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/biomejs-biome-2.x
Open

chore(deps): update dependency @biomejs/biome to v2.5.12#18
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/biomejs-biome-2.x

Conversation

@renovate

@renovaterenovateBot commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

PackageChangeAgeConfidence
@biomejs/biome (source)2.5.02.5.12ageconfidence

Release Notes

biomejs/biome (@​biomejs/biome)

v2.5.12

Compare Source

Patch Changes
  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed Astro attribute expressions rejecting TypeScript and JSX syntax that is accepted in text expressions.

    <Componenticon={<Icon />}count={totalasnumber}onSelect={(e:Event) =>e} />
  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed Astro attribute names being split on : and . inside an expression, such as {x && <button x-on:keyup.enter={go} client:load.foo />}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed a bare > in the children of an Astro expression being treated as markup, such as {x && <div>a > b</div>}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed HTML comments inside an Astro expression failing to parse. They are now read as trivia, wherever they appear among the children.

    {x&& <div><!-- first -->text<!-- last --></div>}{cond&& <a></a><!--c--><b></b>}
  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed is:raw children inside an Astro expression being read as JSX, such as {x && <div is:raw>{not js} < & text</div>}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed an apostrophe or quote in the text of a JSX element inside an Astro expression ending the expression early, such as {items.map((i) => <li>it's {i}</li>)}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed the children of a <script> or <style> inside an Astro expression being read as JSX. Their contents are text, so braces and comparisons no longer have to be escaped.

    {cond&& <style>a {color: red}</style>}{cond&& <script>let x = {a: 1};</script>}
  • #​11440b88f1ea Thanks @​Princesseuh! - Added support for template literal attribute values inside an Astro expression, such as {x && <C data-x=`t${x}` />}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed unquoted attribute values being rejected inside an Astro expression, such as {x && <a class=foo maxlength=255 href=/about>go</a>}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed a template literal nested inside ${} breaking the rest of an Astro file, such as const href = `/blog${page === 0 ? '' : `/${page + 1}`}`;.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed a quote inside a regex character class breaking the rest of an Astro file, such as const unsafe = /[/"]/;.

  • #​1150854f3a2e Thanks @​dyc3! - Added the nursery rule useFlatMathMinMax. Because Math.min() and Math.max() accept any number of arguments, the rule reports unnecessary nested calls to the same method:

    Math.max(Math.max(a,b),c);

    The fix flattens this expression to Math.max(a, b, c).

  • #​11585c5c8315 Thanks @​Netail! - Fixed #​11475: noUnresolvedImports no longer reports Bun runtime built-in modules (bun, bun:bundle, bun:ffi, bun:jsc, bun:sqlite, bun:test).

  • #​1136852a57b3 Thanks @​Austin1serb! - Fixed #​6830: Biome now reports a diagnostic for excessively deep syntax instead of overflowing the native stack while releasing the parsed tree.

  • #​115961fc42ed Thanks @​dyc3! - Added the nursery rule noThisOutsideOfClass. The rule reports this outside class members and TypeScript functions with an explicit this parameter.

    functionPerson(name){this.name=name;}
  • #​115552516335 Thanks @​dyc3! - Fixed #​11529, where noFloatingPromises missed unhandled Promise chains when the imported function's module belonged to an import cycle. Cyclic modules now preserve types for exports that do not participate in recursive type dependencies.

  • #​115180fee70c Thanks @​HarperZ9! - Fixed #​11500: the formatter now prints the declare modifier before accessibility modifiers on class properties. private declare readonly name: string is now formatted as declare private readonly name: string, matching Prettier and TypeScript's canonical modifier order.

  • #​115801277af2 Thanks @​ematipico! - Fixed #​5091: Biome no longer moves comments next to the < of a generic, which causes invalid TypeScript syntax:

    - Generic<// a comment+ Generic<+ // a comment
  • #​1157742995d2 Thanks @​ematipico! - Fixed #​4592. Biome no longer crashes while parsing malformed delete expressions.

  • #​1159067963b4 Thanks @​ematipico! - Fixed #​6427 so Grit plugins can use function = ... as a node argument.

  • #​11600a689cb5 Thanks @​ematipico! - Fixed #​6644: noUnusedVariables now recognizes all interface declarations in a TypeScript declaration-merging group when the interface is referenced.

    The following snippet no longer triggers the rule.

    interfaceThings{foo: string;}interfaceThings{bar: string;}exporttypeKey=keyofThings;interfaceThings{baz: string;}
  • #​11591d4a0716 Thanks @​ematipico! - Fixed #​6615. noDuplicateProperties no longer reports declarations nested in block at-rules as duplicates of declarations in their parent block.

  • #​11492f2a07aa Thanks @​santichausis! - Fixed #​11454: noMisplacedAssertion now recognises @fast-check/vitest's test.prop(...) (and .concurrent.prop, .skip.prop, etc.) as a test function, the same way it already recognises test.each. The JS formatter picks up the same recognition, so a curried test.prop(...)(...) call is now formatted with the regular breakable argument layout used for test.each/test.for, instead of the single-line-hugging layout used for plain it/test calls.

    For example, Biome no longer reports the assertion below as misplaced:

    import{fc,test}from"@fast-check/vitest";test.prop([fc.string()])("round-trips",(s)=>{expect(s).toBe(s);});
  • #​1158965742b3 Thanks @​ematipico! - Fixed #​4928: noUnusedVariables no longer reports a value declaration as unused when its merged namespace is referenced.

  • #​11559472dbc2 Thanks @​levrik! - Fixed a false positive in noVueDuplicateKeys where a <script setup> variable initialized from props was reported as a duplicate of the prop it derives from. Biome now exempts any variable whose initializer references props, instead of only recognizing defineProps() and toRefs(props).

    For example, Biome no longer reports foo below as a duplicate key:

    <script setup>import { toRef } from'vue';constprops=defineProps(['foo']);constfoo=toRef(props, 'foo');</script>
  • #​115946586ceb Thanks @​ematipico! - Fixed #​6640. Biome no longer crashes when linting malformed for...of statements.

  • #​1157185b197d Thanks @​ematipico! - Fixed #​10838: useSortedAttributes no longer corrupts JSX attributes when nested JSX elements also require sorting.

  • #​1153397e76c0 Thanks @​ematipico! - Fixed #​11520, where the Biome scanner would start analysing dependencies multiple times, leading to long and unresponsive sessions.

  • #​1156418a0e1f Thanks @​Netail! - Fixed the diagnostic range of noInferrableTypes so it now highlights only the type instead of including the leading : colon, spaces and comments.

  • #​11540124fdaa Thanks @​ematipico! - Fixed #11537: noShorthandPropertyOverrides now compares declarations only within the same block. The rule no longer reports @supports feature queries and correctly checks nested, @keyframes, and @page blocks.

  • #​115327ceb0ee Thanks @​dyc3! - Fixed #​11528: noFloatingPromises no longer reports statement-level await expressions that handle Promise values, including overloaded calls returning Promise aliases. Awaited values that resolve to arrays of Promises remain reported because their element Promises are not handled by await.

  • #​114743c6412e Thanks @​dyc3! - Fixed #​10241. Biome no longer reports unsupported text expression diagnostics for double-curly text in vanilla HTML, and the formatter preserves adjacent curly-brace text.

  • #​115936c7fd27 Thanks @​dyc3! - Added the nursery rule noVueDeprecatedScopedSlots. It reports deprecated $scopedSlots references in Vue templates and component objects, and offers an unsafe replacement with $slots. For example, Biome now reports this.$scopedSlots.default inside a Vue component.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed the formatter crashing on an Astro or Svelte expression spanning several lines in a file with CRLF line endings, such as <p>{a +\r\n b}</p>.

  • #​11581f4e5ebb Thanks @​dyc3! - Added the nursery rule useModernMathApis. The rule reports legacy mathematical patterns that have direct modern Math equivalents.

    Math.sqrt(a*a+b*b);
  • #​11597a20f44a Thanks @​Netail! - Added the nursery rule noBunModules, which forbids the use of Bun builtin modules (e.g. bun:sqlite, bun:ffi).

  • #​115457d54688 Thanks @​dyc3! - Fixed #​11542: Biome now reports HTML comments between Svelte tag attributes as parse errors.

  • #​11582b6611dd Thanks @​ematipico! - Fixed #​3862. Biome now parses legacy Internet Explorer filter and -ms-filter values such as progid:DXImageTransform... and alpha(opacity=40).

  • #​1157565da251 Thanks @​dyc3! - Improved the Tailwind parser's ability to recover from parsing failures. Whitespace now always allows the parser to recover and start parsing a new class.

  • #​115760f78499 Thanks @​ematipico! - Fixed #​3515 and #​10395, where Biome could corrupt Unicode characters while writing source received through standard input to standard output. Characters such as and are now preserved.

  • #​115390fca643 Thanks @​ematipico! - Fixed #​11512, where style/noDescendingSpecificity missed lower-specificity selectors after a later higher-specificity selector with the same tail selector.

  • #​11544040f867 Thanks @​dyc3! - Fixed #​11541: formatting a Svelte render tag followed by an HTML comment no longer duplicates the comment.

     <div>
    {@render children?.()}
    <!-- comment -->
    - <!-- comment -->
    </div>
  • #​11565ee69e0e Thanks @​ematipico! - Fixed #​11525. Now the configuration schema correctly provides auto-completion for linter domains.

  • #​11583b19390c Thanks @​dyc3! - Fixed #​11352: useExplicitLengthCheck no longer reports length-like properties used as value-producing || fallbacks or optional chains, and it no longer offers fixes for value-producing && checks or unsafe negations.

  • #​11562753e955 Thanks @​ematipico! - Fixed an issue where the Biome Language Server would start with logging level set to debug. This would cause logs to grow exponentially in long sessions.

  • #​112177d3ee9c Thanks @​dyc3! - Fixed handling of biome-ignore format suppression comments on TypeScript declared class properties with string literal names.

    classA{declare/* biome-ignore format: exercise suppression checking */'a-b': 0;}
  • #​11497f5d7896 Thanks @​dyc3! - Added the noInvalidFileInputAccept nursery rule. The rule reports invalid literal accept values on file inputs in JSX and HTML, and normalizes common mistakes.

    <inputtype="file"accept="image/jpg"/>
  • #​11345ac58958 Thanks @​jakeleventhal! - Improved type inference performance by avoiding resolution of unused members in object arguments.

  • #​115542d55931 Thanks @​Netail! - Added the new nursery rule useReactNamingConvention, which enforces naming conventions for React values assigned from createContext, useId, and useRef. A value from createContext must be a PascalCase component name ending with Context, a value from useId must be named id or end with Id, and a value from useRef must be named ref or end with Ref.

  • #​114911d6210b Thanks @​dyc3! - Added the nursery rule noUnmodifiedLoopCondition, which reports variables in loop conditions that are never modified in the loop.

    letnode=getNode();while(node){process(node);}

v2.5.11

Compare Source

Patch Changes
  • #​114999743d0c Thanks @​scs0209! - Fixed #​11496: useValidAnchor now treats Astro JSX shorthand attributes like <a {href}> as a valid href.

  • #​1143788f805e Thanks @​Princesseuh! - Fixed #​9944: adjacent elements inside an Astro expression now parse as an implicit fragment instead of raising an error.

    {options.map(() =>
    <div />
    <div />
    )}
  • #​1143788f805e Thanks @​Princesseuh! - Fixed Astro templates rejecting unclosed HTML void elements, such as {cond && <br>}.

  • #​11507e2fc036 Thanks @​dyc3! - Fixed #​11157: noUnusedVariables no longer reports Vue <script setup> bindings used by CSS v-bind() as unused.

  • #​11398afc4615 Thanks @​dyc3! - Fixed #​11389: Files passed through --stdin-file-path now use full HTML support for Astro, Svelte, and Vue when it is enabled.

  • #​11526372cd68 Thanks @​dyc3! - Fixed noVueRefAsOperand to track Vue refs through declaration aliases and toRefs() properties, and to recognize useTemplateRef() results. The rule no longer reports false positives such as plain ref transfers, plain toRefs() property access, defineModel() modifiers, or the supported .effect member as operands.

    The refactor enabling these fixes also improves the performance of the rule.

  • #​11458a7cd286 Thanks @​dyc3! - Fixed #​11436: GritQL snippets such as export { $specifiers } from $source now match named re-exports with aliases, inline type modifiers, and multiple specifiers.

  • #​11515382b15d Thanks @​dyc3! - Fixed #​11390, where noFloatingPromises performed expensive full type inference for calls to non-Promise methods declared on third-party TypeScript classes. The rule now classifies those calls using targeted type information.

  • #​115166f40e82 Thanks @​levrik! - Fixed noVueRefAsOperand so it no longer reports a callback parameter (e.g. from .find(), .map()) as an unwrapped ref value just because it's nested inside a ref(), computed(), or similar call.

    constresult=computed(()=>list.find((item)=>item.label==="a"));

    Previously, item here was incorrectly treated as a ref value because the rule attributed it to the outer computed() call.

  • #​11495496268d Thanks @​Netail! - Fixed useGraphqlNamingConvention so it no longer reports GraphQL enum value definitions with comments & descriptions and now displays a more accurate diagnostic range.

  • #​114076ef52b0 Thanks @​1678092075! - Fixed #​11214: noUnusedVariables no longer reports type parameters declared by non-default function overload signatures that have an implementation.

  • #​113225c353e6 Thanks @​jp-knj! - Added a new nursery rule noAstroSetHtmlDirective, which disallows Astro's set:html directive because untrusted content can introduce cross-site scripting vulnerabilities.

    For example, the following snippet triggers the rule:

    <divset:html={content} />
  • #​1146218883b7 Thanks @​dyc3! - Fixed #​10776: useVueHyphenatedAttributes no longer reports lowercase attribute names containing punctuation, such as pt:header:data-test-id and some_attr.

  • #​114763270ca4 Thanks @​dyc3! - Fixed #​10330: Vue interpolation delimiters now stay attached to whitespace-sensitive element boundaries and adjacent inline siblings, wrapping their expression when needed to fit the configured line width. Interpolations followed by text now also converge after one formatting pass.

    -<v-btn v-if="store.state.user" variant="text" to="/my-rooms"- >{{ $t("nav.my-rooms") }}</v-btn->+<v-btn v-if="store.state.user" variant="text" to="/my-rooms">{{+ $t("nav.my-rooms")+}}</v-btn>
  • #​111913e5367f Thanks @​ematipico! - Added the nursery rule noUndeclaredCustomProperties, which reports references to custom properties that are not defined in available CSS, static HTML-like style attributes, or JSX string style attributes.

    For example, the following snippet triggers the rule:

    a { color:var(--undefined-color); }
  • #​114357754894 Thanks @​levrik! - Fixed: Variables and imports used as custom Vue directives are no longer reported as unused.

    For example:

    <script setup>constvHighlight= {mounted: (element) => {element.style.color="red"; },};</script>
    <template>
    <pv-highlight>Hello</p>
    </template>
  • #​11501e6acded Thanks @​aminya! - Improved the performance of useArraySortCompare by skipping type inference for calls to unrelated methods.

  • #​1146766b282c Thanks @​dyc3! - Fixed #​11464: Biome now parses parenthesized object literals returned from arrow functions when they contain a conditional expression and a nested arrow function.

  • #​11456db9aa2a Thanks @​dyc3! - Fixed #​10278: Marked the fix for noThisInStatic as unsafe by default.

  • #​11502652aedb Thanks @​levrik! - noGlobalAssign no longer reports assignments to a Vue <script setup> binding from a template expression, when the binding's name happens to match a built-in global (e.g. open, parent, top).

    For example, this no longer triggers a diagnostic:

    <script setup>constopen=defineModel();</script>
    <template>
    <button@click="open = !open">Toggle</button>
    </template>

v2.5.10

Compare Source

Patch Changes
  • #​114038f7786f Thanks @​Princesseuh! - Fixed Astro rejecting JavaScript comments between attributes.

    <div /* blockcomment */ class="something"></div>
    <Component /* c */ client:load />
  • #​114038f7786f 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.

  • #​114383133ffa 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>
    <divclass={/* a note */}>x</div>
  • #​114038f7786f Thanks @​Princesseuh! - Fixed #​9165: an empty Astro expression such as <div>{}</div> no longer fails to parse. Astro renders {} as nothing.

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

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

    <>
    <p>a</p>
    </>
  • #​114038f7786f 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---
  • #​114038f7786f 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
    ---
  • #​114038f7786f Thanks @​Princesseuh! - Fixed an Astro frontmatter block ending early on a line that merely starts with a dash.

    -----count;---
  • #​114038f7786f 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.

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

  • #​114038f7786f 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.

  • #​114038f7786f 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.

  • #​114038f7786f 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.

  • #​114038f7786f 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>
  • #​114038f7786f Thanks @​Princesseuh! - Added support for template literal attribute values in Astro, such as <div class=`a ${b} c`>.

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

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

  • #​11431c065f99 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.

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

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

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

  • #​114038f7786f 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.

  • #​114438d45229 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.

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

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

v2.5.9

Compare Source

Patch Changes
  • #​1132141386f3 Thanks @​dyc3! - Fixed #​11315: The CSS parser now recovers at declaration boundaries after bogus declarations, allowing subsequent valid declarations to be parsed.

  • #​1124857b197e Thanks @​yanthomasdev! - Expanded the environment variable metadata used by biome rage to include BIOME_BINARY, BIOME_LOG_FILE, and RUST_BACKTRACE as well as reworded explanations for better readability.

  • #​11377a8798ea Thanks @​Netail! - Added a new nursery rule useNamedLayer which disallows anonymous cascade layers.

    @layer {
    a {
    color: red;
    }
    }
  • #​113276771cf5 Thanks @​dyc3! - The HTML formatter now preserves meaningful blank lines in HTML, including spacing after elements with trailing spaces and blank lines between comment groups.

     <div>
    <!-- first group -->
    +
    <!-- second group -->
    </div>
  • #​10312ba8aa18 Thanks @​dyc3! - Added the nursery rule useTailwindShorthandClasses, which suggests shorter Tailwind utility classes. For example, the rule suggests replacing w-4 h-4 with size-4.

  • #​11333715e0cd Thanks @​kkkhs! - Fixed #​11328: lint/nursery/useExpect now recognizes Vitest Browser Mode expect.element() calls as assertions.

  • #​113439b98211 Thanks @​johncarmack1984! - Fixed #​11311: the CSS parser now accepts Tailwind container-query variant names in @variant, such as @xl and @max-xl. These previously produced a parse error and a noUnknownAtRules diagnostic.

    @variant@xl {
    div {
    background: red;
    }
    }
  • #​112203e8c488 Thanks @​santichausis! - Fixed #​9541: noUndeclaredVariables, noUnusedImports, and noUnusedVariables now correctly recognise exported variables and functions declared in one embedded <script> block as usable from a sibling <script> block, in Svelte's <script module>/<script> pair and Vue's non-setup<script> blocks.

    For example, Biome no longer reports greet as undeclared in the following Svelte component:

    <scriptmodule>exportfunctiongreet() {console.log("Hello!"); }</script>
    <script>greet();</script>
  • #​1130036430eb Thanks @​dyc3! - Fixed the HTML formatter's whitespace handling for marquee, noscript, video, audio, and object elements.

    - <marquee behavior="alternate"> This text will bounce </marquee>+ <marquee behavior="alternate">This text will bounce</marquee>
  • #​112996559e6c Thanks @​jp-knj! - Added the nursery rule useAstroClientOnlyDirectiveValue, which reports Astro client:only directives without an initializer.

    For example, <Component client:only /> triggers the rule.

  • #​113657529811 Thanks @​MHJahanbakhsh! - Fixed #​11229: The useGenericFontNames rule now treats math as a valid generic font family.

  • #​11346674f5f4 Thanks @​Jayllyz! - Fixed #​11335: noComponentHookFactories now reports a use-prefixed variable only when a function is assigned to it directly.

    functionfactory(){constuseColors=true;// no longer reportedconstuseStore=createStore({count: 0});// no longer reportedconstuseData=()=>useState(null);// still reportedreturnuseColors;}
  • #​11334c87c46a Thanks @​zkasuran! - Fixed #​11317: noSvgWithoutTitle no longer reports an svg that uses the boolean shorthand aria-hidden (equivalent to aria-hidden={true} in React).

  • #​1136413853b1 Thanks @​ematipico! - Fixed a bug where useJsxKeyInIterable incorrectly flagged Astro files.

  • #​1132141386f3 Thanks @​dyc3! - Fixed #​11315: Invalid CSS declarations in HTML style attributes now produce parser diagnostics instead of causing a panic.

  • #​1132567c3bf0 Thanks @​dyc3! - Fixed HTML text wrapping to account for the width of an adjacent closing tag, avoiding lines that exceed t

Note

PR body was truncated to here.


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.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@pkg-pr-new

pkg-pr-newBot commented Jun 23, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/@faststats/cli@db02cba

commit: db02cba

@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.1chore(deps): update dependency @biomejs/biome to v2.5.2Jul 1, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from da0f755 to db08b5eCompareJuly 1, 2026 21:38
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.2chore(deps): update dependency @biomejs/biome to v2.5.3Jul 8, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from db08b5e to 062f6f0CompareJuly 8, 2026 08:58
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.3chore(deps): update dependency @biomejs/biome to v2.5.4Jul 15, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch 2 times, most recently from 5f5750b to 02907f1CompareJuly 21, 2026 03:13
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.4chore(deps): update dependency @biomejs/biome to v2.5.5Jul 21, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from 02907f1 to 84f8166CompareJuly 21, 2026 09:52
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from 84f8166 to c72550bCompareJuly 28, 2026 12:37
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.5chore(deps): update dependency @biomejs/biome to v2.5.6Jul 28, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from c72550b to 4cb2285CompareAugust 4, 2026 18:45
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.6chore(deps): update dependency @biomejs/biome to v2.5.7Aug 4, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from 4cb2285 to 1968b9cCompareAugust 11, 2026 22:49
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.7chore(deps): update dependency @biomejs/biome to v2.5.8Aug 11, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from 1968b9c to a608389CompareAugust 18, 2026 02:55
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.8chore(deps): update dependency @biomejs/biome to v2.5.9Aug 18, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from a608389 to dea7b5cCompareAugust 21, 2026 23:10
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.9chore(deps): update dependency @biomejs/biome to v2.5.10Aug 21, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from dea7b5c to efd04a3CompareAugust 28, 2026 01:31
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.10chore(deps): update dependency @biomejs/biome to v2.5.11Aug 28, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from efd04a3 to db02cbaCompareSeptember 3, 2026 18:41
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.11chore(deps): update dependency @biomejs/biome to v2.5.12Sep 3, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

chore(deps): update dependency @biomejs/biome to v2.5.12 - #18

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/biomejs-biome-2.x
Open

chore(deps): update dependency @biomejs/biome to v2.5.12#18
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/biomejs-biome-2.x

Conversation

@renovate

@renovaterenovateBot commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

PackageChangeAgeConfidence
@biomejs/biome (source)2.5.02.5.12ageconfidence

Release Notes

biomejs/biome (@​biomejs/biome)

v2.5.12

Compare Source

Patch Changes
  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed Astro attribute expressions rejecting TypeScript and JSX syntax that is accepted in text expressions.

    <Componenticon={<Icon />}count={totalasnumber}onSelect={(e:Event) =>e} />
  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed Astro attribute names being split on : and . inside an expression, such as {x && <button x-on:keyup.enter={go} client:load.foo />}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed a bare > in the children of an Astro expression being treated as markup, such as {x && <div>a > b</div>}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed HTML comments inside an Astro expression failing to parse. They are now read as trivia, wherever they appear among the children.

    {x&& <div><!-- first -->text<!-- last --></div>}{cond&& <a></a><!--c--><b></b>}
  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed is:raw children inside an Astro expression being read as JSX, such as {x && <div is:raw>{not js} < & text</div>}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed an apostrophe or quote in the text of a JSX element inside an Astro expression ending the expression early, such as {items.map((i) => <li>it's {i}</li>)}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed the children of a <script> or <style> inside an Astro expression being read as JSX. Their contents are text, so braces and comparisons no longer have to be escaped.

    {cond&& <style>a {color: red}</style>}{cond&& <script>let x = {a: 1};</script>}
  • #​11440b88f1ea Thanks @​Princesseuh! - Added support for template literal attribute values inside an Astro expression, such as {x && <C data-x=`t${x}` />}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed unquoted attribute values being rejected inside an Astro expression, such as {x && <a class=foo maxlength=255 href=/about>go</a>}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed a template literal nested inside ${} breaking the rest of an Astro file, such as const href = `/blog${page === 0 ? '' : `/${page + 1}`}`;.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed a quote inside a regex character class breaking the rest of an Astro file, such as const unsafe = /[/"]/;.

  • #​1150854f3a2e Thanks @​dyc3! - Added the nursery rule useFlatMathMinMax. Because Math.min() and Math.max() accept any number of arguments, the rule reports unnecessary nested calls to the same method:

    Math.max(Math.max(a,b),c);

    The fix flattens this expression to Math.max(a, b, c).

  • #​11585c5c8315 Thanks @​Netail! - Fixed #​11475: noUnresolvedImports no longer reports Bun runtime built-in modules (bun, bun:bundle, bun:ffi, bun:jsc, bun:sqlite, bun:test).

  • #​1136852a57b3 Thanks @​Austin1serb! - Fixed #​6830: Biome now reports a diagnostic for excessively deep syntax instead of overflowing the native stack while releasing the parsed tree.

  • #​115961fc42ed Thanks @​dyc3! - Added the nursery rule noThisOutsideOfClass. The rule reports this outside class members and TypeScript functions with an explicit this parameter.

    functionPerson(name){this.name=name;}
  • #​115552516335 Thanks @​dyc3! - Fixed #​11529, where noFloatingPromises missed unhandled Promise chains when the imported function's module belonged to an import cycle. Cyclic modules now preserve types for exports that do not participate in recursive type dependencies.

  • #​115180fee70c Thanks @​HarperZ9! - Fixed #​11500: the formatter now prints the declare modifier before accessibility modifiers on class properties. private declare readonly name: string is now formatted as declare private readonly name: string, matching Prettier and TypeScript's canonical modifier order.

  • #​115801277af2 Thanks @​ematipico! - Fixed #​5091: Biome no longer moves comments next to the < of a generic, which causes invalid TypeScript syntax:

    - Generic<// a comment+ Generic<+ // a comment
  • #​1157742995d2 Thanks @​ematipico! - Fixed #​4592. Biome no longer crashes while parsing malformed delete expressions.

  • #​1159067963b4 Thanks @​ematipico! - Fixed #​6427 so Grit plugins can use function = ... as a node argument.

  • #​11600a689cb5 Thanks @​ematipico! - Fixed #​6644: noUnusedVariables now recognizes all interface declarations in a TypeScript declaration-merging group when the interface is referenced.

    The following snippet no longer triggers the rule.

    interfaceThings{foo: string;}interfaceThings{bar: string;}exporttypeKey=keyofThings;interfaceThings{baz: string;}
  • #​11591d4a0716 Thanks @​ematipico! - Fixed #​6615. noDuplicateProperties no longer reports declarations nested in block at-rules as duplicates of declarations in their parent block.

  • #​11492f2a07aa Thanks @​santichausis! - Fixed #​11454: noMisplacedAssertion now recognises @fast-check/vitest's test.prop(...) (and .concurrent.prop, .skip.prop, etc.) as a test function, the same way it already recognises test.each. The JS formatter picks up the same recognition, so a curried test.prop(...)(...) call is now formatted with the regular breakable argument layout used for test.each/test.for, instead of the single-line-hugging layout used for plain it/test calls.

    For example, Biome no longer reports the assertion below as misplaced:

    import{fc,test}from"@fast-check/vitest";test.prop([fc.string()])("round-trips",(s)=>{expect(s).toBe(s);});
  • #​1158965742b3 Thanks @​ematipico! - Fixed #​4928: noUnusedVariables no longer reports a value declaration as unused when its merged namespace is referenced.

  • #​11559472dbc2 Thanks @​levrik! - Fixed a false positive in noVueDuplicateKeys where a <script setup> variable initialized from props was reported as a duplicate of the prop it derives from. Biome now exempts any variable whose initializer references props, instead of only recognizing defineProps() and toRefs(props).

    For example, Biome no longer reports foo below as a duplicate key:

    <script setup>import { toRef } from'vue';constprops=defineProps(['foo']);constfoo=toRef(props, 'foo');</script>
  • #​115946586ceb Thanks @​ematipico! - Fixed #​6640. Biome no longer crashes when linting malformed for...of statements.

  • #​1157185b197d Thanks @​ematipico! - Fixed #​10838: useSortedAttributes no longer corrupts JSX attributes when nested JSX elements also require sorting.

  • #​1153397e76c0 Thanks @​ematipico! - Fixed #​11520, where the Biome scanner would start analysing dependencies multiple times, leading to long and unresponsive sessions.

  • #​1156418a0e1f Thanks @​Netail! - Fixed the diagnostic range of noInferrableTypes so it now highlights only the type instead of including the leading : colon, spaces and comments.

  • #​11540124fdaa Thanks @​ematipico! - Fixed #11537: noShorthandPropertyOverrides now compares declarations only within the same block. The rule no longer reports @supports feature queries and correctly checks nested, @keyframes, and @page blocks.

  • #​115327ceb0ee Thanks @​dyc3! - Fixed #​11528: noFloatingPromises no longer reports statement-level await expressions that handle Promise values, including overloaded calls returning Promise aliases. Awaited values that resolve to arrays of Promises remain reported because their element Promises are not handled by await.

  • #​114743c6412e Thanks @​dyc3! - Fixed #​10241. Biome no longer reports unsupported text expression diagnostics for double-curly text in vanilla HTML, and the formatter preserves adjacent curly-brace text.

  • #​115936c7fd27 Thanks @​dyc3! - Added the nursery rule noVueDeprecatedScopedSlots. It reports deprecated $scopedSlots references in Vue templates and component objects, and offers an unsafe replacement with $slots. For example, Biome now reports this.$scopedSlots.default inside a Vue component.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed the formatter crashing on an Astro or Svelte expression spanning several lines in a file with CRLF line endings, such as <p>{a +\r\n b}</p>.

  • #​11581f4e5ebb Thanks @​dyc3! - Added the nursery rule useModernMathApis. The rule reports legacy mathematical patterns that have direct modern Math equivalents.

    Math.sqrt(a*a+b*b);
  • #​11597a20f44a Thanks @​Netail! - Added the nursery rule noBunModules, which forbids the use of Bun builtin modules (e.g. bun:sqlite, bun:ffi).

  • #​115457d54688 Thanks @​dyc3! - Fixed #​11542: Biome now reports HTML comments between Svelte tag attributes as parse errors.

  • #​11582b6611dd Thanks @​ematipico! - Fixed #​3862. Biome now parses legacy Internet Explorer filter and -ms-filter values such as progid:DXImageTransform... and alpha(opacity=40).

  • #​1157565da251 Thanks @​dyc3! - Improved the Tailwind parser's ability to recover from parsing failures. Whitespace now always allows the parser to recover and start parsing a new class.

  • #​115760f78499 Thanks @​ematipico! - Fixed #​3515 and #​10395, where Biome could corrupt Unicode characters while writing source received through standard input to standard output. Characters such as and are now preserved.

  • #​115390fca643 Thanks @​ematipico! - Fixed #​11512, where style/noDescendingSpecificity missed lower-specificity selectors after a later higher-specificity selector with the same tail selector.

  • #​11544040f867 Thanks @​dyc3! - Fixed #​11541: formatting a Svelte render tag followed by an HTML comment no longer duplicates the comment.

     <div>
    {@render children?.()}
    <!-- comment -->
    - <!-- comment -->
    </div>
  • #​11565ee69e0e Thanks @​ematipico! - Fixed #​11525. Now the configuration schema correctly provides auto-completion for linter domains.

  • #​11583b19390c Thanks @​dyc3! - Fixed #​11352: useExplicitLengthCheck no longer reports length-like properties used as value-producing || fallbacks or optional chains, and it no longer offers fixes for value-producing && checks or unsafe negations.

  • #​11562753e955 Thanks @​ematipico! - Fixed an issue where the Biome Language Server would start with logging level set to debug. This would cause logs to grow exponentially in long sessions.

  • #​112177d3ee9c Thanks @​dyc3! - Fixed handling of biome-ignore format suppression comments on TypeScript declared class properties with string literal names.

    classA{declare/* biome-ignore format: exercise suppression checking */'a-b': 0;}
  • #​11497f5d7896 Thanks @​dyc3! - Added the noInvalidFileInputAccept nursery rule. The rule reports invalid literal accept values on file inputs in JSX and HTML, and normalizes common mistakes.

    <inputtype="file"accept="image/jpg"/>
  • #​11345ac58958 Thanks @​jakeleventhal! - Improved type inference performance by avoiding resolution of unused members in object arguments.

  • #​115542d55931 Thanks @​Netail! - Added the new nursery rule useReactNamingConvention, which enforces naming conventions for React values assigned from createContext, useId, and useRef. A value from createContext must be a PascalCase component name ending with Context, a value from useId must be named id or end with Id, and a value from useRef must be named ref or end with Ref.

  • #​114911d6210b Thanks @​dyc3! - Added the nursery rule noUnmodifiedLoopCondition, which reports variables in loop conditions that are never modified in the loop.

    letnode=getNode();while(node){process(node);}

v2.5.11

Compare Source

Patch Changes
  • #​114999743d0c Thanks @​scs0209! - Fixed #​11496: useValidAnchor now treats Astro JSX shorthand attributes like <a {href}> as a valid href.

  • #​1143788f805e Thanks @​Princesseuh! - Fixed #​9944: adjacent elements inside an Astro expression now parse as an implicit fragment instead of raising an error.

    {options.map(() =>
    <div />
    <div />
    )}
  • #​1143788f805e Thanks @​Princesseuh! - Fixed Astro templates rejecting unclosed HTML void elements, such as {cond && <br>}.

  • #​11507e2fc036 Thanks @​dyc3! - Fixed #​11157: noUnusedVariables no longer reports Vue <script setup> bindings used by CSS v-bind() as unused.

  • #​11398afc4615 Thanks @​dyc3! - Fixed #​11389: Files passed through --stdin-file-path now use full HTML support for Astro, Svelte, and Vue when it is enabled.

  • #​11526372cd68 Thanks @​dyc3! - Fixed noVueRefAsOperand to track Vue refs through declaration aliases and toRefs() properties, and to recognize useTemplateRef() results. The rule no longer reports false positives such as plain ref transfers, plain toRefs() property access, defineModel() modifiers, or the supported .effect member as operands.

    The refactor enabling these fixes also improves the performance of the rule.

  • #​11458a7cd286 Thanks @​dyc3! - Fixed #​11436: GritQL snippets such as export { $specifiers } from $source now match named re-exports with aliases, inline type modifiers, and multiple specifiers.

  • #​11515382b15d Thanks @​dyc3! - Fixed #​11390, where noFloatingPromises performed expensive full type inference for calls to non-Promise methods declared on third-party TypeScript classes. The rule now classifies those calls using targeted type information.

  • #​115166f40e82 Thanks @​levrik! - Fixed noVueRefAsOperand so it no longer reports a callback parameter (e.g. from .find(), .map()) as an unwrapped ref value just because it's nested inside a ref(), computed(), or similar call.

    constresult=computed(()=>list.find((item)=>item.label==="a"));

    Previously, item here was incorrectly treated as a ref value because the rule attributed it to the outer computed() call.

  • #​11495496268d Thanks @​Netail! - Fixed useGraphqlNamingConvention so it no longer reports GraphQL enum value definitions with comments & descriptions and now displays a more accurate diagnostic range.

  • #​114076ef52b0 Thanks @​1678092075! - Fixed #​11214: noUnusedVariables no longer reports type parameters declared by non-default function overload signatures that have an implementation.

  • #​113225c353e6 Thanks @​jp-knj! - Added a new nursery rule noAstroSetHtmlDirective, which disallows Astro's set:html directive because untrusted content can introduce cross-site scripting vulnerabilities.

    For example, the following snippet triggers the rule:

    <divset:html={content} />
  • #​1146218883b7 Thanks @​dyc3! - Fixed #​10776: useVueHyphenatedAttributes no longer reports lowercase attribute names containing punctuation, such as pt:header:data-test-id and some_attr.

  • #​114763270ca4 Thanks @​dyc3! - Fixed #​10330: Vue interpolation delimiters now stay attached to whitespace-sensitive element boundaries and adjacent inline siblings, wrapping their expression when needed to fit the configured line width. Interpolations followed by text now also converge after one formatting pass.

    -<v-btn v-if="store.state.user" variant="text" to="/my-rooms"- >{{ $t("nav.my-rooms") }}</v-btn->+<v-btn v-if="store.state.user" variant="text" to="/my-rooms">{{+ $t("nav.my-rooms")+}}</v-btn>
  • #​111913e5367f Thanks @​ematipico! - Added the nursery rule noUndeclaredCustomProperties, which reports references to custom properties that are not defined in available CSS, static HTML-like style attributes, or JSX string style attributes.

    For example, the following snippet triggers the rule:

    a { color:var(--undefined-color); }
  • #​114357754894 Thanks @​levrik! - Fixed: Variables and imports used as custom Vue directives are no longer reported as unused.

    For example:

    <script setup>constvHighlight= {mounted: (element) => {element.style.color="red"; },};</script>
    <template>
    <pv-highlight>Hello</p>
    </template>
  • #​11501e6acded Thanks @​aminya! - Improved the performance of useArraySortCompare by skipping type inference for calls to unrelated methods.

  • #​1146766b282c Thanks @​dyc3! - Fixed #​11464: Biome now parses parenthesized object literals returned from arrow functions when they contain a conditional expression and a nested arrow function.

  • #​11456db9aa2a Thanks @​dyc3! - Fixed #​10278: Marked the fix for noThisInStatic as unsafe by default.

  • #​11502652aedb Thanks @​levrik! - noGlobalAssign no longer reports assignments to a Vue <script setup> binding from a template expression, when the binding's name happens to match a built-in global (e.g. open, parent, top).

    For example, this no longer triggers a diagnostic:

    <script setup>constopen=defineModel();</script>
    <template>
    <button@click="open = !open">Toggle</button>
    </template>

v2.5.10

Compare Source

Patch Changes
  • #​114038f7786f Thanks @​Princesseuh! - Fixed Astro rejecting JavaScript comments between attributes.

    <div /* blockcomment */ class="something"></div>
    <Component /* c */ client:load />
  • #​114038f7786f 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.

  • #​114383133ffa 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>
    <divclass={/* a note */}>x</div>
  • #​114038f7786f Thanks @​Princesseuh! - Fixed #​9165: an empty Astro expression such as <div>{}</div> no longer fails to parse. Astro renders {} as nothing.

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

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

    <>
    <p>a</p>
    </>
  • #​114038f7786f 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---
  • #​114038f7786f 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
    ---
  • #​114038f7786f Thanks @​Princesseuh! - Fixed an Astro frontmatter block ending early on a line that merely starts with a dash.

    -----count;---
  • #​114038f7786f 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.

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

  • #​114038f7786f 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.

  • #​114038f7786f 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.

  • #​114038f7786f 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.

  • #​114038f7786f 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>
  • #​114038f7786f Thanks @​Princesseuh! - Added support for template literal attribute values in Astro, such as <div class=`a ${b} c`>.

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

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

  • #​11431c065f99 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.

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

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

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

  • #​114038f7786f 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.

  • #​114438d45229 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.

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

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

v2.5.9

Compare Source

Patch Changes
  • #​1132141386f3 Thanks @​dyc3! - Fixed #​11315: The CSS parser now recovers at declaration boundaries after bogus declarations, allowing subsequent valid declarations to be parsed.

  • #​1124857b197e Thanks @​yanthomasdev! - Expanded the environment variable metadata used by biome rage to include BIOME_BINARY, BIOME_LOG_FILE, and RUST_BACKTRACE as well as reworded explanations for better readability.

  • #​11377a8798ea Thanks @​Netail! - Added a new nursery rule useNamedLayer which disallows anonymous cascade layers.

    @layer {
    a {
    color: red;
    }
    }
  • #​113276771cf5 Thanks @​dyc3! - The HTML formatter now preserves meaningful blank lines in HTML, including spacing after elements with trailing spaces and blank lines between comment groups.

     <div>
    <!-- first group -->
    +
    <!-- second group -->
    </div>
  • #​10312ba8aa18 Thanks @​dyc3! - Added the nursery rule useTailwindShorthandClasses, which suggests shorter Tailwind utility classes. For example, the rule suggests replacing w-4 h-4 with size-4.

  • #​11333715e0cd Thanks @​kkkhs! - Fixed #​11328: lint/nursery/useExpect now recognizes Vitest Browser Mode expect.element() calls as assertions.

  • #​113439b98211 Thanks @​johncarmack1984! - Fixed #​11311: the CSS parser now accepts Tailwind container-query variant names in @variant, such as @xl and @max-xl. These previously produced a parse error and a noUnknownAtRules diagnostic.

    @variant@xl {
    div {
    background: red;
    }
    }
  • #​112203e8c488 Thanks @​santichausis! - Fixed #​9541: noUndeclaredVariables, noUnusedImports, and noUnusedVariables now correctly recognise exported variables and functions declared in one embedded <script> block as usable from a sibling <script> block, in Svelte's <script module>/<script> pair and Vue's non-setup<script> blocks.

    For example, Biome no longer reports greet as undeclared in the following Svelte component:

    <scriptmodule>exportfunctiongreet() {console.log("Hello!"); }</script>
    <script>greet();</script>
  • #​1130036430eb Thanks @​dyc3! - Fixed the HTML formatter's whitespace handling for marquee, noscript, video, audio, and object elements.

    - <marquee behavior="alternate"> This text will bounce </marquee>+ <marquee behavior="alternate">This text will bounce</marquee>
  • #​112996559e6c Thanks @​jp-knj! - Added the nursery rule useAstroClientOnlyDirectiveValue, which reports Astro client:only directives without an initializer.

    For example, <Component client:only /> triggers the rule.

  • #​113657529811 Thanks @​MHJahanbakhsh! - Fixed #​11229: The useGenericFontNames rule now treats math as a valid generic font family.

  • #​11346674f5f4 Thanks @​Jayllyz! - Fixed #​11335: noComponentHookFactories now reports a use-prefixed variable only when a function is assigned to it directly.

    functionfactory(){constuseColors=true;// no longer reportedconstuseStore=createStore({count: 0});// no longer reportedconstuseData=()=>useState(null);// still reportedreturnuseColors;}
  • #​11334c87c46a Thanks @​zkasuran! - Fixed #​11317: noSvgWithoutTitle no longer reports an svg that uses the boolean shorthand aria-hidden (equivalent to aria-hidden={true} in React).

  • #​1136413853b1 Thanks @​ematipico! - Fixed a bug where useJsxKeyInIterable incorrectly flagged Astro files.

  • #​1132141386f3 Thanks @​dyc3! - Fixed #​11315: Invalid CSS declarations in HTML style attributes now produce parser diagnostics instead of causing a panic.

  • #​1132567c3bf0 Thanks @​dyc3! - Fixed HTML text wrapping to account for the width of an adjacent closing tag, avoiding lines that exceed t

Note

PR body was truncated to here.


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.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@pkg-pr-new

pkg-pr-newBot commented Jun 23, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/@faststats/cli@db02cba

commit: db02cba

@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.1chore(deps): update dependency @biomejs/biome to v2.5.2Jul 1, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from da0f755 to db08b5eCompareJuly 1, 2026 21:38
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.2chore(deps): update dependency @biomejs/biome to v2.5.3Jul 8, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from db08b5e to 062f6f0CompareJuly 8, 2026 08:58
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.3chore(deps): update dependency @biomejs/biome to v2.5.4Jul 15, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch 2 times, most recently from 5f5750b to 02907f1CompareJuly 21, 2026 03:13
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.4chore(deps): update dependency @biomejs/biome to v2.5.5Jul 21, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from 02907f1 to 84f8166CompareJuly 21, 2026 09:52
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from 84f8166 to c72550bCompareJuly 28, 2026 12:37
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.5chore(deps): update dependency @biomejs/biome to v2.5.6Jul 28, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from c72550b to 4cb2285CompareAugust 4, 2026 18:45
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.6chore(deps): update dependency @biomejs/biome to v2.5.7Aug 4, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from 4cb2285 to 1968b9cCompareAugust 11, 2026 22:49
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.7chore(deps): update dependency @biomejs/biome to v2.5.8Aug 11, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from 1968b9c to a608389CompareAugust 18, 2026 02:55
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.8chore(deps): update dependency @biomejs/biome to v2.5.9Aug 18, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from a608389 to dea7b5cCompareAugust 21, 2026 23:10
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.9chore(deps): update dependency @biomejs/biome to v2.5.10Aug 21, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from dea7b5c to efd04a3CompareAugust 28, 2026 01:31
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.10chore(deps): update dependency @biomejs/biome to v2.5.11Aug 28, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from efd04a3 to db02cbaCompareSeptember 3, 2026 18:41
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.11chore(deps): update dependency @biomejs/biome to v2.5.12Sep 3, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore(deps): update dependency @biomejs/biome to v2.5.12 - #18

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/biomejs-biome-2.x
Open

chore(deps): update dependency @biomejs/biome to v2.5.12#18
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/biomejs-biome-2.x

Conversation

@renovate

@renovaterenovateBot commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

PackageChangeAgeConfidence
@biomejs/biome (source)2.5.02.5.12ageconfidence

Release Notes

biomejs/biome (@​biomejs/biome)

v2.5.12

Compare Source

Patch Changes
  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed Astro attribute expressions rejecting TypeScript and JSX syntax that is accepted in text expressions.

    <Componenticon={<Icon />}count={totalasnumber}onSelect={(e:Event) =>e} />
  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed Astro attribute names being split on : and . inside an expression, such as {x && <button x-on:keyup.enter={go} client:load.foo />}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed a bare > in the children of an Astro expression being treated as markup, such as {x && <div>a > b</div>}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed HTML comments inside an Astro expression failing to parse. They are now read as trivia, wherever they appear among the children.

    {x&& <div><!-- first -->text<!-- last --></div>}{cond&& <a></a><!--c--><b></b>}
  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed is:raw children inside an Astro expression being read as JSX, such as {x && <div is:raw>{not js} < & text</div>}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed an apostrophe or quote in the text of a JSX element inside an Astro expression ending the expression early, such as {items.map((i) => <li>it's {i}</li>)}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed the children of a <script> or <style> inside an Astro expression being read as JSX. Their contents are text, so braces and comparisons no longer have to be escaped.

    {cond&& <style>a {color: red}</style>}{cond&& <script>let x = {a: 1};</script>}
  • #​11440b88f1ea Thanks @​Princesseuh! - Added support for template literal attribute values inside an Astro expression, such as {x && <C data-x=`t${x}` />}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed unquoted attribute values being rejected inside an Astro expression, such as {x && <a class=foo maxlength=255 href=/about>go</a>}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed a template literal nested inside ${} breaking the rest of an Astro file, such as const href = `/blog${page === 0 ? '' : `/${page + 1}`}`;.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed a quote inside a regex character class breaking the rest of an Astro file, such as const unsafe = /[/"]/;.

  • #​1150854f3a2e Thanks @​dyc3! - Added the nursery rule useFlatMathMinMax. Because Math.min() and Math.max() accept any number of arguments, the rule reports unnecessary nested calls to the same method:

    Math.max(Math.max(a,b),c);

    The fix flattens this expression to Math.max(a, b, c).

  • #​11585c5c8315 Thanks @​Netail! - Fixed #​11475: noUnresolvedImports no longer reports Bun runtime built-in modules (bun, bun:bundle, bun:ffi, bun:jsc, bun:sqlite, bun:test).

  • #​1136852a57b3 Thanks @​Austin1serb! - Fixed #​6830: Biome now reports a diagnostic for excessively deep syntax instead of overflowing the native stack while releasing the parsed tree.

  • #​115961fc42ed Thanks @​dyc3! - Added the nursery rule noThisOutsideOfClass. The rule reports this outside class members and TypeScript functions with an explicit this parameter.

    functionPerson(name){this.name=name;}
  • #​115552516335 Thanks @​dyc3! - Fixed #​11529, where noFloatingPromises missed unhandled Promise chains when the imported function's module belonged to an import cycle. Cyclic modules now preserve types for exports that do not participate in recursive type dependencies.

  • #​115180fee70c Thanks @​HarperZ9! - Fixed #​11500: the formatter now prints the declare modifier before accessibility modifiers on class properties. private declare readonly name: string is now formatted as declare private readonly name: string, matching Prettier and TypeScript's canonical modifier order.

  • #​115801277af2 Thanks @​ematipico! - Fixed #​5091: Biome no longer moves comments next to the < of a generic, which causes invalid TypeScript syntax:

    - Generic<// a comment+ Generic<+ // a comment
  • #​1157742995d2 Thanks @​ematipico! - Fixed #​4592. Biome no longer crashes while parsing malformed delete expressions.

  • #​1159067963b4 Thanks @​ematipico! - Fixed #​6427 so Grit plugins can use function = ... as a node argument.

  • #​11600a689cb5 Thanks @​ematipico! - Fixed #​6644: noUnusedVariables now recognizes all interface declarations in a TypeScript declaration-merging group when the interface is referenced.

    The following snippet no longer triggers the rule.

    interfaceThings{foo: string;}interfaceThings{bar: string;}exporttypeKey=keyofThings;interfaceThings{baz: string;}
  • #​11591d4a0716 Thanks @​ematipico! - Fixed #​6615. noDuplicateProperties no longer reports declarations nested in block at-rules as duplicates of declarations in their parent block.

  • #​11492f2a07aa Thanks @​santichausis! - Fixed #​11454: noMisplacedAssertion now recognises @fast-check/vitest's test.prop(...) (and .concurrent.prop, .skip.prop, etc.) as a test function, the same way it already recognises test.each. The JS formatter picks up the same recognition, so a curried test.prop(...)(...) call is now formatted with the regular breakable argument layout used for test.each/test.for, instead of the single-line-hugging layout used for plain it/test calls.

    For example, Biome no longer reports the assertion below as misplaced:

    import{fc,test}from"@fast-check/vitest";test.prop([fc.string()])("round-trips",(s)=>{expect(s).toBe(s);});
  • #​1158965742b3 Thanks @​ematipico! - Fixed #​4928: noUnusedVariables no longer reports a value declaration as unused when its merged namespace is referenced.

  • #​11559472dbc2 Thanks @​levrik! - Fixed a false positive in noVueDuplicateKeys where a <script setup> variable initialized from props was reported as a duplicate of the prop it derives from. Biome now exempts any variable whose initializer references props, instead of only recognizing defineProps() and toRefs(props).

    For example, Biome no longer reports foo below as a duplicate key:

    <script setup>import { toRef } from'vue';constprops=defineProps(['foo']);constfoo=toRef(props, 'foo');</script>
  • #​115946586ceb Thanks @​ematipico! - Fixed #​6640. Biome no longer crashes when linting malformed for...of statements.

  • #​1157185b197d Thanks @​ematipico! - Fixed #​10838: useSortedAttributes no longer corrupts JSX attributes when nested JSX elements also require sorting.

  • #​1153397e76c0 Thanks @​ematipico! - Fixed #​11520, where the Biome scanner would start analysing dependencies multiple times, leading to long and unresponsive sessions.

  • #​1156418a0e1f Thanks @​Netail! - Fixed the diagnostic range of noInferrableTypes so it now highlights only the type instead of including the leading : colon, spaces and comments.

  • #​11540124fdaa Thanks @​ematipico! - Fixed #11537: noShorthandPropertyOverrides now compares declarations only within the same block. The rule no longer reports @supports feature queries and correctly checks nested, @keyframes, and @page blocks.

  • #​115327ceb0ee Thanks @​dyc3! - Fixed #​11528: noFloatingPromises no longer reports statement-level await expressions that handle Promise values, including overloaded calls returning Promise aliases. Awaited values that resolve to arrays of Promises remain reported because their element Promises are not handled by await.

  • #​114743c6412e Thanks @​dyc3! - Fixed #​10241. Biome no longer reports unsupported text expression diagnostics for double-curly text in vanilla HTML, and the formatter preserves adjacent curly-brace text.

  • #​115936c7fd27 Thanks @​dyc3! - Added the nursery rule noVueDeprecatedScopedSlots. It reports deprecated $scopedSlots references in Vue templates and component objects, and offers an unsafe replacement with $slots. For example, Biome now reports this.$scopedSlots.default inside a Vue component.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed the formatter crashing on an Astro or Svelte expression spanning several lines in a file with CRLF line endings, such as <p>{a +\r\n b}</p>.

  • #​11581f4e5ebb Thanks @​dyc3! - Added the nursery rule useModernMathApis. The rule reports legacy mathematical patterns that have direct modern Math equivalents.

    Math.sqrt(a*a+b*b);
  • #​11597a20f44a Thanks @​Netail! - Added the nursery rule noBunModules, which forbids the use of Bun builtin modules (e.g. bun:sqlite, bun:ffi).

  • #​115457d54688 Thanks @​dyc3! - Fixed #​11542: Biome now reports HTML comments between Svelte tag attributes as parse errors.

  • #​11582b6611dd Thanks @​ematipico! - Fixed #​3862. Biome now parses legacy Internet Explorer filter and -ms-filter values such as progid:DXImageTransform... and alpha(opacity=40).

  • #​1157565da251 Thanks @​dyc3! - Improved the Tailwind parser's ability to recover from parsing failures. Whitespace now always allows the parser to recover and start parsing a new class.

  • #​115760f78499 Thanks @​ematipico! - Fixed #​3515 and #​10395, where Biome could corrupt Unicode characters while writing source received through standard input to standard output. Characters such as and are now preserved.

  • #​115390fca643 Thanks @​ematipico! - Fixed #​11512, where style/noDescendingSpecificity missed lower-specificity selectors after a later higher-specificity selector with the same tail selector.

  • #​11544040f867 Thanks @​dyc3! - Fixed #​11541: formatting a Svelte render tag followed by an HTML comment no longer duplicates the comment.

     <div>
    {@render children?.()}
    <!-- comment -->
    - <!-- comment -->
    </div>
  • #​11565ee69e0e Thanks @​ematipico! - Fixed #​11525. Now the configuration schema correctly provides auto-completion for linter domains.

  • #​11583b19390c Thanks @​dyc3! - Fixed #​11352: useExplicitLengthCheck no longer reports length-like properties used as value-producing || fallbacks or optional chains, and it no longer offers fixes for value-producing && checks or unsafe negations.

  • #​11562753e955 Thanks @​ematipico! - Fixed an issue where the Biome Language Server would start with logging level set to debug. This would cause logs to grow exponentially in long sessions.

  • #​112177d3ee9c Thanks @​dyc3! - Fixed handling of biome-ignore format suppression comments on TypeScript declared class properties with string literal names.

    classA{declare/* biome-ignore format: exercise suppression checking */'a-b': 0;}
  • #​11497f5d7896 Thanks @​dyc3! - Added the noInvalidFileInputAccept nursery rule. The rule reports invalid literal accept values on file inputs in JSX and HTML, and normalizes common mistakes.

    <inputtype="file"accept="image/jpg"/>
  • #​11345ac58958 Thanks @​jakeleventhal! - Improved type inference performance by avoiding resolution of unused members in object arguments.

  • #​115542d55931 Thanks @​Netail! - Added the new nursery rule useReactNamingConvention, which enforces naming conventions for React values assigned from createContext, useId, and useRef. A value from createContext must be a PascalCase component name ending with Context, a value from useId must be named id or end with Id, and a value from useRef must be named ref or end with Ref.

  • #​114911d6210b Thanks @​dyc3! - Added the nursery rule noUnmodifiedLoopCondition, which reports variables in loop conditions that are never modified in the loop.

    letnode=getNode();while(node){process(node);}

v2.5.11

Compare Source

Patch Changes
  • #​114999743d0c Thanks @​scs0209! - Fixed #​11496: useValidAnchor now treats Astro JSX shorthand attributes like <a {href}> as a valid href.

  • #​1143788f805e Thanks @​Princesseuh! - Fixed #​9944: adjacent elements inside an Astro expression now parse as an implicit fragment instead of raising an error.

    {options.map(() =>
    <div />
    <div />
    )}
  • #​1143788f805e Thanks @​Princesseuh! - Fixed Astro templates rejecting unclosed HTML void elements, such as {cond && <br>}.

  • #​11507e2fc036 Thanks @​dyc3! - Fixed #​11157: noUnusedVariables no longer reports Vue <script setup> bindings used by CSS v-bind() as unused.

  • #​11398afc4615 Thanks @​dyc3! - Fixed #​11389: Files passed through --stdin-file-path now use full HTML support for Astro, Svelte, and Vue when it is enabled.

  • #​11526372cd68 Thanks @​dyc3! - Fixed noVueRefAsOperand to track Vue refs through declaration aliases and toRefs() properties, and to recognize useTemplateRef() results. The rule no longer reports false positives such as plain ref transfers, plain toRefs() property access, defineModel() modifiers, or the supported .effect member as operands.

    The refactor enabling these fixes also improves the performance of the rule.

  • #​11458a7cd286 Thanks @​dyc3! - Fixed #​11436: GritQL snippets such as export { $specifiers } from $source now match named re-exports with aliases, inline type modifiers, and multiple specifiers.

  • #​11515382b15d Thanks @​dyc3! - Fixed #​11390, where noFloatingPromises performed expensive full type inference for calls to non-Promise methods declared on third-party TypeScript classes. The rule now classifies those calls using targeted type information.

  • #​115166f40e82 Thanks @​levrik! - Fixed noVueRefAsOperand so it no longer reports a callback parameter (e.g. from .find(), .map()) as an unwrapped ref value just because it's nested inside a ref(), computed(), or similar call.

    constresult=computed(()=>list.find((item)=>item.label==="a"));

    Previously, item here was incorrectly treated as a ref value because the rule attributed it to the outer computed() call.

  • #​11495496268d Thanks @​Netail! - Fixed useGraphqlNamingConvention so it no longer reports GraphQL enum value definitions with comments & descriptions and now displays a more accurate diagnostic range.

  • #​114076ef52b0 Thanks @​1678092075! - Fixed #​11214: noUnusedVariables no longer reports type parameters declared by non-default function overload signatures that have an implementation.

  • #​113225c353e6 Thanks @​jp-knj! - Added a new nursery rule noAstroSetHtmlDirective, which disallows Astro's set:html directive because untrusted content can introduce cross-site scripting vulnerabilities.

    For example, the following snippet triggers the rule:

    <divset:html={content} />
  • #​1146218883b7 Thanks @​dyc3! - Fixed #​10776: useVueHyphenatedAttributes no longer reports lowercase attribute names containing punctuation, such as pt:header:data-test-id and some_attr.

  • #​114763270ca4 Thanks @​dyc3! - Fixed #​10330: Vue interpolation delimiters now stay attached to whitespace-sensitive element boundaries and adjacent inline siblings, wrapping their expression when needed to fit the configured line width. Interpolations followed by text now also converge after one formatting pass.

    -<v-btn v-if="store.state.user" variant="text" to="/my-rooms"- >{{ $t("nav.my-rooms") }}</v-btn->+<v-btn v-if="store.state.user" variant="text" to="/my-rooms">{{+ $t("nav.my-rooms")+}}</v-btn>
  • #​111913e5367f Thanks @​ematipico! - Added the nursery rule noUndeclaredCustomProperties, which reports references to custom properties that are not defined in available CSS, static HTML-like style attributes, or JSX string style attributes.

    For example, the following snippet triggers the rule:

    a { color:var(--undefined-color); }
  • #​114357754894 Thanks @​levrik! - Fixed: Variables and imports used as custom Vue directives are no longer reported as unused.

    For example:

    <script setup>constvHighlight= {mounted: (element) => {element.style.color="red"; },};</script>
    <template>
    <pv-highlight>Hello</p>
    </template>
  • #​11501e6acded Thanks @​aminya! - Improved the performance of useArraySortCompare by skipping type inference for calls to unrelated methods.

  • #​1146766b282c Thanks @​dyc3! - Fixed #​11464: Biome now parses parenthesized object literals returned from arrow functions when they contain a conditional expression and a nested arrow function.

  • #​11456db9aa2a Thanks @​dyc3! - Fixed #​10278: Marked the fix for noThisInStatic as unsafe by default.

  • #​11502652aedb Thanks @​levrik! - noGlobalAssign no longer reports assignments to a Vue <script setup> binding from a template expression, when the binding's name happens to match a built-in global (e.g. open, parent, top).

    For example, this no longer triggers a diagnostic:

    <script setup>constopen=defineModel();</script>
    <template>
    <button@click="open = !open">Toggle</button>
    </template>

v2.5.10

Compare Source

Patch Changes
  • #​114038f7786f Thanks @​Princesseuh! - Fixed Astro rejecting JavaScript comments between attributes.

    <div /* blockcomment */ class="something"></div>
    <Component /* c */ client:load />
  • #​114038f7786f 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.

  • #​114383133ffa 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>
    <divclass={/* a note */}>x</div>
  • #​114038f7786f Thanks @​Princesseuh! - Fixed #​9165: an empty Astro expression such as <div>{}</div> no longer fails to parse. Astro renders {} as nothing.

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

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

    <>
    <p>a</p>
    </>
  • #​114038f7786f 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---
  • #​114038f7786f 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
    ---
  • #​114038f7786f Thanks @​Princesseuh! - Fixed an Astro frontmatter block ending early on a line that merely starts with a dash.

    -----count;---
  • #​114038f7786f 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.

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

  • #​114038f7786f 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.

  • #​114038f7786f 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.

  • #​114038f7786f 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.

  • #​114038f7786f 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>
  • #​114038f7786f Thanks @​Princesseuh! - Added support for template literal attribute values in Astro, such as <div class=`a ${b} c`>.

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

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

  • #​11431c065f99 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.

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

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

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

  • #​114038f7786f 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.

  • #​114438d45229 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.

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

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

v2.5.9

Compare Source

Patch Changes
  • #​1132141386f3 Thanks @​dyc3! - Fixed #​11315: The CSS parser now recovers at declaration boundaries after bogus declarations, allowing subsequent valid declarations to be parsed.

  • #​1124857b197e Thanks @​yanthomasdev! - Expanded the environment variable metadata used by biome rage to include BIOME_BINARY, BIOME_LOG_FILE, and RUST_BACKTRACE as well as reworded explanations for better readability.

  • #​11377a8798ea Thanks @​Netail! - Added a new nursery rule useNamedLayer which disallows anonymous cascade layers.

    @layer {
    a {
    color: red;
    }
    }
  • #​113276771cf5 Thanks @​dyc3! - The HTML formatter now preserves meaningful blank lines in HTML, including spacing after elements with trailing spaces and blank lines between comment groups.

     <div>
    <!-- first group -->
    +
    <!-- second group -->
    </div>
  • #​10312ba8aa18 Thanks @​dyc3! - Added the nursery rule useTailwindShorthandClasses, which suggests shorter Tailwind utility classes. For example, the rule suggests replacing w-4 h-4 with size-4.

  • #​11333715e0cd Thanks @​kkkhs! - Fixed #​11328: lint/nursery/useExpect now recognizes Vitest Browser Mode expect.element() calls as assertions.

  • #​113439b98211 Thanks @​johncarmack1984! - Fixed #​11311: the CSS parser now accepts Tailwind container-query variant names in @variant, such as @xl and @max-xl. These previously produced a parse error and a noUnknownAtRules diagnostic.

    @variant@xl {
    div {
    background: red;
    }
    }
  • #​112203e8c488 Thanks @​santichausis! - Fixed #​9541: noUndeclaredVariables, noUnusedImports, and noUnusedVariables now correctly recognise exported variables and functions declared in one embedded <script> block as usable from a sibling <script> block, in Svelte's <script module>/<script> pair and Vue's non-setup<script> blocks.

    For example, Biome no longer reports greet as undeclared in the following Svelte component:

    <scriptmodule>exportfunctiongreet() {console.log("Hello!"); }</script>
    <script>greet();</script>
  • #​1130036430eb Thanks @​dyc3! - Fixed the HTML formatter's whitespace handling for marquee, noscript, video, audio, and object elements.

    - <marquee behavior="alternate"> This text will bounce </marquee>+ <marquee behavior="alternate">This text will bounce</marquee>
  • #​112996559e6c Thanks @​jp-knj! - Added the nursery rule useAstroClientOnlyDirectiveValue, which reports Astro client:only directives without an initializer.

    For example, <Component client:only /> triggers the rule.

  • #​113657529811 Thanks @​MHJahanbakhsh! - Fixed #​11229: The useGenericFontNames rule now treats math as a valid generic font family.

  • #​11346674f5f4 Thanks @​Jayllyz! - Fixed #​11335: noComponentHookFactories now reports a use-prefixed variable only when a function is assigned to it directly.

    functionfactory(){constuseColors=true;// no longer reportedconstuseStore=createStore({count: 0});// no longer reportedconstuseData=()=>useState(null);// still reportedreturnuseColors;}
  • #​11334c87c46a Thanks @​zkasuran! - Fixed #​11317: noSvgWithoutTitle no longer reports an svg that uses the boolean shorthand aria-hidden (equivalent to aria-hidden={true} in React).

  • #​1136413853b1 Thanks @​ematipico! - Fixed a bug where useJsxKeyInIterable incorrectly flagged Astro files.

  • #​1132141386f3 Thanks @​dyc3! - Fixed #​11315: Invalid CSS declarations in HTML style attributes now produce parser diagnostics instead of causing a panic.

  • #​1132567c3bf0 Thanks @​dyc3! - Fixed HTML text wrapping to account for the width of an adjacent closing tag, avoiding lines that exceed t

Note

PR body was truncated to here.


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.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@pkg-pr-new

pkg-pr-newBot commented Jun 23, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/@faststats/cli@db02cba

commit: db02cba

@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.1chore(deps): update dependency @biomejs/biome to v2.5.2Jul 1, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from da0f755 to db08b5eCompareJuly 1, 2026 21:38
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.2chore(deps): update dependency @biomejs/biome to v2.5.3Jul 8, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from db08b5e to 062f6f0CompareJuly 8, 2026 08:58
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.3chore(deps): update dependency @biomejs/biome to v2.5.4Jul 15, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch 2 times, most recently from 5f5750b to 02907f1CompareJuly 21, 2026 03:13
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.4chore(deps): update dependency @biomejs/biome to v2.5.5Jul 21, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from 02907f1 to 84f8166CompareJuly 21, 2026 09:52
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from 84f8166 to c72550bCompareJuly 28, 2026 12:37
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.5chore(deps): update dependency @biomejs/biome to v2.5.6Jul 28, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from c72550b to 4cb2285CompareAugust 4, 2026 18:45
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.6chore(deps): update dependency @biomejs/biome to v2.5.7Aug 4, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from 4cb2285 to 1968b9cCompareAugust 11, 2026 22:49
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.7chore(deps): update dependency @biomejs/biome to v2.5.8Aug 11, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from 1968b9c to a608389CompareAugust 18, 2026 02:55
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.8chore(deps): update dependency @biomejs/biome to v2.5.9Aug 18, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from a608389 to dea7b5cCompareAugust 21, 2026 23:10
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.9chore(deps): update dependency @biomejs/biome to v2.5.10Aug 21, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from dea7b5c to efd04a3CompareAugust 28, 2026 01:31
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.10chore(deps): update dependency @biomejs/biome to v2.5.11Aug 28, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from efd04a3 to db02cbaCompareSeptember 3, 2026 18:41
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.11chore(deps): update dependency @biomejs/biome to v2.5.12Sep 3, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore(deps): update dependency @biomejs/biome to v2.5.12 - #18

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/biomejs-biome-2.x
Open

chore(deps): update dependency @biomejs/biome to v2.5.12#18
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/biomejs-biome-2.x

Conversation

@renovate

@renovaterenovateBot commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

PackageChangeAgeConfidence
@biomejs/biome (source)2.5.02.5.12ageconfidence

Release Notes

biomejs/biome (@​biomejs/biome)

v2.5.12

Compare Source

Patch Changes
  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed Astro attribute expressions rejecting TypeScript and JSX syntax that is accepted in text expressions.

    <Componenticon={<Icon />}count={totalasnumber}onSelect={(e:Event) =>e} />
  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed Astro attribute names being split on : and . inside an expression, such as {x && <button x-on:keyup.enter={go} client:load.foo />}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed a bare > in the children of an Astro expression being treated as markup, such as {x && <div>a > b</div>}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed HTML comments inside an Astro expression failing to parse. They are now read as trivia, wherever they appear among the children.

    {x&& <div><!-- first -->text<!-- last --></div>}{cond&& <a></a><!--c--><b></b>}
  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed is:raw children inside an Astro expression being read as JSX, such as {x && <div is:raw>{not js} < & text</div>}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed an apostrophe or quote in the text of a JSX element inside an Astro expression ending the expression early, such as {items.map((i) => <li>it's {i}</li>)}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed the children of a <script> or <style> inside an Astro expression being read as JSX. Their contents are text, so braces and comparisons no longer have to be escaped.

    {cond&& <style>a {color: red}</style>}{cond&& <script>let x = {a: 1};</script>}
  • #​11440b88f1ea Thanks @​Princesseuh! - Added support for template literal attribute values inside an Astro expression, such as {x && <C data-x=`t${x}` />}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed unquoted attribute values being rejected inside an Astro expression, such as {x && <a class=foo maxlength=255 href=/about>go</a>}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed a template literal nested inside ${} breaking the rest of an Astro file, such as const href = `/blog${page === 0 ? '' : `/${page + 1}`}`;.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed a quote inside a regex character class breaking the rest of an Astro file, such as const unsafe = /[/"]/;.

  • #​1150854f3a2e Thanks @​dyc3! - Added the nursery rule useFlatMathMinMax. Because Math.min() and Math.max() accept any number of arguments, the rule reports unnecessary nested calls to the same method:

    Math.max(Math.max(a,b),c);

    The fix flattens this expression to Math.max(a, b, c).

  • #​11585c5c8315 Thanks @​Netail! - Fixed #​11475: noUnresolvedImports no longer reports Bun runtime built-in modules (bun, bun:bundle, bun:ffi, bun:jsc, bun:sqlite, bun:test).

  • #​1136852a57b3 Thanks @​Austin1serb! - Fixed #​6830: Biome now reports a diagnostic for excessively deep syntax instead of overflowing the native stack while releasing the parsed tree.

  • #​115961fc42ed Thanks @​dyc3! - Added the nursery rule noThisOutsideOfClass. The rule reports this outside class members and TypeScript functions with an explicit this parameter.

    functionPerson(name){this.name=name;}
  • #​115552516335 Thanks @​dyc3! - Fixed #​11529, where noFloatingPromises missed unhandled Promise chains when the imported function's module belonged to an import cycle. Cyclic modules now preserve types for exports that do not participate in recursive type dependencies.

  • #​115180fee70c Thanks @​HarperZ9! - Fixed #​11500: the formatter now prints the declare modifier before accessibility modifiers on class properties. private declare readonly name: string is now formatted as declare private readonly name: string, matching Prettier and TypeScript's canonical modifier order.

  • #​115801277af2 Thanks @​ematipico! - Fixed #​5091: Biome no longer moves comments next to the < of a generic, which causes invalid TypeScript syntax:

    - Generic<// a comment+ Generic<+ // a comment
  • #​1157742995d2 Thanks @​ematipico! - Fixed #​4592. Biome no longer crashes while parsing malformed delete expressions.

  • #​1159067963b4 Thanks @​ematipico! - Fixed #​6427 so Grit plugins can use function = ... as a node argument.

  • #​11600a689cb5 Thanks @​ematipico! - Fixed #​6644: noUnusedVariables now recognizes all interface declarations in a TypeScript declaration-merging group when the interface is referenced.

    The following snippet no longer triggers the rule.

    interfaceThings{foo: string;}interfaceThings{bar: string;}exporttypeKey=keyofThings;interfaceThings{baz: string;}
  • #​11591d4a0716 Thanks @​ematipico! - Fixed #​6615. noDuplicateProperties no longer reports declarations nested in block at-rules as duplicates of declarations in their parent block.

  • #​11492f2a07aa Thanks @​santichausis! - Fixed #​11454: noMisplacedAssertion now recognises @fast-check/vitest's test.prop(...) (and .concurrent.prop, .skip.prop, etc.) as a test function, the same way it already recognises test.each. The JS formatter picks up the same recognition, so a curried test.prop(...)(...) call is now formatted with the regular breakable argument layout used for test.each/test.for, instead of the single-line-hugging layout used for plain it/test calls.

    For example, Biome no longer reports the assertion below as misplaced:

    import{fc,test}from"@fast-check/vitest";test.prop([fc.string()])("round-trips",(s)=>{expect(s).toBe(s);});
  • #​1158965742b3 Thanks @​ematipico! - Fixed #​4928: noUnusedVariables no longer reports a value declaration as unused when its merged namespace is referenced.

  • #​11559472dbc2 Thanks @​levrik! - Fixed a false positive in noVueDuplicateKeys where a <script setup> variable initialized from props was reported as a duplicate of the prop it derives from. Biome now exempts any variable whose initializer references props, instead of only recognizing defineProps() and toRefs(props).

    For example, Biome no longer reports foo below as a duplicate key:

    <script setup>import { toRef } from'vue';constprops=defineProps(['foo']);constfoo=toRef(props, 'foo');</script>
  • #​115946586ceb Thanks @​ematipico! - Fixed #​6640. Biome no longer crashes when linting malformed for...of statements.

  • #​1157185b197d Thanks @​ematipico! - Fixed #​10838: useSortedAttributes no longer corrupts JSX attributes when nested JSX elements also require sorting.

  • #​1153397e76c0 Thanks @​ematipico! - Fixed #​11520, where the Biome scanner would start analysing dependencies multiple times, leading to long and unresponsive sessions.

  • #​1156418a0e1f Thanks @​Netail! - Fixed the diagnostic range of noInferrableTypes so it now highlights only the type instead of including the leading : colon, spaces and comments.

  • #​11540124fdaa Thanks @​ematipico! - Fixed #11537: noShorthandPropertyOverrides now compares declarations only within the same block. The rule no longer reports @supports feature queries and correctly checks nested, @keyframes, and @page blocks.

  • #​115327ceb0ee Thanks @​dyc3! - Fixed #​11528: noFloatingPromises no longer reports statement-level await expressions that handle Promise values, including overloaded calls returning Promise aliases. Awaited values that resolve to arrays of Promises remain reported because their element Promises are not handled by await.

  • #​114743c6412e Thanks @​dyc3! - Fixed #​10241. Biome no longer reports unsupported text expression diagnostics for double-curly text in vanilla HTML, and the formatter preserves adjacent curly-brace text.

  • #​115936c7fd27 Thanks @​dyc3! - Added the nursery rule noVueDeprecatedScopedSlots. It reports deprecated $scopedSlots references in Vue templates and component objects, and offers an unsafe replacement with $slots. For example, Biome now reports this.$scopedSlots.default inside a Vue component.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed the formatter crashing on an Astro or Svelte expression spanning several lines in a file with CRLF line endings, such as <p>{a +\r\n b}</p>.

  • #​11581f4e5ebb Thanks @​dyc3! - Added the nursery rule useModernMathApis. The rule reports legacy mathematical patterns that have direct modern Math equivalents.

    Math.sqrt(a*a+b*b);
  • #​11597a20f44a Thanks @​Netail! - Added the nursery rule noBunModules, which forbids the use of Bun builtin modules (e.g. bun:sqlite, bun:ffi).

  • #​115457d54688 Thanks @​dyc3! - Fixed #​11542: Biome now reports HTML comments between Svelte tag attributes as parse errors.

  • #​11582b6611dd Thanks @​ematipico! - Fixed #​3862. Biome now parses legacy Internet Explorer filter and -ms-filter values such as progid:DXImageTransform... and alpha(opacity=40).

  • #​1157565da251 Thanks @​dyc3! - Improved the Tailwind parser's ability to recover from parsing failures. Whitespace now always allows the parser to recover and start parsing a new class.

  • #​115760f78499 Thanks @​ematipico! - Fixed #​3515 and #​10395, where Biome could corrupt Unicode characters while writing source received through standard input to standard output. Characters such as and are now preserved.

  • #​115390fca643 Thanks @​ematipico! - Fixed #​11512, where style/noDescendingSpecificity missed lower-specificity selectors after a later higher-specificity selector with the same tail selector.

  • #​11544040f867 Thanks @​dyc3! - Fixed #​11541: formatting a Svelte render tag followed by an HTML comment no longer duplicates the comment.

     <div>
    {@render children?.()}
    <!-- comment -->
    - <!-- comment -->
    </div>
  • #​11565ee69e0e Thanks @​ematipico! - Fixed #​11525. Now the configuration schema correctly provides auto-completion for linter domains.

  • #​11583b19390c Thanks @​dyc3! - Fixed #​11352: useExplicitLengthCheck no longer reports length-like properties used as value-producing || fallbacks or optional chains, and it no longer offers fixes for value-producing && checks or unsafe negations.

  • #​11562753e955 Thanks @​ematipico! - Fixed an issue where the Biome Language Server would start with logging level set to debug. This would cause logs to grow exponentially in long sessions.

  • #​112177d3ee9c Thanks @​dyc3! - Fixed handling of biome-ignore format suppression comments on TypeScript declared class properties with string literal names.

    classA{declare/* biome-ignore format: exercise suppression checking */'a-b': 0;}
  • #​11497f5d7896 Thanks @​dyc3! - Added the noInvalidFileInputAccept nursery rule. The rule reports invalid literal accept values on file inputs in JSX and HTML, and normalizes common mistakes.

    <inputtype="file"accept="image/jpg"/>
  • #​11345ac58958 Thanks @​jakeleventhal! - Improved type inference performance by avoiding resolution of unused members in object arguments.

  • #​115542d55931 Thanks @​Netail! - Added the new nursery rule useReactNamingConvention, which enforces naming conventions for React values assigned from createContext, useId, and useRef. A value from createContext must be a PascalCase component name ending with Context, a value from useId must be named id or end with Id, and a value from useRef must be named ref or end with Ref.

  • #​114911d6210b Thanks @​dyc3! - Added the nursery rule noUnmodifiedLoopCondition, which reports variables in loop conditions that are never modified in the loop.

    letnode=getNode();while(node){process(node);}

v2.5.11

Compare Source

Patch Changes
  • #​114999743d0c Thanks @​scs0209! - Fixed #​11496: useValidAnchor now treats Astro JSX shorthand attributes like <a {href}> as a valid href.

  • #​1143788f805e Thanks @​Princesseuh! - Fixed #​9944: adjacent elements inside an Astro expression now parse as an implicit fragment instead of raising an error.

    {options.map(() =>
    <div />
    <div />
    )}
  • #​1143788f805e Thanks @​Princesseuh! - Fixed Astro templates rejecting unclosed HTML void elements, such as {cond && <br>}.

  • #​11507e2fc036 Thanks @​dyc3! - Fixed #​11157: noUnusedVariables no longer reports Vue <script setup> bindings used by CSS v-bind() as unused.

  • #​11398afc4615 Thanks @​dyc3! - Fixed #​11389: Files passed through --stdin-file-path now use full HTML support for Astro, Svelte, and Vue when it is enabled.

  • #​11526372cd68 Thanks @​dyc3! - Fixed noVueRefAsOperand to track Vue refs through declaration aliases and toRefs() properties, and to recognize useTemplateRef() results. The rule no longer reports false positives such as plain ref transfers, plain toRefs() property access, defineModel() modifiers, or the supported .effect member as operands.

    The refactor enabling these fixes also improves the performance of the rule.

  • #​11458a7cd286 Thanks @​dyc3! - Fixed #​11436: GritQL snippets such as export { $specifiers } from $source now match named re-exports with aliases, inline type modifiers, and multiple specifiers.

  • #​11515382b15d Thanks @​dyc3! - Fixed #​11390, where noFloatingPromises performed expensive full type inference for calls to non-Promise methods declared on third-party TypeScript classes. The rule now classifies those calls using targeted type information.

  • #​115166f40e82 Thanks @​levrik! - Fixed noVueRefAsOperand so it no longer reports a callback parameter (e.g. from .find(), .map()) as an unwrapped ref value just because it's nested inside a ref(), computed(), or similar call.

    constresult=computed(()=>list.find((item)=>item.label==="a"));

    Previously, item here was incorrectly treated as a ref value because the rule attributed it to the outer computed() call.

  • #​11495496268d Thanks @​Netail! - Fixed useGraphqlNamingConvention so it no longer reports GraphQL enum value definitions with comments & descriptions and now displays a more accurate diagnostic range.

  • #​114076ef52b0 Thanks @​1678092075! - Fixed #​11214: noUnusedVariables no longer reports type parameters declared by non-default function overload signatures that have an implementation.

  • #​113225c353e6 Thanks @​jp-knj! - Added a new nursery rule noAstroSetHtmlDirective, which disallows Astro's set:html directive because untrusted content can introduce cross-site scripting vulnerabilities.

    For example, the following snippet triggers the rule:

    <divset:html={content} />
  • #​1146218883b7 Thanks @​dyc3! - Fixed #​10776: useVueHyphenatedAttributes no longer reports lowercase attribute names containing punctuation, such as pt:header:data-test-id and some_attr.

  • #​114763270ca4 Thanks @​dyc3! - Fixed #​10330: Vue interpolation delimiters now stay attached to whitespace-sensitive element boundaries and adjacent inline siblings, wrapping their expression when needed to fit the configured line width. Interpolations followed by text now also converge after one formatting pass.

    -<v-btn v-if="store.state.user" variant="text" to="/my-rooms"- >{{ $t("nav.my-rooms") }}</v-btn->+<v-btn v-if="store.state.user" variant="text" to="/my-rooms">{{+ $t("nav.my-rooms")+}}</v-btn>
  • #​111913e5367f Thanks @​ematipico! - Added the nursery rule noUndeclaredCustomProperties, which reports references to custom properties that are not defined in available CSS, static HTML-like style attributes, or JSX string style attributes.

    For example, the following snippet triggers the rule:

    a { color:var(--undefined-color); }
  • #​114357754894 Thanks @​levrik! - Fixed: Variables and imports used as custom Vue directives are no longer reported as unused.

    For example:

    <script setup>constvHighlight= {mounted: (element) => {element.style.color="red"; },};</script>
    <template>
    <pv-highlight>Hello</p>
    </template>
  • #​11501e6acded Thanks @​aminya! - Improved the performance of useArraySortCompare by skipping type inference for calls to unrelated methods.

  • #​1146766b282c Thanks @​dyc3! - Fixed #​11464: Biome now parses parenthesized object literals returned from arrow functions when they contain a conditional expression and a nested arrow function.

  • #​11456db9aa2a Thanks @​dyc3! - Fixed #​10278: Marked the fix for noThisInStatic as unsafe by default.

  • #​11502652aedb Thanks @​levrik! - noGlobalAssign no longer reports assignments to a Vue <script setup> binding from a template expression, when the binding's name happens to match a built-in global (e.g. open, parent, top).

    For example, this no longer triggers a diagnostic:

    <script setup>constopen=defineModel();</script>
    <template>
    <button@click="open = !open">Toggle</button>
    </template>

v2.5.10

Compare Source

Patch Changes
  • #​114038f7786f Thanks @​Princesseuh! - Fixed Astro rejecting JavaScript comments between attributes.

    <div /* blockcomment */ class="something"></div>
    <Component /* c */ client:load />
  • #​114038f7786f 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.

  • #​114383133ffa 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>
    <divclass={/* a note */}>x</div>
  • #​114038f7786f Thanks @​Princesseuh! - Fixed #​9165: an empty Astro expression such as <div>{}</div> no longer fails to parse. Astro renders {} as nothing.

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

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

    <>
    <p>a</p>
    </>
  • #​114038f7786f 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---
  • #​114038f7786f 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
    ---
  • #​114038f7786f Thanks @​Princesseuh! - Fixed an Astro frontmatter block ending early on a line that merely starts with a dash.

    -----count;---
  • #​114038f7786f 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.

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

  • #​114038f7786f 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.

  • #​114038f7786f 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.

  • #​114038f7786f 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.

  • #​114038f7786f 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>
  • #​114038f7786f Thanks @​Princesseuh! - Added support for template literal attribute values in Astro, such as <div class=`a ${b} c`>.

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

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

  • #​11431c065f99 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.

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

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

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

  • #​114038f7786f 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.

  • #​114438d45229 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.

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

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

v2.5.9

Compare Source

Patch Changes
  • #​1132141386f3 Thanks @​dyc3! - Fixed #​11315: The CSS parser now recovers at declaration boundaries after bogus declarations, allowing subsequent valid declarations to be parsed.

  • #​1124857b197e Thanks @​yanthomasdev! - Expanded the environment variable metadata used by biome rage to include BIOME_BINARY, BIOME_LOG_FILE, and RUST_BACKTRACE as well as reworded explanations for better readability.

  • #​11377a8798ea Thanks @​Netail! - Added a new nursery rule useNamedLayer which disallows anonymous cascade layers.

    @layer {
    a {
    color: red;
    }
    }
  • #​113276771cf5 Thanks @​dyc3! - The HTML formatter now preserves meaningful blank lines in HTML, including spacing after elements with trailing spaces and blank lines between comment groups.

     <div>
    <!-- first group -->
    +
    <!-- second group -->
    </div>
  • #​10312ba8aa18 Thanks @​dyc3! - Added the nursery rule useTailwindShorthandClasses, which suggests shorter Tailwind utility classes. For example, the rule suggests replacing w-4 h-4 with size-4.

  • #​11333715e0cd Thanks @​kkkhs! - Fixed #​11328: lint/nursery/useExpect now recognizes Vitest Browser Mode expect.element() calls as assertions.

  • #​113439b98211 Thanks @​johncarmack1984! - Fixed #​11311: the CSS parser now accepts Tailwind container-query variant names in @variant, such as @xl and @max-xl. These previously produced a parse error and a noUnknownAtRules diagnostic.

    @variant@xl {
    div {
    background: red;
    }
    }
  • #​112203e8c488 Thanks @​santichausis! - Fixed #​9541: noUndeclaredVariables, noUnusedImports, and noUnusedVariables now correctly recognise exported variables and functions declared in one embedded <script> block as usable from a sibling <script> block, in Svelte's <script module>/<script> pair and Vue's non-setup<script> blocks.

    For example, Biome no longer reports greet as undeclared in the following Svelte component:

    <scriptmodule>exportfunctiongreet() {console.log("Hello!"); }</script>
    <script>greet();</script>
  • #​1130036430eb Thanks @​dyc3! - Fixed the HTML formatter's whitespace handling for marquee, noscript, video, audio, and object elements.

    - <marquee behavior="alternate"> This text will bounce </marquee>+ <marquee behavior="alternate">This text will bounce</marquee>
  • #​112996559e6c Thanks @​jp-knj! - Added the nursery rule useAstroClientOnlyDirectiveValue, which reports Astro client:only directives without an initializer.

    For example, <Component client:only /> triggers the rule.

  • #​113657529811 Thanks @​MHJahanbakhsh! - Fixed #​11229: The useGenericFontNames rule now treats math as a valid generic font family.

  • #​11346674f5f4 Thanks @​Jayllyz! - Fixed #​11335: noComponentHookFactories now reports a use-prefixed variable only when a function is assigned to it directly.

    functionfactory(){constuseColors=true;// no longer reportedconstuseStore=createStore({count: 0});// no longer reportedconstuseData=()=>useState(null);// still reportedreturnuseColors;}
  • #​11334c87c46a Thanks @​zkasuran! - Fixed #​11317: noSvgWithoutTitle no longer reports an svg that uses the boolean shorthand aria-hidden (equivalent to aria-hidden={true} in React).

  • #​1136413853b1 Thanks @​ematipico! - Fixed a bug where useJsxKeyInIterable incorrectly flagged Astro files.

  • #​1132141386f3 Thanks @​dyc3! - Fixed #​11315: Invalid CSS declarations in HTML style attributes now produce parser diagnostics instead of causing a panic.

  • #​1132567c3bf0 Thanks @​dyc3! - Fixed HTML text wrapping to account for the width of an adjacent closing tag, avoiding lines that exceed t

Note

PR body was truncated to here.


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.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@pkg-pr-new

pkg-pr-newBot commented Jun 23, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/@faststats/cli@db02cba

commit: db02cba

@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.1chore(deps): update dependency @biomejs/biome to v2.5.2Jul 1, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from da0f755 to db08b5eCompareJuly 1, 2026 21:38
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.2chore(deps): update dependency @biomejs/biome to v2.5.3Jul 8, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from db08b5e to 062f6f0CompareJuly 8, 2026 08:58
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.3chore(deps): update dependency @biomejs/biome to v2.5.4Jul 15, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch 2 times, most recently from 5f5750b to 02907f1CompareJuly 21, 2026 03:13
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.4chore(deps): update dependency @biomejs/biome to v2.5.5Jul 21, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from 02907f1 to 84f8166CompareJuly 21, 2026 09:52
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from 84f8166 to c72550bCompareJuly 28, 2026 12:37
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.5chore(deps): update dependency @biomejs/biome to v2.5.6Jul 28, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from c72550b to 4cb2285CompareAugust 4, 2026 18:45
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.6chore(deps): update dependency @biomejs/biome to v2.5.7Aug 4, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from 4cb2285 to 1968b9cCompareAugust 11, 2026 22:49
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.7chore(deps): update dependency @biomejs/biome to v2.5.8Aug 11, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from 1968b9c to a608389CompareAugust 18, 2026 02:55
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.8chore(deps): update dependency @biomejs/biome to v2.5.9Aug 18, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from a608389 to dea7b5cCompareAugust 21, 2026 23:10
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.9chore(deps): update dependency @biomejs/biome to v2.5.10Aug 21, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from dea7b5c to efd04a3CompareAugust 28, 2026 01:31
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.10chore(deps): update dependency @biomejs/biome to v2.5.11Aug 28, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from efd04a3 to db02cbaCompareSeptember 3, 2026 18:41
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.11chore(deps): update dependency @biomejs/biome to v2.5.12Sep 3, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

chore(deps): update dependency @biomejs/biome to v2.5.12 - #18

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/biomejs-biome-2.x
Open

chore(deps): update dependency @biomejs/biome to v2.5.12#18
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/biomejs-biome-2.x

Conversation

@renovate

@renovaterenovateBot commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

PackageChangeAgeConfidence
@biomejs/biome (source)2.5.02.5.12ageconfidence

Release Notes

biomejs/biome (@​biomejs/biome)

v2.5.12

Compare Source

Patch Changes
  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed Astro attribute expressions rejecting TypeScript and JSX syntax that is accepted in text expressions.

    <Componenticon={<Icon />}count={totalasnumber}onSelect={(e:Event) =>e} />
  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed Astro attribute names being split on : and . inside an expression, such as {x && <button x-on:keyup.enter={go} client:load.foo />}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed a bare > in the children of an Astro expression being treated as markup, such as {x && <div>a > b</div>}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed HTML comments inside an Astro expression failing to parse. They are now read as trivia, wherever they appear among the children.

    {x&& <div><!-- first -->text<!-- last --></div>}{cond&& <a></a><!--c--><b></b>}
  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed is:raw children inside an Astro expression being read as JSX, such as {x && <div is:raw>{not js} < & text</div>}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed an apostrophe or quote in the text of a JSX element inside an Astro expression ending the expression early, such as {items.map((i) => <li>it's {i}</li>)}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed the children of a <script> or <style> inside an Astro expression being read as JSX. Their contents are text, so braces and comparisons no longer have to be escaped.

    {cond&& <style>a {color: red}</style>}{cond&& <script>let x = {a: 1};</script>}
  • #​11440b88f1ea Thanks @​Princesseuh! - Added support for template literal attribute values inside an Astro expression, such as {x && <C data-x=`t${x}` />}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed unquoted attribute values being rejected inside an Astro expression, such as {x && <a class=foo maxlength=255 href=/about>go</a>}.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed a template literal nested inside ${} breaking the rest of an Astro file, such as const href = `/blog${page === 0 ? '' : `/${page + 1}`}`;.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed a quote inside a regex character class breaking the rest of an Astro file, such as const unsafe = /[/"]/;.

  • #​1150854f3a2e Thanks @​dyc3! - Added the nursery rule useFlatMathMinMax. Because Math.min() and Math.max() accept any number of arguments, the rule reports unnecessary nested calls to the same method:

    Math.max(Math.max(a,b),c);

    The fix flattens this expression to Math.max(a, b, c).

  • #​11585c5c8315 Thanks @​Netail! - Fixed #​11475: noUnresolvedImports no longer reports Bun runtime built-in modules (bun, bun:bundle, bun:ffi, bun:jsc, bun:sqlite, bun:test).

  • #​1136852a57b3 Thanks @​Austin1serb! - Fixed #​6830: Biome now reports a diagnostic for excessively deep syntax instead of overflowing the native stack while releasing the parsed tree.

  • #​115961fc42ed Thanks @​dyc3! - Added the nursery rule noThisOutsideOfClass. The rule reports this outside class members and TypeScript functions with an explicit this parameter.

    functionPerson(name){this.name=name;}
  • #​115552516335 Thanks @​dyc3! - Fixed #​11529, where noFloatingPromises missed unhandled Promise chains when the imported function's module belonged to an import cycle. Cyclic modules now preserve types for exports that do not participate in recursive type dependencies.

  • #​115180fee70c Thanks @​HarperZ9! - Fixed #​11500: the formatter now prints the declare modifier before accessibility modifiers on class properties. private declare readonly name: string is now formatted as declare private readonly name: string, matching Prettier and TypeScript's canonical modifier order.

  • #​115801277af2 Thanks @​ematipico! - Fixed #​5091: Biome no longer moves comments next to the < of a generic, which causes invalid TypeScript syntax:

    - Generic<// a comment+ Generic<+ // a comment
  • #​1157742995d2 Thanks @​ematipico! - Fixed #​4592. Biome no longer crashes while parsing malformed delete expressions.

  • #​1159067963b4 Thanks @​ematipico! - Fixed #​6427 so Grit plugins can use function = ... as a node argument.

  • #​11600a689cb5 Thanks @​ematipico! - Fixed #​6644: noUnusedVariables now recognizes all interface declarations in a TypeScript declaration-merging group when the interface is referenced.

    The following snippet no longer triggers the rule.

    interfaceThings{foo: string;}interfaceThings{bar: string;}exporttypeKey=keyofThings;interfaceThings{baz: string;}
  • #​11591d4a0716 Thanks @​ematipico! - Fixed #​6615. noDuplicateProperties no longer reports declarations nested in block at-rules as duplicates of declarations in their parent block.

  • #​11492f2a07aa Thanks @​santichausis! - Fixed #​11454: noMisplacedAssertion now recognises @fast-check/vitest's test.prop(...) (and .concurrent.prop, .skip.prop, etc.) as a test function, the same way it already recognises test.each. The JS formatter picks up the same recognition, so a curried test.prop(...)(...) call is now formatted with the regular breakable argument layout used for test.each/test.for, instead of the single-line-hugging layout used for plain it/test calls.

    For example, Biome no longer reports the assertion below as misplaced:

    import{fc,test}from"@fast-check/vitest";test.prop([fc.string()])("round-trips",(s)=>{expect(s).toBe(s);});
  • #​1158965742b3 Thanks @​ematipico! - Fixed #​4928: noUnusedVariables no longer reports a value declaration as unused when its merged namespace is referenced.

  • #​11559472dbc2 Thanks @​levrik! - Fixed a false positive in noVueDuplicateKeys where a <script setup> variable initialized from props was reported as a duplicate of the prop it derives from. Biome now exempts any variable whose initializer references props, instead of only recognizing defineProps() and toRefs(props).

    For example, Biome no longer reports foo below as a duplicate key:

    <script setup>import { toRef } from'vue';constprops=defineProps(['foo']);constfoo=toRef(props, 'foo');</script>
  • #​115946586ceb Thanks @​ematipico! - Fixed #​6640. Biome no longer crashes when linting malformed for...of statements.

  • #​1157185b197d Thanks @​ematipico! - Fixed #​10838: useSortedAttributes no longer corrupts JSX attributes when nested JSX elements also require sorting.

  • #​1153397e76c0 Thanks @​ematipico! - Fixed #​11520, where the Biome scanner would start analysing dependencies multiple times, leading to long and unresponsive sessions.

  • #​1156418a0e1f Thanks @​Netail! - Fixed the diagnostic range of noInferrableTypes so it now highlights only the type instead of including the leading : colon, spaces and comments.

  • #​11540124fdaa Thanks @​ematipico! - Fixed #11537: noShorthandPropertyOverrides now compares declarations only within the same block. The rule no longer reports @supports feature queries and correctly checks nested, @keyframes, and @page blocks.

  • #​115327ceb0ee Thanks @​dyc3! - Fixed #​11528: noFloatingPromises no longer reports statement-level await expressions that handle Promise values, including overloaded calls returning Promise aliases. Awaited values that resolve to arrays of Promises remain reported because their element Promises are not handled by await.

  • #​114743c6412e Thanks @​dyc3! - Fixed #​10241. Biome no longer reports unsupported text expression diagnostics for double-curly text in vanilla HTML, and the formatter preserves adjacent curly-brace text.

  • #​115936c7fd27 Thanks @​dyc3! - Added the nursery rule noVueDeprecatedScopedSlots. It reports deprecated $scopedSlots references in Vue templates and component objects, and offers an unsafe replacement with $slots. For example, Biome now reports this.$scopedSlots.default inside a Vue component.

  • #​11440b88f1ea Thanks @​Princesseuh! - Fixed the formatter crashing on an Astro or Svelte expression spanning several lines in a file with CRLF line endings, such as <p>{a +\r\n b}</p>.

  • #​11581f4e5ebb Thanks @​dyc3! - Added the nursery rule useModernMathApis. The rule reports legacy mathematical patterns that have direct modern Math equivalents.

    Math.sqrt(a*a+b*b);
  • #​11597a20f44a Thanks @​Netail! - Added the nursery rule noBunModules, which forbids the use of Bun builtin modules (e.g. bun:sqlite, bun:ffi).

  • #​115457d54688 Thanks @​dyc3! - Fixed #​11542: Biome now reports HTML comments between Svelte tag attributes as parse errors.

  • #​11582b6611dd Thanks @​ematipico! - Fixed #​3862. Biome now parses legacy Internet Explorer filter and -ms-filter values such as progid:DXImageTransform... and alpha(opacity=40).

  • #​1157565da251 Thanks @​dyc3! - Improved the Tailwind parser's ability to recover from parsing failures. Whitespace now always allows the parser to recover and start parsing a new class.

  • #​115760f78499 Thanks @​ematipico! - Fixed #​3515 and #​10395, where Biome could corrupt Unicode characters while writing source received through standard input to standard output. Characters such as and are now preserved.

  • #​115390fca643 Thanks @​ematipico! - Fixed #​11512, where style/noDescendingSpecificity missed lower-specificity selectors after a later higher-specificity selector with the same tail selector.

  • #​11544040f867 Thanks @​dyc3! - Fixed #​11541: formatting a Svelte render tag followed by an HTML comment no longer duplicates the comment.

     <div>
    {@render children?.()}
    <!-- comment -->
    - <!-- comment -->
    </div>
  • #​11565ee69e0e Thanks @​ematipico! - Fixed #​11525. Now the configuration schema correctly provides auto-completion for linter domains.

  • #​11583b19390c Thanks @​dyc3! - Fixed #​11352: useExplicitLengthCheck no longer reports length-like properties used as value-producing || fallbacks or optional chains, and it no longer offers fixes for value-producing && checks or unsafe negations.

  • #​11562753e955 Thanks @​ematipico! - Fixed an issue where the Biome Language Server would start with logging level set to debug. This would cause logs to grow exponentially in long sessions.

  • #​112177d3ee9c Thanks @​dyc3! - Fixed handling of biome-ignore format suppression comments on TypeScript declared class properties with string literal names.

    classA{declare/* biome-ignore format: exercise suppression checking */'a-b': 0;}
  • #​11497f5d7896 Thanks @​dyc3! - Added the noInvalidFileInputAccept nursery rule. The rule reports invalid literal accept values on file inputs in JSX and HTML, and normalizes common mistakes.

    <inputtype="file"accept="image/jpg"/>
  • #​11345ac58958 Thanks @​jakeleventhal! - Improved type inference performance by avoiding resolution of unused members in object arguments.

  • #​115542d55931 Thanks @​Netail! - Added the new nursery rule useReactNamingConvention, which enforces naming conventions for React values assigned from createContext, useId, and useRef. A value from createContext must be a PascalCase component name ending with Context, a value from useId must be named id or end with Id, and a value from useRef must be named ref or end with Ref.

  • #​114911d6210b Thanks @​dyc3! - Added the nursery rule noUnmodifiedLoopCondition, which reports variables in loop conditions that are never modified in the loop.

    letnode=getNode();while(node){process(node);}

v2.5.11

Compare Source

Patch Changes
  • #​114999743d0c Thanks @​scs0209! - Fixed #​11496: useValidAnchor now treats Astro JSX shorthand attributes like <a {href}> as a valid href.

  • #​1143788f805e Thanks @​Princesseuh! - Fixed #​9944: adjacent elements inside an Astro expression now parse as an implicit fragment instead of raising an error.

    {options.map(() =>
    <div />
    <div />
    )}
  • #​1143788f805e Thanks @​Princesseuh! - Fixed Astro templates rejecting unclosed HTML void elements, such as {cond && <br>}.

  • #​11507e2fc036 Thanks @​dyc3! - Fixed #​11157: noUnusedVariables no longer reports Vue <script setup> bindings used by CSS v-bind() as unused.

  • #​11398afc4615 Thanks @​dyc3! - Fixed #​11389: Files passed through --stdin-file-path now use full HTML support for Astro, Svelte, and Vue when it is enabled.

  • #​11526372cd68 Thanks @​dyc3! - Fixed noVueRefAsOperand to track Vue refs through declaration aliases and toRefs() properties, and to recognize useTemplateRef() results. The rule no longer reports false positives such as plain ref transfers, plain toRefs() property access, defineModel() modifiers, or the supported .effect member as operands.

    The refactor enabling these fixes also improves the performance of the rule.

  • #​11458a7cd286 Thanks @​dyc3! - Fixed #​11436: GritQL snippets such as export { $specifiers } from $source now match named re-exports with aliases, inline type modifiers, and multiple specifiers.

  • #​11515382b15d Thanks @​dyc3! - Fixed #​11390, where noFloatingPromises performed expensive full type inference for calls to non-Promise methods declared on third-party TypeScript classes. The rule now classifies those calls using targeted type information.

  • #​115166f40e82 Thanks @​levrik! - Fixed noVueRefAsOperand so it no longer reports a callback parameter (e.g. from .find(), .map()) as an unwrapped ref value just because it's nested inside a ref(), computed(), or similar call.

    constresult=computed(()=>list.find((item)=>item.label==="a"));

    Previously, item here was incorrectly treated as a ref value because the rule attributed it to the outer computed() call.

  • #​11495496268d Thanks @​Netail! - Fixed useGraphqlNamingConvention so it no longer reports GraphQL enum value definitions with comments & descriptions and now displays a more accurate diagnostic range.

  • #​114076ef52b0 Thanks @​1678092075! - Fixed #​11214: noUnusedVariables no longer reports type parameters declared by non-default function overload signatures that have an implementation.

  • #​113225c353e6 Thanks @​jp-knj! - Added a new nursery rule noAstroSetHtmlDirective, which disallows Astro's set:html directive because untrusted content can introduce cross-site scripting vulnerabilities.

    For example, the following snippet triggers the rule:

    <divset:html={content} />
  • #​1146218883b7 Thanks @​dyc3! - Fixed #​10776: useVueHyphenatedAttributes no longer reports lowercase attribute names containing punctuation, such as pt:header:data-test-id and some_attr.

  • #​114763270ca4 Thanks @​dyc3! - Fixed #​10330: Vue interpolation delimiters now stay attached to whitespace-sensitive element boundaries and adjacent inline siblings, wrapping their expression when needed to fit the configured line width. Interpolations followed by text now also converge after one formatting pass.

    -<v-btn v-if="store.state.user" variant="text" to="/my-rooms"- >{{ $t("nav.my-rooms") }}</v-btn->+<v-btn v-if="store.state.user" variant="text" to="/my-rooms">{{+ $t("nav.my-rooms")+}}</v-btn>
  • #​111913e5367f Thanks @​ematipico! - Added the nursery rule noUndeclaredCustomProperties, which reports references to custom properties that are not defined in available CSS, static HTML-like style attributes, or JSX string style attributes.

    For example, the following snippet triggers the rule:

    a { color:var(--undefined-color); }
  • #​114357754894 Thanks @​levrik! - Fixed: Variables and imports used as custom Vue directives are no longer reported as unused.

    For example:

    <script setup>constvHighlight= {mounted: (element) => {element.style.color="red"; },};</script>
    <template>
    <pv-highlight>Hello</p>
    </template>
  • #​11501e6acded Thanks @​aminya! - Improved the performance of useArraySortCompare by skipping type inference for calls to unrelated methods.

  • #​1146766b282c Thanks @​dyc3! - Fixed #​11464: Biome now parses parenthesized object literals returned from arrow functions when they contain a conditional expression and a nested arrow function.

  • #​11456db9aa2a Thanks @​dyc3! - Fixed #​10278: Marked the fix for noThisInStatic as unsafe by default.

  • #​11502652aedb Thanks @​levrik! - noGlobalAssign no longer reports assignments to a Vue <script setup> binding from a template expression, when the binding's name happens to match a built-in global (e.g. open, parent, top).

    For example, this no longer triggers a diagnostic:

    <script setup>constopen=defineModel();</script>
    <template>
    <button@click="open = !open">Toggle</button>
    </template>

v2.5.10

Compare Source

Patch Changes
  • #​114038f7786f Thanks @​Princesseuh! - Fixed Astro rejecting JavaScript comments between attributes.

    <div /* blockcomment */ class="something"></div>
    <Component /* c */ client:load />
  • #​114038f7786f 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.

  • #​114383133ffa 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>
    <divclass={/* a note */}>x</div>
  • #​114038f7786f Thanks @​Princesseuh! - Fixed #​9165: an empty Astro expression such as <div>{}</div> no longer fails to parse. Astro renders {} as nothing.

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

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

    <>
    <p>a</p>
    </>
  • #​114038f7786f 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---
  • #​114038f7786f 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
    ---
  • #​114038f7786f Thanks @​Princesseuh! - Fixed an Astro frontmatter block ending early on a line that merely starts with a dash.

    -----count;---
  • #​114038f7786f 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.

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

  • #​114038f7786f 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.

  • #​114038f7786f 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.

  • #​114038f7786f 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.

  • #​114038f7786f 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>
  • #​114038f7786f Thanks @​Princesseuh! - Added support for template literal attribute values in Astro, such as <div class=`a ${b} c`>.

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

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

  • #​11431c065f99 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.

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

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

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

  • #​114038f7786f 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.

  • #​114438d45229 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.

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

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

v2.5.9

Compare Source

Patch Changes
  • #​1132141386f3 Thanks @​dyc3! - Fixed #​11315: The CSS parser now recovers at declaration boundaries after bogus declarations, allowing subsequent valid declarations to be parsed.

  • #​1124857b197e Thanks @​yanthomasdev! - Expanded the environment variable metadata used by biome rage to include BIOME_BINARY, BIOME_LOG_FILE, and RUST_BACKTRACE as well as reworded explanations for better readability.

  • #​11377a8798ea Thanks @​Netail! - Added a new nursery rule useNamedLayer which disallows anonymous cascade layers.

    @layer {
    a {
    color: red;
    }
    }
  • #​113276771cf5 Thanks @​dyc3! - The HTML formatter now preserves meaningful blank lines in HTML, including spacing after elements with trailing spaces and blank lines between comment groups.

     <div>
    <!-- first group -->
    +
    <!-- second group -->
    </div>
  • #​10312ba8aa18 Thanks @​dyc3! - Added the nursery rule useTailwindShorthandClasses, which suggests shorter Tailwind utility classes. For example, the rule suggests replacing w-4 h-4 with size-4.

  • #​11333715e0cd Thanks @​kkkhs! - Fixed #​11328: lint/nursery/useExpect now recognizes Vitest Browser Mode expect.element() calls as assertions.

  • #​113439b98211 Thanks @​johncarmack1984! - Fixed #​11311: the CSS parser now accepts Tailwind container-query variant names in @variant, such as @xl and @max-xl. These previously produced a parse error and a noUnknownAtRules diagnostic.

    @variant@xl {
    div {
    background: red;
    }
    }
  • #​112203e8c488 Thanks @​santichausis! - Fixed #​9541: noUndeclaredVariables, noUnusedImports, and noUnusedVariables now correctly recognise exported variables and functions declared in one embedded <script> block as usable from a sibling <script> block, in Svelte's <script module>/<script> pair and Vue's non-setup<script> blocks.

    For example, Biome no longer reports greet as undeclared in the following Svelte component:

    <scriptmodule>exportfunctiongreet() {console.log("Hello!"); }</script>
    <script>greet();</script>
  • #​1130036430eb Thanks @​dyc3! - Fixed the HTML formatter's whitespace handling for marquee, noscript, video, audio, and object elements.

    - <marquee behavior="alternate"> This text will bounce </marquee>+ <marquee behavior="alternate">This text will bounce</marquee>
  • #​112996559e6c Thanks @​jp-knj! - Added the nursery rule useAstroClientOnlyDirectiveValue, which reports Astro client:only directives without an initializer.

    For example, <Component client:only /> triggers the rule.

  • #​113657529811 Thanks @​MHJahanbakhsh! - Fixed #​11229: The useGenericFontNames rule now treats math as a valid generic font family.

  • #​11346674f5f4 Thanks @​Jayllyz! - Fixed #​11335: noComponentHookFactories now reports a use-prefixed variable only when a function is assigned to it directly.

    functionfactory(){constuseColors=true;// no longer reportedconstuseStore=createStore({count: 0});// no longer reportedconstuseData=()=>useState(null);// still reportedreturnuseColors;}
  • #​11334c87c46a Thanks @​zkasuran! - Fixed #​11317: noSvgWithoutTitle no longer reports an svg that uses the boolean shorthand aria-hidden (equivalent to aria-hidden={true} in React).

  • #​1136413853b1 Thanks @​ematipico! - Fixed a bug where useJsxKeyInIterable incorrectly flagged Astro files.

  • #​1132141386f3 Thanks @​dyc3! - Fixed #​11315: Invalid CSS declarations in HTML style attributes now produce parser diagnostics instead of causing a panic.

  • #​1132567c3bf0 Thanks @​dyc3! - Fixed HTML text wrapping to account for the width of an adjacent closing tag, avoiding lines that exceed t

Note

PR body was truncated to here.


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.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@pkg-pr-new

pkg-pr-newBot commented Jun 23, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/@faststats/cli@db02cba

commit: db02cba

@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.1chore(deps): update dependency @biomejs/biome to v2.5.2Jul 1, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from da0f755 to db08b5eCompareJuly 1, 2026 21:38
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.2chore(deps): update dependency @biomejs/biome to v2.5.3Jul 8, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from db08b5e to 062f6f0CompareJuly 8, 2026 08:58
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.3chore(deps): update dependency @biomejs/biome to v2.5.4Jul 15, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch 2 times, most recently from 5f5750b to 02907f1CompareJuly 21, 2026 03:13
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.4chore(deps): update dependency @biomejs/biome to v2.5.5Jul 21, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from 02907f1 to 84f8166CompareJuly 21, 2026 09:52
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from 84f8166 to c72550bCompareJuly 28, 2026 12:37
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.5chore(deps): update dependency @biomejs/biome to v2.5.6Jul 28, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from c72550b to 4cb2285CompareAugust 4, 2026 18:45
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.6chore(deps): update dependency @biomejs/biome to v2.5.7Aug 4, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from 4cb2285 to 1968b9cCompareAugust 11, 2026 22:49
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.7chore(deps): update dependency @biomejs/biome to v2.5.8Aug 11, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from 1968b9c to a608389CompareAugust 18, 2026 02:55
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.8chore(deps): update dependency @biomejs/biome to v2.5.9Aug 18, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from a608389 to dea7b5cCompareAugust 21, 2026 23:10
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.9chore(deps): update dependency @biomejs/biome to v2.5.10Aug 21, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from dea7b5c to efd04a3CompareAugust 28, 2026 01:31
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.10chore(deps): update dependency @biomejs/biome to v2.5.11Aug 28, 2026
@renovate
renovateBotforce-pushed the renovate/biomejs-biome-2.x branch from efd04a3 to db02cbaCompareSeptember 3, 2026 18:41
@renovaterenovateBot changed the title chore(deps): update dependency @biomejs/biome to v2.5.11chore(deps): update dependency @biomejs/biome to v2.5.12Sep 3, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants