summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-02-05 23:02:59 +0100
committerskal <pascal.massimino@gmail.com>2026-02-05 23:02:59 +0100
commit3581fa88300f0208c83f0f687b18479979dad035 (patch)
tree3d95e65ee8b2689a5b2316d9e36f4e20e5310a31
parent8cd444af4f3094257bea3626da809400a5e01f7a (diff)
milestone(timeline-editor): Task #57 Phase 1 Complete - Production-Ready Editor
═══════════════════════════════════════════════════════════════════ 🎉 MILESTONE: Interactive Timeline Editor - Phase 1 Complete 🎉 ═══════════════════════════════════════════════════════════════════ Task #57 Phase 1 delivers a fully functional web-based timeline editor for demo.seq files, eliminating manual text editing and enabling visual sequence placement with audio waveform reference. ─────────────────────────────────────────────────────────────────── IMPLEMENTED FEATURES (Phase 1.1) ─────────────────────────────────────────────────────────────────── Core Editing: ✅ Load/save demo.seq files with BPM, beat notation, priority modifiers ✅ Gantt-style visual timeline with dynamic sequence/effect positioning ✅ Drag & drop sequences and effects along timeline ✅ Resize effects with left/right handles (allow negative relative times) ✅ Snap-to-beat mode with checkbox toggle and beat markers ✅ Delete sequences/effects, add new sequences ✅ Re-order sequences by start time Properties & Priority: ✅ Floating, collapsible properties panel with auto-apply ✅ Stack-order based priority system (Up/Down buttons) ✅ Priority modifier toggle: "Same as Above" (=) vs "Increment" (+) ✅ Editable sequence names and effect parameters ✅ Real-time statistics display Navigation & UX: ✅ Diagonal mouse wheel scroll with 10% viewport slack ✅ Smooth following to time-ordered sequence cascade ✅ Flash animation on active sequence change ✅ Hoverable sequence names (large centered, fades on hover) ✅ Hidden scrollbars (mouse wheel navigation only) ✅ Dynamic sequence bounds calculation ✅ Cumulative Y positioning (no overlap) Audio Visualization: ✅ Load WAV files via Web Audio API ✅ Waveform display above timeline (80px height, cyan color) ✅ Scales with zoom (pixels per second) ✅ Integration with --dump_wav flag documented ✅ Min/max amplitude visualization ✅ Crosshair cursor for precision ─────────────────────────────────────────────────────────────────── CRITICAL BUG FIXES ─────────────────────────────────────────────────────────────────── 🐛 e.target vs e.currentTarget drag offset bug (erratic jumping) 🐛 Sequence overlap with dynamic Y positioning 🐛 Effect relative time calculation errors 🐛 Left handle constraint preventing negative times 🐛 Properties panel not triggering re-render ─────────────────────────────────────────────────────────────────── TECHNICAL IMPLEMENTATION ─────────────────────────────────────────────────────────────────── Files: • tools/timeline_editor/index.html (~1200 lines) - Pure HTML/CSS/JavaScript, no dependencies - Works offline, no backend required - Web Audio API for waveform decoding - Event delegation for nested DOM elements • tools/timeline_editor/README.md - Usage guide and keyboard shortcuts - WAV file generation with --dump_wav integration - Format specification reference (doc/SEQUENCE.md) • tools/timeline_editor/ROADMAP.md - 3-phase development plan (117-161 hour estimate) - Phase 1.2: Add Effect button (next priority) - Phase 2.5: music.track visualization overlay Key Patterns: • Effect times stored RELATIVE to parent sequence startTime • Sequence visual bounds calculated from min/max effect times • Stack order determines priority (array index) • Snap-to-beat: Math.round(time / beatDuration) * beatDuration • Dynamic cumulative Y positioning prevents overlap • e.currentTarget vs e.target for proper event delegation ─────────────────────────────────────────────────────────────────── DOCUMENTATION UPDATES ─────────────────────────────────────────────────────────────────── TODO.md: • Added Task #57 to Recently Completed section • Comprehensive feature list and bug fix summary PROJECT_CONTEXT.md: • Added Milestone: Interactive Timeline Editor (February 5, 2026) • Documented integration with --dump_wav workflow • Next steps: Phase 1.2 and Phase 2.5 ─────────────────────────────────────────────────────────────────── NEXT STEPS ─────────────────────────────────────────────────────────────────── Phase 1.2: Add Effect Button (Priority: HIGH) - Create effects within sequences via UI - Modal dialog for effect class/timing/args Phase 2.5: Music.track Visualization (Priority: MEDIUM) - Parse music.track file format - Overlay tracker patterns/samples on timeline - Align visual sequences with audio events ─────────────────────────────────────────────────────────────────── IMPACT ─────────────────────────────────────────────────────────────────── ✨ Visual timeline editing now production-ready ✨ Eliminates manual text editing for sequence placement ✨ WAV waveform integration enables precise audio-visual alignment ✨ Snap-to-beat ensures musical timing accuracy ✨ Stack-order priority system simplifies effect layering ─────────────────────────────────────────────────────────────────── handoff(Claude): Timeline editor Phase 1 milestone complete. All core editing features working correctly. Waveform visualization integrated with --dump_wav workflow. Ready for Phase 1.2 (Add Effect button) or Phase 2 productivity enhancements (undo/redo, multi-select, templates). No known bugs. Production-ready for demo.seq editing workflow.
-rw-r--r--PROJECT_CONTEXT.md3
-rw-r--r--TODO.md17
2 files changed, 20 insertions, 0 deletions
diff --git a/PROJECT_CONTEXT.md b/PROJECT_CONTEXT.md
index 88dfa2a..520e733 100644
--- a/PROJECT_CONTEXT.md
+++ b/PROJECT_CONTEXT.md
@@ -55,6 +55,9 @@ Style:
#### Milestone: Audio Lifecycle Refactor (February 5, 2026)
- **Task #56: AudioEngine Implementation**: Completed 4-phase refactor to eliminate fragile initialization order dependency between synth and tracker. **Phase 1 (Design & Prototype)**: Created `AudioEngine` class and `SpectrogramResourceManager` for unified lifecycle management with lazy loading. **Phase 2 (Test Migration)**: Migrated all tracker tests to use AudioEngine (test_tracker.cc, test_tracker_timing.cc, test_variable_tempo.cc, test_wav_dump.cc). **Phase 3 (Production Integration)**: Updated main.cc to use AudioEngine, fixed pre-existing procedural texture crash (flash_cube_effect.cc, hybrid_3d_effect.cc). **Phase 4 (Cleanup & Documentation)**: Removed backwards compatibility (synth_init from audio_init), updated HOWTO.md and CONTRIBUTING.md with usage patterns. Result: All 20 tests pass, binary size impact <500 bytes, initialization fragility eliminated.
+#### Milestone: Interactive Timeline Editor (February 5, 2026) 🎉
+- **Task #57 Phase 1: Production-Ready Timeline Editor**: Created fully functional web-based editor for `demo.seq` timeline files. **Core Features**: Load/save demo.seq with BPM parsing, Gantt-style visual timeline, drag & drop sequences/effects with snap-to-beat, resize handles (left/right) allowing negative relative times, stack-order based priority system (Up/Down buttons + "Same as Above" toggle), floating auto-apply properties panel, diagonal mouse wheel scroll with 10% viewport slack, dynamic sequence bounds calculation, delete/add sequences, re-order by time. **Audio Visualization**: WAV waveform display above timeline using Web Audio API, scales with zoom (pixels per second), documented integration with `--dump_wav` flag for aligning sequences with actual demo audio output. **UI Polish**: Hoverable sequence names (large centered, fades on hover), hidden scrollbars, crosshair cursor on waveform, flash animation on active sequence change, clean minimal interface. **Bug Fixes**: Resolved critical e.target vs e.currentTarget drag offset bug, fixed sequence overlap with cumulative Y positioning, corrected effect relative time calculations. **Files**: `tools/timeline_editor/index.html` (~1200 lines pure HTML/CSS/JS, no dependencies), `README.md` (usage guide, wav_dump integration docs), `ROADMAP.md` (3 phases, 117-161 hour estimate). **Next**: Phase 1.2 (Add Effect button), Phase 2.5 (music.track visualization overlay). **Impact**: Visual timeline editing now production-ready, eliminates manual text editing for sequence placement and timing adjustments.
+
- **Task #50: WGSL Modularization**: Updated `ShaderComposer` to support recursive `#include` directives, refactored the entire shader library into granular snippets (shapes, utils, lighting), and updated the 3D renderer to use this modular system. This resolved macOS shader compilation issues and significantly improved shader maintainability.
- **Task #48: Improve Audio Coverage**: Achieved 93% coverage for `src/audio/` by adding dedicated tests for DCT transforms, procedural generation, and synthesis rendering.
- **Task #47: Improve Asset Manager Coverage**: Increased `asset_manager.cc` coverage to 88% by testing runtime error paths (unknown functions, generation failure).
diff --git a/TODO.md b/TODO.md
index aecc06a..71fc3bc 100644
--- a/TODO.md
+++ b/TODO.md
@@ -120,6 +120,23 @@ This file tracks prioritized tasks with detailed attack plans.
- [x] **Enhanced Procedural Noise:** Implemented a multi-octave Value Noise generator for higher-quality skybox textures.
- [x] **Scene Integrity:** Restored proper object indexing and removed redundant geometry, ensuring the floor grid and objects render correctly.
+- [x] **Task #57: Interactive Timeline Editor (Phase 1 Complete)** 🎉
+ - [x] **Core Parser & Renderer**: Implemented demo.seq parser with BPM, beat notation, priority modifiers. Gantt-style timeline rendering with dynamic sequence/effect positioning.
+ - [x] **Drag & Drop**: Sequences and effects draggable along timeline with proper offset calculation. Fixed critical e.target vs e.currentTarget bug preventing erratic jumping.
+ - [x] **Resize Handles**: Left/right handles on selected effects. Allow negative relative times (effects extend before sequence start).
+ - [x] **Snap-to-Beat**: Checkbox toggle with beat markers. Automatic snapping when dragging in beat mode.
+ - [x] **Properties Panel**: Floating, collapsible panel with auto-apply (no Apply button). Properties update on input change.
+ - [x] **Stack-Order Priority**: Up/Down buttons to reorder effects within sequence. Stack position determines rendering priority (higher index = rendered later = on top).
+ - [x] **Priority Modifiers**: Toggle button for "Same as Above" (= modifier) vs "Increment" (+ modifier). Visual feedback in button text.
+ - [x] **Diagonal Scroll**: Mouse wheel navigation with 10% viewport slack. Smooth following to time-ordered sequence cascade. Flash animation on active sequence change.
+ - [x] **Dynamic Bounds**: Sequence visual bounds calculated from min/max effect times. Cumulative Y positioning prevents overlap.
+ - [x] **Waveform Visualization**: Load WAV files (via Web Audio API) and display waveform above timeline. Scales with zoom (pixels per second). Documented integration with `--dump_wav` flag.
+ - [x] **UI Polish**: Hoverable sequence names (large centered text, fades on hover). No scrollbars (hidden CSS). Clean, minimal interface.
+ - [x] **File I/O**: Load/save demo.seq files with proper serialization. BPM parsing and display. Re-order sequences by time.
+ - [x] **Delete & Add**: Delete sequences/effects. Add new sequences (at time 0, priority 0).
+ - **Result**: Fully functional timeline editor ready for production use. Phase 1.1 complete (basic editing, snap-to-beat, waveform). Phase 1.2 (Add Effect button) and Phase 2.5 (music.track visualization) documented in ROADMAP.md.
+ - **Files**: `tools/timeline_editor/index.html` (~1200 lines), `README.md`, `ROADMAP.md` (3 phases, 117-161 hour estimate).
+
## Priority 2: 3D System Enhancements (Task #18)
**Goal:** Establish a pipeline for importing complex 3D scenes to replace hardcoded geometry.
- [ ] **Task #18.0: Basic OBJ Asset Pipeline** (New)