Skip to content

ADR-010: Monorepo with pnpm workspaces and package boundaries ​

  • Status: accepted · Date: 2026-10-15

Decision ​

PackageDepends onResponsibility
audio—WAV io, envelopes, onset detection, SFX synthesis (pure, browser-safe)
coreaudioschema, time expressions, captions, themes, presets, compiler, static lint
runtimecore (types only), audiobrowser page: render(t), chrome, every component
renderercore, audio, runtimeChromium workers, ffmpeg pipeline, measuring pass, doctor
studiocore, audio, renderer, runtimelocalhost server + Vite client (dashboard, visual editor with Edit/Cues/Review modes)
cliallcommand entry points

The compiled Timeline (DR-5) is the only contract between core and runtime. Component prop schemas live in core; their DOM implementations live in runtime under the same names (a test asserts both registries match).

Consequences ​

The runtime bundle never contains zod or YAML; the core is testable without a browser.