Commit Graph

41 Commits

Author SHA1 Message Date
Ian Gulliver
f49f3dff14 Remove debug logging from timeline solver
Clean up timeline.go by removing the diagnostic Printf statements added
during the investigation of the iterative solver cycle.
2026-02-21 19:15:53 -08:00
Ian Gulliver
34747e3ff8 Investigate timeline solver cycle and add trigger conflict validation
- Add trigger conflict validation in show.go to detect overlapping or
  mutually exclusive row constraints.
- Implement Trigger.String() for improved error reporting.
- Add detailed logging to timeline.go to trace iterative solver
  non-convergence and empty row optimization cycles.
- Extend mock show generator with experimental cross-track triggers.
2026-02-21 19:14:14 -08:00
Ian Gulliver
4e42b6ea60 Randomly trigger FADE_OUT instead of END for previous cue's blocks in mock show generator 2026-02-21 17:04:54 -07:00
Ian Gulliver
956bd5dd2e Make constraint kind a typed enum, remove dead next_row handling, panic on invalid kinds 2026-02-21 17:01:37 -07:00
Ian Gulliver
a847c17596 Add cellTypeAt helper to simplify repeated type checks in timeline solver 2026-02-21 16:56:55 -07:00
Ian Gulliver
a504b3e34f Replace boolean cell flags with CellType enum (event, title, continuation, gap, chain, signal) 2026-02-21 16:52:10 -07:00
Ian Gulliver
50d4b12299 Render chain cells as arrows in timeline UI 2026-02-21 16:40:30 -07:00
Ian Gulliver
13a4c41cc6 Replace breaks and next_row constraints with chains and gap separators 2026-02-21 16:33:02 -07:00
Ian Gulliver
b527b94b16 GenerateMockShow takes scenes/avgCuesPerScene/avgBlocksPerCue instead of fixed cue/block counts 2026-02-20 22:39:29 -07:00
Ian Gulliver
7d3a23dfc1 allowedTracks gating, constraint/exclusive helpers, duplicate trigger source validation, re-enable untimed block validation 2026-02-20 22:31:04 -07:00
Ian Gulliver
99f79e82f3 Place blocks on random tracks, chain via lastOnTrack 2026-02-20 21:29:16 -07:00
Ian Gulliver
ac259bb7a0 Use lastOnTrack for chaining triggers between blocks 2026-02-20 21:22:25 -07:00
Ian Gulliver
8b9d9b633a Add scene end cues that trigger END on untimed blocks 2026-02-20 21:18:32 -07:00
Ian Gulliver
911121e463 Scene-based cue naming in mock show generator, stub validation for untimed blocks 2026-02-20 21:14:50 -07:00
Ian Gulliver
b282ab710f Realistic mock show generator, validation for same-track chains and untimed signals, loop icon, assignRows convergence limit 2026-02-20 21:02:18 -07:00
Ian Gulliver
4e2135f483 Switch qrunproxy to generated mock show, remove show.json 2026-02-20 20:23:34 -07:00
Ian Gulliver
287ca83724 Add mock show generator and timeline benchmark 2026-02-20 20:20:25 -07:00
Ian Gulliver
2c31d9505c Refactor show model/validation into show.go and simplify timeline internals 2026-02-20 20:10:43 -07:00
Ian Gulliver
7d398082dd Simplify const syntax, remove redundant map lookups in buildCells 2026-02-20 17:31:03 -07:00
Ian Gulliver
0bfa11c640 Don't add trailing break gap after last block on a track 2026-02-20 17:22:11 -07:00
Ian Gulliver
fd0687f2af Remove dead empty-members check, extract gapInsertionPoint from insertGap 2026-02-20 17:12:50 -07:00
Ian Gulliver
bd3dd1a43d Extract enforceConstraints from assignRows 2026-02-20 17:10:02 -07:00
Ian Gulliver
69402ea2e4 Switch Show to pointer slices, share objects between Show and Timeline 2026-02-20 17:06:43 -07:00
Ian Gulliver
a7e831cfab Pre-compute end-chains-same-track set, remove per-block trigger scan 2026-02-20 16:58:42 -07:00
Ian Gulliver
f12ef296aa Switch to []*TimelineCell with embedded row/track, eliminating cellID and index maintenance 2026-02-20 16:46:37 -07:00
Ian Gulliver
6ff8675348 Switch to []*TimelineTrack and pointer-based cellID.track 2026-02-20 16:40:27 -07:00
Ian Gulliver
90ce4d93fa Add --print-timeline-and-exit flag 2026-02-20 16:36:18 -07:00
Ian Gulliver
47ed09a848 Merge Timeline and timelineBuilder into single struct, remove cells()/setCells() 2026-02-20 16:27:23 -07:00
Ian Gulliver
4607e77ee7 Avoid empty rows in solver by pulling other tracks up instead of pushing down 2026-02-20 16:16:23 -07:00
Ian Gulliver
214bd91cb2 Inline setSignal, remove iteration limit from assignRows 2026-02-20 15:58:43 -07:00
Ian Gulliver
616f2cfb4e Replace renderRows with per-track cells API, fill continuations in insertGap 2026-02-20 09:04:14 -07:00
Ian Gulliver
64e76445cf Collapse empty rows in timeline, preserving intentional break gaps 2026-02-20 08:57:41 -07:00
Ian Gulliver
d0432a122f Validate show START triggers and respect next_row constraints in insertGap 2026-02-20 08:47:23 -07:00
Ian Gulliver
3f1b12742c Remove expandTargets and process START triggers directly 2026-02-20 08:37:11 -07:00
Ian Gulliver
dc2551542b Remove reference validity checks, set cue track at load time, remove getTrack() 2026-02-20 08:29:56 -07:00
Ian Gulliver
2b5644419b Add gap after block END when it doesn't chain to a same-track START 2026-02-20 08:23:54 -07:00
Ian Gulliver
17638ad18f Simplify timeline types: merge video/audio to media, remove trackCell/blockCells indirection 2026-02-20 08:19:08 -07:00
Ian Gulliver
b15fe35a47 Clean up timeline builder: remove trackIDs field, unused error return, redundant map copy 2026-02-20 08:00:32 -07:00
Ian Gulliver
0893e5b8cb Rewrite timeline builder to constraint-based layout with exclusive trigger rows 2026-02-20 07:57:41 -07:00
Ian Gulliver
7044b87b79 chore: normalize show ids and preserve json style 2026-02-19 21:00:01 -07:00
Ian Gulliver
0778ffa6f8 checkpoint: scaffold qrunproxy timeline API 2026-02-19 20:55:28 -07:00