CLAUDE.md ("Follower clock" section) documents:
audio.paused is shimmed to false so the lyrics/jumping-tab panes … keep running.
The shim is unconditional/constant, not tied to _followerPlaying. But the main window's <audio> genuinely does pause (user hits pause, or navigates away). Any follower-side code gated on !audio.paused — including the very panes this shim exists for — will keep animating/burning frames while the shared session is actually paused, and any UI that reads .paused to decide play/pause state (a play glyph, a "resume" prompt) will be permanently wrong in follower windows.
Suggest: shim audio.paused to reflect !_followerPlaying instead of a hardcoded false, so panes correctly freeze when the main window pauses. If there's a reason it's hardcoded false (e.g. some downstream code treats paused transitions as a signal to stop, which would be wrong for the interpolation-continues-briefly behavior), that reasoning should be documented in CLAUDE.md instead of left implicit.
CLAUDE.md ("Follower clock" section) documents:
The shim is unconditional/constant, not tied to
_followerPlaying. But the main window's<audio>genuinely does pause (user hits pause, or navigates away). Any follower-side code gated on!audio.paused— including the very panes this shim exists for — will keep animating/burning frames while the shared session is actually paused, and any UI that reads.pausedto decide play/pause state (a play glyph, a "resume" prompt) will be permanently wrong in follower windows.Suggest: shim
audio.pausedto reflect!_followerPlayinginstead of a hardcodedfalse, so panes correctly freeze when the main window pauses. If there's a reason it's hardcodedfalse(e.g. some downstream code treatspausedtransitions as a signal to stop, which would be wrong for the interpolation-continues-briefly behavior), that reasoning should be documented in CLAUDE.md instead of left implicit.