Skip to content

T-WVSH-tauri-moon-task-aspect

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

apps/determined/apps/polish and apps/pumice are both Tauri 2 + Nuxt 4 desktop apps, yet each moon.yml redefines a near-identical frontend and aggregate task surface. Extract the shared set into one tag-scoped aspect so both inherit a single definition, and a new Tauri app becomes first-class by adding one tag.

LocationRole today
apps/determined/apps/polish/moon.ymldefines frontend-lint/typecheck/test/format-check/format, storybook, check locally
apps/pumice/moon.ymldefines the same frontend tasks (via root frontend:*), plus format-check and a check aggregate
.moon/tasks/rust.ymlshared Rust aspect (inheritedBy: language: rust) — fmt/fmt-check/lint/test
.moon/tasks/no aspect scopes the Tauri/Nuxt surface; each app repeats it

A .moon/tasks/tauri.yml aspect, inheritedBy: { tag: 'tauri' }, owns the frontend task surface (frontend-*, storybook) and the check aggregate. Both apps carry tags: ['tauri'] and drop the inherited bodies. Each app’s moon.yml keeps only genuine extras: Tauri lifecycle (dev/build), pumice’s codegen/codegen-drift, backend overrides, and the test aggregate. The check aggregate uses ~:-scoped deps, so it picks up each app’s own fmt-check/lint (polish → rust aspect; pumice → backend scripts).

  1. Add .moon/tasks/tauri.yml with the frontend tasks + check aggregate, scoped by tag.
  2. Tag apps/determined/apps/polish; delete its now-inherited bodies. Verify by build + tests.
  3. Tag apps/pumice; delete its inherited frontend bodies and the orphaned format-check. Verify by moon graph resolution; pumice-ci verifies at runtime.
LocationKindChange
.moon/tasks/tauri.ymlnewshared Tauri/Nuxt task aspect
apps/determined/apps/polish/moon.ymlmodifyadd tags, delete inherited bodies
apps/pumice/moon.ymlmodifyadd tags, delete inherited bodies + orphaned format-check
  • AC-1: moon task polish:check and moon task pumice:check resolve to the aspect’s aggregate, each with its own fmt-check/lint.
  • AC-2: moon run polish:check, polish:frontend-test, and polish:test pass unchanged.
  • AC-3: neither apps/determined/apps/polish/moon.yml nor apps/pumice/moon.yml still defines frontend-* or check bodies.
  • AC-4: adding tags: ['tauri'] to a bare project grants the full frontend + check surface.
  • dev/build convergence — needs a shared root tauri script/wrapper decision (polish uses cargo tauri, pumice bun run tauri).
  • Removing pumice’s Rust backend overrides in favor of the rust aspect.
  • Collapsing the two per-app CI workflows into one tag-matrix job.
  • none
  • Surfaced during the polish-CI work (T-2CXH / PR #757) and the alignment discussion against the template-tauri-nuxt preferred structure.

← Back to Tasks