Skip to content

chore(deps-dev): bump eslint from 8.57.1 to 9.26.0#5680

Open
dependabot[bot] wants to merge 1 commit intounstablefrom
dependabot/npm_and_yarn/eslint-9.26.0
Open

chore(deps-dev): bump eslint from 8.57.1 to 9.26.0#5680
dependabot[bot] wants to merge 1 commit intounstablefrom
dependabot/npm_and_yarn/eslint-9.26.0

Conversation

@dependabot
Copy link
Contributor

@dependabot dependabot bot commented on behalf of github Jan 31, 2026

Bumps eslint from 8.57.1 to 9.26.0.

Release notes

Sourced from eslint's releases.

v9.26.0

Features

  • e9754e7 feat: add reportGlobalThis to no-shadow-restricted-names (#19670) (sethamus)
  • 0fa2b7a feat: add suggestions for eqeqeq rule (#19640) (Nitin Kumar)
  • dcbdcc9 feat: Add MCP server (#19592) (Nicholas C. Zakas)
  • 2dfd83e feat: add ignoreDirectives option in no-unused-expressions (#19645) (sethamus)

Bug Fixes

  • 96e84de fix: check cache file existence before deletion (#19648) (sethamus)
  • d683aeb fix: don't crash on tests with circular references in RuleTester (#19664) (Milos Djermanovic)
  • 9736d5d fix: add namespace to Plugin.meta type (#19661) (Milos Djermanovic)
  • 17bae69 fix: update RuleTester.run() type (#19634) (Nitin Kumar)

Documentation

  • dd98d63 docs: Update README (GitHub Actions Bot)
  • c25e858 docs: Update README (GitHub Actions Bot)
  • b2397e9 docs: Update README (GitHub Actions Bot)
  • addd0a6 docs: fix formatting of unordered lists in Markdown (#19660) (Milos Djermanovic)
  • a21b38d docs: Update README (GitHub Actions Bot)
  • c0721a7 docs: fix double space in command (#19657) (CamWass)

Chores

  • 5b247c8 chore: upgrade to @eslint/js@9.26.0 (#19681) (Francesco Trotta)
  • d6fa4ac chore: package.json update for @​eslint/js release (Jenkins)
  • 0958690 chore: disambiguate internal types LanguageOptions and Rule (#19669) (Francesco Trotta)
  • f1c858e chore: fix internal type references to Plugin and Rule (#19665) (Francesco Trotta)
  • 40dd299 refactor: One-shot ESQuery selector analysis (#19652) (Nicholas C. Zakas)
  • 1cfd702 chore: update dependency @​eslint/json to ^0.12.0 (#19656) (renovate[bot])

v9.25.1

Bug Fixes

  • cdc8e8c fix: revert directive detection in no-unused-expressions (#19639) (sethamus)

Chores

  • 1f2b057 chore: upgrade @​eslint/js@​9.25.1 (#19642) (Milos Djermanovic)
  • 771317f chore: package.json update for @​eslint/js release (Jenkins)

v9.25.0

Features

  • dcd95aa feat: support TypeScript syntax in no-empty-function rule (#19551) (sethamus)
  • 77d6d5b feat: support TS syntax in no-unused-expressions (#19564) (Sweta Tanwar)
  • 90228e5 feat: support JSRuleDefinition type (#19604) (루밀LuMir)
  • 59ba6b7 feat: add allowObjects option to no-restricted-properties (#19607) (sethamus)
  • db650a0 feat: support TypeScript syntax in no-invalid-this rule (#19532) (Tanuj Kanti)
  • 9535cff feat: support TS syntax in no-loop-func (#19559) (Nitin Kumar)

Bug Fixes

  • 910bd13 fix: nodeTypeKey not being used in NodeEventGenerator (#19631) (StyleShit)

Documentation

... (truncated)

Changelog

Sourced from eslint's changelog.

v9.26.0 - May 2, 2025

  • 5b247c8 chore: upgrade to @eslint/js@9.26.0 (#19681) (Francesco Trotta)
  • d6fa4ac chore: package.json update for @​eslint/js release (Jenkins)
  • e9754e7 feat: add reportGlobalThis to no-shadow-restricted-names (#19670) (sethamus)
  • 0fa2b7a feat: add suggestions for eqeqeq rule (#19640) (Nitin Kumar)
  • dd98d63 docs: Update README (GitHub Actions Bot)
  • 96e84de fix: check cache file existence before deletion (#19648) (sethamus)
  • c25e858 docs: Update README (GitHub Actions Bot)
  • 0958690 chore: disambiguate internal types LanguageOptions and Rule (#19669) (Francesco Trotta)
  • dcbdcc9 feat: Add MCP server (#19592) (Nicholas C. Zakas)
  • b2397e9 docs: Update README (GitHub Actions Bot)
  • d683aeb fix: don't crash on tests with circular references in RuleTester (#19664) (Milos Djermanovic)
  • f1c858e chore: fix internal type references to Plugin and Rule (#19665) (Francesco Trotta)
  • 9736d5d fix: add namespace to Plugin.meta type (#19661) (Milos Djermanovic)
  • 40dd299 refactor: One-shot ESQuery selector analysis (#19652) (Nicholas C. Zakas)
  • addd0a6 docs: fix formatting of unordered lists in Markdown (#19660) (Milos Djermanovic)
  • a21b38d docs: Update README (GitHub Actions Bot)
  • c0721a7 docs: fix double space in command (#19657) (CamWass)
  • 1cfd702 chore: update dependency @​eslint/json to ^0.12.0 (#19656) (renovate[bot])
  • 2dfd83e feat: add ignoreDirectives option in no-unused-expressions (#19645) (sethamus)
  • 17bae69 fix: update RuleTester.run() type (#19634) (Nitin Kumar)

v9.25.1 - April 21, 2025

  • 1f2b057 chore: upgrade @​eslint/js@​9.25.1 (#19642) (Milos Djermanovic)
  • 771317f chore: package.json update for @​eslint/js release (Jenkins)
  • cdc8e8c fix: revert directive detection in no-unused-expressions (#19639) (sethamus)

v9.25.0 - April 18, 2025

  • 88dc196 chore: upgrade @​eslint/js@​9.25.0 (#19636) (Milos Djermanovic)
  • 345288d chore: package.json update for @​eslint/js release (Jenkins)
  • 910bd13 fix: nodeTypeKey not being used in NodeEventGenerator (#19631) (StyleShit)
  • ca7a735 docs: update no-undef-init when not to use section (#19624) (Tanuj Kanti)
  • affe6be chore: upgrade trunk (#19628) (sethamus)
  • 1b870c9 docs: use eslint-config-xo in the getting started guide (#19629) (Nitin Kumar)
  • 5d4af16 docs: add types for multiple rule options (#19616) (Tanuj Kanti)
  • e8f8d57 docs: Update README (GitHub Actions Bot)
  • a40348f docs: no-use-before-define tweaks (#19622) (Kirk Waiblinger)
  • 0ba3ae3 docs: Update README (GitHub Actions Bot)
  • 865dbfe docs: ensure "learn more" deprecation links point to useful resource (#19590) (Kirk Waiblinger)
  • dcd95aa feat: support TypeScript syntax in no-empty-function rule (#19551) (sethamus)
  • 77d6d5b feat: support TS syntax in no-unused-expressions (#19564) (Sweta Tanwar)
  • 90228e5 feat: support JSRuleDefinition type (#19604) (루밀LuMir)
  • f80b746 docs: add known limitations for no-self-compare (#19612) (Nitin Kumar)
  • 59ba6b7 feat: add allowObjects option to no-restricted-properties (#19607) (sethamus)
  • db650a0 feat: support TypeScript syntax in no-invalid-this rule (#19532) (Tanuj Kanti)
  • dd20cf2 test: fix no-loop-func test with duplicate variable reports (#19610) (Milos Djermanovic)
  • 9535cff feat: support TS syntax in no-loop-func (#19559) (Nitin Kumar)

... (truncated)

Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    You can disable automated security fix PRs for this repo from the Security Alerts page.

@dependabot dependabot bot added dependencies Pull requests that update a dependency file javascript Pull requests that update Javascript code labels Jan 31, 2026
@rtibbles rtibbles requested a review from rtibblesbot February 11, 2026 05:42
Copy link

@rtibblesbot rtibblesbot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dependency Update Review

Package: eslint 8.57.1 → 9.26.0
Semver risk: Major (8.x → 9.x)
Dependency type: devDependency
CI status: Passing (build, frontend tests, linting all green)

Changelog Analysis

Sources consulted:

Breaking changes (v9.0.0):

  • Flat config (eslint.config.js) is now the default; legacy .eslintrc.* format requires ESLINT_USE_FLAT_CONFIG=false or ESLint's backward-compatibility shim
  • Minimum Node.js version raised to ^18.18.0 || ^20.9.0 || >=21.1.0
  • FlatESLint renamed to ESLint; legacy ESLint class removed
  • Multiple formatters removed (only html, json, json-with-metadata, stylish retained)
  • Rules removed: valid-jsdoc, require-jsdoc; defaults changed for no-unused-vars, no-useless-computed-key
  • Function-style rules no longer supported; rules default to schema: []

Security fixes: None noted in this version range.

Compatibility Assessment

  • Project uses legacy .eslintrc.js config: Yes — .eslintrc.js extends kolibri-format/.eslintrc
  • No eslint.config.js exists: Confirmed — no flat config migration was performed
  • No ESLINT_USE_FLAT_CONFIG env var set: Confirmed
  • Code changes required: No code migration was performed despite major breaking changes
  • Why CI passes: kolibri-format@1.0.1 bundles its own eslint@8.57.1 as a direct dependency. The lint-frontend script (the only way eslint is invoked) runs through kolibri-format, which uses its bundled ESLint 8. The top-level eslint@9.26.0 is effectively unused for linting.
  • Split dependency result: After this PR, the lockfile contains both eslint@8.57.1 (inside kolibri-format) and eslint@9.26.0 (top-level). The eslint plugins at the top level (eslint-plugin-vue, eslint-plugin-import, etc.) are resolved against ESLint 9, but the actual linting runs with ESLint 8 from kolibri-format.

Recommendation

REQUEST_CHANGES — This major version bump includes breaking changes but no config migration was performed. While CI passes because kolibri-format bundles its own ESLint 8, the upgrade creates a misleading split-dependency state (top-level ESLint 9 is never actually used for linting). See inline comment for details.

"circular-dependency-plugin": "^5.2.0",
"css-loader": "7.1.2",
"eslint": "^8.57.0",
"eslint": "^9.26.0",

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

blocking: This bumps eslint from 8.x to 9.x — a major version with significant breaking changes (flat config default, removed APIs, dropped formatters, changed rule defaults). No config migration was performed:

  • The project uses legacy .eslintrc.js (not the new eslint.config.js flat config)
  • No ESLINT_USE_FLAT_CONFIG=false environment variable is set
  • No code changes accompany this version bump

CI passes only because kolibri-format@1.0.1 bundles its own eslint@8.57.1 — the top-level eslint@9.26.0 is never actually invoked. This creates a confusing split-dependency state where the declared version doesn't match what's used.

Recommend closing this PR. When the project is ready to migrate to ESLint 9, it should be done as a coordinated effort that includes:

  1. Updating kolibri-format to support ESLint 9
  2. Migrating .eslintrc.js to eslint.config.js (or setting ESLINT_USE_FLAT_CONFIG=false)
  3. Addressing any rule changes or removed APIs

@dependabot dependabot bot force-pushed the dependabot/npm_and_yarn/eslint-9.26.0 branch from 9a8c3bc to d6823e1 Compare February 13, 2026 18:56
Copy link

@rtibblesbot rtibblesbot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dependency Update Review

Package: eslint 8.57.1 → 9.26.0
Semver risk: Major
Dependency type: devDependency
CI status: Linting, tests, and build passing (Python tests pending but unrelated)

Changelog Analysis

Sources consulted:

Breaking changes (ESLint 9):

  • Flat config (eslint.config.js) is now the default; legacy .eslintrc format removed from the default ESLint class
  • Node.js minimum bumped to ^18.18.0 || ^20.9.0 || >=21.1.0
  • Removed rules: require-jsdoc, valid-jsdoc
  • Removed built-in formatters (all except html, json, stylish)
  • no-unused-vars default caughtErrors changed to "all"
  • Function-style rules no longer supported
  • Multiple other rule default changes

Security fixes: None noted.

Compatibility Assessment

  • Project uses legacy .eslintrc.js config: Yes — .eslintrc.js imports from kolibri-format/.eslintrc
  • kolibri-format bundles its own eslint: Yes — kolibri-format@1.0.1 declares eslint@^8.57.0 as a direct dependency, so pnpm installs eslint@8.57.1 separately for it
  • Project's eslint@9 is effectively unused: The linting pipeline runs through kolibri-format (via pnpm run lint-frontend), which uses its own bundled eslint@8. The eslint@9 installed at the project root is not invoked by any script or CI check
  • CI passes because linting still runs eslint@8: The "All file linting" CI job runs pre-commitkolibri-format → eslint@8.57.1 (kolibri-format's own copy). The version bump in this PR does not change the actual linting behavior
  • Peer dependency changes: eslint@9 introduces jiti as an optional peer dep; new transitive dependencies include @eslint/config-array, @eslint/core, @modelcontextprotocol/sdk, hono, express@5 (from eslint's MCP server feature)
  • Code changes required: Yes — the project's .eslintrc.js is incompatible with eslint@9's flat config system. No migration was performed

Recommendation

REQUEST_CHANGES — This major bump installs eslint@9 but it goes unused since kolibri-format bundles its own eslint@8. The project's .eslintrc.js config is incompatible with eslint@9's flat config requirement, and no migration was performed. Merging would add ~15+ new transitive dependencies (including express@5, hono, MCP SDK) with no benefit. Recommend closing this PR and coordinating the eslint@9 upgrade together with a kolibri-format update and flat config migration.

"circular-dependency-plugin": "^5.2.0",
"css-loader": "7.1.2",
"eslint": "^8.57.0",
"eslint": "^9.26.0",

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

blocking: This bumps eslint to v9 (major), but the project's linting pipeline runs through kolibri-format@1.0.1, which declares eslint@^8.57.0 as a direct dependency. pnpm installs a separate eslint@8.57.1 for kolibri-format, so this eslint@9 is never actually invoked by any lint script or CI check.

Meanwhile, the project's .eslintrc.js uses legacy eslintrc format (importing from kolibri-format/.eslintrc), which is incompatible with eslint@9's flat config default. No config migration was included.

This upgrade adds ~15+ new transitive dependencies (including @modelcontextprotocol/sdk, hono, express@5 from eslint 9's MCP server feature) with no practical benefit.

Recommend closing this PR. The eslint@9 migration should be coordinated with a kolibri-format update that also moves to flat config.

@dependabot dependabot bot force-pushed the dependabot/npm_and_yarn/eslint-9.26.0 branch from d6823e1 to f4fd24f Compare February 13, 2026 19:18
Copy link

@rtibblesbot rtibblesbot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dependency Update Review

Package: eslint 8.57.1 → 9.26.0
Semver risk: Major (v8 → v9)
Dependency type: devDependency
CI status: Passing (linting, frontend tests, build all green)

Changelog Analysis

Sources consulted:

Breaking changes in v9 (key items):

  • Flat config (eslint.config.js) becomes the default; eslintrc (.eslintrc.js) is deprecated
  • Node.js <18.18.0 dropped
  • Removed rules: require-jsdoc, valid-jsdoc
  • Removed formatters: checkstyle, compact, jslint-xml, junit, tap, unix, visualstudio
  • FlatESLint renamed to ESLint; old ESLint renamed to LegacyESLint
  • Multiple context methods moved to SourceCode (affects plugin authors)
  • Rules added/removed from eslint:recommended; no-unused-vars defaults changed

Security fixes: None noted in the v8→v9 range.

Compatibility Assessment

  • Project uses affected APIs: No — and here's why: this project's linting is entirely delegated to the kolibri-format CLI (v1.0.1), which bundles its own ESLint 8.57.1 internally. The project-level eslint@9.26.0 is not invoked for linting; it serves only as a peer dependency for plugins (eslint-plugin-import, eslint-plugin-vue, eslint-plugin-jest, etc.).
  • Plugin compatibility: All plugins declare eslint >=8.0.0 in their peerDependencies and resolve cleanly against v9.
  • Peer dependency changes: No new peer deps required.
  • Code changes required: No — only package.json and pnpm-lock.yaml are modified.
  • Prior failed attempts: None found.
  • eslintrc format: The project still uses .eslintrc.js. ESLint 9 still supports it (deprecated, not removed), but kolibri-format reads it via its bundled ESLint 8, so this is a non-issue today.

Recommendation

COMMENT — CI passes and the upgrade is safe because the project-level eslint is not used for actual linting. However, this creates a version mismatch (project has ESLint 9, kolibri-format bundles ESLint 8) that could cause confusion. See inline comment.

"circular-dependency-plugin": "^5.2.0",
"css-loader": "7.1.2",
"eslint": "^8.57.0",
"eslint": "^9.26.0",

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion: This major version bump (v8 → v9) is safe today because kolibri-format bundles its own ESLint 8.57.1 and all actual linting runs through that copy. The project-level eslint@9.26.0 effectively serves only as a peer dependency for the ESLint plugins.

However, this creates a latent version mismatch worth being aware of:

  • If a developer runs npx eslint . directly, ESLint 9 will look for eslint.config.js (flat config) by default and won't pick up .eslintrc.js without ESLINT_USE_FLAT_CONFIG=false.
  • When kolibri-format eventually upgrades its bundled ESLint to v9+, the project will need to migrate .eslintrc.js to flat config.

This is fine to merge as-is, but consider tracking the eslintrc → flat config migration as future work.

@dependabot dependabot bot force-pushed the dependabot/npm_and_yarn/eslint-9.26.0 branch 2 times, most recently from 6e9c02b to e0ba8bb Compare February 13, 2026 19:28
Copy link

@rtibblesbot rtibblesbot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dependency Update Review

Package: eslint 8.57.1 → 9.26.0
Semver risk: Major (crossing 8.x → 9.x boundary)
Dependency type: devDependency
CI status: Linting, frontend tests, and build all passing. Python tests still running (unrelated to this change).

Changelog Analysis

Sources consulted:

Breaking changes in ESLint 9 (selected highlights):

  • Default config format changed from .eslintrc.* to flat config (eslint.config.js). Legacy eslintrc format is deprecated and requires ESLINT_USE_FLAT_CONFIG=false.
  • ESLint API class now expects flat config; legacy usage moved to LegacyESLint.
  • Dropped Node.js < 18.18.0 support.
  • Removed require-jsdoc and valid-jsdoc rules.
  • Removed 7 built-in formatters.
  • Various rule default changes (no-unused-vars, no-useless-computed-key, etc.).

Deprecations: The entire eslintrc configuration system.

Security fixes: None noted.

Compatibility Assessment

  • kolibri-format peer dependency violated: kolibri-format@1.0.1 declares eslint@^8.57.0 as a peer dependency. This PR installs eslint 9.x, which falls outside that range.
  • pnpm isolation masks the problem: Because pnpm strictly isolates dependencies, kolibri-format resolves its own eslint@8.57.1 internally. The lockfile confirms three separate eslint versions coexist (7.32.0, 8.57.1, 9.26.0). This is why CI passes — the actual linting tool never sees eslint 9.
  • Project uses legacy .eslintrc.js: The project config at .eslintrc.js uses require('kolibri-format/.eslintrc') — this is the legacy eslintrc format, incompatible with ESLint 9's default flat config mode.
  • No code migration performed: The PR only updates package.json and pnpm-lock.yaml. No migration to flat config, no ESLINT_USE_FLAT_CONFIG=false flag set anywhere.
  • eslint 9.26.0 is effectively unused: All linting goes through kolibri-format (via pnpm run lint-frontend), which bundles its own eslint 8.57.1. No CI step or npm script invokes the project-level eslint binary directly.

Recommendation

REQUEST_CHANGES — This major version bump creates a misleading state: package.json declares eslint 9.x, but the project actually uses eslint 8.x (bundled in kolibri-format). A proper ESLint 9 migration would require updating kolibri-format, migrating .eslintrc.js to flat config, and verifying all plugins support ESLint 9. Without that work, this PR just adds a redundant eslint 9 installation that nothing uses. Recommend closing in favor of a coordinated migration effort, or keeping eslint pinned to 8.x until kolibri-format is updated.

"circular-dependency-plugin": "^5.2.0",
"css-loader": "7.1.2",
"eslint": "^8.57.0",
"eslint": "^9.26.0",

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

blocking: This bumps eslint from 8.x to 9.x (major version), but the project's linting infrastructure is not ready for it:

  1. kolibri-format@1.0.1 peer dependency violation — it requires eslint@^8.57.0. pnpm's strict isolation means kolibri-format bundles its own eslint 8.57.1 internally, so linting happens to still work, but this eslint 9.26.0 installation is effectively unused by any project tooling.

  2. No flat config migration — ESLint 9 defaults to flat config (eslint.config.js), but the project still uses .eslintrc.js with the legacy eslintrc format. Running npx eslint directly would fail to find the config.

  3. Misleading version declaration — Having eslint@^9.26.0 in package.json while actually linting with eslint 8.57.1 (via kolibri-format) creates confusion for contributors.

A proper ESLint 9 migration requires updating kolibri-format, migrating to flat config, and verifying all plugin compatibility. Recommend closing this PR and keeping eslint at 8.x until that coordinated effort is done.

Copy link

@rtibblesbot rtibblesbot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dependency Update Review

Package: eslint 8.57.1 → 9.26.0
Semver risk: Major
Dependency type: devDependency
CI status: Passing (linting, frontend tests, build). Python tests pending but unrelated.

Changelog Analysis

Sources consulted:

Breaking changes:

  • .eslintrc.* config format deprecated — ESLint 9 defaults to flat config (eslint.config.js). Legacy format requires ESLINT_USE_FLAT_CONFIG=false as a temporary escape hatch.
  • Several built-in formatters removed from core.
  • All JSDoc rules removed from core.
  • Node.js minimum raised to 18.18.0.
  • Plugin/rule API changes (context methods restructured).

Security fixes: None noted.

Compatibility Assessment

  • Project uses affected APIs: Yes — .eslintrc.js is the active config format, using require('kolibri-format/.eslintrc') with module.exports.
  • No eslint.config.js (flat config) exists — no migration was performed.
  • Code changes required: Yes — either migrate to flat config or set ESLINT_USE_FLAT_CONFIG=false in all eslint invocations.
  • CI passes because kolibri-format@1.0.1 bundles its own internal eslint@8.57.1 — so the pre-commit linting hook is unaffected by the root-level eslint bump. This masks the incompatibility.
  • Root eslint 9 + .eslintrc.js conflict: Any direct npx eslint invocation will fail or use flat config mode, ignoring .eslintrc.js.

Recommendation

REQUEST_CHANGES — This major version bump includes breaking changes (flat config migration) but no code migration was performed. The .eslintrc.js config is incompatible with eslint 9's default behavior. CI passes only because kolibri-format bundles its own eslint 8 internally, masking the issue. Merging this would leave the project with a non-functional root eslint 9 installation alongside a working-but-separate eslint 8 inside kolibri-format.

"circular-dependency-plugin": "^5.2.0",
"css-loader": "7.1.2",
"eslint": "^8.57.0",
"eslint": "^9.26.0",

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

blocking: This is a major version bump (8.x → 9.x) that requires a config migration. ESLint 9 defaults to the new flat config format (eslint.config.js) and deprecates .eslintrc.*. This project uses .eslintrc.js (which extends kolibri-format/.eslintrc), and no migration to flat config was performed.

CI passes because kolibri-format@1.0.1 bundles its own internal eslint@8.57.1 — the pre-commit linting workflow (pnpm run lint-frontend:format) invokes kolibri-format, which uses its bundled eslint 8, not the root-level eslint. This masks the breaking change.

Merging this would result in:

  • A root eslint@9.26.0 that cannot use the project's .eslintrc.js without ESLINT_USE_FLAT_CONFIG=false
  • kolibri-format continuing to use its own bundled eslint 8 regardless
  • Developer confusion when running npx eslint directly

This update should be coordinated with a flat config migration (eslint.config.js) or deferred until kolibri-format supports eslint 9.

Bumps [eslint](https://github.com/eslint/eslint) from 8.57.1 to 9.26.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/v9.26.0/CHANGELOG.md)
- [Commits](eslint/eslint@v8.57.1...v9.26.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 9.26.0
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot bot force-pushed the dependabot/npm_and_yarn/eslint-9.26.0 branch from e0ba8bb to 25f499f Compare February 13, 2026 20:12
Copy link

@rtibblesbot rtibblesbot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dependency Update Review

Package: eslint 8.57.1 → 9.26.0
Semver risk: Major
Dependency type: devDependency
CI status: Passing (All file linting, Frontend tests, Build frontend assets all green)

Changelog Analysis

Sources consulted:

Breaking changes (ESLint 9.0.0):

  • Flat config (eslint.config.js) is now the default; legacy .eslintrc.* is deprecated (still supported via backward compatibility)
  • Node.js minimum bumped to v18.18.0
  • Removed rules: require-jsdoc, valid-jsdoc
  • Removed built-in formatters: checkstyle, compact, jslint-xml, junit, tap, unix, visualstudio
  • no-unused-vars caughtErrors default changed from "none" to "all"
  • no-useless-computed-key enforceForClassMembers default changed to true
  • Context API removed (methods moved to sourceCode)
  • FlatRuleTester renamed to RuleTester; old ESLint class renamed to LegacyESLint

Deprecations:

  • .eslintrc.* configuration format (superseded by flat config)

Security fixes: None noted.

Compatibility Assessment

  • Project still uses legacy .eslintrc.js format (importing config from kolibri-format/.eslintrc)
  • Linting is not invoked via the top-level eslint binary — all linting goes through kolibri-format CLI (pnpm run lint-frontendkolibri-format)
  • kolibri-format@1.0.1 bundles its own eslint@^8.57.0 as a hard dependency (visible in the lockfile at the kolibri-format@1.0.1 entry, which resolves eslint: 8.57.1 independently)
  • The top-level eslint@^9.26.0 in devDependencies is effectively unused for actual linting — it exists alongside kolibri-format's bundled ESLint 8
  • Peer dependency changes: none required
  • Code changes required: none (no flat config migration performed)
  • Prior failed attempts: none found

Recommendation

COMMENT — CI passes because the actual linting tool (kolibri-format) bundles its own ESLint 8 and is unaffected by this version change. The top-level eslint dependency appears unused for direct linting. This makes the upgrade low practical risk but also low practical value — the project isn't actually using ESLint 9 for anything.

suggestion: Consider whether this upgrade serves a purpose. If eslint is in devDependencies only because kolibri-format needs it (it doesn't — it bundles its own), it could be removed entirely. If it's kept for direct CLI usage or editor integration, the project should also migrate .eslintrc.js to flat config (eslint.config.js) since the legacy format is deprecated in ESLint 9.

"circular-dependency-plugin": "^5.2.0",
"css-loader": "7.1.2",
"eslint": "^8.57.0",
"eslint": "^9.26.0",

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion: This bumps ESLint from 8.x to 9.x (major), but the project's linting is actually handled by kolibri-format (which bundles its own ESLint 8.57.1 internally). The top-level eslint dependency appears unused for actual linting — lint-frontend runs kolibri-format, not eslint directly.

Two options to consider:

  1. Remove the top-level eslint dependency if it's truly unused (editor integrations may rely on it, though).
  2. Accept this upgrade, but be aware the project's .eslintrc.js uses the legacy config format, which is deprecated in ESLint 9. A flat config migration would eventually be needed if you want to use ESLint 9 directly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file javascript Pull requests that update Javascript code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant