Skip to content

feat: default WebM export to recorded wall-clock timing#139

Merged
ThomasK33 merged 1 commit into
mainfrom
agent-tty-ngbt
Jun 11, 2026
Merged

feat: default WebM export to recorded wall-clock timing#139
ThomasK33 merged 1 commit into
mainfrom
agent-tty-ngbt

Conversation

@ThomasK33

Copy link
Copy Markdown
Member

What changed and why

WebM exports defaulted to accelerated replay 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.

  • Default timingMode is now recorded — exported videos play at the recorded wall-clock pace. --timing accelerated and --timing max-speed remain available as explicit opt-ins.
  • Accelerated mode retuned for watchability — idle gaps now clamp to 400ms (was 100ms) and each frame holds at least 100ms (was 50ms), so opting into time compression no longer produces a flickery strobe.
  • Updated --timing help text and docs/USAGE.md.

Automation-facing impact

The CLI JSON envelope shape is unchanged. Only the default value of metadata.timingMode differs (recorded instead of accelerated) when --timing is 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)
  • Targeted: test/unit/export/webm.test.ts, test/unit/commands/record-export.test.ts, test/integration/record-export.test.ts, test/e2e/export-fixtures.test.ts

Dogfood proof

Real session in an isolated AGENT_TTY_HOME running echo first; sleep 2; echo second; sleep 2; echo third (~4s of wall time in sleeps), exported via record export --format webm:

Export metadata.timingMode Video duration (ffprobe)
No flag (new default) recorded 7.20s — matches session wall time + 1s final hold
--timing accelerated (new 400ms clamp) accelerated 4.00s
--timing accelerated (old 100ms clamp) accelerated 2.84s — the old flash-by behavior

Last-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

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.
@ThomasK33 ThomasK33 merged commit e88a530 into main Jun 11, 2026
11 checks passed
@ThomasK33 ThomasK33 deleted the agent-tty-ngbt branch June 11, 2026 17:20
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