Repository navigation
chore: sync upstream/master into fork master - #57
Merged
Merged
Conversation
* test: isolate integration subprocesses from pane env refs herdrdev#4928 * test: cover pane env isolation for spawned servers refs herdrdev#4928 --------- Co-authored-by: kataokatsuki <kataokatsuki@users.noreply.github.com>
) refs herdrdev#4910 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com> Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
…4734) * fix: keep sidebar collapse clickable with agent scrollbars refs herdrdev#4692 * docs: document sidebar mouse handling and regression coverage refs herdrdev#4692
* fix: retain remote sidebar preferences across attaches refs herdrdev#4364 * test: cover remote preference identity handoff --------- Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
) Bumps the github-actions group with 3 updates: [taiki-e/install-action](https://github.com/taiki-e/install-action), [cachix/install-nix-action](https://github.com/cachix/install-nix-action) and [softprops/action-gh-release](https://github.com/softprops/action-gh-release). Updates `taiki-e/install-action` from 2.81.9 to 2.87.22 - [Release notes](https://github.com/taiki-e/install-action/releases) - [Changelog](https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md) - [Commits](taiki-e/install-action@fd2f5e3...83ac0ad) Updates `cachix/install-nix-action` from 31.10.6 to 31.11.1 - [Release notes](https://github.com/cachix/install-nix-action/releases) - [Changelog](https://github.com/cachix/install-nix-action/blob/master/RELEASE.md) - [Commits](cachix/install-nix-action@8aa0397...13d8dd5) Updates `softprops/action-gh-release` from 3.0.0 to 3.0.3 - [Release notes](https://github.com/softprops/action-gh-release/releases) - [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md) - [Commits](softprops/action-gh-release@b430933...efb3536) --- updated-dependencies: - dependency-name: taiki-e/install-action dependency-version: 2.87.22 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-actions - dependency-name: cachix/install-nix-action dependency-version: 31.11.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-actions - dependency-name: softprops/action-gh-release dependency-version: 3.0.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…dle for agy and grok (herdrdev#4959) refs herdrdev#3871 refs herdrdev#3530 refs herdrdev#4735 refs herdrdev#3419
…herdrdev#4964) * fix: keep agent sessions while the agent is suspended or backgrounded refs herdrdev#1647 refs herdrdev#1033 * fix: drop a suspended agent's session when a new one of its kind takes over refs herdrdev#1647
…h 3 updates (herdrdev#4955) Bumps the cargo-dependencies group with 3 updates in the / directory: [regex](https://github.com/rust-lang/regex), [serde](https://github.com/serde-rs/serde) and [futures-util](https://github.com/rust-lang/futures-rs). Updates `regex` from 1.12.3 to 1.13.1 - [Release notes](https://github.com/rust-lang/regex/releases) - [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md) - [Commits](rust-lang/regex@1.12.3...1.13.1) Updates `serde` from 1.0.228 to 1.0.229 - [Release notes](https://github.com/serde-rs/serde/releases) - [Commits](serde-rs/serde@v1.0.228...v1.0.229) Updates `futures-util` from 0.3.33 to 0.3.34 - [Release notes](https://github.com/rust-lang/futures-rs/releases) - [Changelog](https://github.com/rust-lang/futures-rs/blob/main/CHANGELOG.md) - [Commits](rust-lang/futures-rs@0.3.33...0.3.34) --- updated-dependencies: - dependency-name: futures-util dependency-version: 0.3.34 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies - dependency-name: regex dependency-version: 1.13.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: cargo-dependencies - dependency-name: serde dependency-version: 1.0.229 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [Swatinem/rust-cache](https://github.com/swatinem/rust-cache) from e18b497796c12c097a38f9edb9d0641fb99eee32 to f0d9c3887740aee45f6153b24b3a6b815192ec16. - [Release notes](https://github.com/swatinem/rust-cache/releases) - [Changelog](https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md) - [Commits](Swatinem/rust-cache@e18b497...f0d9c38) --- updated-dependencies: - dependency-name: Swatinem/rust-cache dependency-version: f0d9c3887740aee45f6153b24b3a6b815192ec16 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* fix: keep the server alive when thread spawns fail refs herdrdev#3324 * fix: keep thread spawn fallbacks from dropping work refs herdrdev#3324 * fix: validate agent prompts before starting the waiter refs herdrdev#3324 * fix: retry failed startup git refresh without clients refs herdrdev#3324 * fix: time plugin commands from their exit refs herdrdev#3324 * fix: make plugin finish time test independent of load refs herdrdev#3324
* 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 herdrdev#4356 * test: replay reporter captures for fixed split-read and key-release issues refs herdrdev#4856 refs herdrdev#4025 refs herdrdev#4184 * fix: forward f1, f2 and f4 from kitty keyboard hosts refs herdrdev#4403 * fix: send pixel mouse reports to unfocused panes and only when the host supports them refs herdrdev#4750 * fix: treat 0x08 as backspace when the terminal's erase key is ctrl+h refs herdrdev#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: tell fish that herdr reflows its prompt on resize refs herdrdev#3672 * fix: match fish_handle_reflow casing exactly on windows refs herdrdev#3672 * test: keep temp path out of fish env spawn test command refs herdrdev#3672
* perf: reuse unchanged shell detection text refs herdrdev#5083 * perf: reuse unchanged shell detection text refs herdrdev#5083 --------- Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com> Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
* fix: deliver quick esc taps on macos with kitty keyboard refs herdrdev#1266 * test: cover esc splitting edge cases under the macos input policy refs herdrdev#1266
…dev#5087) * fix: stop waiting forever for an unfinished host color reply refs herdrdev#5052 * fix: keep input that follows an unfinished host color reply refs herdrdev#5052 * fix: drop an unfinished host color reply after an idle timeout refs herdrdev#5052
* refactor: share cli and api command contracts * fix: address cli contract review findings
…#5232) * fix: retry a reconnecting machine immediately when selected Assisted-by: Claude <noreply@anthropic.com> * fix: retry the active SSH machine when selected refs herdrdev#4721 --------- Co-authored-by: Bart Louwers <bart@emeel.net>
* fix: cancel and clean up endpoint connection attempts refs herdrdev#4721 * fix: keep probe teardown scoped to its bridge refs herdrdev#4721 * fix: preserve nonblocking bridge output and simplify cleanup refs herdrdev#4721
* fix: recover endpoint connections promptly after wake refs herdrdev#4721 * test: wait for asynchronous endpoint pipe closure refs herdrdev#4721
* fix: recover blocked shared ssh connections refs herdrdev#4721 * test: support shared ssh checks in client fixtures refs herdrdev#4721 * test: separate ssh cancellation from timeout scheduling refs herdrdev#4721
…ev#5269) 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 herdrdev#5267
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 herdrdev#5253
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.
…5282) PowerShell serializes progress records such as module auto-loading's "Preparing modules for first use." to the stderr CLIXML stream when stderr is redirected under `-EncodedCommand`, and Herdr forwards that stderr during interactive remote setup. Set `$ProgressPreference = 'SilentlyContinue'` in the shared Windows PowerShell preamble so `machine add` and `--remote` no longer print raw CLIXML records. refs herdrdev#4639
The macOS CI job intermittently fails server::client_transport::tests::observer_write_timeout_resets_when_sending_makes_progress with "assertion failed: write_framed_bytes(...)" followed by "observer disconnected while making progress". The test proves that every partial write resets the writer's deadline by draining a 1 MiB frame through an observer that sleeps 5 ms per 16 KiB read while the writer's send timeout is 100 ms. On a loaded runner, one scheduler stall longer than 100 ms makes write_client_stream time out and shut the socket down, so the write assertion fails and the observer then reads EOF. Give the writer a 1 s timeout and slow the observer to 25 ms per read. The transfer still takes about 1.6 s, longer than the timeout, so the deadline reset is still required, while the stall budget grows 10x and the drain cadence stays 40x below it. Also bound both kernel socket buffers well below the frame size. The reset path is only exercised while the writer is blocked, so the test should not depend on the platform default buffers happening to be smaller than 1 MiB.
* fix: probe windows remote hosts before /bin/sh Interactive remote setup forwards SSH stderr, so a Windows OpenSSH host with a PowerShell default shell printed the raw `/bin/sh` CommandNotFoundException and Windows was only identified by the fallback probe. Probe for Windows first for interactive connections so those hosts never receive a `/bin/sh` command; background bridges capture stderr and keep the POSIX-first probe. refs herdrdev#5187 * fix: distinguish wsl from native windows ssh shells refs herdrdev#5187
…dev#5308) OpenSSH for Windows hands the SSH command argument to the login shell wrapped in double quotes, which expanded the `$`/`$(...)` in Herdr's POSIX discovery and API bridge scripts before `/bin/sh` ran them. A saved machine whose default shell is WSL bash is detected as POSIX, so `herdr --machine` then failed with `remote binary discovery failed`. Deliver the discovery script on stdin (`/bin/sh -s`) and base64-encode the cached POSIX API bridge command so the whole script, including any executable path, stays out of the command argument. The decoded bridge reads the API payload from fd 3 so decoding the script cannot consume it. refs herdrdev#5132
…page (herdrdev#5303) * fix: stop server crash when a cursor move carries a link onto a full page refs herdrdev#5296 * fix: keep cursor link when a style page split moves the cursor refs herdrdev#5296
…5236) * fix: keep the macos server running when its terminal quits refs herdrdev#4920 * test: cover the macos server leaving its launchd job refs herdrdev#4920 * test: wait for the launcher to exit before checking the detached server refs herdrdev#4920
) A window drag can momentarily make the terminal report a zero-sized grid. `terminal_grid_size()` turns that into an error, and the resize watcher treated any error as a dead terminal: it detached and exited the client, which ends the session on a remote host. Keep the last known geometry and the pending resize signal, then resample. Real terminal failures still detach, and startup still rejects a zero-sized grid. This prevents a zero-sized-grid-induced detach. Whether it fully explains the reported Git Bash over SSH session loss is unconfirmed: the pasted ssh log shows a normal session teardown, and the report's leftover mouse reporting is not reproduced here. refs herdrdev#4105
geril07
force-pushed
the
sync/upstream-master
branch
from
October 16, 2026 08:40
e2921b4 to
98af931
Compare
Upstream 143bf5f, 67 commits since 5da0a01: libghostty key encoding, non-latin ctrl chords, workspace last-pane confirm, cli/api contracts, handshake hardening, agent detection, session/terminal fixes, releases 0.9.4 and 0.9.5. Resolve 7 content conflicts plus encode.rs delete/modify by combining both sides: retire fork encoder and russian fallback onto upstream libghostty path, keep fork confirm_pane_close and terminal_size on upstream request_pane_close and handshake, keep agents elapsed-time token on upstream cli_params macro, map ctrl+[ hatch onto renamed workspace_preview_blocked. Bump fork seeds to 0.9.5. Verified: cargo fmt, clippy, cargo check, nextest 4230 passed with 1 pre-existing machine_api stale-path failure also present on fork/master, maintenance/arch/assets/docs-contract ok.
geril07
force-pushed
the
sync/upstream-master
branch
from
October 16, 2026 09:04
98af931 to
26d63a2
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Sync upstream/master (143bf5f, 67 commits since 5da0a01) into fork master.
Upstream highlights: libghostty key encoding (herdrdev#5017), non-latin ctrl chords (herdrdev#4961), workspace last-pane confirm (herdrdev#5173), shared cli/api contracts (herdrdev#5212), handshake hardening (herdrdev#5242/herdrdev#5241/herdrdev#5247), agent detection updates, session/terminal fixes, releases 0.9.4/0.9.5.
Conflict resolutions:
Also: mapped upstream Ctrl+[ hatch onto fork section-aware blocking (active_section_blocked) with Esc-parity preview clearing; fixed fork tests for the new last-pane dialog; bumped fork release seeds to 0.9.5 (protocol 22 / endpoint gen 1 unchanged).
Intentionally kept fork divergences: no custom commands against navigate previews (pre-existing fork stance, upstream resolve_custom_command not wired into navigate tail); per-pane confirm wins over workspace confirm when both enabled (pinned by test).
Known tradeoffs of taking upstream input path (by decision): terminals that omit the Kitty base-layout field get no non-Latin Ctrl rewrite; Ctrl+х no longer acts as Esc (fixterms parity).
Verification: cargo fmt, clippy -D warnings, cargo check --all-targets clean. nextest: 4230 passed, 1 failed (machine_api stale-path SSH test, fails identically on fork/master — environmental). maintenance/arch/assets/docs-contract tests pass. Fork identity files (distribution/fork-*, fork-release.yml, update.rs) intact. Two reviewer rounds (second xhigh) findings addressed; e2e behavioral run in progress.