Finding
Timeline/audio state is stored in module-level globals. HMR, hidden probes, multiple roots, or failed unmounts can leave stale or duplicate state.
Evidence
- src/lib/timeline.tsx global timeline state.
- src/lib/audio-plan.ts global audio segment state.
- render settings hidden project render uses the same process state.
Acceptance criteria
- Scope timeline/audio registries to a Project root/session.
- Cleanup deterministically on unmount/errors.
- Keep current public APIs compatible.
Finding
Timeline/audio state is stored in module-level globals. HMR, hidden probes, multiple roots, or failed unmounts can leave stale or duplicate state.
Evidence
Acceptance criteria