Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@
"babel-loader": "^10.0.0",
"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

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.

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.

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.

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.

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.

"eslint-config-prettier": "^10.1.8",
"eslint-import-resolver-webpack": "0.13.10",
"eslint-plugin-import": "^2.31.0",
Expand Down
Loading