Accessibility
CallTranscript from @prepared911/ui/blocks/call-transcript.
The transcript is one region named by copy.label. Each row is a Message with its speaker named and given a role; the row being played is exposed as selected. Row actions sit in that region, so the scrollport is not a second name.
A translated row announces copy.row.translationLabel before the translation, and marks the language of each text with its tag so a screen reader pronounces it.
The row toolbar is named by copy.row.toolbarLabel, and every action has a name. Copy actions announce copied and copyFailed.
Following the audio never moves focus. Scrolling by wheel or touch stops the follow, and the "Scroll to current" control restores it.