perf+fix: eliminate words array, fix pause bug, chunked transcripts
Performance:
- WaveformBand derives density from diarization (151KB) instead of
words array (3MB) — works at all zoom levels
- getTrack response drops from 2.8MB to ~155KB
- Track transcript loads via HLS-inspired chunked endpoint (~10KB/chunk)
Bug fix:
- Video pause button now works on first click. Root cause: React Strict
Mode double-invoked the HLS setup effect, leaving a stale setTimeout
that held a closure with hasAutoPlayed=false. Fixed by using useRef
for the auto-play guard and clearing the timeout in cleanup.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>