Scrolling woke the HUD, so a swipe to the next reel put the controls up over the video arriving -- the one thing the swipe was for -- and left them there for a second. The scroll now puts them away instead. Removing that alone wasn't enough: the container also woke on pointerdown and touchstart, which is how every drag begins, so the HUD still flashed at the start of one. A press only wakes them now if it lands on a control -- which is a press on something the reader can't see while they're hidden, and never the start of a swipe. A press that turns out to be a tap still wakes them through the gesture layer's onSingleTap, the mouse moving still wakes them, and dragging the scrubber keeps them up, being the one drag that is the HUD. Two details follow from it. The sleep sits after onScroll's suppressScroll guard, so a resize or a picture-in-picture re-snap doesn't count as the reader moving. And opening the feed scrolls to the starting step, whose scroll event would put the controls straight back down, so that wake waits a frame -- scroll events run before animation frames. The checks live in their own file rather than in smoke_reels: one panel and one swipe is all they need, and the split-panel suite is the heaviest thing in the tree to run. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MPZFnNdHbPGDTqQUNiE4ZN
79 KiB
79 KiB