Commit Graph
1170 Commits
Author SHA1 Message Date
Can Celik fabcab108f fix: detect agy dialogs and mid-turn work, treat background work as idle for agy and grok (#4959)
refs #3871
refs #3530
refs #4735
refs #3419
2026-10-05 18:56:03 +03:00
JJ Liebig b977116cd7 feat: update managed plugins from GitHub (#4245) 2026-10-05 17:08:32 +03:00
Eric Yue e5443f077c fix: keep session restore responsive during git discovery (#4945)
refs #4926
2026-10-05 16:36:33 +03:00
Komsan Nipharat 040d345d3b fix(input): leave navigate mode on ctrl+[ (#2340)
refs #1431
2026-10-05 14:33:28 +03:00
JJ Liebig 49848effb0 fix: require opt-in for cross-elevation Windows access (#4779)
refs #4717
2026-10-05 13:52:33 +03:00
Eric YueandJJ Liebig b51c6abe2d fix: retain remote sidebar preferences across attaches (#4536)
* fix: retain remote sidebar preferences across attaches

refs #4364

* test: cover remote preference identity handoff

---------

Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-10-05 13:50:59 +03:00
Eric Yue 2923ce8747 fix: keep sidebar collapse clickable with agent scrollbars (#4734)
* fix: keep sidebar collapse clickable with agent scrollbars

refs #4692

* docs: document sidebar mouse handling and regression coverage

refs #4692
2026-10-05 13:43:24 +03:00
e35f3937b0 fix: recognize Hermes launched through its Python wrapper (#4911)
refs #4910

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-10-04 17:33:54 +02:00
Can Celik 5da0a01e1e fix: hidden pane memory and new pane spawn size (#4873)
* fix: stop hidden panes keeping a full-size screen copy from creation

* fix: start new panes at their laid-out size

refs #4419
2026-10-03 02:21:24 +03:00
JJ Liebig ea8ed81b83 fix(windows): bound queued Enter waits during pane shutdown (#4872) 2026-10-02 23:50:15 +02:00
65e35a3858 fix: avoid per-cell allocations in terminal text reads (#4845)
* fix: avoid per-cell allocations in terminal text reads

refs #4506

* fix: preserve tight allocations for owned grapheme reads

refs #4506

---------

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-10-02 16:45:19 +02:00
JJ Liebig 5d78d05d7f perf: avoid unused terminal reads in client snapshots (#4847) 2026-10-02 15:48:15 +02:00
JJ Liebig 746156bc7c perf(windows): remove the dedicated PTY input forwarding thread (#4850) 2026-10-02 15:40:19 +02:00
JJ Liebig e7bd3c0853 perf(windows): reduce repeated process inspection (#4849) 2026-10-02 15:30:44 +02:00
Ogulcan Celik 07e3840bfb fix: restore codex idle detection and update codex and pi manifests
refs #4507
2026-10-01 04:07:37 +03:00
JJ Liebig 347f9c99bc feat: use native actionable Windows notifications (#4803)
refs #4773
2026-09-30 18:56:30 +02:00
JJ Liebig 331775c3e5 fix: allow same-user Windows clients to attach across elevation (#4777)
refs #4717
2026-09-30 01:41:07 +02:00
JJ Liebig 6262b49148 fix: keep repository parents out of worktree children (#4772)
refs #4736
2026-09-29 23:29:58 +02:00
JJ Liebig 7667176f06 fix: preserve worktree grouping when restoring unavailable checkouts (#4770) 2026-09-29 22:58:39 +02:00
JJ Liebig da5881eaff fix: explain Windows local server permission failures (#4769)
refs #4717
2026-09-29 22:29:18 +02:00
Can Celik 898f733f92 fix: keep escape-prefixed terminal key bindings intact (#4759)
* fix: keep escape-prefixed terminal key bindings intact

refs #4751

* test: cover escape-prefixed option+backspace binding

refs #4751
2026-09-29 20:34:45 +03:00
JJ Liebig 4b4705dbfb fix: report codex turn completion through hooks (#4756) 2026-09-29 19:30:35 +02:00
f0bb7827e4 fix: allow best-effort Windows ARM64 remote connections (#4752)
refs #4749

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-29 18:38:56 +02:00
JJ Liebig dbdb8dc8f5 fix: show configured prefix on welcome screen (#4747)
refs #4745
2026-09-29 15:44:30 +02:00
fc86d866aa fix: decode complete Win32 records in Windows pastes (#4730)
refs #4725

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-29 14:33:20 +02:00
JJ Liebig eef1914307 fix(windows): avoid redundant clipboard history entries (#4709)
refs #4688
2026-09-29 14:05:54 +02:00
Can Celik 9dc3a1df2b fix: summarize old servers and saved machines after herdr update (#4722)
* fix: summarize old servers and saved machines after herdr update

* fix: include reconnect and per-session restart commands in update summary
2026-09-29 03:47:12 +03:00
JJ Liebig d5680d84fd fix: capture Windows host default colors at startup (#4710)
refs #1530
refs #4369
2026-09-28 17:16:27 +02:00
Can Celik 80c0c07250 perf: send scrolling pane output as row shifts and skip blank cells (#4711)
* perf: send scrolling pane output as row shifts and skip blank cells

* fix: keep expanded scroll patches disjoint for the fast presentation path
2026-09-28 16:19:42 +03:00
JJ Liebig 8c8cb49c23 fix(windows): read agent command lines without PROCESS_VM_READ (#4708)
* fix(windows): read agent command lines without PROCESS_VM_READ

Windows process command lines were read by opening each process with
PROCESS_VM_READ and walking its PEB. Hardened runtimes (Electron/Node) and
security products deny that access, so those processes resolved to a bare
`node.exe`/`bun.exe` name with no argv, argv0, or cmdline. A runtime-wrapped
agent launched from such a process was then indistinguishable from an
unrelated runtime process, and the pane stayed on the shell with
`agent_status: unknown`.

Prefer `NtQueryInformationProcess` with `ProcessCommandLineInformation`
(Windows 8.1+), which needs only `PROCESS_QUERY_LIMITED_INFORMATION`, and keep
the existing PEB read as a fallback for processes that do not expose a stored
command line. The fallback still requires `PROCESS_VM_READ`, so this only
widens coverage.

refs #4579

* fix(windows): handle growing command lines before failure test

The retry added for a command line that grows between the size probe and the
read was unreachable. NTSTATUS is signed, so STATUS_BUFFER_OVERFLOW,
STATUS_BUFFER_TOO_SMALL, and STATUS_INFO_LENGTH_MISMATCH are all negative and
were treated as failures by the earlier `status < 0` check.

Check the growth statuses first and retry once with the reported size. Also read
the returned UNICODE_STRING header unaligned, since a Vec<u8> buffer only
guarantees byte alignment.

* test(windows): keep command-line marker test process alive

Passing the marker as a second argument to `ping` let `ping` exit as soon as it
saw one target, so the command-line query could race the process exit. Move the
marker into a `rem` after `&` so it stays in cmd.exe's own command line and
`ping -n 11` keeps the process alive for the read.
2026-09-28 13:16:10 +02:00
JJ Liebig 7f89b11a11 feat: support multiple prefix keys (#4653)
* feat: support multiple prefix keys

keys.prefix accepts an array in addition to a single string so one
config can define several prefix keys. Every configured prefix enters
the same prefix mode, and the help panel lists them all.

Published keybinding profiles keep the primary prefix as a scalar and
carry the rest in an optional extra_prefixes field so older clients
keep working with the primary prefix.

* fix: reject an empty prefix list on reload

An explicitly empty keys.prefix array now stays empty through config
parsing so validation rejects it and a reload keeps the current
keybindings instead of silently falling back to ctrl+b.
2026-09-28 11:58:09 +02:00
JJ Liebig 0d5d6f1f31 test: fix pane shell idle foreground-command race (#4691)
The interactive-shell idle test sent SIGINT as soon as it observed the
shell was busy. That condition can be true before the shell finishes
moving the command into its own foreground process group, so the
interrupt could arrive before the command reset its signal dispositions.
The command then survived in a stale foreground group while the shell
showed a prompt, and the pane was never observed idle again.

Run cat and end it with EOF instead. cat blocks on stdin, so the busy
state is stable, and EOF avoids the interrupt/job-control race.
2026-09-27 22:38:56 +02:00
Eric Yue c210c953e4 fix: bound external event batches in the server loop (#4671) 2026-09-27 22:16:55 +02:00
Eric Yue 87c08c6b7a perf: skip frame clones for unchanged retained graphics (#4672) 2026-09-27 21:58:55 +02:00
Eric Yue 6502492fba perf: avoid rebuilding bsp subtrees when splitting panes (#4670) 2026-09-27 21:48:44 +02:00
Eric Yue 7945e91e30 perf: use keyed terminal lookup for named targets (#4669) 2026-09-27 21:34:03 +02:00
JJ Liebig 0b9c8ead00 feat: simplify ssh machine setup discovery (#4204) 2026-09-27 20:46:47 +02:00
Can Celik 25aaa0b7e3 fix: keep offscreen kitty images loaded instead of resending them on scroll (#4686) 2026-09-27 21:05:25 +03:00
Can Celik 2552d101af feat: let agents report their own resume command (#4687)
* feat: let agents report their own resume command

* fix: keep reported resume commands tied to accepted sessions and current owners
2026-09-27 20:57:00 +03:00
Can Celik 0d1a39dcee feat: accept mouse events on terminal session control (#4685) 2026-09-27 20:29:49 +03:00
316d176768 feat: default machine add label to the ssh host (#4678)
* feat: default machine add label to the ssh host

`herdr machine add <ssh-target>` no longer requires `--label`. Without
one, the machine is named after the SSH host with any `user@` prefix
removed, so `herdr machine add dev@workbox` shows up as `workbox`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Apply suggestion from @greptile-apps[bot]

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* fix: make default machine labels unique per session and handle ssh urls

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
2026-09-27 20:06:33 +03:00
Can Celik fff6c820aa refactor: extract libghostty-vt binding into ghostty-vt workspace crate (#4661)
* refactor: extract libghostty-vt binding into ghostty-vt workspace crate

* fix: build libghostty-vt into each build's out dir
2026-09-27 00:06:29 +03:00
Can Celik bde45262be fix: keep api listener alive after transient accept errors (#4659)
* fix: keep api listener alive after transient accept errors

refs #4601

* fix: drop repeated api accept failure logs

refs #4601
2026-09-26 20:59:41 +03:00
Can Celik ccd51946fd refactor: encode kitty placements in a single pass (#4657) 2026-09-26 20:19:10 +03:00
David Heinemeier HanssonandOgulcan Celik bd69871d51 fix: refresh host palette on terminal redraw (#4349)
* fix: refresh host palette on terminal redraw

* fix: count overlapping host palette queries

---------

Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
2026-09-26 20:17:55 +03:00
Can Celik 804a4aaf3e fix: crop kitty images around overlays instead of hiding them (#4652) 2026-09-26 17:33:00 +03:00
81ddfc65b4 fix: accept plugin install options before the repository (#4453)
refs #4446

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-26 02:13:20 +02:00
akbashandakbash-bot 7184be49fe fix: retain mouse input grace for split csi prefixes (#4636)
refs #4630

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-09-26 01:20:08 +02:00
Ainesh Chatterjeeandain3sh 21d0ce6026 fix: preserve shift on ctrl+shift+letter for legacy panes (#4597)
Panes whose app has not enabled the kitty keyboard protocol received
ctrl+shift+letter as the same C0 byte as ctrl+letter. Encode the chord as
CSI-u instead, matching Ghostty's legacy encoder.

refs #4581

Co-authored-by: ain3sh <ainesh.chatterjee@gmail.com>
2026-09-25 20:04:54 +03:00
Marco MayerandOgulcan Celik 8d95e9bd45 fix: keep copy mode active during projection updates (#4281)
* fix: keep copy mode active during projection updates

refs #3812

* fix: preserve linewise selections during projection gaps

refs #3812

---------

Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
2026-09-24 23:12:04 +03:00