Display name of the agent — labels and colors AI turns.
Current playhead position in ms (driven by the audio element's timeupdate).
Total audio duration in ms (set on loadedmetadata).
Whether the audio is currently playing.
When the recording started, used to derive a turn's offset when it has no UtteranceStartMs.
Emitted when the user clicks a transcript turn (to seek the audio to it).
ReadonlyWaveformThe synthetic waveform bar heights (stable per AudioUrl).
The recorded session audio URL, or null when no recording is available.
mm:ss of the current playhead.
mm:ss of the total duration.
Playhead progress as a fraction (0..1), for the scrubber fill + waveform reveal.
The session's transcript turns, in chronological order.
True when the playhead falls within this turn's utterance window (drives the active highlight).
Whether a turn is from the human user (vs. the agent) — drives the speaker color + label.
A callback method that performs custom clean-up, invoked immediately before a directive, pipe, or service instance is destroyed.
loadedmetadata → capture the duration.
play / pause / ended → reflect the transport state.
Scrubber pointer handler — maps the click X within the track to a seek fraction.
Scrubber keyboard handler — arrows nudge ±5s, Home/End jump to ends, Space toggles play.
timeupdate → advance the playhead + re-evaluate the active turn.
Seeks to a fraction of the duration (scrubber click / keyboard).
Clicking a transcript turn → seek the audio to it, play, and emit TurnSeek.
Toggles audio play / pause.
Stable @for track for the transcript.
The mm:ss timestamp shown on a turn (its start offset within the recording).
TIME-ALIGNED EVIDENCE PLAYBACK (
mj-realtime-evidence-playback) — replays a realtime session's recorded audio next to its transcript, with the two kept in sync. The audio gets a custom transport (play/pause, a synthetic waveform scrubber, time/duration readout); the transcript is a scrollable list of clickable turns. Clicking a turn seeks the audio to that turn's start and plays; as the audio plays, the turn whose[UtteranceStartMs, UtteranceEndMs]window contains the playhead is highlighted.Timestamps come from EvidencePlaybackTurn.UtteranceStartMs; when a turn has none, the component falls back to (
__mj_CreatedAt− RecordingStartedAt). Generic + Router-free: all state arrives via inputs, the only output is TurnSeek.