fix(deps): update all dependencies#28
Conversation
3879ef7 to
e7ae5d8
Compare
e5e89f4 to
96d426f
Compare
651f6b4 to
573619b
Compare
4059187 to
e18b80b
Compare
ed8aaaf to
195b515
Compare
0af92ca to
5784ad7
Compare
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughUpgrade CI and workspace toolchain: pnpm/action-setup → v6, Node runtime bumped in dependency workflow, workspace packageManager → pnpm@11.1.2, and multiple runtime/dev dependency version bumps across app and template packages. ChangesDependency and Toolchain Upgrade
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related issues
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
package.json (1)
51-53:⚠️ Potential issue | 🔴 Critical | ⚡ Quick winRemove or update the patch version in
patchedDependenciesto match the installed version.The
patchedDependenciesentry references@typescript-eslint/eslint-plugin@8.57.2, but the installed version is8.59.3(as shown in the lockfile and package.json). This version mismatch prevents the patch from being applied. Since8.59.3was released after the patch was created and the underlying optional chaining fix was already included in an earlier release, the patch is likely obsolete. Either update the key to@typescript-eslint/eslint-plugin@8.59.3if the patch is still needed, or remove it if the issue is already resolved in8.59.3.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@package.json` around lines 51 - 53, The patchedDependencies entry for "@typescript-eslint/eslint-plugin@8.57.2" in package.json doesn't match the installed version (8.59.3) so the patch won't apply; open package.json, locate the "patchedDependencies" object and either (a) update the key to "@typescript-eslint/eslint-plugin@8.59.3" if the patch is still required and ensure the corresponding patch file exists, or (b) remove the "@typescript-eslint/eslint-plugin@..." entry entirely if the upstream release already contains the fix (preferred if the optional chaining issue is resolved).
♻️ Duplicate comments (1)
packages/app/package.json (1)
55-86:⚠️ Potential issue | 🟠 MajorSame major version bumps as eslint-template package.
This package includes the same major version bumps flagged in
packages/eslint-template/package.json:
- ts-morph 27 → 28 (line 80)
- eslint-plugin-simple-import-sort 12 → 13 (line 73)
- eslint-plugin-unicorn 63 → 64 (line 76)
Please ensure the verification for those breaking changes applies to this package as well.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/app/package.json` around lines 55 - 86, The same major-version upgrades flagged for the eslint-template package also affect this package: update verification for the dependencies ts-morph, eslint-plugin-simple-import-sort, and eslint-plugin-unicorn in packages/app by running the identical compatibility checks you ran for eslint-template (exercise unit tests, linting, build, and any dedicated migration/compat scripts) and address any API or config changes uncovered; ensure package lock/lockfile is updated and any fixes or code changes required for the ts-morph 27→28, eslint-plugin-simple-import-sort 12→13, and eslint-plugin-unicorn 63→64 upgrades are applied here as well.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@package.json`:
- Line 6: The package.json currently pins "packageManager": "pnpm@11.1.2" but
the repo must be migrated to pnpm v11 config changes: run the pnpm v10→v11
codemod to move settings from the "pnpm" field in package.json and any .npmrc
entries into a new pnpm-workspace.yaml (use camelCase keys), replace any
npm_config_* env usages with pnpm_config_*, stop using pnpm link --global (use
pnpm add -g), convert build-related settings (neverBuiltDependencies,
ignoreDepScripts, etc.) into the allowBuilds map, verify Node engine
compatibility (v18–v21 removed, ensure pure ESM readiness), and confirm global
install path expectations (pnpmHomeDir/global/v11/{hash}); update packageManager
value only after these migrations and verify CI/environment variables and
workspace config are correct.
In `@packages/eslint-template/package.json`:
- Line 33: The package.json now pins "eslint-plugin-simple-import-sort" to
^13.0.0 which enforces deterministic ordering when the same module is imported
multiple times with different styles; search the codebase for modules imported
more than once using different styles (namespace imports like import * as X,
default imports like import X, and named imports like import {a}) and
consolidate them into a single consistent import per source (e.g., combine
default and named into one line or convert namespace to named/default as
appropriate) so autofix no longer changes ordering unexpectedly; update any
files referencing the same source in multiple import statements (look for
occurrences of the module names flagged by the linter) to use a single unified
import form.
---
Outside diff comments:
In `@package.json`:
- Around line 51-53: The patchedDependencies entry for
"@typescript-eslint/eslint-plugin@8.57.2" in package.json doesn't match the
installed version (8.59.3) so the patch won't apply; open package.json, locate
the "patchedDependencies" object and either (a) update the key to
"@typescript-eslint/eslint-plugin@8.59.3" if the patch is still required and
ensure the corresponding patch file exists, or (b) remove the
"@typescript-eslint/eslint-plugin@..." entry entirely if the upstream release
already contains the fix (preferred if the optional chaining issue is resolved).
---
Duplicate comments:
In `@packages/app/package.json`:
- Around line 55-86: The same major-version upgrades flagged for the
eslint-template package also affect this package: update verification for the
dependencies ts-morph, eslint-plugin-simple-import-sort, and
eslint-plugin-unicorn in packages/app by running the identical compatibility
checks you ran for eslint-template (exercise unit tests, linting, build, and any
dedicated migration/compat scripts) and address any API or config changes
uncovered; ensure package lock/lockfile is updated and any fixes or code changes
required for the ts-morph 27→28, eslint-plugin-simple-import-sort 12→13, and
eslint-plugin-unicorn 63→64 upgrades are applied here as well.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: db3c2e88-f3f6-4ca6-8964-0ab35e5ab234
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (5)
.github/actions/setup/action.yml.github/workflows/checking-dependencies.ymlpackage.jsonpackages/app/package.jsonpackages/eslint-template/package.json
| "private": true, | ||
| "description": "Monorepo workspace for effect-template", | ||
| "packageManager": "pnpm@10.33.0", | ||
| "packageManager": "pnpm@11.1.2", |
There was a problem hiding this comment.
🧩 Analysis chain
🌐 Web query:
What are the breaking changes in pnpm 11 compared to pnpm 10?
💡 Result:
The breaking changes in pnpm 11 compared to pnpm 10, as detailed in the official migration guide and release notes, are primarily around configuration handling, command behaviors, and removed features. Here's a complete list: Configuration changes [1][2][3]: - pnpm no longer reads settings from the pnpm field in package.json; move them to pnpm-workspace.yaml [1][2][3]. - .npmrc now only reads auth and registry settings; all other settings (e.g., hoist-pattern, node-linker, save-exact) must be moved to pnpm-workspace.yaml using camelCase keys [1][2][3]. - npm_config_* environment variables are no longer read; use pnpm_config_* instead [1][2][3]. - pnpm no longer reads npm's global config at $PREFIX/etc/npmrc [3]. - Package manager strictness settings (managePackageManagerVersions, packageManagerStrict, packageManagerStrictVersion) collapsed into pmOnFail: download | ignore | warn | error [1]. - allowNonAppliedPatches renamed to allowUnusedPatches; auditConfig.ignoreCves to auditConfig.ignoreGhsas (requires manual CVE to GHSA conversion) [1][2]. Command and behavior changes [1][2][3]: - pnpm link no longer resolves from global store; use relative/absolute paths (e.g., pnpm link ./foo). Removed --global flag (use pnpm add -g .) and pnpm link with no args [1][3]. - pnpm install -g (no args) unsupported; use pnpm add -g <pkg> [1]. - pnpm server command removed [1][2]. - Script names like clean, setup, deploy, rebuild now shadow built-in commands; use pnpm pm <command> to force built-ins [1]. - Removed npm CLI fallback: commands like access, bugs, docs, edit, home, issues, owner, ping, prefix, profile, pkg, search, set-script, team, token, unstar, whoami, xmas (and aliases) now throw errors; many reimplemented natively [2][3]. - Global installs (pnpm add -g) now use isolated directories in {pnpmHomeDir}/global/v11/{hash}/ to prevent interference [3]. - Globally installed binaries now in bin/ subdirectory of PNPM_HOME [3]. Removed/deprecated features [2][3]: - Deprecated build dependency settings removed: onlyBuiltDependencies, onlyBuiltDependenciesFile, neverBuiltDependencies, ignoredBuiltDependencies, ignoreDepScripts. Use allowBuilds map instead [2][3]. - Removed support for useNodeVersion, Env.nodeVersion, pnpmfile [2]. Other [1][2][3]: - Bumps packageManager in package.json to pnpm v11 version [1]. - Default changes: optimisticRepeatInstall: true, verifyDepsBeforeRun: install, minimumReleaseAge: 1440 (1 day), minimumReleaseAgeStrict: false [2]. - Drops Node.js 18-21 support; now pure ESM; standalone exe requires glibc 2.27+ [3]. A codemod is available to automate many config migrations [4]. pnpm prints a pointer to the migration guide on pnpm self-update from v10 [1].
Citations:
- 1: https://pnpm.io/migration
- 2: https://github.com/pnpm/pnpm/releases/tag/v11.0.0-rc.0
- 3: https://pnpm.io/blog/releases/11.0
- 4: https://app.codemod.com/registry/pnpm-v10-to-v11
Review pnpm 11 migration guide and update configuration accordingly.
pnpm 11 introduces breaking changes requiring configuration updates:
- Settings in the
pnpmfield inpackage.jsonand.npmrcmust migrate topnpm-workspace.yamlwith camelCase keys npm_config_*environment variables replaced withpnpm_config_*pnpm link --globalremoved; usepnpm add -g <pkg>instead- Build dependency settings (
neverBuiltDependencies,ignoreDepScripts, etc.) replaced withallowBuildsmap - Node.js 18-21 support dropped; now pure ESM
- Global installs now use isolated directories at
{pnpmHomeDir}/global/v11/{hash}/
Use the pnpm codemod to automate most config migrations, then verify all settings are correctly moved to pnpm-workspace.yaml.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@package.json` at line 6, The package.json currently pins "packageManager":
"pnpm@11.1.2" but the repo must be migrated to pnpm v11 config changes: run the
pnpm v10→v11 codemod to move settings from the "pnpm" field in package.json and
any .npmrc entries into a new pnpm-workspace.yaml (use camelCase keys), replace
any npm_config_* env usages with pnpm_config_*, stop using pnpm link --global
(use pnpm add -g), convert build-related settings (neverBuiltDependencies,
ignoreDepScripts, etc.) into the allowBuilds map, verify Node engine
compatibility (v18–v21 removed, ensure pure ESM readiness), and confirm global
install path expectations (pnpmHomeDir/global/v11/{hash}); update packageManager
value only after these migrations and verify CI/environment variables and
workspace config are correct.
2a1dd99 to
845acb7
Compare
There was a problem hiding this comment.
♻️ Duplicate comments (1)
package.json (1)
6-6:⚠️ Potential issue | 🟠 Major | 🏗️ Heavy liftpnpm v11 bump needs config migration validation before merge.
Line 6 upgrades to
pnpm@11.1.2, but this file still contains legacy pnpm config keys (Lines 42 and 46) that may no longer behave as intended under v11. Please validate and migrate config to the v11-supported shape before releasing.#!/bin/bash set -euo pipefail echo "1) Locate workspace-level pnpm config files" fd -HI '^pnpm-workspace\.yaml$' . fd -HI '^\.npmrc$' . echo echo "2) Find deprecated/legacy pnpm keys and any new allowBuilds usage" rg -n --hidden --glob '!.git' '"(ignoredBuiltDependencies|onlyBuiltDependencies|neverBuiltDependencies|ignoreDepScripts|allowBuilds)"' echo echo "3) Find packageManager pin and pnpm config blocks" rg -n --hidden --glob '!.git' '"packageManager"\s*:|^\s*"pnpm"\s*:' echo echo "4) Check env var usage needing pnpm v11 migration" rg -n --hidden --glob '!.git' '\bnpm_config_[A-Za-z0-9_]+\b|\bpnpm_config_[A-Za-z0-9_]+\b' echo echo "5) Check for removed global-link patterns" rg -n --hidden --glob '!.git' 'pnpm\s+link(\s+--global|\s+-g|\s*$)'🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@package.json` at line 6, The packageManager bump to "pnpm@11.1.2" requires validating and migrating legacy pnpm config keys (e.g., ignoredBuiltDependencies, onlyBuiltDependencies, neverBuiltDependencies, ignoreDepScripts, allowBuilds) before merge; inspect and update workspace-level pnpm config (pnpm-workspace.yaml) and project .npmrc entries to the v11-supported shape, replace/deprecate old env var usages (npm_config_*/pnpm_config_*), remove any deprecated global link patterns (pnpm link --global/-g), and ensure the packageManager pin remains correct; run the provided shell checks (search for pnpm-workspace.yaml, .npmrc, the legacy keys, packageManager/pnpm blocks, and env var patterns) and apply migrations so the repo config matches pnpm v11 expectations.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Duplicate comments:
In `@package.json`:
- Line 6: The packageManager bump to "pnpm@11.1.2" requires validating and
migrating legacy pnpm config keys (e.g., ignoredBuiltDependencies,
onlyBuiltDependencies, neverBuiltDependencies, ignoreDepScripts, allowBuilds)
before merge; inspect and update workspace-level pnpm config
(pnpm-workspace.yaml) and project .npmrc entries to the v11-supported shape,
replace/deprecate old env var usages (npm_config_*/pnpm_config_*), remove any
deprecated global link patterns (pnpm link --global/-g), and ensure the
packageManager pin remains correct; run the provided shell checks (search for
pnpm-workspace.yaml, .npmrc, the legacy keys, packageManager/pnpm blocks, and
env var patterns) and apply migrations so the repo config matches pnpm v11
expectations.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: e766f135-c608-4b3a-b538-99c7494d15cb
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (5)
.github/actions/setup/action.yml.github/workflows/checking-dependencies.ymlpackage.jsonpackages/app/package.jsonpackages/eslint-template/package.json
✅ Files skipped from review due to trivial changes (3)
- .github/workflows/checking-dependencies.yml
- .github/actions/setup/action.yml
- packages/eslint-template/package.json
🚧 Files skipped from review as they are similar to previous changes (1)
- packages/app/package.json
980a33b to
bed89b0
Compare
This PR contains the following updates:
^2.4.9→^2.5.0^0.6.0→^0.7.0^2.30.0→^2.31.0^0.75.0→^0.75.2^0.58.0→^0.59.0^0.96.0→^0.96.1^0.106.0→^0.107.0^0.75.0→^0.75.1^0.51.0→^0.51.1^0.18.0→^0.18.2^4.7.1→^4.7.22.0.3→2.1.0^25.5.0→^25.9.3^8.57.2→^8.61.1^8.57.2→^8.61.18.57.2→8.61.18.57.2→8.61.1^4.1.2→^4.1.9^1.6.13→^1.6.20^2.4.9→^2.5.0^3.21.0→^3.21.3^10.1.0→^10.5.0^3.3.2→^3.6.0^4.4.4→^4.4.5^7.3.2→^7.4.0^12.1.1→^13.0.0^4.0.2→^4.0.3^63.0.0→^67.0.0^17.4.0→^17.6.0^4.0.8→^5.0.924.14.1→24.16.0^11.12.1→^11.17.010.33.0→11.7.0v5→v6^27.0.2→^28.0.0^6.0.2→^6.0.3^8.57.2→^8.61.1^8.0.3→^8.0.16^4.1.2→^4.1.9cc @skulidropek
Release Notes
biomejs/biome (@biomejs/biome)
v2.5.0Compare Source
Minor Changes
#9539
f0615fdThanks @ematipico! - Added a new reporter calledconcise. When--reporter=conciseis passed the commandsformat,lint,checkandci, the diagnostics are printed in a compact manner:#9495
2056b23Thanks @aviraldua93! - Added theuseKeyWithClickEventsa11y lint rule for HTML files (.html,.vue,.svelte,.astro). This is a port of the existing JSX rule. The rule enforces that elements with anonclickhandler also have at least one keyboard event handler (onkeydown,onkeyup, oronkeypress) to ensure keyboard accessibility.Inherently keyboard-accessible elements (
<a>,<button>,<input>,<select>,<textarea>,<option>) are excluded, as are elements hidden from assistive technologies (aria-hidden) or withrole="presentation"/role="none".#9152
9ec8500Thanks @ematipico! - Added new nursery lint rulenoUndeclaredClassesfor HTML, JSX, and SFC files (Vue, Astro, Svelte). The rule detects CSS class names used inclass="..."(orclassName) attributes that are not defined in any<style>block or linked stylesheet reachable from the file.#9152
9ec8500Thanks @ematipico! - Added new nursery lint rulenoUnusedClassesfor CSS. The rule detects CSS class selectors that are never referenced in any HTML or JSX file that imports the stylesheet. This is a project-domain rule that requires the module graph.#9546
6567efaThanks @nhedger! - Added abiome upgradecommand for standalone installations. It upgrades Homebrew installs withbrew upgrade biome, updates manually installed binaries from the latest GitHub release, and tells npm users to upgrade with their package manager instead.#9716
701767aThanks @faizkhairi! - Added the HTML version of theuseHeadingContentrule. The rule now enforces that heading elements (h1-h6) have content accessible to screen readers in HTML, Vue, Svelte, and Astro files.#9582
f437ef8Thanks @rahuld109! - Added the HTML version of theuseKeyWithMouseEventsrule. The rule now enforces thatonmouseoveris accompanied byonfocusandonmouseoutis accompanied byonblurin HTML, Vue, Svelte, and Astro files.#9275
1fdbceeThanks @ff1451! - Added the new assist actionuseSortedTypeFields, which sorts the fields of GraphQL object types, interface types and input object types alphabetically, e.g.name, age, idbecomesage, id, name.#10561
78075b7Thanks @Conaclos! - Added a newstyleoption to useExportType,which enforces a style for exporting types.
This is the same option as the one provided by
useImportType.#8987
d16e32bThanks @DerTimonius! - Ported theuseValidAnchorrule to HTML. This rule enforces that all anchors are valid and that they are navigable elements.#9533
4d251d4Thanks @ematipico! - Theinitcommand now prints the Biome logo.#10069
0eb9310Thanks @Netail! - Added the HTML lint rulenoStaticElementInteractions, which enforces that static, visible elements (such as<div>) that have click handlers use the valid role attribute.Invalid:
#9134
2a43488Thanks @ematipico! - Added the assist actionuseSortedPackageJson.This action organizes package.json fields according to the same conventions as the popular sort-package-json tool.
#9309
7daa18bThanks @Bertie690! - TheallowDoubleNegationoption has been added tonoImplicitCoercionsto allow ignoring double negations inside code.With the option enabled, the following example is considered valid and is ignored by the rule:
#9700
894f3fbThanks @ematipico! - The Biome Language server now supports the "go-to definition" feature.When the cursor of the mouse is hovering an entity (variable, CSS class, type, etc.), and the command CTRL + click is triggered, the editor jumps to where this entity is defined, if the language server can find it.
Here's what Biome is able to resolve:
#10070
bae0710Thanks @Conaclos! - Added the:STYLE:group matcher fororganizeImportsthat matches style imports.For example, the following configuration...
{ "assist": { "actions": { "source": { "organizeImports": { "level": "on", "options": { "groups": ["**", "!:STYLE:"], "sortBareImports": true } } } } } }...places style imports last:
#9170
e3107deThanks @mdrobny! - AddedbundleDependenciesoption to NoUndeclaredDependencies rule.This rule now supports imports of packages that are defined only in
bundleDependenciesandbundledDependenciesarrays.#9547
01f8473Thanks @mujpao! - Added new assist ruleuseSortedAttributesfor HTML, porting the existing JSX rule. This rule enforces sorted HTML attributes.Invalid
#9366
2ca1117Thanks @dyc3! - Added thehtml.parser.vueconfiguration option. When enabled, it adds support for the parsing of Vue in.htmlfiles. Most Vue users don't need to enable this option since Vue files typically use the.vueextension, but it can be useful for projects that embed Vue syntax in regular HTML files.#9073
74b20eeThanks @chocky335! - Added support for applying GritQL plugin rewrites as code actions. GritQL plugins that use the rewrite operator (=>) now produce fixable diagnostics for JavaScript, CSS, and JSON files. By default, plugin rewrites are treated as unsafe fixes and require--write --unsafeto apply. Plugin authors can passfix_kind = "safe"toregister_diagnostic()to mark a fix as safe, allowing it to be applied with just--write.Example plugin (
useConsoleInfo.grit):Running
biome check --writeapplies safe rewrites. Unsafe rewrites (the default, orfix_kind = "unsafe") still require--write --unsafe.#9384
f4c9edcThanks @Conaclos! - Added thesortBareImportsoption toorganizeImports,which allows bare imports to be sorted within other imports when set to
false.{ "assist": { "actions": { "source": { "organizeImports": { "level": "on", "options": { "sortBareImports": true } } } } } }#8731
e7872bfThanks @siketyan! - Added the watch mode (--watch) to the CLI forcheck/format/lintcommands. By enabling this option, Biome will re-run the check automatically when any file in the workspace has changed after the first run.#10106
9b35f78Thanks @ematipico! - Biome can now format and lint.svgfiles.#9967
e9b6c17Thanks @dyc3! - Added HTML support fornoExcessiveLinesPerFile. Biome now reports HTML files that exceed the configured line limit, including whenskipBlankLinesis enabled.#9491
b3eb63cThanks @IxxyDev! - Added the HTML lint rulenoAriaUnsupportedElements. This rule enforces that elements that do not support ARIA roles, states, and properties (meta,html,script,style) do not haveroleoraria-*attributes.#9306
afd57a6Thanks @viraxslot! - Added thenoNoninteractiveTabindexlint rule for HTML. This rule enforces thattabindexis not used on non-interactive elements, as it can cause usability issues for keyboard users.#9276
6d041d9Thanks @IxxyDev! - Added the HTML lint rulenoRedundantRoles. This rule enforces that explicitroleattributes are not the same as the implicit/default role of an HTML element. It supports HTML, Vue, Svelte, and Astro files.#9813
69aadc2Thanks @ematipico! - Added a new linter configuration calledpreset. With the new option, users can enable different kinds of rules at once.The following presets are available:
"recommended": it enables all Biome-recommended rules, or recommended rules of a group;"all": it enables all Biome rules, or enables all rules of a group;"none": it disables all Biome rules, or disable all rules of a group.You can enable recommended rules:
{ "linter": { "rules": { "preset": "recommended" } } }You can enable all rules at once:
Or enable all rules for a group:
This new option, however, doesn't affect how nursery rules work. Nursery rules must be enabled singularly, due to their nature.
This new option is meant to replace
recommended, so make sure to run themigratecommand.#10022
3422d71Thanks @Netail! - Added the HTML lint rulenoNoninteractiveElementToInteractiveRole, which enforces that interactive ARIA roles are not assigned to non-interactive HTML elements.Invalid:
#8396
13785fcThanks @apple-yagi! - Biome now supports pnpm catalogs (default and named) when resolving dependencies for linting. This behavior is opt-in and requires settingjavascript.resolver.experimentalPnpmCatalogstotrue.#10028
1009414Thanks @Netail! - Added the HTML lint rulenoInteractiveElementToNoninteractiveRole, which enforces that non-interactive ARIA roles are not assigned to interactive HTML elements.Invalid:
#9853
816302fThanks @Netail! - Added the new assist actionuseSortedSelectionSet, which sorts GraphQL selection sets alphabetically, e.g.name, age, idbecomesage, id, name.Invalid:
#10074
9c7c6ebThanks @georgephillips! - Added akindfield to theImportMatcherused by theorganizeImportsassist action. The new field selects imports by their syntactic kind and currently supportsbare(matching side-effect imports such asimport "polyfill") with optional!negation (!bare). The matcher composes with the existingtypeandsourcefields, so users can express patterns such as "only bare imports that import a CSS file" ({ "kind": "bare", "source": "**/*.css" }).For example, with the following configuration:
{ "assist": { "actions": { "source": { "organizeImports": { "level": "on", "options": { "sortBareImports": true, "groups": [ { "kind": "!bare" }, ":BLANK_LINE:", { "kind": "bare" } ] } } } } } }...the following code:
...is organized as:
#9171
ce65710Thanks @chocky335! - Addedincludesoption for plugin file scoping. Plugins can now be configured with glob patterns to restrict which files they run on. Use negated globs for exclusions.{ "plugins": [ "global-plugin.grit", { "path": "scoped-plugin.grit", "includes": ["src/**/*.ts", "!**/*.test.ts"] } ] }#9617
dcb99efThanks @faizkhairi! - PorteduseAriaActivedescendantWithTabindexa11y rule to HTML.#9496
1dfb829Thanks @aviraldua93! - Added HTML support for thenoAriaHiddenOnFocusableaccessibility lint rule, which enforces thataria-hidden="true"is not set on focusable elements. Focusable elements include native interactive elements (<button>,<input>,<select>,<textarea>), elements withhref(<a>,<area>), elements withtabindex >= 0, and editing hosts (contenteditable). Includes an unsafe fix to remove thearia-hiddenattribute.#9792
f516854Thanks @Maximiliano-Zeballos! - Added theuseSemanticElementslint rule for HTML. The rule now detects the use ofroleattributes in HTML elements and suggests using semantic elements instead.For example, the following code is now flagged:
The rule suggests using
<nav>instead.#9761
cbbb7d5Thanks @Maximiliano-Zeballos! - Ported theuseValidAriaPropslint rule to HTML. This rule checks that allaria-*attributes used in HTML elements are valid ARIA attributes as defined by the WAI-ARIA specification.#9928
aa82576Thanks @aviraldua93! - PorteduseValidAriaValuesto HTML. Biome now validates staticaria-*attribute values in HTML elements against WAI-ARIA types, catching invalid values such asaria-hidden="yes".#10562
6642895Thanks @ematipico! - Promoted 73 nursery rules to stable groups.Four rules were renamed as part of the promotion:
noFloatingClassesis nownoUnusedInstantiation, because the rule checks any discardednewexpression, not only classes.noMultiStris nownoMultilineString.useFindis nowuseArrayFind.useSpreadis nowuseSpreadOverApply, because the rule enforces spread call arguments overFunction.apply(), not array or object spread.Correctness
Promoted the following rules to the
correctnessgroup:noBeforeInteractiveScriptOutsideDocumentnoUnusedInstantiationuseInlineScriptId(recommended, Next.js domain)noVueVIfWithVFor(recommended, Vue domain)useVueValidVBind(recommended, Vue domain)useVueValidVElse(recommended, Vue domain)useVueValidVElseIf(recommended, Vue domain)useVueValidVHtml(recommended, Vue domain)useVueValidVIf(recommended, Vue domain)useVueValidVOn(recommended, Vue domain)useVueValidVText(recommended, Vue domain)useVueValidTemplateRoot(recommended, Vue domain)useVueValidVCloak(recommended, Vue domain)useVueValidVOnce(recommended, Vue domain)useVueValidVPre(recommended, Vue domain)useVueVForKey(recommended, Vue domain)noDuplicateAttributes(recommended)noDuplicateArgumentNames(recommended)noDuplicateInputFieldNames(recommended)noDuplicateVariableNames(recommended)noDuplicateEnumValueNames(recommended)useLoneAnonymousOperation(recommended)Suspicious
Promoted the following rules to the
suspiciousgroup:noShadownoUnnecessaryConditionsnoParametersOnlyUsedInRecursionnoUnknownAttributeuseArraySortComparenoForInnoDuplicatedSpreadPropsnoEqualsToNullnoProto(recommended)noUndeclaredEnvVars(recommended, Turborepo domain)noReturnAssign(default severity:error)noDuplicateEnumValues(recommended)noVueArrowFuncInWatch(recommended, Vue domain)noNestedPromisesnoLeakedRendernoDeprecatedMediaType(recommended)noDuplicateGraphqlOperationNameuseRequiredScriptsStyle
Promoted the following rules to the
stylegroup:useVueMultiWordComponentNames(recommended, Vue domain)useVueDefineMacrosOrdernoIncrementDecrementnoContinueuseSpreadOverApplynoTernarynoMultilineStringnoMultiAssignnoExcessiveClassesPerFilenoExcessiveLinesPerFilenoVueOptionsApiuseErrorCauseuseConsistentEnumValueTypeuseConsistentMethodSignaturesuseGlobalThis(default severity:warn)useDestructuringuseVueHyphenatedAttributes(recommended, Vue domain)useVueConsistentVBindStyle(recommended, Vue domain)useVueConsistentVOnStyle(recommended, Vue domain)noHexColorsuseConsistentGraphqlDescriptionsnoRootTypeuseLoneExecutableDefinitionuseInputNameComplexity
Promoted the following rules to the
complexitygroup:useArrayFindnoRedundantDefaultExport(default severity:warn)noUselessReturnnoDivRegexPerformance
Promoted the following rules to the
performancegroup:noSyncScriptsnoJsxPropsBinduseVueVaporSecurity
Promoted the following rules to the
securitygroup:noScriptUrl(recommended)A11y
Promoted the following rules to the
a11ygroup:noAmbiguousAnchorText(recommended)#10121
450f8e1Thanks @jongwan56! - Biome now applies Git's local exclude file when VCS ignore files are enabled. Files listed in.git/info/excludeare skipped the same way as files listed in.gitignore, including in linked worktrees.#9397
d5913c9Thanks @mvarendorff! - Addedignoreoption to the noUnusedVariables rule. The option allows excluding identifiers by providing a list of ignored names. It also allows excluding kinds of identifiers from this rule entirely, which may be useful when loading classes dynamically.For example, unused classes as well as all unused variables, functions, etc. called "unused" may be ignored entirely with the following configuration:
{ "ignore": { "*": ["unused"], "class": ["*"] } }#10089
71a21f0Thanks @Netail! - Added the lint rulenoLabelWithoutControlto HTML, which enforces that a label element or component has a text label and an associated input.#10015
1828261Thanks @Netail! - Added the HTML lint ruleuseAriaPropsSupportedByRole, which enforces that ARIA properties are valid for the roles that are supported by the element.#10234
1a51569Thanks @ematipico! - Added thedelimiterSpacingformatter option. This option inserts spaces inside delimiters (after the opening delimiter and before the closing delimiter) when the content fits on a single line. Empty delimiters are not affected, and no space is added before the opening delimiter. The specific delimiters affected depend on the language. It can be configured globally viaformatter.delimiterSpacingor per-language viajavascript.formatter.delimiterSpacing,json.formatter.delimiterSpacing, andcss.formatter.delimiterSpacing. Defaults tofalse.JavaScript
When enabled, Biome inserts spaces inside parentheses (e.g.,
foo( a, b )), square brackets (e.g.,[ a, b ]), template literal interpolations (e.g.,${ expr }), and the logical NOT operator (e.g.,! x, but in chains only after the last one:!! x). Only applies when the content fits on a single line. Empty delimiters and the space before the opening delimiter are not affected.JSX
When enabled, Biome inserts spaces inside JSX expression braces (e.g.,
attr={ value }) and spread attributes (e.g.,{ ...props }). Only applies when the content fits on a single line. Empty delimiters are not affected.TypeScript
When enabled, Biome inserts spaces inside TypeScript angle brackets (e.g.,
foo< T >()), indexed access types (e.g.,T[ K ]), mapped types, tuple types, type parameters, and index signatures. Only applies when the content fits on a single line. Empty delimiters are not affected.JSON
When enabled, Biome inserts spaces inside square brackets when the
Configuration
📅 Schedule: (UTC)
🚦 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.
This PR was generated by Mend Renovate. View the repository job log.