Skip to content

fix: restore CI by resolving dependency conflicts and cleaning lint/type errors - #18

Merged
badhope merged 1 commit into
mainfrom
fix/ci-and-code-quality
Jun 17, 2026
Merged

badhope merged 1 commit into
mainfrom
fix/ci-and-code-quality

Conversation

@badhope

@badhope badhope commented Jun 17, 2026

Copy link
Copy Markdown
Owner

This PR fixes the broken CI on main and cleans up the most pressing code-quality issues.

Root cause

  • eslint@^10.5.0 is incompatible with eslint-plugin-react@7.37.5 (peer range ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7), causing npm ci to fail with ERESOLVE.
  • eslint-plugin-react-hooks@7.1.1 was an experimental canary that crashed ESLint with internal react-hooks/* rules.
  • @expo/vector-icons was imported everywhere but missing from package.json.
  • Root tsconfig.json was type-checking the desktop/ Electron sub-project, whose dependencies live in a separate package.json.

Changes

  • Downgrade eslint / @eslint/js to ^9.39.4 and eslint-plugin-react-hooks to stable ^5.2.0.
  • Add @expo/vector-icons: ^14.1.0.
  • Exclude desktop/ and backend/ from root tsconfig.json.
  • Replace StyleSheet.absoluteFillObject with explicit absolute positioning in 3 components.
  • Fix no-case-declarations / no-empty warnings.
  • Clean up unused imports/variables across screens and shared components.
  • Fix or suppress intentional React Hook dependency warnings.

Validation (local)

Command Result
npm ci pass
npm run lint 0 errors, 88 warnings (remaining no-explicit-any)
npm run typecheck pass
npm run build:web pass

The remaining 88 warnings are all @typescript-eslint/no-explicit-any in prototype code; they do not block CI.

…ype errors

- Downgrade eslint and @eslint/js from ^10.5.0/^10.0.1 to ^9.39.4 so
  eslint-plugin-react@7.37.5 (supports eslint up to 9.7) is compatible.
- Downgrade eslint-plugin-react-hooks from canary 7.1.1 to stable 5.2.0;
  the canary introduced experimental React Compiler rules that crashed lint.
- Add missing @expo/vector-icons dependency used throughout the app.
- Exclude desktop/ and backend/ from root tsconfig.json; desktop has its own
  package.json and dependencies and should not be type-checked by the root.
- Replace StyleSheet.absoluteFillObject with explicit absolute positioning in
  FocusMode, SideDrawer, SwipeableTaskCard (type-safe equivalent).
- Fix no-case-declarations warnings by scoping case blocks in SearchScreen
  and TableView.
- Fix no-empty warnings by adding explanatory comments in VoiceInput and
  WhiteNoisePlayer.
- Clean up unused variables/imports across screens and shared components.
- Fix React Hook dependency warnings in App.tsx, HomeScreen.tsx, and
  TaskDependencies.tsx; suppress intentionally stable mount effects.

Validation:
- npm ci: pass
- npm run lint: 0 errors, 88 warnings (remaining no-explicit-any warnings)
- npm run typecheck: pass
- npm run build:web: pass
@badhope
badhope merged commit 5252d01 into main Jun 17, 2026
4 of 5 checks passed
@badhope
badhope deleted the fix/ci-and-code-quality branch June 17, 2026 14:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant