From efa612380c7314e004ceb6126a2e4090e94b51e8 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 6 Apr 2026 23:34:32 +0000 Subject: [PATCH] feat(04-01): TimelineCanvas class + CSS + app.js wiring - Create lightsync/frontend/timeline/timeline.js with TimelineCanvas class - Per-device horizontal tracks with track headers and time axis - HiDPI canvas rendering with devicePixelRatio handling - Waveform peaks background layer, beat marks overlay, cue block rendering - Playback cursor synced to audio.currentTime via requestAnimationFrame - Auto-scroll when cursor approaches right edge - Mouse wheel scrolling on timeline canvas - loadTracks(), loadWaveform(), loadBeats() data loading methods - Empty state messages when no devices or audio loaded - Add timeline CSS to style.css (toolbar, canvas, inspector strip, snap button) - Wire timeline into app.js: import, initTimeline(), zoom/beat-offset/snap controls - Remove old animation-grid click listener (element no longer exists in main-area) - Populate animation palette dynamically in sidebar with 7 animation types --- lightsync/frontend/app.js | 74 +++++- lightsync/frontend/style.css | 130 ++++++++++ lightsync/frontend/timeline/timeline.js | 328 ++++++++++++++++++++++++ 3 files changed, 519 insertions(+), 13 deletions(-) create mode 100644 lightsync/frontend/timeline/timeline.js diff --git a/lightsync/frontend/app.js b/lightsync/frontend/app.js index 3a1b4aa..60e2932 100644 --- a/lightsync/frontend/app.js +++ b/lightsync/frontend/app.js @@ -1,6 +1,8 @@ // LightSync frontend — controller UI // Browser