Repository navigation
docs: video frames without jitter, a still camera, better shots - #657
Conversation
…book) What made the v0.5.8 video shimmer and jerk, and the shots that said little: - lib.mjs times frames by the compositor (paint times, 16.7 ms apart in a glide) on the monotonic clock instead of by arrival (a few ms of jitter), and carries wall-clock steps it sees between paint and arrival. - The stage no longer dissolves between frames (a dissolve after a pause was cut short by the next frame) and its cameras keep still (no slow zooms: they rescaled every frame a little). - record-draw keeps Auto-arrange on, so the guesser stays in the middle as it grows (#655). - record-features: the tournament clip opens the bracket before the take and traces options through it; the focus clip opens an agent that is writing, so its live output shows. - Shots reframed for the narrower reel window (escalate, vote, shadow, tournament, coverage, lanes, focus) and the draw board at full height. - README: the above. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Local Codex review, round 1 ( Findings as reportedTarget: branch diff against origin/ui-rework Two recording regressions were reproduced with in-memory mocks: delivery delays corrupt timestamp alignment, and focus selection becomes stale before the take. Syntax checks passed; live browser recording was not rerun. Full review comments:
|
…ter in the take (playbook) Review round 1: - lib.mjs measures the wall clock's skew against the monotonic clock at each frame and moves the paint time by it: a late delivery no longer reads as a clock step. - The focus clip looks for an agent that writes during the take and marks the cut at the double-click, so the focus view opens while the reply streams. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Local Codex review, round 2 ( Findings as reportedTarget: branch diff against origin/ui-rework The timestamp conversion can corrupt recordings across clock adjustments or missing CDP timestamps. JavaScript syntax checks passed, but in-memory tests reproduced both regressions; live recording was not tested. Full review comments:
|
…none A wall-clock step between a frame's paint and its delivery no longer places the frame in the future (and pins the frames after it), and a frame without a compositor timestamp takes its arrival time instead of turning every later time into NaN. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Local Codex review, round 3 ( Findings as reportedTarget: branch diff against origin/ui-rework The new writer-polling deadline can select the wrong agent after a wall-clock correction. Syntax checks and in-memory timing checks passed otherwise; live recording and rendering were not exercised. Review comment:
|
The Focus take's wait for a streaming writer and the wait for a decision's lane measured their deadlines with the wall clock, which steps on WSL and could end the wait early. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Review loop closed after round 3.
The findings have narrowed to tooling edge cases with no effect on the rendered video, so I am stopping the loop here. |
Docs and tools only (into
ui-rework, merged tomainwith #623). Follows #654.What was wrong with the v0.5.8 video
Watching it showed a slight, needless zoom in the Snake part, micro jerks in the dashboard, a Quick, Draw! guesser card growing out of the bottom of its window, and two shots that said little (Tournament: an empty lane area and a half card; Focus: a decider with nothing in its live view). The jerks came from the tools, not the dashboard:
What changed
tools/lib.mjs: a frame's time is the compositor's (when it was painted) on the monotonic clock; a wall-clock step shows as a difference between the paint and the arrival interval of two frames and is carried in the offset.stage/stage.js: no dissolves; still cameras; shots reframed for the reel's about 1.2:1 windows (escalate, vote, shadow, tournament, coverage, lanes, focus); the Quick, Draw! board at full height.tools/record-draw.mjs: Auto-arrange stays on, so the guesser grows in the middle of the Flow (Dashboard: Auto-arrange does not lay the Flow out again when a card grows #655, fix: Auto-arrange follows cards that grow (#655) #656).tools/record-features.mjs: Tournament opens the bracket before the take and traces the winner and another finalist through it (hover); Focus double-clicks an LLM agent while it writes, so lineage and live output show.README.md: the above, as advice for the next video.Tested
The video was recorded again from
ui-reworkwith these tools and rendered (111 s, 1920 x 1080): the median change between rendered frames went from 0.21 to 0.06, andcheck_motion.py renderedfinds no jumps other than deliberate UI changes (the theme switch, the palette and the focus view opening, the old dashboard in the before shot).🤖 Generated with Claude Code