Keep rendered fill frames in chronological order - #20
Merged
Conversation
commit: |
mmkal
marked this pull request as ready for review
August 3, 2026 21:14
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 59c8de0. Configure here.
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.

Summary
Rendered fills now stay chronological at both sides of the synthetic reveal:
The renderer now limits pre-action stabilization to the measured recorder offset at the fill boundary, plus three native frames for compositor/concat variance. The cut is rounded to the source-frame grid. It leaves the unrelated raw gap untouched and uses the exact full-page action screenshot only for the short boundary slice.
Two separate public-behavior frame regressions protect the ordering in each direction. The completed-value case also requires every visible field to retain its current page, covering sparse raw recordings.
Validation
Before vs after
Left: the old whole-gap stabilization. Right: the frame-scoped fix.
fill-ordering-before-after.mp4
The old render pastes the future blue Title field over the red sign-in page. The fixed render keeps the sign-in page intact, then holds the empty field until its progressive reveal.
Codex session:
019fc6f7-2b26-73b3-9f9b-18b59e8bdda5Note
Medium Risk
Changes FFmpeg piece splitting, boundary-frame compositing, and fill stabilization timing in the video renderer—complex post-processing logic with frame-level regressions but no auth or data handling.
Overview
Rendered fill ordering is tightened so synthetic progressive reveals never leak completed text or future field crops onto the wrong page state.
Pre-action stabilization is no longer applied across entire raw gaps before a fill. The renderer splits the gap at a frame-aligned boundary using the measured timeline offset plus three native frame padding (
VIDEO_MODE_FILL_PRE_ACTION_FRAME_PADDING). Short boundary slices use the full-page action screenshot as the whole frame instead of compositing an isolated input crop over black when screencast packets are sparse. FFmpeg highlight still inputs are looped without per-highlight duration caps; each consumer trims to its rendered piece.Tests: The earlier-page/future-input regression is unskipped; a new regression rejects completed fill text before progressive reveal and isolated field crops without the editor page. The todo demo spec drops a redundant
No todos yetwait. The text-cursor test usestrimStart: "never"and scans the full rendered video for cursor-then-reveal timing.Reviewed by Cursor Bugbot for commit c318d5e. Bugbot is set up for automated code reviews on this repo. Configure here.