mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-10-30 17:27:09 +00:00
Tooling and logs need more than "off". Give the runtime's report a reason code for every way blur can be off (renderer-off, unsupported-browser, each html-in-canvas defect, capture-failures), and two calls for tooling: probe() runs the same scan a render would, without painting, and suspend() stops all painting for the rest of a session without changing the reported decision. The engine prints one line per session from what the page reports: `[motion-blur] on reasonCode=null movers=N failedFrames=K`. The first-frame line cannot know about later failures, so the session end prints the same line with "(session end)" when any frame fell back to plain DOM; a clean session stays quiet. A render where every capture failed no longer reads as "on" with nothing else. Add the first test that reads blurred pixels: real Chrome with html-in-canvas, the engine's frame order (seek, wait, composite, screenshot). It checks the trail along the motion line, that what does not move matches the sharp frame, that a box centered with translate is blurred where it really is, and that a flipped backface card renders the plain frame. It skips when Chrome or html-in-canvas is missing. Folded review fixes: R13 (runtime half), R17 (engine half), T1 (the guards that need reason codes), T3 (log-line and pixel tests). Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>