recording: drive all tutorial recordings in content-time (lockstep follow-up)#193
Merged
Merged
Conversation
…-up) Refactor all 47 integration recording drivers off wall-clock sleep() onto the content-time helpers from #191 (hold_content / record_frame_count / hold_remainder_content). Under a lockstep recording session every captured frame is exactly 1/fps of video, so wall-clock sleeps stretched each beat by the record/playback fps ratio and varied with per-beat render load -- the source of the uneven pacing. The lead/remainder beats now measure consumed frames instead of guessing with magic glide constants. Re-recorded all 47 tutorial mp4s with the content-time drivers: every driver records 0 dropped frames with no max_seconds overrun (the two former overruns, color_button_hover and flat_tooltips, are fixed). Also drop an unused require math in record_group.das (CI lints PR-touched files). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…l videos Self-contained per-repo runner: Clean -> Prepare (TTS) -> Record -> Convert for every tests/integration/record_*.das driver. Run one repo at a time; defaults re-record the whole repo. Computes its own repo root from $PSScriptRoot and picks up $env:DASLANG, so it is not path-hardcoded. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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.
Follow-up to #191 (content-time helpers). Refactors all 47
tests/integration/record_*.dasdrivers off wall-clocksleep()pacing and onto the shared content-time helpers, then re-records every tutorial video.Why
Under
with_recording_appthe host runs a fixed-dt clock — every captured frame is exactly1/fpsof video. A wall-clocksleep(ms)therefore stretches a beat by the render/playback fps ratio and varies with per-beat render load, so beats land unevenly and the playback judders. #191 added the content-time helpers (hold_content,record_frame_count,hold_remainder_content,*_voiceaction helpers) and moved the voice helpers over; this PR moves the remaining inline dwell/settle/warmup pacing in the drivers themselves.What changed
sleep(...)→hold_content(app, ...)(gates on captured-frame count, falls back to wall-clock when not recording).record_frame_count(app), hold a short lead, run the action + checks, thenhold_remainder_content(app, dwell, anchor)pads the beat to the voice dwell measuring consumed frames (dropped the old magic+Nufudge constants).*_voicehelpers (e.g.sort_under_voice,context_pick_voice,open_under_voice/pick_under_voice,type_field_voice,expand_under_voice,drag_under_voice) soprepare_recordingcan still AST-scan the literalsaylines at each call site.record_child/record_with_tab_stop/record_with_disabled— converted the remainingref_time_ticks-based anchors torecord_frame_count, and the special max(hold, body) dwell inwith_disabledstage 4 to lead +hold_remainder_content..mp4s on the content-time drivers (verified 47/47 play, correct durations, no dropped frames / overruns).record_group.das— dropped an unusedrequire math(lint STYLE030).move_tois already non-blocking (posts a lerped timeline consumed under the lockstep clock during the following hold), so only baresleep()was a wall-clock leak.Verification
lintclean (0 issues), formatter--verifyclean (47 files) — all via the pre-push hook.🤖 Generated with Claude Code