docs(01-foundation): create phase plan — 3 plans in 2 waves

This commit is contained in:
Claude
2026-04-05 18:40:20 +00:00
parent 519849e855
commit 5721bef791
4 changed files with 791 additions and 7 deletions

View File

@@ -32,7 +32,7 @@ Decimal phases appear between their surrounding integers in numeric order.
3. The web app loads in a browser with terminal/hacker aesthetic — dark background, monospace fonts, no generic SaaS look
4. FastAPI serves the frontend and exposes REST stubs for shows and devices
5. Adding a new strip type requires only a new device class — no changes to core engine code
**Plans**: TBD
**Plans**: 3 plans
Plans:
- [ ] 01-01: Backend scaffold — FastAPI app, Pydantic show/device models, show store (JSON load/save), device registry
@@ -50,7 +50,7 @@ Plans:
3. The waveform is rendered in the timeline UI from the loaded audio file
4. Windows 11 timer resolution is set to 1ms at startup (timeBeginPeriod(1)) — confirmed via timing harness showing <2ms tick variance
5. MPV IPC runs in a dedicated thread — pausing or seeking does not block WebSocket message processing
**Plans**: TBD
**Plans**: 3 plans
Plans:
- [ ] 02-01: MPV IPC bridge — python-mpv subprocess, named pipe reader thread, shared position variable, Windows timer fix
@@ -68,7 +68,7 @@ Plans:
3. The animation library contains all 7 built-in types (chase, pulse, rainbow, strobe, color wipe, fire, solid color) with configurable params
4. SK6812 (RGBW, 4-byte) and WS2801 (RGB, 3-byte) frames are encoded distinctly — a simulator can distinguish them by packet header
5. The software simulator logs all received packets — no hardware required to validate protocol behavior
**Plans**: TBD
**Plans**: 3 plans
Plans:
- [ ] 03-01: Device abstraction + UDP sender — BaseDevice ABC, SK6812 and WS2801 implementations, async UDP socket pool
@@ -86,7 +86,7 @@ Plans:
4. Each block has a color picker and editable parameters (speed, colors, direction, length); changes persist in the show file
5. The playback cursor moves in real time across the timeline as audio plays, reflecting audio position accurately
6. A beat calibration offset control shifts all beat marks backward by a configurable amount to compensate for librosa's systematic latency bias
**Plans**: TBD
**Plans**: 3 plans
Plans:
- [ ] 04-01: Timeline canvas — per-device tracks, time axis, block rendering, playback cursor
@@ -105,7 +105,7 @@ Plans:
3. The live preview panel shows a simulated LED strip visualization in the browser canvas, updated in sync with playback
4. All primary operations (play, pause, seek, undo, save) are accessible via keyboard shortcuts without touching the mouse
5. A show saved during one session loads completely — all blocks, devices, and analysis data — in a subsequent session
**Plans**: TBD
**Plans**: 3 plans
Plans:
- [ ] 05-01: Cue scheduler — position-driven scheduling loop, pre-fire offset, seek-safe cue pointer reset
@@ -121,7 +121,7 @@ Plans:
1. A YouTube URL can be loaded into the app — audio plays via MPV with no manual download step required
2. Triggering AI sync fills the timeline with animation blocks matched to beats, drops, and song sections — producing a playable starting point for editing
3. Structural segmentation (verse/chorus/bridge via librosa) appears as colored region overlays on the waveform
**Plans**: TBD
**Plans**: 3 plans
Plans:
- [ ] 06-01: YouTube loading — yt-dlp passthrough via MPV --ytdl flag, URL input field, loading state feedback
@@ -137,7 +137,7 @@ Plans:
2. A microcontroller receives DRGB/DRGBW raw frame packets and outputs correct RGB/RGBW pixel values to the strip
3. SK6812 (RGBW) and WS2801 (RGB) are both verified on physical hardware against the protocol spec from Phase 3
4. Firmware runs on at least one of: ESP32, Pico, or Raspberry Pi 4B
**Plans**: TBD
**Plans**: 3 plans
Plans:
- [ ] 07-01: Firmware scaffold — MicroPython UDP socket listener, packet type discriminator, device config (LED count, strip type)