Ian Gulliver
|
0341b5e1d8
|
Propagate chain cells through gaps inserted at cue rows
|
2026-02-21 23:15:33 -08:00 |
|
Ian Gulliver
|
4ec5cbe8e0
|
Precompute exclusive group member tracks to avoid hot-loop map allocations
|
2026-02-21 23:01:07 -08:00 |
|
Ian Gulliver
|
1178adba92
|
Use slices.Insert instead of double-append in insertGap
|
2026-02-21 22:55:56 -08:00 |
|
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
|
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
|
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
|
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
|
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
|
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
|
0778ffa6f8
|
checkpoint: scaffold qrunproxy timeline API
|
2026-02-19 20:55:28 -07:00 |
|