Summary
(As of v2.6.2.) handleSeeked (hyperaudio-lite.js:769-777) only calls updateTranscriptVisualState + scrollToParagraph; it neither clears nor reschedules this.timer, while checkStatus (:933) has already armed the next tick for the old next-word time.
Failure scenario
Playback sits in a long silence (next word 5 minutes away → timer armed for ~5 min). The user scrubs the native controls back to an earlier dense section. Native media fires only seeked (no play/pause), so the visuals update once and then freeze for minutes while audio plays, until the stale long timer finally fires. (Forward seeks recover quickly only because the stale timer happens to fire early.)
Fix
In handleSeeked, when !this.myPlayer.paused, clearTimer() then checkStatus() (or checkPlayHead()) to reschedule against the new position.
Found reviewing the copy vendored in hyperaudio-lite-editor / GliderMac (2026-07-11).
Summary
(As of v2.6.2.)
handleSeeked(hyperaudio-lite.js:769-777) only callsupdateTranscriptVisualState+scrollToParagraph; it neither clears nor reschedulesthis.timer, whilecheckStatus(:933) has already armed the next tick for the old next-word time.Failure scenario
Playback sits in a long silence (next word 5 minutes away → timer armed for ~5 min). The user scrubs the native controls back to an earlier dense section. Native media fires only
seeked(noplay/pause), so the visuals update once and then freeze for minutes while audio plays, until the stale long timer finally fires. (Forward seeks recover quickly only because the stale timer happens to fire early.)Fix
In
handleSeeked, when!this.myPlayer.paused,clearTimer()thencheckStatus()(orcheckPlayHead()) to reschedule against the new position.Found reviewing the copy vendored in hyperaudio-lite-editor / GliderMac (2026-07-11).