From 2b5644419b0fa713c477b2e80bc24068305db9ed Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Fri, 20 Feb 2026 08:23:54 -0700 Subject: [PATCH] Add gap after block END when it doesn't chain to a same-track START --- cmd/qrunproxy/timeline.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/cmd/qrunproxy/timeline.go b/cmd/qrunproxy/timeline.go index 780c607..8557a73 100644 --- a/cmd/qrunproxy/timeline.go +++ b/cmd/qrunproxy/timeline.go @@ -177,6 +177,21 @@ func (b *timelineBuilder) findCell(blockID, event string) cellID { return cellID{-1, -1} } +func (b *timelineBuilder) endChainsSameTrack(blockID string) bool { + trackID := b.getTrack(blockID) + for _, trigger := range b.show.Triggers { + if trigger.Source.Block != blockID || trigger.Source.Signal != "END" { + continue + } + for _, target := range trigger.Targets { + if target.Hook == "START" && b.getTrack(target.Block) == trackID { + return true + } + } + } + return false +} + func (b *timelineBuilder) buildCells() { for _, block := range b.show.Blocks { trackID := b.getTrack(block.ID) @@ -192,6 +207,9 @@ func (b *timelineBuilder) buildCells() { cells = getBlockCells(block) } b.trackCells[idx] = append(b.trackCells[idx], cells...) + if block.Type != "cue" && !b.endChainsSameTrack(block.ID) { + b.trackCells[idx] = append(b.trackCells[idx], TimelineCell{IsGap: true}) + } } }