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
Blocked by
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
scriptas aninterludeChatMessage so text and audio are synchronised. Ensure Interlude cards are visually distinct fromnow-playingTrack cards in the timeline.Player side: When
nowPlayingIndexadvances to an InterlSegment, emit aonSegmentStartevent (alongside the existingonSegmentEnd). The Radio Screen listens for this event and dispatches to the Chat Timeline Store.Chat Timeline Store:
interludemessages already exist in theChatMessageunion from #40. No store changes needed — just ensureappendMessage({ type: 'interlude', script, timestamp })is called at the right moment.Radio Screen: render
interludeChatMessage 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
scriptappears in the chat timeline at that moment (not before, not after)interludechat cards are visually distinct fromnow-playingtrack cardsBlocked by