Image Wrangler gets road-legal: real semver, a live branch, and a clean modern toolchain
The youngest plugin in the family was sitting on a detached HEAD with a 4-digit version Obsidian's marketplace would reject. One pass later: valid manifest, TypeScript 6, ESLint 10, zero dead dependencies — and its first changelog.
Why Care?
Image Wrangler is the family's newest scaffold — and scaffolds accumulate invisible debt fastest, because nothing forces anyone to look at them. The family-wide dependency campaign forced the look, and found three things a future release would have tripped over:
A detached HEAD — the working copy wasn't on any branch, so any work committed here would have been orphaned.
4-digit versions everywhere —
0.0.0.1in the manifest and package.json,0.0.1.0in versions.json. Lossless-internal projects use 4-segment versions, but Obsidian's marketplace requires strict 3-digit semver; this is a submission blocker, not a cosmetic quirk. Worse,minAppVersionwas set to the plugin's own version instead of an Obsidian app version.The inherited dead dependencies —
fastify,@modelcontextprotocol/sdk,zodfrom the starter lineage, zero imports.
What's New?
Attached to
development(the HEAD was parked exactly at the branch tip, so nothing was lost).Semver fixed across all three files: version
0.0.1,minAppVersion: 0.15.0,versions.jsonkeyed"0.0.1": "0.15.0".Dead deps removed — zero runtime dependencies now.
TypeScript 5.8.3 → 6.0.3 with the full tsconfig migration (
moduleResolution→"bundler",baseUrl/pathsremoved). TS 6's newtypes: []default exposed that the code uses Node'scryptoglobal — now declared explicitly with"types": ["node"], so the dependency on the runtime is visible instead of ambient.ESLint 9.30 → 10.7, typescript-eslint 8.65, esbuild 0.25.6 → 0.28.1, builtin-modules 5.3,
@types/nodepinned^22(Obsidian = Electron 39 = Node 22).This changelog directory — the repo's first, per the family convention that every repo ships its story.
Verified: tsc -noEmit clean on TS 6, esbuild production bundle at 12 KB.
Campaign plan:
content-farm/context-v/plans/Dependency-Upgrades-Across-Plugin-Family.md.