feat: default WebM export to recorded wall-clock timing#139
Merged
Conversation
Exported videos previously used 'accelerated' timing by default, clamping every idle gap to 100ms. Sessions dominated by idle time rendered as flash-by videos a couple of seconds long, which made recordings hard to review. - Default timingMode is now 'recorded' so videos match the recorded pace; --timing accelerated / max-speed remain available as explicit opt-ins. - Retune accelerated mode for watchability: idle gaps clamp to 400ms (was 100ms) and frames hold at least 100ms (was 50ms) to reduce flicker. - Update --timing help text and docs/USAGE.md accordingly. The CLI JSON envelope shape is unchanged; only the default value of metadata.timingMode differs when --timing is omitted.
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.
What changed and why
WebM exports defaulted to
acceleratedreplay timing, which clamps every idle gap to 100ms. Sessions dominated by idle time (most interactive sessions) rendered as flash-by videos ~2s long, making recordings hard to review.timingModeis nowrecorded— exported videos play at the recorded wall-clock pace.--timing acceleratedand--timing max-speedremain available as explicit opt-ins.--timinghelp text anddocs/USAGE.md.Automation-facing impact
The CLI JSON envelope shape is unchanged. Only the default value of
metadata.timingModediffers (recordedinstead ofaccelerated) when--timingis omitted, and accelerated exports are proportionally longer due to the retuned clamps.Validation
mise run ci— full gate green (150 test files, 1512 tests, build + install smoke)test/unit/export/webm.test.ts,test/unit/commands/record-export.test.ts,test/integration/record-export.test.ts,test/e2e/export-fixtures.test.tsDogfood proof
Real session in an isolated
AGENT_TTY_HOMErunningecho first; sleep 2; echo second; sleep 2; echo third(~4s of wall time in sleeps), exported viarecord export --format webm:metadata.timingModerecorded--timing accelerated(new 400ms clamp)accelerated--timing accelerated(old 100ms clamp)acceleratedLast-frame screenshot of the recorded-default export confirmed correct rendered content (including the prompt's own
took 4s).Generated with
mux• Model:anthropic:claude-fable-5• Thinking:high