diff --git a/.claude/plans/multi-track-audio-breakdown.md b/.claude/plans/multi-track-audio-breakdown.md new file mode 100644 index 0000000..5ff7e37 --- /dev/null +++ b/.claude/plans/multi-track-audio-breakdown.md @@ -0,0 +1,96 @@ +# Approved issue breakdown — Multi-track audio timeline + +Source: parent PRD issue #1. Approved by Chris on 2026-06-22. Expands PRD out-of-scope items (multi-track audio, media looping). Create in listed order; blocked-by references use real issue numbers. + +--- + +## Slice 19 — Audio clip sequence: model, planner, composition + +**Type**: AFK | **Stories**: 17 | **Blocked by**: #34 | **Issue**: #45 + +**What to build**: Replace the single-soundtrack model with an ordered, sequential playlist of audio clips. Migrate `soundtrackFilename` → `audioClips` on load. + +**Acceptance criteria**: +- [ ] Given multiple audio files in the folder, when the user builds a clip sequence (add / reorder / remove), then `slideshow.json` stores `audioClips: [{ filename, gainDb? }]` and persists across reopen. +- [ ] Given a clip sequence, when planned, then `RenderPlan` contains ordered audio segments with absolute `startFrame`, `durationInFrames`, `blobUrl`, and per-clip gain (default 0 dB). +- [ ] Given sequential clips, when played/exported, then clip 2 starts exactly when clip 1 ends (frame-accurate, no gap/overlap). +- [ ] Given an existing project with only `soundtrackFilename`, when opened, then it loads as a one-clip sequence without data loss. + +**Technical notes**: Timeline Core `AudioClip` type; `slidePersistence` migration; `planner.ts` multi-audio; `SlideshowComposition` multiple `