Skip to content

Interlude playback + chat timeline sync #47

@zeevenn

Description

@zeevenn

Parent

#39 — PRD: AI Radio — Host-driven Channel experience with chat timeline

What to build

Wire Interlude Segments into the chat timeline: when the Player starts an InterlSegment, push the Interlude's script as an interlude ChatMessage so text and audio are synchronised. Ensure Interlude cards are visually distinct from now-playing Track cards in the timeline.

Player side: When nowPlayingIndex advances to an InterlSegment, emit a onSegmentStart event (alongside the existing onSegmentEnd). The Radio Screen listens for this event and dispatches to the Chat Timeline Store.

Chat Timeline Store: interlude messages already exist in the ChatMessage union from #40. No store changes needed — just ensure appendMessage({ type: 'interlude', script, timestamp }) is called at the right moment.

Radio Screen: render interlude ChatMessage items with a distinct visual style — e.g. a Host avatar, different bubble colour, or italic text — so users can distinguish Host speech from track cards.

Acceptance criteria

  • When an InterlSegment begins playing, its script appears in the chat timeline at that moment (not before, not after)
  • interlude chat cards are visually distinct from now-playing track cards
  • Timeline auto-scrolls to show the new Interlude card
  • The Interlude TTS audio plays in full before the next Segment begins (no premature skip)

Blocked by

Metadata

Metadata

Assignees

No one assigned

    Labels

    ready-for-agentReady for an AI agent to implement

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions