Skip to content

Roadmap

Planned work, in suggested priority order:

  1. Extend renderer tests for wide glyphs, combining marks, emoji, and fallback fonts, then fix differences from expected terminal output.
  2. Pass live terminal mode state to libghostty-vt::key::Encoder. Test applications that switch cursor-key or keypad modes.
  3. Decide whether library callers should receive images, frames, and state snapshots without writing files. Runner::run_artifacts already returns final terminal state.
  4. Consider injectable process, clock, and filesystem interfaces if direct library use grows. These would let tests exercise timing and failures without real shells or media files.
  5. Add benchmarks for rendering, state compaction, frame decoration, and GIF encoding once their behavior settles.
  6. Move to libghostty 1.0 when the Rust bindings release it, and use what it adds: exact synchronized-output boundaries, shell prompt detection for Wait, Ghostty’s image placement, animated kitty images, replies to light/dark and terminal-version queries, and a list of unsupported escape sequences in failure reports.
  7. Keep MP4/WebM encoding in optional ffmpeg unless users need native encoding. Native support would add codec dependencies and platform tests.
  8. Consider making assertion timing configurable, for example a per-tape setting or an @duration on each assertion, so tapes can choose single-frame checks or shorter timeouts without extra commands.
  9. Watch for a supported libghostty frame-capture API. The Rust bindings Betamax uses do not currently expose one.

See the repository roadmap for details and Differences from VHS for compatibility and unsupported features.