Repository navigation
chore(sync): merge upstream through 916fcf8 - #109
Merged
Merged
Conversation
* 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
|
Important Review skippedToo many files! This PR contains 308 files, which is 158 over the limit of 150. To get a review, reduce the PR to 150 files or fewer by splitting it into smaller PRs or changing its base branch. Upgrade to Team to raise the limit. Usage-priced reviews support at most 300 files. ⚙️ Run configuration
⛔ Files ignored due to path filters: 1
📒 Files selected for processing: 308
You can disable this status message by setting the
Comment |
cameronsjo
marked this pull request as ready for review
October 15, 2026 09:19
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.
Before: the fork was 21 upstream commits behind herdrdev/herdr master (through v0.9.5).
After: the fork carries upstream through
916fcf8, keeping every fork behavior the ledger records.This merge pulls in upstream fixes for endpoint connections, SSH, Windows hooks and kitty prefix bindings. It also brings in two larger changes: upstream's shared CLI/API command contracts (herdrdev#5212) and its removal of the Codex turn hooks (herdrdev#5278).
How: I ran
git merge --no-ff upstream/masterand resolved 19 conflicted files. The full record is indocs/fork/CHANGES.mdunder "2026-10-15 sync".agent_resume.rs,app/actions.rs,terminal/state.rs,tests/cli/hooks.rs). Without the revert, the fork's working, blocked and idle reports would have been discarded silently. Upstream's UTF-8 stdin fix (fix: decode windows hook stdin as utf-8 herdrdev/herdr#5270) is applied to the fork's PowerShell script, andCODEX_INTEGRATION_VERSIONgoes to 11.define_operations!table with their previous UI and client-shell flags.workspace open,moveandmerge,tab move, andagent type-submit.agent register,unregisterandregisteredkeep their own parser.server live-handoffstill shows inherdr server --helpand stays out of completions.skills/herdr/SKILL.mdand the Codex section ofintegrations.mdxkeep the fork's text.Upstream changes to
.github/,scripts/,build.rsandcrates/*/build.rs: none in this range.Local checks:
ZIG=/bin/true cargo clippy --all-targets --locked -- -D warnings: clean.cargo fmt --all --check: clean.🤖 Generated with Claude Code
https://claude.ai/code/session_01MvPb6myQLqoo8zUco93hH5
Generated by Claude Code