aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2026-09-14fix(client): re-assert host mouse modes after a terminal reconnect (#4079)JJ Liebig
Co-authored-by: dengos <dengoswei@gmail.com>
2026-09-14fix(windows): restore mouse reporting when reattaching (#4080)JJ Liebig
2026-09-14fix: scope agent views to the selected machine (#3784)akbash
* fix: scope agent views to the selected machine refs #3732 * fix: preserve stable agent view ordering refs #3732 --------- Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com> Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-14fix: clarify agent integration settings descriptionOgulcan Celik
2026-09-13ci: migrate remaining pinned actions to node24 (#4023)JJ Liebig
* 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.
2026-09-13fix: keep plugins working after client-only updates (#4077)Can Celik
2026-09-14fix(linux): bound the foreground process-tree scan (#3674)caner-akca
refs #3621 Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-13feat: add ctrl-hover highlighting and fix wrapped links (#4074)Can Celik
refs #1282
2026-09-13feat: install windows remote host packages (#3687)JJ Liebig
* feat: install windows remote host packages refs #3651 * docs: clarify windows saved reconnect package behavior refs #3651 * fix: include windows installer in nix sources refs #3651 * fix: preserve paths in windows scp transfers refs #3651 * refactor: isolate windows remote package setup refs #3651
2026-09-13chore: add jjliebig as approved contributor and maintainerOgulcan Celik
2026-09-13fix: clean up failed terminal observer setup (#4071)Can Celik
refs #3612
2026-09-13fix(input): accept parameterized CSI-tilde F1-F4 keys (#4067)JJ Liebig
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 #1809
2026-09-13fix: recognize kitty CSI-u codepoints for F1 through F12 (#2378)Kakumanu Ashok Reddy
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 #1809 Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-13test: deflake federated local input race (#4066)JJ Liebig
refs #3670
2026-09-13fix: auto-expire worktree action error banners (#4063)JJ Liebig
* fix: auto-expire worktree action error banners refs #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 #1827 * test: derive endpoint error expiry assertions from stored deadline refs #1827
2026-09-13fix: keep an agent name through a process-exit observation (#3574)caner-akca
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 #3225 Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-13fix(windows): keep powershell cwd reporting in login mode (#4065)JJ Liebig
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 #4060.
2026-09-13fix(windows): honor default_shell in login shell mode (#4060)JJ Liebig
* 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 #1445 * fix(windows): add csh and tcsh to login shell flags refs #1445
2026-09-13fix(ui): keep muted sidebar and tab labels readable (#4062)JJ Liebig
refs #2692
2026-09-13fix: keep hermes enabled list valid yaml (#4056)JJ Liebig
* fix: keep hermes enabled list valid yaml refs #3839 * fix: preserve hermes inline list quoting and comments refs #3839
2026-09-13fix(windows): disable host mouse reporting on terminal restore (#4055)JJ Liebig
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 #3748
2026-09-13feat: add Letta Code detection and restore (#3107)Can Celik
refs #3106 Co-authored-by: Cameron <cameron@pfiffer.org>
2026-09-13fix(remote): resolve ssh host aliases from git bash on windows (#4054)JJ Liebig
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 #3947
2026-09-13fix: detect kimi npm shim on windows (#4053)JJ Liebig
refs #3317
2026-09-13test: deflake windows metadata ttl expiry assertion (#4050)JJ Liebig
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.
2026-09-13fix(server): transfer handoff descriptors in batches (#3411)Kataoka Katsuki
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 #3393 Co-authored-by: kataokatsuki <kataokatsuki@users.noreply.github.com> Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-13fix: retain validated split mouse reports across idle gaps (#4048)akbash
refs #3911 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com> Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-13test: relax windows docs snapshot timeout (#4049)JJ Liebig
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.
2026-09-13fix(input): preserve super-modified pane keys (#4044)akbash
refs #3710 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com> Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-13fix: restrict claude session hooks to native sources (#4046)akbash
refs #4018 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com> Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-13fix: decouple pixel mouse from pane graphics (#4045)akbash
refs #3295 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com> Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-13fix: order ui accent before nested config tables (#2698)akbash
* fix: order ui accent before nested config tables refs #2697 * test: reject duplicate ui accent examples refs #2697 --------- Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-09-13fix: disconnect stalled terminal observers (#4039)Can Celik
2026-09-13fix(linux): avoid blocking proc reads for wsl agents (#2179)Rhett CfZhuang
Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-13fix: deflake windows endpoint flush drain test (#4021)JJ Liebig
The polling peer drains at production's 2ms Windows read cadence, so a 1 MiB frame took ~5.5s locally and exceeded the test's 10s flush deadline under CI load. Use a 256 KiB frame, still well above the 64 KiB batch limit, and a 30s deadline so the assertion no longer depends on CI scheduling.
2026-09-13fix: update grok session after new (#2683)akbash
* fix: update grok session after new refs #2681 * fix: avoid powershell args shadowing refs #2681 --------- Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-09-13fix: restore alternate-screen pane width (#4016)Can Celik
refs #3329
2026-09-13fix: honor space row gaps across machines (#3740)akbash
* fix: honor space row gaps across machines refs #3738 * test: cover scrolling with machine space gaps refs #3738 --------- Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-09-13fix: recognize codex composer sparkles (#4015)Can Celik
refs #3988
2026-09-12fix: allow retrying partial worktree removal (#3315)akbash
refs #3314 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-09-12fix: batch queued endpoint input frames (#4004)akbash
refs #3833 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-09-12fix: keep windows endpoint writes progressing (#3721)JJ Liebig
refs #3651
2026-09-12fix: finish windows ssh setup after bridge exit (#3719)JJ Liebig
refs #3651
2026-09-12fix: ignore nested OMP session reports (#3994)JJ Liebig
refs #2593
2026-09-12fix: preserve complete alternate-screen history reads (#3979)Can Celik
2026-09-12fix: suppress Windows dead-key fallback characters in remote panes (#3972)akbash
refs #3948 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-09-11fix: opencode v2 lifecycle reporting (#3757)Mark Jaquith
* fix: support opencode v2 lifecycle reporting * fix: repair Japanese docs * fix: ignore payload-less OpenCode events * fix: harden opencode v2 integration install and reporting Follow-ups on top of the V2 lifecycle support: - create `cli.json` when OpenCode has no V1 TUI preferences (`tui.json` or `kv.json`) to migrate, instead of only registering into an existing file - settle stalled socket attempts with a plain connect timer, and resend the latest lifecycle state after a failed delivery so the pane cannot get stuck - resolve the OpenCode state directory from `XDG_STATE_HOME` - remove the managed `herdr-opencode` directory on uninstall - document failed executions reporting `blocked`, keep the integration test environment independent of an inherited `XDG_STATE_HOME`, and simplify `reconcileBlockers` to reassign its map --------- Co-authored-by: Jonathan Liebig <jonathan.liebig@gmail.com>
2026-09-11docs: enable nesting in throwaway repro setupOgulcan Celik
2026-09-11fix: preserve whole-word selection while dragging (#3969)Can Celik
refs #1836
2026-09-11ci: reuse compiler state across validation runs (#3956)Can Celik
* ci: retain zig build caches across validation runs * ci: reduce debug information in validation builds * ci: build only the ghostty test target for scalar checks * ci: measure debug profiles and remove duplicate macos caching * ci: compare scalar build scopes on one runner * ci: keep the zig compiler path stable across runs * ci: run macos and windows lint alongside tests * ci: inspect remaining zig cache misses * ci: remove completed measurement probes * ci: compare windows linkers without changing release builds * ci: test linux incremental reuse and correct the linker probe * ci: measure windows incremental state reuse * test: verify incremental reuse after a source change * ci: finalize measured compiler cache optimizations