Build a rotating TiltifySchedule array where the slot
containing now is the active block. Each element of
DEMO_SCHEDULE maps to one slot; the active index rotates
through the array as time advances (activeIndex = currentSlot % DEMO_SCHEDULE.length) so overlays that watch a fixed campaign see
a continuously-changing lineup.
Timestamps are anchored to epoch so consecutive slots abut
exactly — no gaps, no overlap. inserted_at / updated_at mirror
epoch for cache-friendliness.
Pure function — same inputs always produce the same output.
State + tick management live in the fusion useLiveSchedule
hook's demo adapter.
Build a rotating TiltifySchedule array where the slot containing
nowis the active block. Each element of DEMO_SCHEDULE maps to one slot; the active index rotates through the array as time advances (activeIndex = currentSlot % DEMO_SCHEDULE.length) so overlays that watch a fixed campaign see a continuously-changing lineup.Timestamps are anchored to
epochso consecutive slots abut exactly — no gaps, no overlap.inserted_at/updated_atmirrorepochfor cache-friendliness.Pure function — same inputs always produce the same output. State + tick management live in the fusion
useLiveSchedulehook's demo adapter.