diff --git a/.planning/PROJECT.md b/.planning/PROJECT.md index f65abec..6142382 100644 --- a/.planning/PROJECT.md +++ b/.planning/PROJECT.md @@ -29,6 +29,12 @@ Being able to load a song, build a synchronized light show, and play it back liv - [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) +**Live Show Execution (Phase 05)** +- [x] WebSocket cue scheduler: server fires UDP animation commands at correct timestamps during playback — `ws.py` tick handler (validated Phase 05) +- [x] Live preview panel: show selector + playback status feedback in browser UI (validated Phase 05) +- [x] Keyboard shortcuts: 7 bindings (Space, arrows, J/K, Ctrl+Z/Y, Ctrl+S) for mouse-free operation — `wireKeyboard()` (validated Phase 05) +- [x] Mouse play/pause sends WebSocket messages — `wireAudio()` event listeners call `client.send()`, server `is_playing` set correctly (validated Phase 05) + ### Active **UI** @@ -108,4 +114,4 @@ This document evolves at phase transitions and milestone boundaries. 4. Update Context with current state --- -*Last updated: 2026-04-07 — Phase 04 complete: interactive timeline editor, command pattern undo/redo, BeatGrid module, block inspector* +*Last updated: 2026-04-07 — Phase 05 complete: live show execution with WebSocket cue scheduler, live preview panel, keyboard shortcuts, and mouse/keyboard play/pause parity*