Skip to content

fix(deps): update all non-major dependencies - #39

Open
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/all-minor-patch
Open

renovate[bot] wants to merge 1 commit into
masterfrom
renovate/all-minor-patch

Conversation

@renovate

@renovate renovate Bot commented Sep 5, 2026 •

Copy link
Copy Markdown
Contributor

Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
@biomejs/biome (source) 2.3.10 → 2.6.4 age confidence
react-icons ~5.5.0 → ~5.7.0 age confidence

Release Notes

biomejs/biome (@​biomejs/biome)

v2.6.4

Compare Source

Patch Changes
  • #​12261 19fbfb2 Thanks @​dyc3! - Added the new nursery rule noConsoleSpaces, which reports a leading or trailing space in a console.log(), console.debug(), console.info(), console.warn(), or console.error() argument that sits next to another argument. These methods already put a space between arguments, so such a space prints twice.

    console.log("abc ", "def");
  • #​12469 cd716d3 Thanks @​dyc3! - Added the new nursery rule noMagicArrayFlatDepth, which reports number literals other than 1 passed as the depth of Array.prototype.flat() unless a comment inside the parentheses explains them.

    const items = array.flat(2);
  • #​12470 92c9e81 Thanks @​dyc3! - Added the nursery rule noNull, which reports uses of the null literal and suggests undefined instead. Strict comparisons such as foo === null are allowed.

    let foo = null;
  • #​12483 9bd3527 Thanks @​dyc3! - Added the nursery rule noReturnArrayPush, which reports code that uses the return value of push() or unshift(). These methods return the new length of the array, not the added item or the array.

    function add(item) {
      return items.push(item);
    }
  • #​12477 a384892 Thanks @​dyc3! - Added the nursery rule noUnreadableIife, which reports arrow functions that are called right where they are defined and whose body is wrapped in parentheses.

    const foo = (bar => (bar ? bar.baz : baz))(getBar());
  • #​12447 0a963e4 Thanks @​dyc3! - Added the nursery rule noUselessRecursion, which reports functions that return a call to themselves when a loop can do the same work. Too many nested calls can crash the program with a stack overflow error.

    function findRoot(node) {
        if (node.parent) {
            return findRoot(node.parent);
        }
        return node;
    }
  • #​12554 2eddda9 Thanks @​dyc3! - Added the nursery rule noVueComputedPropertiesInData, which reports computed properties used inside the data function of a Vue component. Vue runs data before it sets up computed properties, so the value read there is undefined.

    <script>
    export default {
      data() {
        return { total: this.doubled };
      },
      computed: {
        doubled() {
          return 2;
        },
      },
    };
    </script>
  • #​12586 824df15 Thanks @​dyc3! - Added the nursery rule noVueDeprecatedDeleteSet, which reports calls to the $set and $delete functions, Vue.set and Vue.delete, and set and del imported from vue. Vue 3 removed these functions, so calling them throws an error.

    <script>
    export default {
      mounted() {
        this.$set(this.user, "name", "Alice");
      },
    };
    </script>
  • #​12648 6fc1a51 Thanks @​dyc3! - Added the nursery rule noVueDeprecatedRouterLinkTagProp, which disallows the tag prop on RouterLink. Vue Router 4 ignores this prop, so the link still renders as an <a> element.

    <template>
      <RouterLink tag="li" to="/">Home</RouterLink>
    </template>
  • #​12631 de1188f Thanks @​dyc3! - Added the new nursery rule noVueDeprecatedScopeAttribute, which reports the scope attribute on <template> elements in Vue files. Vue no longer supports this attribute, so use v-slot to receive slot props instead.

    <template>
      <ListComponent>
        <template scope="props">{{ props.title }}</template>
      </ListComponent>
    </template>
  • #​12562 5d7553b Thanks @​dyc3! - Added the new nursery rule noVueMultipleSlotArgs, which disallows passing more than one argument to a Vue slot from a render function. Slot content written in a template receives only the first argument.

    <script>
    export default {
      render() {
        return this.$slots.default(item, index); // reported
      },
    };
    </script>
  • #​12513 2e520d8 Thanks @​dyc3! - Added the nursery rule noVueMutatingProps, which reports code that changes the props of a Vue component, in the script or in the template. Props belong to the parent component, so the child should emit an event or copy the value instead.

    <script setup>
    const props = defineProps({ items: Array });
    
    props.items.push("new item");
    </script>
  • #​12567 144b786 Thanks @​dyc3! - Added the nursery rule noVueSideEffectsInComputed, which reports Vue computed properties that change state. Vue decides when to run a computed property, so changes made inside one happen at unpredictable times.

    <script setup>
    import { computed, ref } from "vue";
    
    const items = ref([]);
    // `reverse()` changes `items.value` in place.
    const reversedItems = computed(() => items.value.reverse());
    </script>
  • #​12603 861b288 Thanks @​dyc3! - Added the new nursery rule noVueUnusedRefs, which reports template refs in Vue components that nothing reads through $refs, useTemplateRef(), or a variable of the same name in <script setup>. The rule needs html.experimentalFullSupportEnabled to be true.

    <template>
      <input ref="input" />
    </template>
  • #​12285 68770e0 Thanks @​dyc3! - Added the new nursery rule noYamlBooleanKeys, which disallows boolean values as keys in YAML. For example, the following key is a boolean instead of text, so it is reported:

    true: enabled
  • #​12338 f46411b Thanks @​dyc3! - Added the nursery rule useSvelteEventDispatcherTypes, which reports createEventDispatcher() calls that don't declare the types of their events in Svelte components written in TypeScript.

    The rule accepts a call that declares its events:

    <script lang="ts">
      import { createEventDispatcher } from "svelte";
    
      const dispatch = createEventDispatcher<{ save: string }>();
    </script>
  • #​12615 ade9845 Thanks @​dyc3! - Added the nursery rule useVueDefineOptions, which reports the default export of a plain <script> block in Vue components that also use <script setup>, and suggests setting those options with defineOptions() instead.

    <script>
    export default { name: "MyComponent" }; // reported
    </script>
    
    <script setup>
    const props = defineProps(["title"]);
    </script>
  • #​12514 e74b4dc Thanks @​dyc3! - Added the nursery rule useVueDefinePropsDestructuring, which requires destructuring the props returned by defineProps() in Vue <script setup> blocks. It also reports withDefaults(), because destructured props can set their default values directly.

    <script setup lang="ts">
    const props = defineProps<{ foo?: string }>();
    </script>
  • #​12559 94985ba Thanks @​dyc3! - Added the nursery rule useVueTemplateRef, which requires useTemplateRef() instead of ref() or shallowRef() to access elements of the template in <script setup>.

    <template>
      <input ref="input" />
    </template>
    
    <script setup>
    import { ref } from "vue";
    
    const input = ref(); // reported
    </script>
  • #​12512 6be5078 Thanks @​dyc3! - Added the nursery rule useVueTypedProps, which reports Vue props declared without a type, in the props option, defineProps(), or defineModel(). Without a type, Vue accepts any value for the prop and can't warn when a component receives the wrong kind of value.

    <script setup>
    defineProps(["title"]);
    </script>
  • #​12653 f307633 Thanks @​dyc3! - Added the nursery rule useVueVModel, which reports a prop binding on a Vue component paired with an update: listener that only writes the new value back, and suggests v-model instead.

    <template>
      <MyComponent :title="title" @update:title="title = $event" />
    </template>
  • #​12591 a810209 Thanks @​dyc3! - Added the nursery rule useVueValidDefineEmits, which enforces valid usage of Vue's defineEmits macro in <script setup>.

    For example, the following code is now reported, because defineEmits declares its events with both a type and an argument:

    <script setup lang="ts">
    const emit = defineEmits<(e: "notify") => void>(["submit"]);
    </script>
  • #​12614 9308110 Thanks @​dyc3! - Added the nursery rule useVueValidDefineProps, which reports defineProps() calls that Vue can't compile or that declare props incorrectly. For example, it reports a component that calls defineProps() twice, or whose defineProps() argument uses a variable declared in <script setup>:

    <script setup>
    const definition = { msg: String };
    defineProps(definition);
    </script>
  • #​12570 222a230 Thanks @​dyc3! - Added the nursery rule useVueValidVIs, which reports v-is directives that have an argument or modifiers, have no value, or are used on a component instead of a native HTML element.

    For example, the following v-is directive has no value:

    <template>
      <tr v-is></tr>
    </template>
  • #​12521 4010bb7 Thanks @​dyc3! - Added the nursery rule useVueValidVMemo, which reports invalid v-memo directives in Vue templates. A v-memo directive must have an array value, can't have an argument or modifiers, and doesn't work inside an element with v-for.

    For example, the following value is an object instead of an array:

    <template>
      <div v-memo="{ id }"></div>
    </template>
  • #​12597 aff42a7 Thanks @​dyc3! - Added the nursery rule useVueValidVModel, which reports v-model directives that Vue can't use: on unsupported elements or file inputs, with an argument or unknown modifier on a native element, without a value, or with a value that can't be assigned to.

    For example, the following v-model directives are invalid:

    <template>
      <div v-model="foo"></div>
      <input v-model="foo + bar" />
    </template>
  • #​12569 3058597 Thanks @​dyc3! - Added the new nursery rule useVueValidVShow, which reports v-show directives that have an argument, a modifier, or no value, or that are placed on a <template> element.

    <template v-show="isVisible"><div></div></template>
  • #​12525 e2e5a36 Thanks @​dyc3! - Added the nursery rule useVueValidVSlot, which reports misplaced, duplicated, or malformed v-slot directives in Vue templates.

    For example, the rule reports two <template> elements that fill the same slot:

    <MyComponent>
      <template #header>First title</template>
      <template #header>Second title</template>
    </MyComponent>
  • #​12472 efd16bd Thanks @​dyc3! - Added the new nursery rule useWhileLoopCondition, which reports loops such as while (true) and for (;;) that start with an if statement containing only a break, and moves that condition into the while statement.

    while (true) {
      if (!hasMore()) {
        break;
      } // reported
      processNext();
    }
  • #​12640 167bb00 Thanks @​latin-1! - Updated useSortedProperties to follow stylelint-config-recess-order 7.9.0, adding sorting support for scroll-behavior, anchor positioning, multi-column layout, and other properties known to Biome.

  • #​12719 40a82b0 Thanks @​dyc3! - Improved the performance of the linter. Biome now spends less time setting up the enabled rules for each file it analyzes.

  • #​12722 f074730 Thanks @​dyc3! - Improved the performance of biome lint by about 1% to 3% on large projects, most noticeably with Biome's default rules and with rules that track variables or unreachable code.

  • #​12501 90a4d74 Thanks @​ematipico! - Fixed #​12466: the Biome daemon used more memory with every biome check --use-server run. The daemon now reuses the data that it stores for each file and project, and it keeps syntax trees only for the files that it read most recently.

  • #​12501 90a4d74 Thanks @​ematipico! - Fixed biomejs/biome-vscode#923: when a file open in the editor changed on disk, the language server replaced the editor's text with the text on disk. Biome now keeps the editor's text of open files until they are closed, so diagnostics, code actions and formatting stay at the right positions.

  • #​12652 59ff42a Thanks @​kurovskyiii! - Fixed #​12651: an imported name that the other module exports as both a type and a value now resolves to the type in type annotations, so noBaseToString no longer reports slug below as an object.

    // rule-slug.ts
    export type RuleSlug = string;
    export const RuleSlug = { create: (text: string): RuleSlug => text } as const;
    
    // main.ts
    import { RuleSlug } from "./rule-slug";
    export const label = (slug: RuleSlug): string => `rule ${slug}`;
  • #​12678 301402f Thanks @​nhedger! - Fixed biomejs/biome-vscode#1113: the language server now shows a warning when the configuration file can't be parsed. Previously, Biome stopped processing files without telling the user why.

  • #​12662 8c836eb Thanks @​dyc3! - Fixed #​12645: the Markdown formatter no longer removes the blank line between a blockquote and the list that follows it, matching Prettier.

    > A note.
    
    - one
    - two
  • #​12662 8c836eb Thanks @​dyc3! - Fixed #​12663: the Markdown formatter no longer removes the blank line between a table and the list that follows it, matching Prettier.

    | Table |
    | ----- |
    | Value |
    
    - Hello
  • #​12576 735d370 Thanks @​jfmcdowell! - Fixed #​12541: Markdown list items whose markers are indented 4 or more spaces now nest at the correct level. Previously the formatter could move such an item under the item before it, or join it to that item's text.

     1. Step
        - a
          - x
    -       - y
    -         - b
    +     - y
    +   - b
  • #​12575 0da9080 Thanks @​jfmcdowell! - Fixed formatting of Markdown block quotes inside deeply indented list items. With proseWrap: "always", consecutive quote lines now wrap together within the same quote, while setext headings and fenced code blocks keep their structure.

     10. item
    -    > first line
    -    > second line
    +    > first line second line
  • #​12607 896d53e Thanks @​xucian! - Fixed #​12542: the Markdown formatter is no longer idempotent when it formats tables.

    - | a        | b     |
    - | -------- | ----- |
    - | x        | `y` z |
    - | `p` z`q` | r     |
    + | a         | b     |
    + | --------- | ----- |
    + | x         | `y` z |
    + | `p` z `q` | r     |
  • #​12692 8ff63f4 Thanks @​NikitaCOEUR! - Fixed the linux-x64-musl binary not using jemalloc, which it already ships: it fell back to musl's allocator, and biome check on several threads could take minutes instead of seconds, for example in Alpine-based CI images.

  • #​12682 fa7cf4c Thanks @​dyc3! - Fixed #​12679: when markdown.parser.frontmatter and markdown.formatter.formatEmbeds are enabled, the Markdown formatter keeps the frontmatter of a fenced Markdown code block as written. Previously, it formatted the frontmatter as a thematic break and a paragraph, which removed the indentation of its YAML.

    ```markdown
    ---
    verified:
      by: human
    ---

Policy

  • #​12649 343c8ca Thanks @JamBalaya56562! - Fixed #​12643 and #​12669: Biome now migrates the Prettier option bracketSpacing to formatter.bracketSpacing, both at the top level and inside overrides. JSON and GraphQL files are now formatted with the same bracket spacing as JavaScript files.

  • #​12640 167bb00 Thanks @latin-1! - Fixed useSortedProperties to withhold sorting fixes that would change the effective values of overlapping declarations, physical/logical border or corner properties, or declarations followed by all.
    Updated noShorthandPropertyOverrides to recognize logical border, corner shape, position-try, text-box, and transition-behavior overrides.

  • #​12723 b6cbec8 Thanks @dyc3! - Improved the performance of biome lint, biome check, and biome ci on files where rules report diagnostics with code fixes, by up to 12% with the default rules.

  • #​12664 6021da0 Thanks @MindTooth! - Fixed Biome processing pnpm-lock.yaml files. These generated lockfiles are now protected from processing.

  • #​12501 90a4d74 Thanks @ematipico! - Fixed an issue where the CLI, when it ran with --use-server alongside an editor connected to the same daemon, checked the unsaved text of the files open in the editor instead of the files on disk, and could make the editor's text get lost. The CLI now checks the files on disk, and every editor and CLI run connected to the daemon keeps its own text of the files it opens.

  • #​12519 9ae56ba Thanks @dyc3! - The rule noVueVIfWithVFor now also reports v-else-if and v-else on the same element as v-for.

    <div v-if="loading">Loading...</div>
    <TodoItem v-else v-for="todo in todos" :todo="todo" />
  • #​12702 df0f7cc Thanks @dyc3! - Fixed parsing of default values in Vue v-for bindings. Biome now parses the default value as JavaScript, so it is formatted and linted like other template expressions instead of being reported as a parse error.

    <div v-for="{ value = gt('v-for default') } in rows" />
  • #​12656 25a00a2 Thanks @dyc3! - Fixed non-JSON files inside the global settings directories of Zed, VS Code, and Cursor being parsed as JSON.

  • #​12501 90a4d74 Thanks @ematipico! - Fixed an issue where the language server kept using the previous parser options for open files after the configuration changed. Open files are now parsed again with the new options, for example json.parser.allowComments.

  • #​12656 25a00a2 Thanks @dyc3! - Improved the performance of Biome when it processes many files by up to 7%.

  • #​12661 066a077 Thanks @dyc3! - Added the nursery rule noVueDeprecatedListeners. It reports references to $listeners, which Vue 3 removed, in Vue templates and component objects. For example, Biome now reports <div v-on="$listeners" /> and this.$listeners inside a Vue component.

v2.6.3

Compare Source

Patch Changes
  • #​12275 807e616 Thanks @dyc3! - Added the new nursery rule noArraySortForMinMax, which reports sorting an array only to read its smallest or largest value. Use Math.min() or Math.max() instead.

    const minimum = array.toSorted((a, b) => a - b)[0];
  • #​12432 cf61682 Thanks @dyc3! - Added the nursery rule noBooleanSortComparator, which reports sort comparators that return a boolean instead of a number. For example, array.sort((a, b) => a > b) never puts the first item before the second, so the array isn't sorted correctly.

  • #​12304 b4654c5 Thanks @dyc3! - Added the new nursery rule noEagerArrayMethodsInLoops, which reports .map() and .filter() calls in the header of for...of loops. These calls build a new array that is only used by the loop.

    for (const name of users.map((user) => user.name)) {
      console.log(name);
    }
  • #​12121 66c3791 Thanks @dyc3! - Added the nursery rule noNewRequire, which disallows calling require with new, such as new require("app-header").

  • #​12316 34b520d Thanks @dyc3! - Added the new nursery rule noObsoleteAttributes, which disallows obsolete attributes on HTML elements and suggests what to use instead.

    <table bgcolor="#ffffff" cellpadding="5"></table>
  • #​12258 cce2385 Thanks @dyc3! - Added the nursery rule noPathConcat, which disallows building file paths and URLs by joining strings to __dirname, __filename, import.meta.dirname, import.meta.filename, or import.meta.url.

    const fullPath = __dirname + "/foo.js"; // reported
  • #​12287 e12ad78 Thanks @dyc3! - Added the new nursery rule noPlaywrightNthMethods, which disallows selecting Playwright elements by position with first(), last(), and nth(). A test that relies on the position of an element can act on a different element when the page changes.

    await page.locator("button").first().click();
  • #​12343 62ad123 Thanks @vibbix! - Added the nursery rule noSelfNestedLayer, which disallows nesting a cascade layer inside a layer with the same name. Layer names inside an @layer block are relative to it, so the inner layer below creates the sublayer components.components instead of adding to components.

    @&#8203;layer components {
      @&#8203;layer components {
        .button {
          color: red;
        }
      }
    }
  • #​12289 bbbd95d Thanks @dyc3! - Added the nursery rule noShortTimeValues, which reports CSS animation and transition times that are shorter than the configured minimum number of milliseconds. The rule does nothing until minimum is set.

    For example, the following code is invalid when minimum is 100:

    a {
      transition-duration: 80ms;
    }
  • #​12431 f748ec0 Thanks @dyc3! - Added the nursery rule noSvelteInternal, which disallows importing from svelte/internal and its submodules. These modules are private to Svelte and can change or disappear in any release.

    import { get_current_component } from "svelte/internal";
  • #​12270 8ae35c4 Thanks @dyc3! - Added the nursery rule noTanstackQueryRestDestructuring, which disallows rest destructuring and object spread on TanStack Query results. Both read every property of the result, so the component updates on every change to the query.

    import { useQuery } from "@&#8203;tanstack/react-query";
    
    const { data, ...rest } = useQuery({ queryKey: ["todos"], queryFn: fetchTodos });

    The rule belongs to the new tanstackQuery domain.

  • #​12308 372af2a Thanks @dyc3! - Added the new nursery rule noUnreadableForOfExpression, which reports for...of and for await...of loops that go through the result of a complex expression instead of a variable, a property, or a short call.

    for (const item of getItems(createArgument(seed))) {} // reported
  • #​12422 0be8d10 Thanks @dyc3! - Added the new nursery rule noUnsafeReturn, which disallows returning a value typed as any from a function.

    function parse(text: string) {
      return JSON.parse(text); // reported
    }
  • #​12311 8434c92 Thanks @dyc3! - Added the nursery rule noUselessSplice, which reports splice() calls that have a simpler alternative. For example, array.splice(0, 1) can be written as array.shift().

  • #​12293 eaa4a2b Thanks @dyc3! - Added the nursery rule noVueUnusedEmitDeclarations, which reports events that a Vue component declares but never emits.

    For example, the following component never emits close:

    <script setup>
    const emit = defineEmits(["change", "close"]);
    emit("change");
    </script>
  • #​12386 f01ebb0 Thanks @dyc3! - Added the nursery rule noVueVTextVHtmlOnComponent, which disallows v-text and v-html on Vue components. These directives replace everything inside the component's root element instead of filling its slot.

    <template>
      <MyComponent v-html="html"></MyComponent>
    </template>
  • #​12385 7bd38b7 Thanks @dyc3! - Added the new nursery rule noVueWatchAfterAwait, which disallows creating watchers after an await in a Vue component's setup() function. Vue doesn't stop these watchers when the component is removed. A watcher is allowed when the function it returns is stored, so that function can be called later to stop the watcher.

    <script>
    import { watch } from "vue";
    
    export default {
      async setup() {
        await fetchUser();
        watch(source, () => {});
      },
    };
    </script>
  • #​12286 50d2a4e Thanks @dyc3! - Added the nursery rule noZeroLengthUnit, which disallows units on zero lengths in CSS. Biome can remove the unit.

    a {
      top: 0px;
    }
  • #​12300 ab2eb9e Thanks @dyc3! - Added the nursery rule useBlockStatementOverIife, which reports functions that are called immediately when a block statement can replace them. Biome can replace these functions with a block statement.

    Invalid:

    (() => {
        const value = getValue();
        run(value);
    })();
  • #​12421 1c2cac0 Thanks @dyc3! - Added the nursery rule useConsistentLightnessNotation, which enforces writing the lightness of lab(), lch(), oklab(), and oklch() colors as a percentage, or as a number with the notation option. For example, with the default options, oklch(0.85 0.17 88) is reported and can be fixed to oklch(85% 0.17 88).

  • #​12224 fef7ed4 Thanks @dyc3! - Added the nursery rule useExpectToContain, which reports tests that compare the result of includes() to a boolean, and suggests using toContain() instead.

    expect(fruits.includes("apple")).toBe(true);
  • #​12299 0d5025d Thanks @dyc3! - Added the new nursery rule useIteratorZip, which reports for loops that use an index only to read the same position from several arrays. Such loops can use Iterator.zip() instead.

    // reported
    for (let index = 0; index < Math.min(names.length, scores.length); index++) {
      save(names[index], scores[index]);
    }
  • #​12298 a234d2f Thanks @dyc3! - Added the nursery rule useMathAbs, which reports manual absolute value calculations and range checks that can use Math.abs(). For example, value < 0 ? -value : value can be written as Math.abs(value), and value > limit || value < -limit can be written as Math.abs(value) > limit.

  • #​12499 bd024cc Thanks @dyc3! - Added the nursery rule useMathTrunc, which requires Math.trunc() instead of bitwise operations or parseInt(String(x), 10) for removing the decimal part of a number. For example, const result = value | 0; and const result = ~~value; are now reported.

  • #​12314 9e875a4 Thanks @dyc3! - Added the new nursery rule usePackageJsonValidCpu, which reports a cpu field in package.json that isn't an array of known processor types. The cpu field lists the processor types that the package supports.

    For example, the rule reports the following package.json file because x86 isn't a processor type that package managers recognize:

    {
      "name": "my-package",
      "cpu": ["x86"]
    }
  • #​12315 cb30544 Thanks @dyc3! - Added the nursery rule usePackageJsonValidEngines, which reports an invalid engines field in package.json. The field must be an object, and each of its values must be a non-empty string.

    For example, the following engines field is reported because the version of node is a number:

    {
        "engines": {
            "node": 24
        }
    }
  • #​12400 407604d Thanks @dyc3! - Added the nursery rule useVueComponentIs, which requires Vue <component> elements to bind the is attribute with :is or v-bind:is. Without it, Vue has no component to render.

    <template>
      <component :is="currentView" />
    </template>
  • #​12337 c371520 Thanks @dyc3! - Added the nursery rule useVueToggleInsideTransition, which requires the element inside a Vue <Transition> to be shown and hidden with v-if or v-show. Without one of them, the element is always shown and the transition never plays.

    <template>
      <Transition>
        <div>Content</div>
      </Transition>
    </template>
  • #​12387 64472e9 Thanks @dyc3! - Added the nursery rule useVueTypedRef, which reports ref() and shallowRef() calls in TypeScript that have no type argument and no initial value other than null or undefined. Without a type, TypeScript can't tell which values these refs are meant to hold.

    import { ref } from "vue";
    
    const count = ref();
  • #​12423 bf1a55a Thanks @dyc3! - Added the nursery rule useVueVOnExact, which requires the .exact modifier on a v-on listener when another listener for the same event on the element needs more modifier keys, such as .ctrl. Without .exact, both listeners run when those keys are held down. The rule accepts the following code:

    <template>
      <button @&#8203;click.exact="select" @&#8203;click.ctrl="open"></button>
    </template>
  • #​12418 208730e Thanks @latin-1! - Fixed #​12417: useSortedProperties could produce invalid CSS when sorting properties without a final semicolon. Comments attached to reordered properties are preserved.

  • #​12216 f2a3c71 Thanks @dyc3! - Added the new nursery rule noDanglingUnderscore, which disallows variable names, function names, and property accesses that start or end with an underscore.

    const _count = 0; // reported
    user._id; // reported
  • #​12536 438997f Thanks @vidigoat! - Fixed the formatter removing the parentheses around an instantiation expression before +, -, <, >, >=, >> and >>>. TypeScript reads make<T> + y as make < T > +y, and make<T> >> y doesn't parse.

    - x = make<T> + y;
    + x = (make<T>) + y;
    - x = make<T> >> y;
    + x = (make<T>) >> y;
  • #​12540 7d3e8a1 Thanks @vidigoat! - Fixed the formatter removing the parentheses around an instantiation expression before a non-null assertion or type arguments of a class heritage, which produced code that doesn't parse.

    - const a = make<T>!;
    + const a = (make<T>)!;
    - class D extends B<T><T> {}
    + class D extends (B<T>)<T> {}
  • #​12496 09d89b9 Thanks @vidigoat! - Fixed the formatter removing the parentheses around binary, logical, type-cast and instantiation operands of an instantiation expression. The type arguments then applied to the last operand only, and a nested instantiation expression didn't parse.

    - const x = a + b<T>;
    + const x = (a + b)<T>;
    - const y = a as B<T>;
    + const y = (a as B)<T>;
    - const z = f<A><B>;
    + const z = (f<A>)<B>;
  • #​12526 dbcdab1 Thanks @dyc3! - Fixed #​12524: the Markdown formatter no longer removes the blank line between a paragraph and the list that follows it. Removing it could change the document, because an ordered list that doesn't start at 1 can't interrupt a paragraph and became part of the paragraph text.

    Steps:
    
    3. three
    4. four
  • #​12509 470018b Thanks @dyc3! - Fixed #​12507: the Markdown formatter no longer drops the > markers after an empty quote line when proseWrap is "always" or "never". Previously, the text after the empty line was moved out of the blockquote.

      > a
      >
    - b
    + > b
  • #​12598 5699601 Thanks @vidigoat! - Fixed the formatter removing the parentheses around the callee of a new expression when it contains a dynamic import() call, which produced code that doesn't parse.

    - new import("foo").bar();
    + new (import("foo").bar)();
  • #​12508 87d9e6b Thanks @dyc3! - Fixed #​12502: noInvalidGridAreas now counts the cells in each row of grid-template-areas instead of comparing the length of the row text. Rows such as "a" "bb" are no longer reported, and rows such as "abc" "d e" are now reported.

  • #​12530 7f467b2 Thanks @dyc3! - Fixed #​12529: noUselessElse no longer reports an else clause when the if block ends with a switch statement that has no default clause. If no case matches, such a switch doesn't exit, so the else clause is needed.

  • #​12511 d4ea663 Thanks @dyc3! - Fixed #​12505: useDomNodeTextContent no longer reports innerText on values whose type annotation shows they aren't DOM nodes. The following code is now valid:

    const Link = ({ innerText }: { innerText: string }) => <a>{innerText}</a>;
  • #​12588 [e262362](https://redirect.github.com/biomejs/biome/commit/e2623

[!IMPORTANT]
✂ PR body was truncated to here.


Configuration

📅 Schedule: (in timezone America/Denver)

  • Branch creation
    • "every weekend"
  • 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.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


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

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

@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 3 times, most recently from cf8ccd7 to bef4d85 Compare September 10, 2026 20:00
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 6 times, most recently from 68463e1 to 752d70d Compare September 21, 2026 16:23
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 2 times, most recently from 7c1bc47 to 3a37504 Compare September 30, 2026 17:44
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 2 times, most recently from 1b71898 to 1ba4c30 Compare October 10, 2026 09:00
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 6 times, most recently from e8ad3b9 to 91d9878 Compare October 24, 2026 17:43
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch from 91d9878 to 0c422ff Compare October 29, 2026 00:05

This branch has not been deployed

No deployments
Sign up for free to 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