Found 2026-08-26 while verifying #155.
Two defects that compound
-
web/eslint.config.mjs imports eslint-plugin-react-hooks. That package appears in no package.json in the repo (web, root, or any workspace member) and is absent from pnpm-lock.yaml. So pnpm --filter ./web lint dies at startup:
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'eslint-plugin-react-hooks'
imported from /.../ntask/web/eslint.config.mjs
Reproduced on a clean main worktree, so it is not branch-local.
-
.github/workflows/* runs pnpm lint only in mobile-ci.yml and tvos-ci.yml. Nothing lints web, which is why defect 1 has never surfaced.
Why this needs its own unit of work
The web app has never been linted. Adding the dependency will likely surface a backlog of pre-existing findings, so this is not a one-line fix, and adding a CI job first would just paint main red.
Suggested order:
- Add
eslint-plugin-react-hooks to web/package.json devDependencies, refresh the lockfile.
- Run
pnpm --filter ./web lint and triage what comes out.
- Add a
web lint job to CI once it is green, so this cannot regress silently.
Deliberately not folded into #155, which was scoped to a brand accessible-name bug; expanding it would have made a lint backlog part of an a11y fix.
Found 2026-08-26 while verifying #155.
Two defects that compound
web/eslint.config.mjsimportseslint-plugin-react-hooks. That package appears in no package.json in the repo (web, root, or any workspace member) and is absent frompnpm-lock.yaml. Sopnpm --filter ./web lintdies at startup:Reproduced on a clean
mainworktree, so it is not branch-local..github/workflows/*runspnpm lintonly inmobile-ci.ymlandtvos-ci.yml. Nothing lintsweb, which is why defect 1 has never surfaced.Why this needs its own unit of work
The web app has never been linted. Adding the dependency will likely surface a backlog of pre-existing findings, so this is not a one-line fix, and adding a CI job first would just paint main red.
Suggested order:
eslint-plugin-react-hookstoweb/package.jsondevDependencies, refresh the lockfile.pnpm --filter ./web lintand triage what comes out.weblint job to CI once it is green, so this cannot regress silently.Deliberately not folded into #155, which was scoped to a brand accessible-name bug; expanding it would have made a lint backlog part of an a11y fix.