Repository navigation
feat(player): repeat frame steps while holding transport buttons - #65
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
3 of 4 tasks
Owner
Author
|
This PR was claimed |
Owner
Author
|
This PR's claim 6178425919 was released at 0de9c1c |
Leftium
marked this pull request as ready for review
October 14, 2026 21:10
Leftium
marked this pull request as draft
October 14, 2026 21:19
Owner
Author
|
This PR was claimed |
Owner
Author
|
This PR's claim 6178736719 was released at f4abfbf |
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refs #62, PR 3. Builds on merged #63 and #64. Keep #62 open for Clip-settings PR 4; watch reveal/docking remains #15. Do not merge as part of this task.
This PR follows the Continuum protocol at 9aea333.
Summary
Prev Frame and Next Frame now pause and request one nominal time step on a tap, or repeat while held. Repeat begins after 350 ms and runs every 200 ms. Releasing stops repeat without another step and leaves playback paused. Both directions honor A/B in Clip Only and source limits in VIDEO. Loop wraps across those limits; Once stops at them.
Previously each step read a provider timestamp that could lag behind the last request. The new stepper accumulates integer quanta from a fractional logical anchor, so late or quantized YouTube observations cannot overwrite the logical stepping position. Provider seeks run at most once per 200 ms; rapid taps replace one pending target instead of accumulating commands. The final queued target is sent within that interval, and other navigation discards it.
Changes
Verification
The GitHub verification run passed for
f4abfbf, including production-mode hosting/social checks and the routine browser gate. Vercel deployed successfully.Local checks:
pnpm check: no errors or warnings.pnpm lintandpnpm build: passed.pnpm test:clip: 30 passed, including seven new fake-timer/math checks covering both A/B edges, Loop wrapping, Once stopping, reversal, outside-clip positions and scope resets.pnpm test:share-url: 24 passed;pnpm test:metadata: 18 passed.pnpm test:browser:frames: 4 passed across Chromium/WebKit, with external requests blocked. Covers mobile-width mouse/touch/keyboard/AT activation, delay/cadence, stale observations, release/cancel, history/source change, teardown, both-direction A/B tap/hold wrapping in Loop and stopping in Once, whole-source limits in VIDEO, scope-switch cleanup, Clip Only re-entry, unchanged bounds/URL and provider identity.pnpm test:browser:timeline: 8 passed across Chromium/WebKit on the previous implementation revision; timeline/scrub behavior is unchanged by the scope update.pnpm test:browser: 36 passed, unchanged gate membership.Test lifecycle: the seven cheap Node checks remain permanent because stale-provider accumulation, repeat ownership and cancellation are recurring transport risks. The two new browser cases are probationary through Clip-settings PR 4 in #62 and excluded from routine gates. Reviewed all four existing timeline cases: capture/swap, keyboard restoration and editor/watch scrub cleanup still cover distinct browser contracts, so retain them through the same PR 4 review point. No existing test became obsolete, and routine gate membership is unchanged. Broader live-provider/advisory coverage was not run.
Follow-ups
Physical iPhone Safari/Android and real YouTube stepping latency remain pending manual verification, especially in unbuffered regions and long videos. Mocked WebKit verifies application and adapter behavior, not decoded-frame accuracy or physical-device compatibility.