The selection menu's "Listen" button wasn't working in Timeline View because
the character-to-timestamp mapping was incorrectly counting text from timestamp
and speaker name elements.
Changes:
- Add data-transcript-text attribute to transcript text containers
- Update TreeWalker in useSelectionMenu to only count text inside these marked elements
This fixes the character index calculation so word timestamps are correctly looked up.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The "Auto Scroll On" feature was broken because it relied on a word-level ref
that was never assigned. This fix implements segment-level auto-scroll for
Timeline View.
Changes:
- Enable autoScrollEnabled prop usage in TranscriptView
- Add activeSegmentIndex computation to track current playback position
- Add auto-scroll effect that scrolls to active segment on segment change
- Add subtle background highlight to indicate the currently playing segment
The auto-scroll only triggers when:
- Mode is 'expanded' (Timeline View)
- Auto-scroll is enabled
- Audio is playing
- The segment actually changes (debounced to prevent jitter)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Replace status pills with icons in Audio Detail view
- Make settings changes (summary profiles) reactive
- Update karaoke highlight to use text accent color
- Remove transcription card styling on mobile
- Remove Scriberr logo from chat panel
- Switch transcript font to Literata with improved typography
- Fix audio icon hover visibility in file list
- Implement CSS Highlight API for high-performance karaoke word highlighting
- Update text colors for better contrast
- implemented backwards search to find the LATEST started segment
- prevents highlighter from getting stuck on the first segment's last word
- ensures robust highlighting when switching views or seeking
- implemented hit-testing using caretRangeFromPoint for Click-to-Seek
- rewrote useTranscriptSelection to work with character offsets instead of DOM nodes
- extracted computeWordOffsets to share text mapping logic
- updated TranscriptView to handle Cmd+Click seeking
- updated TranscriptSelectionMenu to use design system tokens
- Created useKaraokeHighlight hook for performant text highlighting
- Refactored TranscriptView to use single text node + CSS Custom Highlights
- Removed overhead of thousands of span elements in Compact view
- Updated AudioDetailView to prop-drill isPlaying and currentTime