Skip to content

fix: use motion film look during document preview playback - #11230

Merged
atomantic merged 5 commits into
mainfrom
claim/issue-11221
Oct 12, 2026
Merged

atomantic merged 5 commits into
mainfrom
claim/issue-11221

Conversation

@atomantic

@atomantic atomantic commented Oct 12, 2026 •

Copy link
Copy Markdown
Owner

Document previews carry playback mode with each queued worker seek. Playing frames use the shared CSS film look and reusable motion overlays; pause, scrub and frame stepping restore the exact SVG finishing filter. Generated documents remain inside the OS-isolated preview worker, and final renders keep their exact filter by default.

Motion overlays paint above document and lyric layers without intercepting pointer events. Their nodes and canvas noise tiles are retained across frames. Trusted inline SVG filters rasterize those tiles once without granting image URL access; overlay layers blend directly with the document and preceding layers. Explicit frame steps update the audio position before the pause repaint, preserving moves smaller than 50 ms. Previews without audio retain their seek position.

The CI correction asserts that the film finishing pass receives the exact encoded output path, preserving the contract on Windows as well as Unix.

Validation:

  • 44 focused server tests passed, including real Chromium PNG byte parity at two song frames, overlay stacking/hit testing, queued playback-to-pause capture with socket ownership checks, renderer terminal handling, canvas texture pixels under the actual worker media policy, and cast blending against reference pixels.
  • 16 client preview/frame-step tests passed. The new playback-to-frame-step regression failed before the correction and passes afterward.
  • Local pregate passed its configured lint, guards and selected tests; full CI subsequently passed on the final head, including both Linux server shards, all client test/build shards, all Windows shards, database/cross-workspace browser validation, worker containment, CI Gate and Full CI Gate.

Performance acceptance remains open in #11221. A preliminary same-page, headless-Chromium 390×219 synthetic 30 fps video probe counted requestVideoFrameCallback over 3 seconds while advancing the runtime's film frame: clean 16.20 fps, exact Neon rain 6.65 fps, motion Neon rain 15.27 fps, clean recheck 14.24 fps. This sample predates the texture/blending corrections and cannot establish clip-rate playback because even the unfiltered control fell below the clip rate. It also does not measure throughput of the isolated JPEG worker transport. This PR delivers the mode-switch behavior; #11221 remains open for representative throughput validation and any required transport work.

Refs #11221

The configured provider:codex review ran for both allowed rounds and reported three findings. All three were fixed and covered by regressions; the two-round budget is exhausted, so no clean verdict is claimed for the final head.

@atomantic

Copy link
Copy Markdown
Owner Author

Completed the configured provider:codex review budget (two rounds):

  • Fixed one-frame steps snapping back to the old audio position on pause. The new rendered-control regression reproduced the failure before the fix.
  • Fixed grain/tape disappearing under the worker's image policy. Trusted inline SVG filters now rasterize reusable canvas tiles without image requests; the browser regression uses the worker's actual media policy and confirms ordinary data-image requests are still refused.
  • Fixed the overlay group isolating blend modes from the document. Layers now participate directly in the root stack; a pixel test matches a cast blended with the underlying picture.

Also corrected the Windows finishing-pass test to require the exact encoded output path, and split the two expensive exact-render parity samples into individually bounded tests without dropping assertions. Focused checks passed (44 server/browser tests across the validated files, 16 client tests); the latest pregate passed 613 server and 136 client checks plus lint/guards.

Both reviewer rounds returned findings; all were addressed. The configured budget is exhausted, so this is budget-complete, not a claimed clean review of the final head. There are no GitHub review threads to resolve. Full CI is running on 70a5241.

#11221 remains open for representative clip-rate throughput validation. This PR references it without closing it.

Conventions Encoded

  • Comments at the runtime's texture and overlay boundaries explain why image URLs and an overlay stacking context cannot be used; docs describe the same worker constraints. Regression tests enforce those contracts.

@atomantic
atomantic merged commit f4b3c41 into main Oct 12, 2026
15 checks passed
@atomantic
atomantic deleted the claim/issue-11221 branch October 12, 2026 05:35
@atomantic

Copy link
Copy Markdown
Owner Author

Merged as f4b3c41 after all checks in CI run 38207819507 passed, including CI Gate and Full CI Gate. Verified the final task head is an ancestor of main and the exact remote task branch is deleted. The managed local worktree/branch remain for PortOS cleanup.

The configured two-round reviewer budget completed and all three reported findings were fixed. Local validation passed 44 focused server/browser tests, 16 client tests, and pregate (613 server and 136 client checks plus lint/guards). #11221 remains open for representative throughput validation; merging this functional improvement does not establish clip-rate playback.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant