chore: upgrade to ESLint 10 (supersedes #8, #13) - #22
Conversation
- eslint ^10.3.0 (resolves 10.7.0), @eslint/js ^10.0.1 - npm override forcing eslint-plugin-react's eslint peer to the project eslint (plugin has no ESLint 10 release yet; the two rules we use, jsx-uses-react/jsx-uses-vars, verified working under v10) - fix new no-useless-assignment errors (rule joined js.configs.recommended in @eslint/js 10): remove dead initializers in colorOps.js hslToRgb/hsvToRgb and PixelForge.jsx moveSelectedShapeOrder
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 046b30e8c7
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| }, | ||
| "engines": { | ||
| "node": "^18.18.0 || ^20.9.0 || >=21.1.0" | ||
| "node": "^20.19.0 || ^22.13.0 || >=24" |
There was a problem hiding this comment.
Raise the Node floor for ESLint 10
ESLint 10 is now locked to a package whose own engine only supports Node ^20.19.0 || ^22.13.0 || >=24, but I checked scripts/verify-runtime.mjs and .nvmrc/.node-version and the project still accepts/pins any Node 22 (>=22 <25, major-only check). In a supported local environment on Node 22.0–22.12, npm run lint passes the PixelForge runtime check and then runs an unsupported ESLint version, or fails under engine-strict installs, so the runtime gate/pins should be raised to 22.13+ with this bump.
Useful? React with 👍 / 👎.
Combined major upgrade replacing Dependabot PRs #8 and #13.
Changes
eslint^9.39.4 -> ^10.3.0 (lockfile resolves 10.7.0)@eslint/js^9.39.4 -> ^10.0.1overridesentry forcingeslint-plugin-react's eslint peer to the project eslint: the plugin (7.37.5, latest) has no ESLint 10-compatible release yet. The only two rules we use from it (react/jsx-uses-react,react/jsx-uses-vars) run cleanly under ESLint 10.eslint-plugin-react-hooks7.1.1 already declares^10.0.0peer support.no-useless-assignmenterrors — the rule joinedjs.configs.recommendedin @eslint/js 10. All were dead initializers immediately overwritten by exhaustive if/else chains (colorOps.jshslToRgb/hsvToRgb,PixelForge.jsxmoveSelectedShapeOrder). Semantics unchanged.Verification (local, Node 22)
npm run lintcleannpm run test279 passed, 1 skipped (39 files)npm run build+npm run budgetpass (546.6 kB <= 1200 kB)Per audit cleanup RUN-20260711-2048.