* test: add input transparency conformance harness
* test: cover split host replies in input conformance harness
* fix: let libghostty encode every key sent to panes
* refactor: read live keyboard modes only from libghostty
* fix: wait for split input sequences instead of typing their fragments
* refactor: drop unused keyboard protocol argument from pane key encoding
* test: fix windows-only keyboard mode tests after libghostty mode refactor
* test: measure windows key record transparency against the keyboard layout
* fix: forward windows punctuation and altgr chords that produce no character
* test: expect libghostty kitty encoding in the windows conpty probe and cover release, alternate, text and modifyOtherKeys passthrough
* ci: lint windows-only test code in the cross-platform windows check
* refactor: delete herdr's own key encoder
* test: expect xterm modifyOtherKeys 2 encoding for shifted letters in the windows gauntlet
* refactor: read windows input through one native console reader
* refactor: parse sgr mouse reports once and map pixel reports without rewriting them
* refactor: decode framed input once instead of re-framing it in the client
* fix: keep macos alt, non-us kitty keys, text releases and reply-tail recovery correct after the libghostty switch
* fix: stop waiting for host replies the terminal never sends
* fix: deliver shifted punctuation releases after shift is let go
* fix: never type super, hyper or meta chords into panes that cannot read them
refs #4356
* test: replay reporter captures for fixed split-read and key-release issues
refs #4856
refs #4025
refs #4184
* fix: forward f1, f2 and f4 from kitty keyboard hosts
refs #4403
* fix: send pixel mouse reports to unfocused panes and only when the host supports them
refs #4750
* fix: treat 0x08 as backspace when the terminal's erase key is ctrl+h
refs #3244
* test: fix macos lint and keep the pixel mouse server test unix-only
* fix: deliver legacy alt+escape on macos instead of dropping it
* fix: address review findings on super+enter, held key releases and the pixel mouse probe
* test: expect super+enter to stay out of plain windows panes
* test: wait for the host pixel mouse mode instead of reading the channel once
* fix: send ctrl+shift+letter to plain shells as its control byte
* fix: encode each key under one keyboard mode snapshot
* fix: keep ime text intact and stop inventing key releases for committed text
* fix: release held key reports on focus loss and never drop held-key leases
* fix: send ctrl chords on non-latin layouts as their physical key
* fix: match non-latin ctrl chord releases after ctrl is let go
* fix: drop super chords before the windows conpty fallback in plain panes
`git apply` by default expects `-p1`, which is the default behavior of
`git diff`, but this can be overridden by config. Specify it explicitly
so it works regardless.
* fix: create a symlink on non-elevated windows in docs test
Windows terminals without Developer Mode or elevation cannot create file
symlinks, so the versions publishing integration test failed with EPERM
before it could reach the non-ordinary-file rejection. Fall back to a
directory junction, which is creatable without elevation and hits the
same rejection path.
* fix: detect docs snapshot reparse points with lstat
Classify entries with lstat instead of the readdir dirent so symlinks and
Windows junctions are rejected regardless of how a runtime classifies
them. This keeps the versions integration test's non-ordinary-file
assertion meaningful on non-elevated Windows, where the fixture can only
create a directory junction.
* fix: report partial Windows input coverage and clear clipboard for tests
* fix: require evidence from each Windows input channel
* fix: reject clipboard format count errors
The v0.8.2 Windows archive shipped an herdr.exe that imported
VCRUNTIME140.dll and the api-ms-win-crt-* Universal CRT, none of which the
archive provides. Static CRT linkage was restored for x86_64-pc-windows-msvc
in .cargo/config.toml, but nothing verified the packaged executable, so the
dependency could silently regress.
Parse the PE import and delay-import tables and reject herdr.exe when it
depends on the dynamic Microsoft C/C++ runtime, including release and debug
variants. Check the input while staging and re-check the staged executable
before archiving so a direct archive cannot bypass the guard.
refs #3129
Windows CI runs these documentation contract fixtures under variable load. A degraded runner pushed the preview and versions snapshot integration tests past their 30s ceiling, while a healthy run finishes in seconds. Keep 30s elsewhere and give Windows a 120s ceiling.
Native Windows lint and check only clippy-checked the herdr binary, while macOS and Linux run clippy across all targets. Enable --all-targets on Windows and gate the Unix-only test helpers that this exposed so Windows check matches the Unix one.
* fix: run the full applicable test suite on windows
* test: remove redundant test shell assignment
* test: make endpoint and metadata fixtures deterministic
* test: tolerate exited servers during windows probe cleanup
* feat: show a zoom indicator in the desktop tab bar
Reserve the right edge of the tab row for a ZOOM pill while the
focused pane is zoomed, matching the accent style of the mode bars.
The per-tab Z suffix stays; the pill makes the zoomed state visible
at a glance like tmux's status-right flag.
* feat: optionally show the hostname in the desktop tab bar
Add ui.tab_bar_hostname to display the machine's hostname at the right
edge of the tab row, like tmux's #h in status-right. The value resolves
where the server renders, so remote sessions show the remote host. Off
by default.
* fix: strip control characters from the tab bar hostname
* fix: hide the hostname when it would squeeze out the tab strip
* feat: add configurable tab bar status
* fix: harden tab bar status updates
* fix: terminate tab bar status process trees
* fix: disable status commands on unsupported platforms
* fix: skip unchanged status command renders
* fix: keep tab bar status opt-in by default
---------
Co-authored-by: David Heinemeier Hansson <david@hey.com>