* fix: open goto search on shifted slash in report-all panes
refs #4963
* fix: use the typed character for overlay slash and text shortcuts
refs #4963
* fix: require typed evidence for a shifted slash in goto
refs #4963
* fix: map non-latin layout ctrl chords to their base keys
refs #1079
* fix: keep us shifted symbols for non-latin punctuation chords
* fix: limit base-key chords to non-latin scripts and skip altgr-like ctrl+alt
* fix: recover shifted key alternates from vt bytes on windows input
* fix: cover cherokee, syllabics, mongolian and nearby scripts in base-key chords
* fix: cover lowercase cherokee supplement in base-key chords
* fix: only reparse windows vt keys that carry a shifted kitty alternate
* fix: match ghostty for layout ctrl chords and drop extra rewrites
* fix: keep shift-implied layout ctrl chords on the layout key
* fix: pair layout chord releases when modifiers change first
* fix: lease layout ctrl chords by their reported key
* 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
* feat: support multiple prefix keys
keys.prefix accepts an array in addition to a single string so one
config can define several prefix keys. Every configured prefix enters
the same prefix mode, and the help panel lists them all.
Published keybinding profiles keep the primary prefix as a scalar and
carry the rest in an optional extra_prefixes field so older clients
keep working with the primary prefix.
* fix: reject an empty prefix list on reload
An explicitly empty keys.prefix array now stays empty through config
parsing so validation rejects it and a reload keeps the current
keybindings instead of silently falling back to ctrl+b.
* feat: default machine add label to the ssh host
`herdr machine add <ssh-target>` no longer requires `--label`. Without
one, the machine is named after the SSH host with any `user@` prefix
removed, so `herdr machine add dev@workbox` shows up as `workbox`.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Apply suggestion from @greptile-apps[bot]
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
* fix: make default machine labels unique per session and handle ssh urls
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>