v0.4.1
fish 4.0+ now records with zero configuration
fish 4.0 started emitting full OSC 133 shell-integration marks natively — including the command line itself, attached to the C mark as a percent-encoded cmdline_url parameter (kitty shell-integration protocol). backscroll now parses that, so on fish ≥ 4.0:
backscroll run…just works. No snippet in config.fish, nothing sourced. Command text, exit codes (including 130 on Ctrl-C), cwd, multiline blocks, and the end-of-session exit stub-drop all behave exactly as with the snippet.
The snippet is still worth having for the Ctrl-X Ctrl-P picker binding and tab completion — and running both is fine: duplicate C/D marks collapse, and the snippet's exact command text takes precedence over the native hint.
Also in this release
- New recorder-level E2E test suite driving a real fish 4.8.1 on a PTY (
shell/test_fish4_native.py), covering both the native-marks-only and double-emission scenarios; runs in CI against a cached fish 4.8.1 static binary. The harness answers reedline's startup terminal probes (DA1, DSR6n, OSC 11) like a real terminal. docs/osc133.md: documented fish 4's native marks +cmdline_url, and a new gotcha on making duplicate marks collapse (with observed ordering: nativeC;cmdline_urlarrives beforefish_preexechandlers run).
Compatibility
- No schema change; DBs from 0.4.0 are untouched.
- Older binaries simply ignore
cmdline_url(fish ≥ 4.0 sessions record as(unknown command)there).
Install: curl -sSfL https://raw.githubusercontent.com/soren-achebe/backscroll/main/install.sh | sh · brew install soren-achebe/tap/backscroll · binaries below