Repository navigation
fix(deps): update all dependencies - #31
renovate[bot] wants to merge 1 commit into
Conversation
6cba843 to
0f055c2
Compare
92bada8 to
71cb2e1
Compare
54d829d to
590142f
Compare
5daa077 to
79555ae
Compare
055e1ef to
d1673ca
Compare
c20c888 to
c23139a
Compare
|
Important Review skippedBot user detected. To trigger a single review, invoke the
|
| Layer / File(s) | Summary |
|---|---|
Root package manager and Changesets tooling package.json |
Root package.json updated to packageManager: "pnpm@11.1.3" and Changesets devDependencies (@changesets/changelog-github, @changesets/cli) bumped. |
App package manager and dependency upgrades packages/app/package.json |
packages/app packageManager set to pnpm@11.1.3; multiple runtime dependencies and devDependencies (including @effect/*, effect, ts-morph, tooling, TypeScript, Vite/Vitest, linters) have version bumps. |
GitHub Actions and workflow configuration .github/actions/setup/action.yml, .github/workflows/checking-dependencies.yml, .github/workflows/snapshot.yml |
Composite action/workflows updated: pnpm/action-setup bumped to v6, actions/setup-node node-version changed to 24.15.0, and actions/upload-artifact bumped to v7. |
Estimated code review effort
🎯 3 (Moderate) | ⏱️ ~20 minutes
Possibly related issues
- Dependency Dashboard openapi-effect#1 — Matches Renovate-style dependency and workflow version bumps (pnpm and action versions).
- Dependency Dashboard eslint-plugin-suggest-members#2 — Overlaps CI and Changesets dependency/version updates present in this PR.
- Dependency Dashboard #10 — Similar CI/action and package metadata updates (pnpm, actions, packageManager).
- Dependency Dashboard context-doc#5 — Contains comparable dependency/version adjustments across workflows and manifests.
- Dependency Dashboard dist-deps-prune#2 — Related updates to GitHub Action versions and package.json dependency entries.
- Dependency Dashboard effect-eslint-template#6 — Mirrors pnpm/action-setup and pnpm packageManager version bumps seen here.
🚥 Pre-merge checks | ✅ 5
-
✅ Passed checks (5 passed)
-
Check name Status Explanation Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request. Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request. Title check ✅ Passed The title clearly identifies the pull request as a dependency update, which matches the primary changes across packages, tooling, and CI actions. Description check ✅ Passed The description directly documents the Renovate-generated dependency, package manager, CI action, and runtime version updates.
-
✨ Finishing Touches
-
📝 Generate docstrings
-
- Create stacked PR
- Commit on current branch
🧪 Generate unit tests (beta)
-
- Create PR with unit tests
- Commit unit tests in branch
renovate/all
-
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
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.
🐰 A patch of pins and versions new,
I nibbled bumps and pushed them through.
Workflows hum and artifacts sing,
PNPM hops to a brighter spring.
— Rabbit with a CI carrot 🥕
Comment @coderabbitai help to get the list of available commands.
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 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 @.github/actions/setup/action.yml:
- Line 13: The action uses pnpm/action-setup@v6 but the custom action default
still sets node-version: 20.16.0 which is incompatible; update the default
node-version in action.yml to Node 24 (>=24.0.0, e.g., 24.15.0 to match
checking-dependencies.yml) so the action runs on the required runtime, and after
changing the default verify pnpm selection behavior (packageManager in
package.json / pnpm@11.1.2) because v6 has a bug that may ignore
packageManager—if necessary pin the pnpm version explicitly or add configuration
to enforce packageManager to ensure the expected pnpm version is used.
In @.github/workflows/checking-dependencies.yml:
- Line 15: The workflow uses pnpm/action-setup@v6 but package.json declares
packageManager: pnpm@11.1.2, causing a mismatch; either align the workflow or
package.json: update package.json's packageManager to "pnpm@11.1.1" to match the
action's default, or explicitly configure the action in
.github/workflows/checking-dependencies.yml (pnpm/action-setup) with a
compatible with.version value (e.g., 11.1.1) until 11.1.2 is released, or remove
the explicit version so the action auto-detects from package.json and surfaces
the proper error if the version is unavailable.
In `@package.json`:
- Line 6: Update package.json to remove deprecated pnpm v10 fields and adopt
pnpm v11 format: replace any ignoredBuiltDependencies and onlyBuiltDependencies
entries with the new allowBuilds configuration (mapping allowed package patterns
or booleans accordingly) and set the engines.node field to ">=22" (or "22.x" per
project policy) so Node.js requirement is explicit for pnpm 11; also keep
packageManager set to "pnpm@11.1.2" and run the pnpm v10→v11 codemod (pnpx
codemod run pnpm-v10-to-v11) to ensure any other migration changes are applied.
In `@packages/app/package.json`:
- Line 71: Add an "engines" entry to packages/app/package.json to require
Node.js >=20.19.0 so ESLint 10.3.0 runs correctly; locate the existing "eslint":
"^10.3.0" dependency in package.json and add an "engines" object with "node":
">=20.19.0" to enforce the minimum Node version for contributors and CI.
🪄 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: 99f915a6-56ca-42ec-8fc8-02ccf3d20151
⛔ 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.yml.github/workflows/snapshot.ymlpackage.jsonpackages/app/package.json
| steps: | ||
| - uses: actions/checkout@v6 | ||
| - uses: pnpm/action-setup@v4 | ||
| - uses: pnpm/action-setup@v6 |
There was a problem hiding this comment.
🧩 Analysis chain
🌐 Web query:
pnpm/action-setup v6 release notes
💡 Result:
pnpm/action-setup v6 release notes (from the repo’s official GitHub Releases pages) are available as a series of versioned release entries under the v6 tags. The most recent v6 entry visible in the official releases feed is v6.0.8 (published 2026-05-12), with the following changes: 1) v6.0.8 (2026-05-12) - docs(README): fix cache_dependency_path type (PR #257) [1] - fix: drop patchPnpmEnv so standalone+self-update works on Windows (PR #258) [1] - fix: update pnpm to 11.1.1 (PR #248) [1] 2) v6.0.4 (2026-04-30) - fix: use npm co-located with the action node binary (PR #239) [2] Additional v6 changes are also reflected in the v4...v6 comparison page (including updates to README/examples and caching-related input typing/behavior), which indicates that v6 introduces/updates inputs like cache_dependency_path handling. In that compare view, cache_dependency_path is described as accepting multiple paths delimited by newlines, and the example workflows are updated to use pnpm/action-setup@v6 instead of v4. [3] Notes / where to read the full set of v6 release notes: - Start at the official Releases index for pnpm/action-setup and select the v6.x.y tags. The Releases index is the source of truth for the complete v6 changelog history. [4] If you want, tell me the exact v6 range you care about (e.g., “v6.0.0 through v6.0.8” or “just v6.0.8”), and I’ll summarize only those entries.
Citations:
- 1: https://github.com/pnpm/action-setup/releases/tag/v6.0.8
- 2: https://github.com/pnpm/action-setup/releases/tag/v6.0.4
- 3: pnpm/action-setup@v4...v6
- 4: https://github.com/pnpm/action-setup/releases
🌐 Web query:
Node.js 24.15.0 release notes
💡 Result:
Node.js 24.15.0 (Krypton, LTS) release notes (published 2026-04-15) list these notable changes: - cli: add --max-heap-size option [1] - cli: add --require-module / --no-require-module [2] - crypto: add raw key formats support to the KeyObject APIs [1] - fs: add throwIfNoEntry option for fs.stat and fs.promises.stat [2] - http2: add http1Options for HTTP/1 fallback configuration [2] - module: mark require(esm) as stable [2] - module: mark module compile cache as stable [2] - net: add setTOS and getTOS to Socket [2] - sqlite: add limits property to DatabaseSync [2] - sqlite: mark as release candidate [2] - src: add C++ support for diagnostics channels [2] - stream: rename Duplex.toWeb type option to readableType [2] - test_runner: add exports option for module mocks [2] - test_runner: expose worker ID for concurrent test execution [2] - test_runner: show interrupted test on SIGINT [2] Primary sources for the above are the official Node.js blog release page and the Node.js v24 changelog section for 24.15.0 [1][2].
Citations:
- 1: https://nodejs.org/blog/release/v24.15.0
- 2: https://github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_V24.md
🏁 Script executed:
#!/bin/bash
# Check all workflow files for consistency in action versions
rg -n "pnpm/action-setup@" --type yaml
rg -n "node-version:" --type yamlRepository: ProverCoderAI/effect-template
Length of output: 55
🏁 Script executed:
#!/bin/bash
# Check if the workflow file exists
ls -la .github/workflows/ 2>/dev/null || echo "Directory not found"
# If it exists, read the file
if [ -f ".github/workflows/checking-dependencies.yml" ]; then
echo "=== File found, reading contents ==="
cat -n ".github/workflows/checking-dependencies.yml"
else
echo "File not found"
fi
# Also check with fd for any workflow files
echo "=== Searching for workflow files ==="
fd -e yml -e yaml ".github/workflows/" 2>/dev/null || fd -e yml -e yamlRepository: ProverCoderAI/effect-template
Length of output: 1412
🏁 Script executed:
#!/bin/bash
# Check pnpm version in lock file
head -20 pnpm-lock.yaml | grep -i "version\|lockfileVersion"
# Also check package.json for pnpm version requirement if any
if [ -f "package.json" ]; then
grep -i "pnpm" package.json
fi
# Check if there's a .npmrc or similar config
if [ -f ".npmrc" ]; then
cat .npmrc
fiRepository: ProverCoderAI/effect-template
Length of output: 745
🌐 Web query:
pnpm 11.1.2 release date and availability
💡 Result:
No evidence found of a pnpm 11.1.2 release as of 2026-05-14. The latest releases are v11.1.1 (published around 2026-05-12 [1]) and v11.1.0 (published 2026-05-11 [2][3][4]). Official GitHub releases page lists recent tags up to May 12 but no 11.1.2 [3]. npm registry tracks these releases [4], and no sources mention 11.1.2. It is not yet released or available.[2][3][1]
Citations:
- 1: https://newreleases.io/project/github/pnpm/pnpm/release/v11.1.1
- 2: https://github.com/pnpm/pnpm/releases/tag/v11.1.0
- 3: https://github.com/pnpm/pnpm/releases
- 4: https://newreleases.io/project/npm/pnpm/release/11.1.0
🌐 Web query:
pnpm/action-setup configure pnpm version 11.1.2
💡 Result:
To configure pnpm/action-setup to install pnpm 11.1.2, use the action’s with.version input: steps: - uses: pnpm/action-setup@v6 with: version: 11.1.2 The version input is “Version of pnpm to install” and supports exact versions like 11.1.2 (or version ranges/tags). If you omit version, the action can use the packageManager field from your package.json instead.[1] You may optionally specify run_install if you also want the action to run pnpm install for you; otherwise run pnpm install in a later step.[1]
Citations:
Configure pnpm version in pnpm/action-setup to match project requirement.
The workflow uses pnpm/action-setup@v6 which installs pnpm 11.1.1 by default, but the project specifies packageManager: pnpm@11.1.2 in package.json. Since pnpm 11.1.2 does not yet exist, the pnpm install --frozen-lockfile step (line 21) will fail due to version mismatch. Either update package.json to use pnpm 11.1.1, or configure the action with with.version: 11.1.2 once that version is released. Alternatively, the action can auto-detect the version from package.json if no version input is specified (allowing proper error messaging when unavailable).
🤖 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 @.github/workflows/checking-dependencies.yml at line 15, The workflow uses
pnpm/action-setup@v6 but package.json declares packageManager: pnpm@11.1.2,
causing a mismatch; either align the workflow or package.json: update
package.json's packageManager to "pnpm@11.1.1" to match the action's default, or
explicitly configure the action in .github/workflows/checking-dependencies.yml
(pnpm/action-setup) with a compatible with.version value (e.g., 11.1.1) until
11.1.2 is released, or remove the explicit version so the action auto-detects
from package.json and surfaces the proper error if the version is unavailable.
| "private": true, | ||
| "description": "Monorepo workspace for effect-template", | ||
| "packageManager": "pnpm@10.29.3", | ||
| "packageManager": "pnpm@11.1.2", |
There was a problem hiding this comment.
🧩 Analysis chain
🌐 Web query:
pnpm 11 release notes breaking changes from pnpm 10
💡 Result:
pnpm 11 introduces several breaking changes from v10, primarily documented in the official migration guide [1] and v11.0.0 release notes [2][3]. Key breaking changes include: Node.js requirement: Now requires Node.js 22 or newer; support for v18-21 dropped. pnpm is pure ESM, and standalone exe needs glibc 2.27+ [3][2][4]. Configuration changes [1]: - No longer reads config from package.json#pnpm; move to pnpm-workspace.yaml. -.npmrc limited to auth/registry; other settings (hoist-pattern, node-linker, etc.) to pnpm-workspace.yaml (camelCase keys). - npm_config_* env vars ignored; use pnpm_config_*. - Deprecated build settings (onlyBuiltDependencies, etc.) removed; use allowBuilds [3][2]. - Package manager settings consolidated to pmOnFail: 'download'|'ignore'|'warn'|'error'. - Renames: allowNonAppliedPatches -> allowUnusedPatches; auditConfig.ignoreCves -> auditConfig.ignoreGhsas. Store upgraded to v11: SQLite index.db replaces JSON files; incompatible with v10 stores (clear or migrate) [3][2][5]. Global installs: Isolated in {pnpmHomeDir}/global/v11/{hash}/ with own package.json/node_modules/pnpm-lock.yaml. pnpm install -g (no args) removed; use pnpm add -g [3][2]. pnpm link changes: No global store resolution; only relative/absolute paths. --global removed (use pnpm add -g.); no-arg pnpm link removed [1][6]. Removed commands: pnpm server; npm passthrough (publish, login, etc.) now native, some like access, edit removed [3][2]. Lockfile: patchedDependencies simplified to selector -> hash; auto-migrated [5]. Script shadowing: Scripts named clean/setup/deploy/rebuild run script, not built-in; use pnpm pm [1]. Security defaults: minimumReleaseAge=1440 (1 day), blockExoticSubdeps=true, strictDepBuilds=true [3][2]. A codemod assists migration: pnpx codemod run pnpm-v10-to-v11 [1]. Full details: https://pnpm.io/migration [1], https://github.com/pnpm/pnpm/releases/tag/v11.0.0 [2], https://pnpm.io/blog/releases/11.0 [3].
Citations:
- 1: https://pnpm.io/migration
- 2: https://github.com/pnpm/pnpm/releases/tag/v11.0.0
- 3: https://pnpm.io/blog/releases/11.0
- 4: https://github.com/pnpm/pnpm/releases/tag/v11.0.0-rc.0
- 5: https://github.com/pnpm/pnpm/releases/tag/v11.0.0-alpha.14
- 6: https://github.com/pnpm/pnpm/releases/tag/v11.0.0-beta.3
🏁 Script executed:
#!/bin/bash
# Check if pnpm-lock.yaml has been updated alongside this change
git diff HEAD -- pnpm-lock.yaml | head -50Repository: ProverCoderAI/effect-template
Length of output: 55
🏁 Script executed:
#!/bin/bash
# Check if pnpm-lock.yaml exists and what version it specifies
if [ -f "pnpm-lock.yaml" ]; then
echo "=== pnpm-lock.yaml lockfileVersion ==="
head -20 pnpm-lock.yaml | rg "lockfileVersion|name|version"
else
echo "pnpm-lock.yaml not found"
fi
# Check if package.json has pnpm config that needs migration
echo -e "\n=== package.json pnpm config ==="
jq '.pnpm' package.json 2>/dev/null || echo "No pnpm config in package.json"
# Check Node.js version requirement
echo -e "\n=== Node.js engines requirement ==="
jq '.engines' package.json 2>/dev/null || echo "No engines field"Repository: ProverCoderAI/effect-template
Length of output: 586
🏁 Script executed:
#!/bin/bash
# Check git log to see if pnpm-lock.yaml was modified in this change
echo "=== Recent git changes to pnpm-lock.yaml ==="
git log --oneline -n 10 -- pnpm-lock.yaml 2>/dev/null || echo "No pnpm-lock.yaml history"
# Check if .npmrc or pnpm-workspace.yaml exists
echo -e "\n=== pnpm configuration files ==="
ls -la .npmrc pnpm-workspace.yaml .pnpmfile.cjs 2>/dev/null || echo "Checking config files..."
fd -e "npmrc|pnpmfile|workspace.yaml" .Repository: ProverCoderAI/effect-template
Length of output: 287
🏁 Script executed:
#!/bin/bash
# Check CI workflows for Node.js version
echo "=== CI/CD Node.js version requirement ==="
find .github -name "*.yml" -o -name "*.yaml" 2>/dev/null | head -5 | xargs grep -l "node-version\|node_version\|setup-node" 2>/dev/null | head -1 | xargs cat 2>/dev/null | grep -A 2 "node-version\|setup-node" || echo "Checking workflows..."Repository: ProverCoderAI/effect-template
Length of output: 370
Migrate deprecated pnpm configuration to pnpm 11 format.
The pnpm-lock.yaml has been regenerated to v9.0 (pnpm 11 format), but package.json still contains deprecated configuration that is no longer supported in pnpm 11:
ignoredBuiltDependenciesandonlyBuiltDependenciesmust be migrated to the newallowBuildsconfiguration- Node.js requirement must be explicitly set to 22+ in the
enginesfield (pnpm 11 no longer supports Node.js v18-21)
These deprecated options will cause failures when running pnpm commands. Use the pnpm v10→v11 migration codemod (pnpx codemod run pnpm-v10-to-v11) to complete the migration.
🤖 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, Update package.json to remove deprecated pnpm v10
fields and adopt pnpm v11 format: replace any ignoredBuiltDependencies and
onlyBuiltDependencies entries with the new allowBuilds configuration (mapping
allowed package patterns or booleans accordingly) and set the engines.node field
to ">=22" (or "22.x" per project policy) so Node.js requirement is explicit for
pnpm 11; also keep packageManager set to "pnpm@11.1.2" and run the pnpm v10→v11
codemod (pnpx codemod run pnpm-v10-to-v11) to ensure any other migration changes
are applied.
| "@typescript-eslint/parser": "^8.59.3", | ||
| "typescript-eslint": "^8.59.3", | ||
| "@vitest/coverage-v8": "^4.1.6", | ||
| "eslint": "^10.3.0", |
There was a problem hiding this comment.
🧩 Analysis chain
🌐 Web query:
ESLint 10.0 release notes breaking changes migration guide
💡 Result:
ESLint 10.0 release notes / breaking changes and the official migration guide are here: 1) Official migration guide (v9.x → v10.x) https://eslint.org/docs/latest/use/migrate-to-10.0.0 [1] 2) Official release notes for v10.0.0 https://eslint.org/blog/2026/02/eslint-v10.0.0-released/ [2] Key breaking changes called out in the migration guide (high-signal items) A) Node.js version support dropped ESLint v10.0.0 no longer supports Node.js versions < v20.19.0 (and also drops v21.x and v23.x); the migration guide says to upgrade to Node.js v20.19.0 or later [1][3]. B) “Old config format” no longer supported; flat config required The v10 migration guide states the legacy config system is removed (i.e., old eslintrc format is no longer supported) and points you to use flat config (eslint.config.) [1]. The migration guide summary also calls out removing the eslintrc format [1][3]. C) New configuration file lookup algorithm In ESLint v9 there was an alternate behavior guarded by a feature flag; in v10.0.0, the behavior is the default. The migration guide describes that config lookup now starts from the directory of each linted file and searches upward to the filesystem root (instead of starting from the current working directory) and that the v10_config_lookup_from_file flag was removed [1]. D) Removed feature for eslintrc config lookup behavior flag Attempting to use v10_config_lookup_from_file now results in an error (because the flag was removed) [1]. E) Rule/behavior & API breaking changes (examples listed in the migration guide) The migration guide lists multiple other breaking/API changes, including (among others) removal of the nodeType property in LintMessage objects [1], JSX references now being tracked [1], and changes around fixer APIs requiring string text arguments [1]. How to migrate (practical steps to follow) - Upgrade Node.js to a supported version (>= v20.19.0) before running ESLint 10 [1]. - Ensure you are using flat config (eslint.config.) and remove any legacy eslintrc configuration usage [1]. - If you previously relied on the v9 config lookup behavior / feature flag, update to the new lookup algorithm (start from each linted file’s directory) [1]. - Then run the official migration guide’s checklist/sections to address any remaining listed breaking changes in your specific setup [1].
Citations:
- 1: https://eslint.org/docs/latest/use/migrate-to-10.0.0
- 2: https://eslint.org/blog/2026/02/eslint-v10.0.0-released/
- 3: https://mintlify.com/eslint/eslint/guides/migrate-to-10
🏁 Script executed:
#!/bin/bash
# Check ESLint configuration files for compatibility
fd eslint.config -e js -e mjs -e cjs --exec cat {}Repository: ProverCoderAI/effect-template
Length of output: 55
🏁 Script executed:
#!/bin/bash
# Check for ESLint configuration files
echo "=== Searching for ESLint config files ==="
fd -e json -e js -e cjs -e mjs '(eslintrc|eslint\.config)' --base-directory .
# Check package.json for Node.js version and ESLint config location
echo -e "\n=== Checking packages/app/package.json ==="
head -80 packages/app/package.json | tail -20
# Check root package.json for Node.js engines
echo -e "\n=== Checking root package.json for engines ==="
rg '"engines"' -A 5 package.jsonRepository: ProverCoderAI/effect-template
Length of output: 1013
🏁 Script executed:
#!/bin/bash
# More comprehensive search for all ESLint-related configs
echo "=== Searching for all ESLint configs ==="
find . -type f \( -name ".eslintrc*" -o -name "eslint.config.*" \) 2>/dev/null
# Check for ESLint in workspace packages
echo -e "\n=== Checking eslint references in all package.json files ==="
find . -name "package.json" -type f -exec grep -l "eslint" {} \; 2>/dev/nullRepository: ProverCoderAI/effect-template
Length of output: 252
🏁 Script executed:
#!/bin/bash
# Check the ESLint flat config file
echo "=== Content of eslint.config.mts ==="
cat packages/app/eslint.config.mts
# Search for Node.js version constraints
echo -e "\n=== Searching for Node.js version constraints ==="
find . -type f \( -name ".nvmrc" -o -name ".tool-versions" -o -name "nvmrc" \) 2>/dev/null | head -10
# Check GitHub workflows for Node.js version
echo -e "\n=== Checking for Node.js version in CI/workflows ==="
fd "\.ya?ml$" .github/workflows 2>/dev/null | xargs grep -h "node-version" 2>/dev/null | head -10Repository: ProverCoderAI/effect-template
Length of output: 10380
🏁 Script executed:
#!/bin/bash
# Check if engines field exists in root and app package.json
echo "=== Checking engines field in package.json files ==="
rg '"engines"' -B 1 -A 3 . --type json
# Check for `@eslint/compat` usage in eslint.config.mts
echo -e "\n=== Checking `@eslint/compat` usage ==="
grep -n "@eslint/compat\|compat" packages/app/eslint.config.mts || echo "No `@eslint/compat` found in config"Repository: ProverCoderAI/effect-template
Length of output: 219
Add engines field to enforce Node.js >= v20.19.0 for ESLint 10.3.0 compatibility.
The repository has already properly migrated to ESLint's flat config format (eslint.config.mts) and uses @eslint/compat correctly for plugin compatibility. However, ESLint 10.3.0 requires Node.js >= v20.19.0, and this constraint should be explicitly documented in package.json via an engines field. Without it, developers using older Node.js versions may encounter runtime errors. Add to packages/app/package.json:
"engines": {
"node": ">=20.19.0"
}🤖 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` at line 71, Add an "engines" entry to
packages/app/package.json to require Node.js >=20.19.0 so ESLint 10.3.0 runs
correctly; locate the existing "eslint": "^10.3.0" dependency in package.json
and add an "engines" object with "node": ">=20.19.0" to enforce the minimum Node
version for contributors and CI.
Note
This PR body was truncated due to platform limits.
This PR contains the following updates:
^2.4.0→^2.6.3^0.5.2→^1.0.1^2.29.8→^3.0.3^0.73.2→^0.77.2^0.56.4→^0.60.2^0.58.0→^0.61.1^0.94.5→^0.97.2^0.104.1→^4.0.6^0.47.0→^0.51.0^0.47.0→^0.51.0^0.73.1→^0.76.2^0.49.0→^0.52.1^0.38.0→^0.41.0^0.27.0→^4.0.6^0.16.0→^0.19.1^4.6.0→^4.8.12.0.2→2.1.13.3.3→3.3.7^0.0.25→^0.0.26^24.10.13→^24.19.2^8.55.0→^8.72.0^8.55.0→^8.72.0^4.0.18→^5.0.5^1.6.9→^1.6.28v6→v7v6→v7v6→v7^3.19.17→^4.0.6^10.0.0→^10.13.0^4.4.4→^4.4.5^12.1.1→^14.0.0^3.0.7→^4.2.2^2.0.0→^3.0.0^63.0.0→^79.0.0^17.3.0→^17.13.0^4.0.8→^5.4.224.13.1→24.22.110.29.3→12.15.0v4→v6v3→v6^27.0.2→^28.0.0^5.9.3→^7.0.2^8.55.0→^8.72.0^7.3.1→^8.3.5^4.0.18→^5.0.5cc @skulidropek
Release Notes
biomejs/biome (@biomejs/biome)
v2.6.3Compare Source
Patch Changes
#12275
807e616Thanks @dyc3! - Added the new nursery rulenoArraySortForMinMax, which reports sorting an array only to read its smallest or largest value. UseMath.min()orMath.max()instead.#12432
cf61682Thanks @dyc3! - Added the nursery rulenoBooleanSortComparator, 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
b4654c5Thanks @dyc3! - Added the new nursery rulenoEagerArrayMethodsInLoops, which reports.map()and.filter()calls in the header offor...ofloops. These calls build a new array that is only used by the loop.#12121
66c3791Thanks @dyc3! - Added the nursery rulenoNewRequire, which disallows callingrequirewithnew, such asnew require("app-header").#12316
34b520dThanks @dyc3! - Added the new nursery rulenoObsoleteAttributes, which disallows obsolete attributes on HTML elements and suggests what to use instead.#12258
cce2385Thanks @dyc3! - Added the nursery rulenoPathConcat, which disallows building file paths and URLs by joining strings to__dirname,__filename,import.meta.dirname,import.meta.filename, orimport.meta.url.#12287
e12ad78Thanks @dyc3! - Added the new nursery rulenoPlaywrightNthMethods, which disallows selecting Playwright elements by position withfirst(),last(), andnth(). A test that relies on the position of an element can act on a different element when the page changes.#12343
62ad123Thanks @vibbix! - Added the nursery rulenoSelfNestedLayer, which disallows nesting a cascade layer inside a layer with the same name. Layer names inside an@layerblock are relative to it, so the inner layer below creates the sublayercomponents.componentsinstead of adding tocomponents.#12289
bbbd95dThanks @dyc3! - Added the nursery rulenoShortTimeValues, which reports CSS animation and transition times that are shorter than the configuredminimumnumber of milliseconds. The rule does nothing untilminimumis set.For example, the following code is invalid when
minimumis100:#12431
f748ec0Thanks @dyc3! - Added the nursery rulenoSvelteInternal, which disallows importing fromsvelte/internaland its submodules. These modules are private to Svelte and can change or disappear in any release.#12270
8ae35c4Thanks @dyc3! - Added the nursery rulenoTanstackQueryRestDestructuring, 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.The rule belongs to the new
tanstackQuerydomain.#12308
372af2aThanks @dyc3! - Added the new nursery rulenoUnreadableForOfExpression, which reportsfor...ofandfor await...ofloops that go through the result of a complex expression instead of a variable, a property, or a short call.#12422
0be8d10Thanks @dyc3! - Added the new nursery rulenoUnsafeReturn, which disallows returning a value typed asanyfrom a function.#12311
8434c92Thanks @dyc3! - Added the nursery rulenoUselessSplice, which reportssplice()calls that have a simpler alternative. For example,array.splice(0, 1)can be written asarray.shift().#12293
eaa4a2bThanks @dyc3! - Added the nursery rulenoVueUnusedEmitDeclarations, which reports events that a Vue component declares but never emits.For example, the following component never emits
close:#12386
f01ebb0Thanks @dyc3! - Added the nursery rulenoVueVTextVHtmlOnComponent, which disallowsv-textandv-htmlon Vue components. These directives replace everything inside the component's root element instead of filling its slot.#12385
7bd38b7Thanks @dyc3! - Added the new nursery rulenoVueWatchAfterAwait, which disallows creating watchers after anawaitin a Vue component'ssetup()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.#12286
50d2a4eThanks @dyc3! - Added the nursery rulenoZeroLengthUnit, which disallows units on zero lengths in CSS. Biome can remove the unit.#12300
ab2eb9eThanks @dyc3! - Added the nursery ruleuseBlockStatementOverIife, which reports functions that are called immediately when a block statement can replace them. Biome can replace these functions with a block statement.Invalid:
#12421
1c2cac0Thanks @dyc3! - Added the nursery ruleuseConsistentLightnessNotation, which enforces writing the lightness oflab(),lch(),oklab(), andoklch()colors as a percentage, or as a number with thenotationoption. For example, with the default options,oklch(0.85 0.17 88)is reported and can be fixed tooklch(85% 0.17 88).#12224
fef7ed4Thanks @dyc3! - Added the nursery ruleuseExpectToContain, which reports tests that compare the result ofincludes()to a boolean, and suggests usingtoContain()instead.#12299
0d5025dThanks @dyc3! - Added the new nursery ruleuseIteratorZip, which reportsforloops that use an index only to read the same position from several arrays. Such loops can useIterator.zip()instead.#12298
a234d2fThanks @dyc3! - Added the nursery ruleuseMathAbs, which reports manual absolute value calculations and range checks that can useMath.abs(). For example,value < 0 ? -value : valuecan be written asMath.abs(value), andvalue > limit || value < -limitcan be written asMath.abs(value) > limit.#12499
bd024ccThanks @dyc3! - Added the nursery ruleuseMathTrunc, which requiresMath.trunc()instead of bitwise operations orparseInt(String(x), 10)for removing the decimal part of a number. For example,const result = value | 0;andconst result = ~~value;are now reported.#12314
9e875a4Thanks @dyc3! - Added the new nursery ruleusePackageJsonValidCpu, which reports acpufield inpackage.jsonthat isn't an array of known processor types. Thecpufield lists the processor types that the package supports.For example, the rule reports the following
package.jsonfile becausex86isn't a processor type that package managers recognize:{ "name": "my-package", "cpu": ["x86"] }#12315
cb30544Thanks @dyc3! - Added the nursery ruleusePackageJsonValidEngines, which reports an invalidenginesfield inpackage.json. The field must be an object, and each of its values must be a non-empty string.For example, the following
enginesfield is reported because the version ofnodeis a number:{ "engines": { "node": 24 } }#12400
407604dThanks @dyc3! - Added the nursery ruleuseVueComponentIs, which requires Vue<component>elements to bind theisattribute with:isorv-bind:is. Without it, Vue has no component to render.#12337
c371520Thanks @dyc3! - Added the nursery ruleuseVueToggleInsideTransition, which requires the element inside a Vue<Transition>to be shown and hidden withv-iforv-show. Without one of them, the element is always shown and the transition never plays.#12387
64472e9Thanks @dyc3! - Added the nursery ruleuseVueTypedRef, which reportsref()andshallowRef()calls in TypeScript that have no type argument and no initial value other thannullorundefined. Without a type, TypeScript can't tell which values these refs are meant to hold.#12423
bf1a55aThanks @dyc3! - Added the nursery ruleuseVueVOnExact, which requires the.exactmodifier on av-onlistener 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:#12418
208730eThanks @latin-1! - Fixed #12417:useSortedPropertiescould produce invalid CSS when sorting properties without a final semicolon. Comments attached to reordered properties are preserved.#12216
f2a3c71Thanks @dyc3! - Added the new nursery rulenoDanglingUnderscore, which disallows variable names, function names, and property accesses that start or end with an underscore.#12536
438997fThanks @vidigoat! - Fixed the formatter removing the parentheses around an instantiation expression before+,-,<,>,>=,>>and>>>. TypeScript readsmake<T> + yasmake < T > +y, andmake<T> >> ydoesn't parse.#12540
7d3e8a1Thanks @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.#12496
09d89b9Thanks @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.#12526
dbcdab1Thanks @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 at1can't interrupt a paragraph and became part of the paragraph text.#12509
470018bThanks @dyc3! - Fixed #12507: the Markdown formatter no longer drops the>markers after an empty quote line whenproseWrapis"always"or"never". Previously, the text after the empty line was moved out of the blockquote.#12598
5699601Thanks @vidigoat! - Fixed the formatter removing the parentheses around the callee of anewexpression when it contains a dynamicimport()call, which produced code that doesn't parse.#12508
87d9e6bThanks @dyc3! - Fixed #12502:noInvalidGridAreasnow counts the cells in each row ofgrid-template-areasinstead 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
7f467b2Thanks @dyc3! - Fixed #12529:noUselessElseno longer reports anelseclause when theifblock ends with aswitchstatement that has nodefaultclause. If no case matches, such aswitchdoesn't exit, so theelseclause is needed.#12511
d4ea663Thanks @dyc3! - Fixed #12505:useDomNodeTextContentno longer reportsinnerTexton values whose type annotation shows they aren't DOM nodes. The following code is now valid:#12588
e262362Thanks @ematipico! - FixednoDescendingSpecificityto compare resolved nested selector targets. Biome no longer reports nested selectors that resolve to different targets, detects equivalent explicit and nested targets, and emits one diagnostic when a parent selector list expands the same nested selector multiple times.For example, the following selectors are no longer reported because their final targets are
.columnandcode, respectively:#12534
e59a324Thanks @Netail! - Improved the diagnostics ofnoIdenticalTestTitle. Biome now reports one diagnostic per repeated title, pointing at the first occurrence and at every later occurrence, instead of one diagnostic per duplicate.#12528
a3132dcThanks @ff1451! - Fixed #12503:noUnknownPropertynow checks SCSS nested properties by the name Sass emits for them. For example,radiusinborder: { radius: 4px; }is checked asborder-radiusand is no longer reported, whilecolorinfont: { color: red; }is checked asfont-colorand is now reported.#12113
ec4eb2dThanks @dyc3! - Added the nursery ruleuseConsistentUnicodeBom, which disallows a leading Unicode byte order mark by default and can require one withbom: "always". The rule supports JavaScript, TypeScript, JSON, CSS, GraphQL, HTML, and Markdown, provides a fix, and preserves theunicode-bomoption during ESLint migration.The following example is invalid by default because it starts with an invisible U+FEFF character:
#12248
afbc81eThanks @dyc3! - Added the nursery ruleuseReactNativeValidPlatformColors, which requiresPlatformColor()andDynamicColorIOS()calls to use values written directly in the call, so React Native can optimize them.#12599
b62494aThanks @dyc3! - Fixed #12532: checking the project root no longer appliesfiles.includesexclusions to directories above the project.#12578
6162922Thanks @ematipico! - Fixed GraphQL parsing and formatting for executable descriptions and legacy fragment variables. Biome now formats inputs such as"Description" query { field }without panicking and removes insignificant commas consistently.#12593
35c69adThanks @dyc3! - Fixed #12555: the default reporter now prints the command summary, the--max-diagnosticswarning, and the skipped-fixes notice to stderr instead of stdout. Diagnostics already go to stderr, so the summary can no longer get mixed into the middle of a diagnostic when a tool reads the two streams separately.#12415
9520907Thanks @latin-1! - Fixed #12412:useSortedPropertiesnow sorts properties inside@keyframesanimations in CSS and SCSS.v2.6.2Compare Source
Minor Changes
#11479
5c60ba8Thanks @nhedger! - Added a--gitflag tobiome init. The flag enables Git VCS integration and setsvcs.useIgnoreFiletotruein the generated configuration, even when the command runs outside a Git repository.#11742
3a1356dThanks @Netail! - Added thebiome migrate stylelintcommand. It imports a Stylelint configuration and its ignore settings into your Biome configuration, mapping Stylelint rules to their Biome equivalents. Pass--writeto apply the changes, and--include-inspiredor--include-nurseryto migrate additional rules.#12318
774b5b5Thanks @Netail! - Added the new assist actionuseGraphqlSortedDefinitions, which sorts the named definitions of a GraphQL document, such as types, type extensions, directives, fragments, and operations.Invalid:
#6886
3479d15Thanks @christymcgrory! -biome ragenow shows the resolvedfiles.includesandfiles.ignoreUnknownconfiguration.#11102
0874b7fThanks @gameroman! - Added support foruseTailwindSortedClassesrule in HTML-ish files.#10711
40de5a0Thanks @soconnor-seeq! - Adds a newresolutionKindoption for object-syntax plugin entries.This allows shared Biome configs in monorepos to load local Grit plugins from the package that declares them instead of resolving plugin paths from the consuming project.
{ "plugins": [ { "path": "./grit/no-debugger.grit", "resolutionKind": "config" }, { "path": "local-plugin.grit", "resolutionKind": "project" }, { "path": "local-plugin.grit" } ] }Use
resolutionKind: "config"to resolve the plugin from the configuration file that declares it. UseresolutionKind: "project"to resolve the plugin from the consuming project. When omitted,resolutionKinddefaults toproject. This only affects plugin resolution;includesstill apply to end-user project files as usual.#11432
4befd08Thanks @ematipico! - Addedbiome inspect configto show resolved configuration values and their origins as human-readable diagnostics, including matching overrides.Configuration files can also extend other configurations up to ten levels deep. Repeated references to the same resolved file are ignored with an information diagnostic, while resolving multiple versions of one extended package produces an error.
#11477
ab05554Thanks @nhedger! - Added automatic Git VCS integration when runningbiome initinside a Git repository, including from nested directories and Git worktrees. The generated configuration setsvcs.enabledandvcs.useIgnoreFiletotrue, withvcs.clientKindset to"git".#11451
1ac4b09Thanks @ematipico! - #### YAML is now supportedAdded support for formatting YAML files, both
.yamland.ymlextensions#11432
4befd08Thanks @ematipico! - Configuration files can now recursively extend local files and npm package configurations up to ten levels. Every repeated reference participates in the merge, while resolving multiple versions of one extended package produces an error.#11713
ac6a640Thanks @dyc3! - Added support for Gritrange()patterns, addressing #8454. Plugins can filter syntax nodes by optionalstart_line,start_column,end_line, andend_columnbounds.For example, this pattern matches function calls contained entirely on line 2.
#11244
0628b53Thanks @ematipico! - Added the new CLI option--profile-type-inferenceto the commandslintandcheck.The profiler is designed to track the execution time of internal queries and operations, group them by file, and sort them from the most expensive to the least expensive.
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.