Skip to content

chore: sync upstream/master into fork master - #12

Open
geril07 wants to merge 31 commits into
masterfrom
sync/upstream-master
Open

chore: sync upstream/master into fork master#12
geril07 wants to merge 31 commits into
masterfrom
sync/upstream-master

Conversation

@geril07

@geril07 geril07 commented Sep 13, 2026

Copy link
Copy Markdown
Owner

Sync upstream herdrdev/herdr master (4e1096b) into fork master.

  • Base: geril07/herdr master at bfc72ad (10 fork commits ahead of bafbc09)
  • Head: sync/upstream-master, merge of upstream/master 4e1096b
  • Contains 30 upstream commits since bafbc09, merged with 1 trivial conflict resolved.
  • Conflict: src/remote/attach.rs tests module — fork added fork_remote_manifests_never_point_at_upstream, upstream added decode_windows_command helper. Kept both (no semantic overlap). Verified: fork_remote_manifests test + 6 windows remote tests pass.
  • Merge with a merge commit to preserve fork history.

Upstream range fork/master..upstream/master:
4e1096b fix: clarify agent integration settings description
2746ac7 ci: migrate remaining pinned actions to node24 (herdrdev#4023)
6075d25 fix: keep plugins working after client-only updates (herdrdev#4077)
b847e6c fix(linux): bound the foreground process-tree scan (herdrdev#3674)
f8e5922 feat: add ctrl-hover highlighting and fix wrapped links (herdrdev#4074)
5916765 feat: install windows remote host packages (herdrdev#3687)
8be8bff chore: add jjliebig as approved contributor and maintainer
8d213f8 fix: clean up failed terminal observer setup (herdrdev#4071)
a7a1410 fix(input): accept parameterized CSI-tilde F1-F4 keys (herdrdev#4067)
0305fdb fix: recognize kitty CSI-u codepoints for F1 through F12 (herdrdev#2378)
1e3c625 test: deflake federated local input race (herdrdev#4066)
3834fd3 fix: auto-expire worktree action error banners (herdrdev#4063)
f0cb0e0 fix: keep an agent name through a process-exit observation (herdrdev#3574)
ff32bd4 fix(windows): keep powershell cwd reporting in login mode (herdrdev#4065)
38bc172 fix(windows): honor default_shell in login shell mode (herdrdev#4060)
5f26879 fix(ui): keep muted sidebar and tab labels readable (herdrdev#4062)
981fe83 fix: keep hermes enabled list valid yaml (herdrdev#4056)
cb06df6 fix(windows): disable host mouse reporting on terminal restore (herdrdev#4055)
fc1cb77 feat: add Letta Code detection and restore (herdrdev#3107)
3be3523 fix(remote): resolve ssh host aliases from git bash on windows (herdrdev#4054)
63ea231 fix: detect kimi npm shim on windows (herdrdev#4053)
5c0ecc6 test: deflake windows metadata ttl expiry assertion (herdrdev#4050)
d66c39d fix(server): transfer handoff descriptors in batches (herdrdev#3411)
7505c08 fix: retain validated split mouse reports across idle gaps (herdrdev#4048)
540b20f test: relax windows docs snapshot timeout (herdrdev#4049)
858ad4e fix(input): preserve super-modified pane keys (herdrdev#4044)
a5e1c94 fix: restrict claude session hooks to native sources (herdrdev#4046)
9631f8e fix: decouple pixel mouse from pane graphics (herdrdev#4045)
f48cd6a fix: order ui accent before nested config tables (herdrdev#2698)
fc44f61 fix: disconnect stalled terminal observers (herdrdev#4039)

ogulcancelik and others added 30 commits September 13, 2026 13:47
* fix: order ui accent before nested config tables

refs herdrdev#2697

* test: reject duplicate ui accent examples

refs herdrdev#2697

---------

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
refs herdrdev#3295

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
refs herdrdev#4018

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
refs herdrdev#3710

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
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.
…4048)

refs herdrdev#3911

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
Live handoff refused any session with more than 64 panes. The pane count
was checked twice against MAX_FDS_PER_HANDOFF, and the transfer itself put
every pane's pty master into one SCM_RIGHTS control message, so the guard
was the only thing keeping the send inside the kernel's per-message limit.
A session past the limit could only be updated by closing panes or by a
normal restart, which ends every pane process.

Send the descriptors in batches of 64 instead and drop both guards. The
receiving side accumulates across recvmsg calls until the expected count
arrives, bounds every SCM_RIGHTS payload it reads by the control bytes the
kernel returned, rejects a batch that carries more descriptors than it
asked for, and closes the descriptors it already holds on any failure. A
session of 64 panes or fewer still produces one batch, so the bytes on the
wire are unchanged and HANDOFF_VERSION stays at 1.

refs herdrdev#3393

Co-authored-by: kataokatsuki <kataokatsuki@users.noreply.github.com>
Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
The clear-only metadata test used a 1 ms ttl, so on loaded Windows runners set_agent_metadata could see the entry as expired, drop it, and recreate it with a None ttl before next_agent_metadata_expiry() ran. Expiry is forced explicitly later in the test, so use a long ttl to keep the no-extension assertion independent of wall-clock scheduling.
…dev#4054)

Windows OpenSSH resolves drive-letter Include paths, but Git for Windows' MSYS OpenSSH does not, so the managed remote SSH config silently ignored the user's ~/.ssh/config when herdr ran under Git Bash. Include the user config through ~/.ssh/config, which both implementations expand to the same file.

refs herdrdev#3947
refs herdrdev#3106

Co-authored-by: Cameron <cameron@pfiffer.org>
…dev#4055)

Windows skipped the xterm mouse-reporting reset because clear_host_mouse_reporting was a no-op there. Standalone Git Bash (mintty) keeps SGR mouse reporting enabled after detach, so mouse motion leaks escape sequences into the shell. Emit the reset sequence on Windows too and include the X10 mode.

refs herdrdev#3748
* fix: keep hermes enabled list valid yaml

refs herdrdev#3839

* fix: preserve hermes inline list quoting and comments

refs herdrdev#3839
* fix(windows): honor default_shell in login shell mode

Login-mode panes used portable-pty's default-program builder, which resolves to %ComSpec% (cmd.exe) on Windows and ignores the SHELL env override, so [terminal].default_shell was silently ignored. Build the launch command from the configured shell instead and append the shell's own login flag for POSIX-style shells that support one.

refs herdrdev#1445

* fix(windows): add csh and tcsh to login shell flags

refs herdrdev#1445
)

Windows login-mode PowerShell panes are now launched directly, but the PowerShell prompt-based cwd integration was still gated to non-login mode, leaving those panes without repository-owned cwd reporting after Set-Location. Enable the existing integration for login-mode PowerShell and build the integration args on the shared direct-shell path.

Follow-up to herdrdev#4060.
…3574)

A process-exit observation is not proof the agent is gone: the same
observation can be wrong while the agent keeps running, and the name is
the only handle its owner has on the pane. Detection uncertainty already
preserves the name, so releasing it on the observation alone contradicts
that contract and leaves a live agent unreachable by name with a rename
as the only recovery.

Free the name at the point the agent actually leaves the pane - a
recorded exit with no agent detected any more - so a wrong observation
costs nothing and a real exit still releases the name for reuse.

refs herdrdev#3225

Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
* fix: auto-expire worktree action error banners

refs herdrdev#1827

* fix: restart endpoint error timeout on repeated errors

Route every transient client-side action error through a setter that installs a fresh deadline, so an identical repeated message cannot inherit an older, nearly-expired deadline.

refs herdrdev#1827

* test: derive endpoint error expiry assertions from stored deadline

refs herdrdev#1827
Codepoints 57364-57375 (F1-F12) were missing from the kitty-protocol codepoint table, so terminals that send function keys as full CSI-u sequences (e.g. Ghostty, which enables the kitty keyboard protocol by default) had those keys silently dropped. Confirmed live against a running herdr session: injecting the raw F3/F4 codepoint sequences did nothing before this fix and correctly triggered previous_tab/next_tab after.

refs herdrdev#1809

Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
Terminals such as foot send F1-F4 as parameterized CSI-tilde sequences (for
example F3 as `\x1b[13;1:1~`). `parse_xterm_modified_special_sequence` mapped
codes 15-24 but not 11-14, so these presses were dropped before keybindings
saw them. Map 11-14 to F1-F4, matching the unmodified `\x1b[11~`..`\x1b[14~`
aliases already accepted.

refs herdrdev#1809
* feat: install windows remote host packages

refs herdrdev#3651

* docs: clarify windows saved reconnect package behavior

refs herdrdev#3651

* fix: include windows installer in nix sources

refs herdrdev#3651

* fix: preserve paths in windows scp transfers

refs herdrdev#3651

* refactor: isolate windows remote package setup

refs herdrdev#3651
refs herdrdev#3621

Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
* ci: migrate remaining pinned actions to node24

actions/cache@v4 and mlugg/setup-zig@v2.2.1 still target Node 20, which
GitHub removes from runners on 2026-09-23. Bump actions/cache to v6.1.0 and
replace mlugg/setup-zig with vercel-labs/setup-zig@v1.0.2.

vercel-labs/setup-zig takes only `version`, so the use-cache/cache-size-limit
tuning and Zig global-cache reuse are dropped. See the PR for alternatives.

* ci: restore zig caching for vercel setup-zig

vercel-labs/setup-zig has no cache controls, so redirect the Zig global cache
into the workspace .zig-cache and run the Zig build cache step on Linux too.

Drop this commit if we switch to a setup action that owns Zig caching, e.g.
step-security/setup-zig or xyzzylabs/setup-zig.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants