chore: bump eslint 9->10 + eslint-plugin-react-hooks 5->7 (Dependabot #4/#7) - #30
Merged
Merged
Conversation
/#7) Bundled together, not sequential: react-hooks 5.2.0 only peer-supports eslint up to ^9.0.0, so eslint 10 required react-hooks 7.1.1 in the same migration (confirmed via npm view peerDependencies before starting, per Dependabot #4/#7 both being red). react-hooks 6.x/7.x folded the React Compiler's lint rules into `recommended`, surfacing real new violations, triaged rule-by-rule: - preserve-caught-error (new eslint 10 core rule): two e2e fixture throws now attach `cause` to the original error. - no-useless-assignment (new eslint 10 core rule): a genuinely dead initializer in SchemaIntake's detect(). - react-hooks/immutability: QuickPanel's refreshFrecency/openMain moved above the effects that reference them (order-only, same runtime closures). - react-hooks/refs, react-hooks/purity: two legitimate false positives (a headless-hook ref-spread idiom in Tabs.tsx, an intentional Date.now() read in a relative-time badge) documented with disable-line comments. - react-hooks/set-state-in-effect: tuned off project-wide in eslint.config.js -- flags an established, deliberate 15-instance reset-state-on-id-change idiom across the codebase; rewriting all 15 call sites is real behavioral refactor work well beyond this bump's scope, so this follows .golangci.yml's own "tune when defaults fight house style" precedent instead of scattering 15 disable-line comments or silently regressing behavior. Also bumped @eslint/js to match eslint 10's flat-config recommended preset. typescript-eslint (8.66+) and eslint-plugin-react-refresh (0.5.3) already peer-support eslint 10, so neither needed a bump. Full local suite green: eslint, tsc, boundaries, vitest (227/227), frontend build, go vet, go build (desktop+server), file-loc-limit, rules-frontmatter, root-file-naming. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FYwojT8GdUbYSoggbvEFft
alicoding
enabled auto-merge (squash)
August 12, 2026 19:49
alicoding
added a commit
that referenced
this pull request
Aug 15, 2026
/#7) (#30) Bundled together, not sequential: react-hooks 5.2.0 only peer-supports eslint up to ^9.0.0, so eslint 10 required react-hooks 7.1.1 in the same migration (confirmed via npm view peerDependencies before starting, per Dependabot #4/#7 both being red). react-hooks 6.x/7.x folded the React Compiler's lint rules into `recommended`, surfacing real new violations, triaged rule-by-rule: - preserve-caught-error (new eslint 10 core rule): two e2e fixture throws now attach `cause` to the original error. - no-useless-assignment (new eslint 10 core rule): a genuinely dead initializer in SchemaIntake's detect(). - react-hooks/immutability: QuickPanel's refreshFrecency/openMain moved above the effects that reference them (order-only, same runtime closures). - react-hooks/refs, react-hooks/purity: two legitimate false positives (a headless-hook ref-spread idiom in Tabs.tsx, an intentional Date.now() read in a relative-time badge) documented with disable-line comments. - react-hooks/set-state-in-effect: tuned off project-wide in eslint.config.js -- flags an established, deliberate 15-instance reset-state-on-id-change idiom across the codebase; rewriting all 15 call sites is real behavioral refactor work well beyond this bump's scope, so this follows .golangci.yml's own "tune when defaults fight house style" precedent instead of scattering 15 disable-line comments or silently regressing behavior. Also bumped @eslint/js to match eslint 10's flat-config recommended preset. typescript-eslint (8.66+) and eslint-plugin-react-refresh (0.5.3) already peer-support eslint 10, so neither needed a bump. Full local suite green: eslint, tsc, boundaries, vitest (227/227), frontend build, go vet, go build (desktop+server), file-loc-limit, rules-frontmatter, root-file-naming. Claude-Session: https://claude.ai/code/session_01FYwojT8GdUbYSoggbvEFft Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
^9.0.0(confirmed vianpm view eslint-plugin-react-hooks@5.2.0 peerDependencies), so eslint 10 required react-hooks 7 in the same change. Supersedes Dependabot build(deps-dev): Bump eslint from 9.39.5 to 10.8.1 in /frontend #4 and build(deps-dev): Bump eslint-plugin-react-hooks from 5.2.0 to 7.1.1 in /frontend #7 (both red).recommended, which surfaced real new violations, each triaged individually (see commit message for the full rule-by-rule breakdown): twopreserve-caught-errorfixes (attachcauseto two e2e-fixture throws), oneno-useless-assignmentfix (a genuinely dead initializer), a pure reorder in QuickPanel.tsx forreact-hooks/immutability, two documented disable-line comments for legitimate false positives (react-hooks/refson a headless-hook ref-spread idiom,react-hooks/purityon an intentionalDate.now()read in a relative-time badge), and one project-wide rule tune-off (react-hooks/set-state-in-effect, matching.golangci.yml's own "tune when defaults fight house style" precedent) for an established 15-instance reset-state-on-id-change idiom that would otherwise require real behavioral refactoring well beyond this bump's scope.Test plan
npm run lint-- 0 errors, 4 pre-existing warnings (react-refresh/only-export-components x3, exhaustive-deps x1 -- unrelated to this bump, unchanged plugin versions)npx tsc --noEmit-- cleannpm run boundaries-- no dependency violationsnpm run test-- 227/227 vitest tests passnpm run build-- production build succeedsgo vet . ./internal/...,go build(desktop + server tags) -- unaffected, both green🤖 Generated with Claude Code
https://claude.ai/code/session_01FYwojT8GdUbYSoggbvEFft