Skip to content

chore(deps): bump 5 Dependabot majors (commitlint x2, lint-staged, typescript, @types/node)#20

Merged
hoangsnowy merged 5 commits into
mainfrom
chore/deps-bulk-bump
May 18, 2026
Merged

chore(deps): bump 5 Dependabot majors (commitlint x2, lint-staged, typescript, @types/node)#20
hoangsnowy merged 5 commits into
mainfrom
chore/deps-bulk-bump

Conversation

@hoangsnowy
Copy link
Copy Markdown
Owner

@hoangsnowy hoangsnowy commented May 18, 2026

Summary

Bundles 5 Dependabot major bumps that pass the full local gate, plus the small migration each one needed:

PR Bump Notes
#18 @commitlint/cli 19.8.1 → 21.0.1 dev-only, Node >= 22
#16 @commitlint/config-conventional 19.8.1 → 21.0.1 dev-only, Node >= 22
#19 lint-staged 15.5.2 → 17.0.5 dev-only, Node >= 22.22.1 — bumped .nvmrc to match
#17 typescript 5.9.3 → 6.0.3 needed tsconfig migration (see below)
#15 @types/node 24.12.4 → 25.8.0 typecheck stays clean against Node 22 runtime

Migrations included

  • .nvmrc 22.19.022.22.1 for lint-staged 17. package.json engines.node stays at >=20.
  • tsconfig.{node,web}.json removed baseUrl (TS 6 deprecates it for removal in TS 7) and prefixed each paths entry with ./ so module resolution stays relative to the tsconfig directory. No import-site changes (@shared/*, @main/*, @renderer/* still work).
  • eslint.config.mjs added .claude/** to ignores so stale Claude Code worktree copies under .claude/worktrees/ don't pollute local lint runs.

Held back (peer-dependency walls — separate work needed)

PR Bump Block reason
#12 electron 41 → 42 @electron/rebuild can't find a better-sqlite3 12.10.x prebuild for ABI 147 → falls through to node-gyp → MSVC compile fails. Per CLAUDE.md, stay on 41. @dependabot ignore this major version already commented on #12.
#13 eslint 9 → 10 eslint-plugin-react@7.37.5 (latest) peer caps at eslint ^9.7. Blocked until plugin v8 ships.
#14 vite 7 → 8 + plugin-react 5 → 6 electron-vite@5.0.0 peer caps at vite ^7. electron-vite@6 is still beta. Wait for stable.

Test plan

  • npm install clean (0 vuln, 1139 pkgs)
  • npm run lint -- --max-warnings 0
  • npm run typecheck (node + web, TS 6 with new tsconfigs)
  • npm test — 95/95 pass, 14 files
  • npm run build — main 75 kB, preload 4 kB, renderer 896 kB
  • npm run test:e2e — 6/6 pass
  • Husky + lint-staged 17 ran the commits themselves (prettier rewrite step succeeded)

Bundles three Dependabot major bumps that share a node-version floor
and are dev-only (no runtime surface):

- @commitlint/cli            19.8.1 -> 21.0.1   (#18)
- @commitlint/config-conventional 19.8.1 -> 21.0.1   (#16)
- lint-staged                15.5.2 -> 17.0.5   (#19)

commitlint v21 and lint-staged v17 both require Node >= 22, with
lint-staged v17 specifically requiring >= 22.22.1. Bump .nvmrc from
22.19.0 -> 22.22.1 to match. package.json engines already says ">=20"
which is broader; left as-is.

Drive-by: ignore .claude/** in eslint config so stale Claude Code
worktree copies under .claude/worktrees/ don't pollute local lint runs.

Holds for separate evaluation (not in this PR):
- electron 41 -> 42       rejected per CLAUDE.md (MSVC + better-sqlite3)
- @types/node 24 -> 25    skipped (runtime is Node 22 LTS)
- typescript 5.9 -> 6.0   hold (strictness review)
- eslint 9 -> 10          hold (flat config defaults review)
- vite 7 -> 8 + plugin-react 5 -> 6  hold (electron-vite 5 compat)

Verified locally: lint, typecheck, 95/95 vitest, build, 6/6 e2e.
Two more Dependabot majors that pass the full local gate after a small
tsconfig migration:

- typescript     5.9.3  -> 6.0.3   (#17)
- @types/node    24.12.4 -> 25.8.0  (#15)

TypeScript 6 errors on `baseUrl` ("deprecated, removed in TS 7"); both
tsconfigs use it only as a path-mapping anchor. Removed `baseUrl` from
tsconfig.node.json and tsconfig.web.json and prefixed `paths` entries
with `./` so resolution stays relative to the tsconfig directory. No
import-site changes needed (still `@shared/*`, `@main/*`, `@renderer/*`).

@types/node 25 against Node 22.22.1 runtime: typecheck stays clean
because no Node-25-only globals are referenced. Will revisit when Node
26 LTS lands and runtime catches up.

Still held back (peer-dep walls):
- electron 41 -> 42                @electron/rebuild can't find a
  better-sqlite3 12.10.x prebuild for ABI 147 -> falls through to
  node-gyp -> MSVC compile fails. Stay on 41 per CLAUDE.md.
- eslint 9 -> 10                   eslint-plugin-react@7.37.5 latest
  peer caps at eslint ^9.7. Blocked until v8 of the plugin ships.
- vite 7 -> 8 + plugin-react 5 -> 6  electron-vite@5.0.0 peer caps at
  vite ^7. electron-vite@6 is still beta. Wait for stable.

Verified locally: lint, typecheck (node + web), 95/95 vitest,
build (main 75kB, preload 4kB, renderer 896kB), 6/6 e2e.
@hoangsnowy hoangsnowy changed the title chore(deps): bump commitlint x2 + lint-staged majors chore(deps): bump 5 Dependabot majors (commitlint x2, lint-staged, typescript, @types/node) May 18, 2026
CI lockfile-check runs `npm install --package-lock-only` on ubuntu,
which captures all platform-specific optional subtrees. A full
`npm install` on Windows strips the linux-only @tailwindcss/oxide-wasm32-wasi
bundled-dep subtree, so the lock drifts and lockfile-check fails.

This commit just re-resolves the lock via the same command CI uses, no
package.json change. 45 lines re-added (4 bundled deps under
@tailwindcss/oxide-wasm32-wasi: @emnapi/wasi-threads, @napi-rs/wasm-runtime,
@tybys/wasm-util, tslib).
CI lockfile-check runs `npm install --package-lock-only` on ubuntu and
expects @emnapi/core + @emnapi/runtime to be tagged `peer: true`. npm on
Windows omits that marker even with the same command + same npm 11.6.2
pin. Regenerated via the same command inside node:22.22.1-bookworm to
match CI exactly.

This is a no-op for the actual installed dep tree; only the lockfile
metadata changes.
Windows `npm install` produces a lockfile that drifts from what CI
ubuntu generates, even with the same pinned npm 11.6.2. Documents the
two known divergences (@tailwindcss/oxide-wasm32-wasi bundled subtree
and "peer": true marker on @emnapi/core + @emnapi/runtime) and gives the
Docker one-liner to regen the lock against node:22.22.1-bookworm so the
lockfile-check job in CI stays green.
@hoangsnowy hoangsnowy merged commit e748a0f into main May 18, 2026
6 checks passed
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