The held-back majors land: TypeScript 6, ESLint 10, and a toolchain that tells the truth
Since May we deliberately parked TypeScript 6 and ESLint 10 as 'known open questions.' Today they landed — with the tsconfig migrated off deprecated options so the eventual TypeScript 7 jump is already paid for.
Why Care?
Back in May we did a big type-safety pass and consciously held back the major toolchain bumps — TypeScript 6, ESLint 10 — as "known open questions" rather than churn two migrations at once. Held-back majors have a way of becoming permanent, so the family-wide dependency campaign (see the content-farm plan) was the forcing function: research the release notes first, then move, then prove the build.
The payoff is future-proofing: TypeScript 6 is Microsoft's official bridge to the 10×-faster native TypeScript 7 — a project that compiles clean on 6 with no deprecation escape hatches compiles identically on 7. Cite-wide is now clean on 6 with no escape hatches.
What Was Built / Updated
TypeScript 5.8.3 → 6.0.3. The compiler immediately flagged our two deprecated tsconfig options, and we migrated them properly instead of silencing:
moduleResolution: "node"→"bundler"(the correct mode for an esbuild-bundled plugin) andbaseUrl+ the redundantpaths: {"*": ["node_modules/*"]}mapping removed outright.ESLint 9.28 → 10.7. Our flat config carried over untouched — the work of the May flat-config migration is exactly why this was painless. The dead legacy
.eslintrc(ignored by ESLint 10 entirely) is deleted.typescript-eslint 8.59.1 → 8.65.0, esbuild 0.28.0 → 0.28.1.
@types/nodestays pinned^22— now with a reason attached: Obsidian's desktop app ships Electron 39, which runs Node 22. The May pin matched the local dev runtime; it turns out it also matches the plugin's actual production runtime.
Verified: pnpm build green end-to-end — tsc -noEmit on TS 6, eslint .
on ESLint 10, esbuild production bundle emitted.
Files Touched
package.json,pnpm-lock.yaml— version bumpstsconfig.json— bundler resolution, baseUrl/paths removed.eslintrc— deleted (legacy format, dead since the flat config landed)
Reference
Campaign plan:
content-farm/context-v/plans/Dependency-Upgrades-Across-Plugin-Family.mdResolves "Known Open Questions #1" in this repo's
CLAUDE.md