Skip to content

v0.5.1

Choose a tag to compare

@github-actions github-actions released this 26 Jul 15:52

Zero-config recording under iTerm2 shell integration — the scripts iTerm2 installs into your rc files, which is what's actually emitting marks inside tmux and over SSH (where the app itself can't inject them).

What's new

  • iTerm2 multiline commands reconstruct correctly. iTerm2 wraps PS2 continuation prompts in 133;A;k=s (the secondary prompt variant of the prompt-start mark — kitty spells it P;k=s). The parser now continues the current input region across it instead of resetting, so a heredoc or backslash-continued command keeps all its lines.
  • cwd via OSC 1337;CurrentDir. iTerm2's scripts never emit OSC 7; the raw-path CurrentDir report is the only cwd source, and it now feeds the cwd column. RemoteHost / ShellIntegrationVersion are consumed along with it — stateful host-terminal metadata is never stored into recorded output, so show --raw can't replay it at your terminal.
  • Empty prompt cycles are now dropped regardless of exit code. iTerm2 bakes its D;<exit> mark into PS1 itself, so every prompt render closes a cycle — and after a failed command, pressing Enter at an empty prompt reported the previous command's stale $?. That stored phantom (unknown command) entries with exit 1/130. Empty cycles (no command text, no non-metadata output) are never stored now. Since v0.5.0's echo reconstruction, a real failing command recovers its text from the terminal echo, so nothing real is lost.
  • Handles iTerm2's literal \r embedded in the OSC body of its C mark, and the stray pre-first-prompt C its bash script fires while the rc file is still being sourced.

Command text comes from v0.5.0's echo reconstruction (iTerm2 is a plain-133 emitter — it never reports the command line), verified against iTerm2's real bash and zsh integration scripts in a new E2E suite in CI, including a >1-row wrapped command and Ctrl-C exit 130.

Zero-config matrix now: fish ≥4.0, VS Code, kitty, WezTerm, Ghostty, iTerm2. The backscroll init snippet remains the gold path (authoritative command text + the Ctrl-X Ctrl-P picker) and coexists cleanly with all of them.

New: docs/osc133.md gotcha 17 — iTerm2's four integration quirks, written up.

Install / upgrade

curl -fsSL https://raw.githubusercontent.com/soren-achebe/backscroll/main/install.sh | sh

or brew install soren-achebe/tap/backscroll · .deb/.rpm below · go install github.com/soren-achebe/backscroll@latest

No DB migration — v0.5.1 uses the same schema as v0.4.x/v0.5.0.