Skip to content

Time-scoped 'Flex Blocks' for channel-level Flex #2015

Description

@DarkManX16

Feature request: time-scoped "Flex Blocks" for channel-level Flex (not per-slot)

Problem

The channel-level Flex tab (Filler Content, Filler Options, Channel Fallback) is a single static configuration applied uniformly across the entire channel, all day. Channels with distinct programming blocks (e.g., a classic-cartoon morning block vs. an action/primetime block) need different commercial/bumper content to match each block's tone, but the only way to do that today is either:

  1. Manually re-editing the channel-level Flex tab throughout the day (impractical for a 24/7 automated channel), or
  2. Configuring per-slot HEAD/PRE/MID/POST/TAIL filler individually on every single time slot — precise, but heavy manual overhead across dozens of slots when the actual need is just "swap the whole channel's filler profile at a few points in the day."

Proposed solution: Flex Blocks

Let a channel define an ordered list of time-scoped Flex configurations instead of one static one — call them Flex Blocks. Each block is exactly today's existing Flex tab (Filler Content list + per-list Cooldown, Filler List Cooldown, Hide Watermark, Channel Fallback), plus a Day + Start Time, reusing the same weekly/daily period concept Time Slots already use so it's a familiar UI pattern.

Example: "Morning Cartoons" block (Sun–Sat, 6:00 AM–3:00 PM) uses Filler List A with a 5-min cooldown; "Primetime Action" block (3:00 PM–11:00 PM) automatically switches to Filler List B with a 10-min cooldown. No manual intervention required once configured.

Real-world example: Nick Picks channel

This channel currently requires manual Flex reconfiguration at specific times, illustrating exactly the gap this feature would close:

Monday–Thursday, 6:00 AM – 9:30 PM ("90s Nick" block)

Filler List Weight Cooldown
90s Nick filler 70% none
90s Nick ID bumpers 30% 4 min

Monday–Thursday, 9:30 PM – 6:00 AM ("Nick at Nite" block)
Currently handled by manually swapping the channel's Flex config at 9:30 PM — timed to the start of the last scheduled show in the prior block, not its end, since that show's actual runtime varies (e.g., scheduled at 9:30, may run until 9:52–9:53). Swapping at the show's start time ensures the correct filler is already active by the time it actually ends, whenever that is.

Friday, 6:00 AM – 10:00 PM ("2000s Nick" block — distinct from weekday daytime)

Filler List Weight Cooldown
2000s Nick commercials ~80% (typical) none
2000s Nick ID bumpers ~20% (typical) 5 min
Music videos remainder 30 min

(Weights are adjusted to redistribute to 100% as needed.)

Friday, 10:00 PM – 6:00 AM ("Friday Nick at Nite" block — distinct commercial set from weekday Nick at Nite)
Same manual-swap pattern as weekdays, but anchored to 10 PM instead of 9:30 PM, since Friday's schedule places the last pre-block show later.

What this demonstrates:

  1. Blocks need per-day-of-week granularity, not just one repeating daily schedule — Friday requires entirely separate day and night configurations from Monday–Thursday, even though the concept (day block / night block) is the same. This matches the day-selection granularity Time Slots already support under "Weekly" period, so no new UI paradigm is needed — just applying the same pattern to channel-level Flex.
  2. A block's start boundary should be set to the start time of the last anchor program in the preceding block, not its end — this is already how the manual workaround functions today, confirming that simple clock-time boundaries (no dependency on actual program-end detection) are sufficient to fully replace the manual process.
  3. Weighted, multi-list filler with mixed cooldowns must carry over per-block — each block isn't just "a different filler list," it's a full independent copy of everything on today's Flex tab (multiple lists, individual weights, individual cooldowns, plus the shared Filler List Cooldown and Channel Fallback settings).

Backward compatibility

Channels with no Flex Blocks defined keep using today's single static Flex config exactly as-is — this should be purely additive, not a breaking change to existing channel configs.

Implementation note

Since schedules are fully materialized ahead of time (precalculated per "Days to Precalculate," with duration offsets baked into the lineup), this should hook into the same place the lineup generator currently reaches for the single static channel Flex config when filling non-slot-specific Flex time — the change is having that lookup resolve "which Flex Block is active at this timestamp" first, falling back to the legacy single config if no block matches. This is the same general shape of problem as the per-slot filler budget/cursor work already done (time-aware filler selection during lineup generation), just triggered from the channel-level Flex path instead of the per-slot path.

UI sketch

Same layout as today's Flex tab, with an "+ Add Flex Block" control (mirroring "+ ADD SLOT" in the Time Slot Editor) that expands to the existing Filler Content/Filler Options fields per block, each tagged with a day + time range.


Happy to make this exact channel (Nick Picks) available as a live test case if it'd help — it already exercises the trickiest parts of this feature in production (day-of-week-specific boundaries, multiple weighted lists with mixed cooldowns per block, and boundaries anchored to a preceding show's start time rather than a fixed clock time alone), so it'd be a good stress test beyond a synthetic example.

Image

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions