Repository navigation
replay: scrubbing a tape keeps the glass's edge - #670
Merged
Merged
Conversation
A seek replays to its moment with the app's motion skipped (`Stage.fastForward`, `Demo.fast`), and fizzy skipped it by publishing motion as off, as for a system that asks for reduced motion. But glass's edge — its lens, rim light and bend — is an amount the motion level grants (`motion.liquid`), so every frame of a seek drew all glass flat: the transport bar and the corner controls lost their edge while scrubbing, most visibly across the tour's Materials chapter, whose seeks run on over several frames. `motion.publish` now takes `skipping` apart from the system's preference: animations land at once, as at off, while `liquid` stays the person's. It is published under its own key, so a plugin built before it reads the level as before. The material itself was already part of the replay state (snapshots, keyframes and the fingerprint hold it); the test checks that too. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
foxnne
force-pushed
the
replay/scrub-keeps-glass
branch
from
October 19, 2026 21:10
7a08446 to
9ecc6de
Compare
foxnne
marked this pull request as ready for review
October 19, 2026 21:10
foxnne
enabled auto-merge
October 19, 2026 21:10
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.
What changes
Scrubbing a tape no longer drops the glass's edge on the transport bar and the corner controls.
Cause. A seek replays to its moment with the app's motion skipped (
Stage.fastForward→Demo.fast), andEditor.tickdid that by publishing motion as off, the same as a system asking for reduced motion. But glass's edge (its lens, rim light and bend) is an amount the motion level grants (motion.liquid, read byBlurBackdrop.queuePaneandDropZones). So every frame drawn during a seek drew all glass flat. It showed most across the tour's Materials chapter, where seeks take several displayed frames to land.Fix.
core.motion.publishtakesskippingseparately from the system's preference. Animations still land at once, as at off, whileliquidstays at the person's level.liquidis published under its own key, so a plugin built before this change still reads the level as before (with the old behaviour) and no shared struct changes shape.The coordinator also suspected the material. It is already part of the replay state: snapshots and keyframes hold
window_material, and the snapshot fingerprint covers it. The test now also checks that.SDK impact
sdk/src/version.zig,sdk_versionuntouched, PR labelledsdksdk_version, lists thesdkPRs since the lastsdk-v*tagVerified
plays the tour) now scrubs across the Materials chapter both ways with a seek budget of 0, so every displayed frame is one of the seek's. On every one of those frames, motion is skipped andmotion.liquid()equals its value in straight playback. Every landing replays with no fingerprint mismatches. With the old publish put back, the test fails (expected 1, found 0). Gates run locally: check-fmt, build, test, test-integration, check-web. I did not take a native screenshot.Follow-ups
liquidfrom the level, so its own glass (pixi's, for one) loses its edge during a seek until it is repinned at the next SDK release.🤖 Generated with Claude Code