diff --git a/.planning/PROJECT.md b/.planning/PROJECT.md index 35400e9..f65abec 100644 --- a/.planning/PROJECT.md +++ b/.planning/PROJECT.md @@ -21,13 +21,20 @@ Being able to load a song, build a synchronized light show, and play it back liv - [x] 7 built-in animation types (solid, chase, pulse, rainbow, strobe, color-wipe, fire) as pure renderers — `lightsync/animations/` - [x] Animation factory and registry — `create_animation()` by name, extensible for Phase 4+ +**Timeline Editor (Phase 04)** +- [x] Timeline editor: per-device tracks, drag-and-place animation blocks — `TimelineCanvas` + `handleDrop()` (validated Phase 04) +- [x] Block interactions: move, resize, delete with 50-step undo/redo — `CommandHistory` + command pattern (validated Phase 04) +- [x] Beat detection overlay: marks on timeline, snap-to-beat on all block ops — `BeatGrid` class (validated Phase 04) +- [x] Block inspector: color picker + parameter controls, all undoable — `BlockInspector` + `UpdateParamsCommand` (validated Phase 04) +- [x] Playback cursor moves in realtime — `requestAnimationFrame` reads `audio.currentTime` (validated Phase 04) +- [x] Beat calibration offset: shifts marks without corrupting raw data (validated Phase 04) + ### Active **UI** - [ ] Web app with terminal/hacker aesthetic — dark theme, monospace fonts, no generic SaaS look - [ ] Song loading via local file or YouTube URL (via yt-dlp + MPV subprocess) - [ ] Audio playback controls: play, pause, seek, position display -- [ ] Timeline editor: per-device tracks, drag-and-place animation blocks - [ ] Animation library panel with configurable parameters (speed, colors, length, etc.) - [ ] Manual mode: pause playback, assign animation to timestamp, resume @@ -101,4 +108,4 @@ This document evolves at phase transitions and milestone boundaries. 4. Update Context with current state --- -*Last updated: 2026-04-06 — Phase 03 complete: communication protocol layer, animation library, E2E UDP validation* +*Last updated: 2026-04-07 — Phase 04 complete: interactive timeline editor, command pattern undo/redo, BeatGrid module, block inspector*