The starter template cleans itself — so every future plugin starts clean
filestarter is where new Lossless plugins are born, which means it's also where the dead fastify/MCP/zod dependencies kept being born. Purged at the source, with the toolchain bumped to TypeScript 6 + ESLint 10.
Why Care?
During the family-wide dependency campaign we kept finding the same three
never-imported runtime dependencies — fastify,
@modelcontextprotocol/sdk, zod — in plugin after plugin. The trail
leads here: filestarter is the scaffold new Lossless plugins are cloned
from, so its dependency list is heritable. Every dead dependency in the
template becomes a dead dependency in every future plugin, and a recurring
line item in every future Dependabot triage.
Fixing the template fixes the lineage.
What's New?
Removed at the source:
fastify,@modelcontextprotocol/sdk,zod— zero imports in the template's own code. Plugins scaffolded from here now start with zero runtime dependencies.TypeScript 5.8.3 → 6.0.3, tsconfig migrated off deprecated options (
moduleResolution: "node"→"bundler",baseUrl/pathsremoved) — so scaffolded plugins are also born TS-7-ready.ESLint 9.31 → 10.7 +
@eslint/plugin-kit0.7.2, typescript-eslint 8.65, esbuild 0.25.6 → 0.28.1, builtin-modules 5.3.@types/nodepinned down 24 → 22 to match Obsidian's Electron 39 / Node 22 runtime — a pin future scaffolds now inherit deliberately.
Verified: tsc -noEmit clean on TS 6, esbuild production bundle green.
Campaign plan:
content-farm/context-v/plans/Dependency-Upgrades-Across-Plugin-Family.md.