The client_mode::federated_client_starts_without_local_and_survives_its_restart
integration test fails intermittently on the ubuntu (and macos) runners at two
polling budgets:
- "remote must be usable before Local exists"
- "remote reconnect N must restore visible input and preserve the shell"
Both budgets are shorter than the client's own connection and activation
deadlines. Saved-SSH discovery probes are bounded by a 15s SSH command timeout,
the remote handshake read timeout is 60s, and each endpoint activation phase has
a 5s deadline that can retry. Under a loaded runner the client can still be
legitimately connecting, or holding pane input closed through an activation
retry, when the test gives up.
Give the remote-readiness and remote-input waits budgets that exceed those
deadlines. The waits still return as soon as the observed condition holds, so
only the failure path gets slower. The intentionally tight waits that prove
Local does not wait for a stalled remote stay at 3s.
Every bundled Windows PowerShell hook read its hook JSON with
`[Console]::In.ReadToEnd()`, which decodes stdin using the process console
input code page instead of UTF-8. On Korean Windows (CP949) that corrupts
the payload, `ConvertFrom-Json` throws, and the hook silently exits without
reporting the session. Read the raw stdin stream as UTF-8 (BOM-aware) in
every PowerShell hook and bump the affected integration versions.
refs #5253
portable-pty's Windows search_path accepted any existing candidate, so a directory on PATH whose name matched the program shadowed the real executable and CreateProcessW failed with os error 5. Require a regular file for both the exact name and the PATHEXT candidates.
refs #5267
* fix: retry a reconnecting machine immediately when selected
Assisted-by: Claude <noreply@anthropic.com>
* fix: retry the active SSH machine when selected
refs #4721
---------
Co-authored-by: Bart Louwers <bart@emeel.net>
* 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
* fix: stop waiting forever for an unfinished host color reply
refs #5052
* fix: keep input that follows an unfinished host color reply
refs #5052
* fix: drop an unfinished host color reply after an idle timeout
refs #5052
* fix: tell fish that herdr reflows its prompt on resize
refs #3672
* fix: match fish_handle_reflow casing exactly on windows
refs #3672
* test: keep temp path out of fish env spawn test command
refs #3672
* 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
* fix: keep the server alive when thread spawns fail
refs #3324
* fix: keep thread spawn fallbacks from dropping work
refs #3324
* fix: validate agent prompts before starting the waiter
refs #3324
* fix: retry failed startup git refresh without clients
refs #3324
* fix: time plugin commands from their exit
refs #3324
* fix: make plugin finish time test independent of load
refs #3324
* fix: keep agent sessions while the agent is suspended or backgrounded
refs #1647
refs #1033
* fix: drop a suspended agent's session when a new one of its kind takes over
refs #1647