Skip to content

T-K3PN-vendor-pumice-into-apps-pumice

Status: closed/done · Impact: high · Complexity: large

Land the standalone pumice repository under apps/pumice as a self-contained co-tenant and wire a thin apps/pumice/moon.yml so moon run pumice:build drives pumice’s existing build. This is the first, load-bearing step of D-0016-pumice-app-integration: pumice shares the monorepo’s tooling only — no application-code coupling to the substrate yet.

apps/dashboard is the only app; its moon.yml shells to bunx vite / sdlc under the system toolchain. Pumice lives in sksizer/pumice as a Tauri v2 + Nuxt 4 app with three Rust crates, a codegen pipeline, and its own justfile.

LocationRole today
apps/Holds dashboard only; no apps/pumice
apps/dashboard/moon.ymlThe thin-task pattern to mirror (system toolchain, runFromWorkspaceRoot)
.moon/workspace.ymlapps/* glob auto-registers a new app project
.moon/toolchain.ymlDeclares bun and rust — no Rust project consumes rust yet

Vendor pumice’s working tree (excluding node_modules, target, .git, and build output) into apps/pumice, preserving its internal relative-path layout so its own justfile, Tauri config, and codegen keep working unchanged.

apps/pumice/
src-tauri/ Tauri crate `pumice-app` + tauri.conf.json + build.rs
crates/ pumice, pumice-config, pumice-desktop (path deps)
src-nuxt/ Nuxt 4 frontend + Storybook
packages/ admin-types, nuxt_admin_layer (file: deps)
justfile pumice's own command catalog (kept intact)
moon.yml NEW — thin moon project, system toolchain
  • Pumice’s internal relative paths (../src-nuxt, ../crates, file:../packages/*) survive because the whole tree moves as one unit.
  • apps/pumice/moon.yml declares tasks (build, dev, check, test, storybook) that shell to pumice’s existing just/tauri commands under the system toolchain, exactly like apps/dashboard.
  1. Copy the tree. Vendor pumice into apps/pumice, excluding node_modules, target, .git, .output, dist, and Storybook build output. The code-move mechanism (clean copy vs git subtree) is the open question in D-0016-pumice-app-integration — resolve it before this step.
  2. Add apps/pumice/moon.yml. Mirror apps/dashboard/moon.yml: type: application, language: rust (or typescript with rust tasks), system toolchain, thin tasks shelling to pumice’s commands. Mark dev/storybook as persistent, cache: false, runInCI: false.
  3. Keep pnpm interim. This task does NOT migrate to Bun — that is T-M7QX. The frontend still installs with pnpm here so the vendored app builds before the migration lands. The Bun migration and codegen/CI tasks stack on top.
  4. Verify the app registers. Confirm moon project pumice resolves and moon run pumice:build invokes pumice’s build (a full Tauri build may need the Rust toolchain from T-P4LZ and system deps from T-T2HB).
LocationKindChange
apps/pumice/**newVendored pumice tree (minus ignored build/deps dirs)
apps/pumice/moon.ymlnewThin moon project; system toolchain; tasks shell to pumice commands
apps/pumice/.gitignorenew/keptIgnore target, node_modules, .output, dist
  • AC-1: apps/pumice contains pumice’s source tree with internal relative paths intact; no node_modules/target/build output committed.
  • AC-2: apps/pumice/moon.yml registers via the apps/* glob; moon project pumice resolves.
  • AC-3: moon run pumice:check (or an equivalent thin task) invokes pumice’s existing check command from the correct CWD.
  • AC-4: The root workspace still builds (moon run dashboard:build and the root tasks are unaffected).
  • Bun migrationT-M7QX.
  • Rust toolchain reconciliationT-P4LZ.
  • Codegen-as-moon-task and CI wiringT-R9WT, T-T2HB.
  • Sharing any code with the substrate — Phase 2 (T-X8CF, T-Z5MK).
  • None (root of the arc). Downstream tasks stack on this vendored tree.

← Back to Tasks