Skip to content

T-UPV1-adopt-demos-vimit-prototype

Status: closed/done · Impact: low · Complexity: medium

Three small apps ride along with the adoption: the two package demos land next to the packages they demonstrate (the docs-site-per-package pattern), and vimit_prototype lands as a root-workspace app.

Source: https://github.com/sksizer/augmented_books at pinned rev acedcf77652e2e7c481e95123c486c2befe2c423.

LocationRole today
package.jsonRoot workspaces list — needs explicit entries for the two nested demo dirs and apps/vimit_prototype (globs don’t reach nested dirs)
packages/ts/intersect/docs-site/Precedent: a package’s demo/docs app lives inside the package dir
.moon/workspace.ymlapps/* glob covers vimit_prototype; the nested demos stay out of moon deliberately (demo apps, not build-graph members)
apps/zoo/MIGRATION.mdLock-conversion recipe

Source app facts at the pinned rev:

Source appShapeInternal deps
apps/json-canvas-demoVue 3 + Vite single-page demo@augment/json-canvas-vue
apps/obsidian-bases-demoNuxt demo with server/ API + vaults/ fixtures@augment/obsidian-bases
apps/vimit_prototypeNuxt app (app/, server/, shared/, own pnpm-lock.yaml)@augmented/entity, @augmented/logging
SourceDestination
apps/json-canvas-demopackages/ts/json-canvas-vue/demo/
apps/obsidian-bases-demopackages/ts/obsidian-bases-augment/demo/
apps/vimit_prototypeapps/vimit_prototype/

All three are root Bun workspace members (explicit workspaces entries), resolve their internal deps to the vendored packages/ts/* packages, and build clean. The obsidian-bases demo moves again when T-NLKF retires obsidian-bases-augment — that’s expected.

  1. Clone the pinned rev; copy the three apps per the table (exclude node_modules and all lockfiles).
  2. Add the three paths to root package.json workspaces.
  3. Ensure internal dep ranges resolve to the vendored packages; root bun install.
  4. Verify builds: bun run build in each (vite build / nuxt build). For the obsidian-bases demo, also boot bun run dev briefly to confirm the server API starts against its vaults/ fixtures.
  5. Carry apps/vimit_prototype’s moon.yml if present; the two demos deliberately get none — note why in each demo’s README.
LocationKindChange
packages/ts/json-canvas-vue/demo/newVendored json-canvas demo
packages/ts/obsidian-bases-augment/demo/newVendored obsidian-bases demo (+ vaults/ fixtures)
apps/vimit_prototype/newVendored Nuxt prototype
package.jsonmodifyworkspaces += the three new paths
bun.lockmodifyRoot install absorbs the three apps’ deps
  • AC-1: Root bun install exits 0 with all three as workspace members.
  • AC-2: All three build clean (bun run build each).
  • AC-3: Internal deps resolve to local packages/ts/* packages, not registry fetches.
  • AC-4: No pnpm-lock.yaml / package-lock.json under any of the three destinations.
  • Retiring obsidian-bases-augment and relocating its demo (T-NLKF).
  • Reviving vimit_prototype as a product — it lands as-is; vimit itself stays in the source repo per the owner’s call.
  • T-LVLY — the vendored packages must exist for install to resolve.
  • Part of the augmented_books adoption (owner decision 2026-07-18); the owner explicitly opted to keep the demos and prototype alive.

Captured by /sdlc:task-work on 2026-07-19. PR: pending.

  • AC-1: agent-manual — root bun install exits 0; bun pm ls shows all three (@augment/json-canvas-demo, @augment/obsidian-bases-demo, vimit).
  • AC-2: agent-manual — all three build clean (json-canvas: vue-tsc && vite build; obsidian + vimit: nuxt build). Internal-dep dist/ subgraphs were hand-built first (what moon run <app>:build does via ^:build), then removed — nothing built is committed.
  • AC-3: agent-manual — per-app node_modules symlinks point to packages/ts/{json-canvas-vue,obsidian-bases-augment,entity,logging} (verified via readlink), not registry.
  • AC-4: auto — no pnpm-lock.yaml/package-lock.json under any of the three dests. Root bunx tsc --noEmit also clean.
  • Internal deps resolved to the vendored packages/ts/* via workspace ranges with no changes.
  • The obsidian demo boots against its vaults/ fixtures (GET /api/vaults → 200 listing all 5) on the Bun runtime — its DB layer is bun:sqlite (from T-LVLY’s migration), so no native module is pulled.
  • better-sqlite3 (+ @types/better-sqlite3) dropped from the obsidian demo (unused; the package is on bun:sqlite); nothing added to trustedDependencies.
  • Vendored pnpm apps hide undeclared deps behind shamefully-hoist; under Bun they surface as install/build failures one at a time (vimit needed explicit @nuxtjs/mdc + tailwindcss). Fix: a pre-adoption scan for specifiers used in nuxt.config/CSS @import but absent from package.json would catch these up front — worth adding to apps/zoo/MIGRATION.md.
  • App builds need their internal-dep dist/ present, but a direct bun run build does not build ^:build first — verification had to hand-build 6 dependency packages. And packages/ts/*/dist is not gitignored, so those verification builds leave untracked artifacts to clean; a global packages/ts/*/dist/ ignore would help. (Same @types/node hoist reconciliation as T-LVLY/T-KTGF: obsidian demo ^24.10.1^26.1.0.)
  • Nuxt 4.5 resolving nuxt: ^4.2.x pulls an h3 v2 release-candidate that breaks readBody under Bun — the obsidian demo’s POST routes (/api/query) 500 before any DB code (documented in the demo README; unrelated to the adoption). A “latest resolves to a prerelease” hazard that argues for pinning Nuxt/h3.

T-LVLY


← Back to Tasks