Commit Graph

146 Commits

Author SHA1 Message Date
Rhys 5eab32da81
fix(pi): restrict state reporting to tui sessions (#2159)
Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-08-03 03:44:44 +03:00
Season Saw f99647b2c2
fix: report a clear cli error when no herdr server is running (#1963)
* fix: report a clear cli error when no herdr server is running

socket cli commands surfaced a raw io::Error debug string
(`Error: Os { code: 2, ... }`) when nothing was listening on the
api socket, which read like a bad --cwd path. map dead-socket
connect failures to a `server_not_running` json error carrying the
resolved socket path, printed once at the edge that surfaces the
error; recovering callers (plugin offline registry fallback, agent
start polling) recognize the marker and keep their existing
behavior.

refs #1941

* fix: map dead-socket errors on the unchecked cli request path

refs #1941

* fix: make server-not-running guidance session-aware

refs #1941
2026-08-01 16:17:23 +03:00
Can Celik b76adc155d
fix(input): preserve native key lifecycle across routing (#2142)
refs #2077

Co-authored-by: Jonathan Liebig <jonathan.liebig@gmail.com>
2026-08-01 04:27:50 +03:00
Matt Coles b4112743cf
fix(client): restore terminal on sighup and sigterm
Enable termination-signal handling so SIGHUP and SIGTERM follow the graceful
quit path and restore terminal state. Log handler registration failures and
add PTY coverage for direct SIGHUP and server EOF restoration

Co-authored-by: Matt Coles <macols@amazon.com>
2026-07-31 00:46:01 +03:00
Andrew Krasnoff a0a6e13f11
fix: count ptmx master fds under devpts layouts (#1984)
live_server_holds_one_pty_master_fd_per_pane counted only /proc/<pid>/fd links
resolving to exactly /dev/ptmx. On devpts setups such as WSL2 and many
containers, a PTY master fd resolves to /dev/pts/ptmx instead, so the test found
zero masters and failed with "had 0 ptmx master fds; expected 1" even though the
server held the pane's master fd. Match both ptmx node paths; pty slaves still
resolve to /dev/pts/<N> and stay uncounted, so the one-master-per-pane invariant
is unchanged.
2026-07-29 01:20:58 +03:00
Ogulcan Celik 81f355fada perf: replace agent spinners with static status marks 2026-07-28 14:56:53 +03:00
JJ Liebig 1491b7dd9c
fix: ignore nested codex session reports (#1927)
* fix: ignore nested codex session reports

refs #1789

* test: cover matching codex thread id

---------

Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-07-28 04:13:35 +03:00
Ogulcan Celik bb29eedb72 fix: delay agent prompt submission
refs #1878
2026-07-27 00:12:25 +03:00
Ogulcan Celik e608a75159 fix: make known-agent exit process-owned
refs #1792
refs #1648
2026-07-24 02:50:58 +03:00
Ogulcan Celik e7fc85bfdb fix: preserve kitty printable key releases
refs #1746
2026-07-23 03:47:44 +03:00
Ogulcan Celik a02c3a69bb refactor: centralize new terminal cwd selection
replaces contributions from Pitchfork-and-Torch
2026-07-22 22:41:01 +03:00
Ogulcan Celik 1955406eaf fix: link plugins without a running server
refs #1670
2026-07-21 17:37:43 +03:00
Ogulcan Celik 69d07dba84 fix: make plugin state global across sessions
refs #1174
2026-07-20 23:04:15 +03:00
Ogulcan Celik 6f7ef04e7d fix: bound stalled agent prompt waits 2026-07-20 15:22:26 +03:00
Ogulcan Celik 3f80947678 feat: make agent automation a first-class cli primitive 2026-07-19 23:56:07 +03:00
Ogulcan Celik a51a15914a fix: support javascript integrations on windows
refs #1531
2026-07-18 23:56:20 +03:00
akbash f11be93e04
fix: report unknown config keys (#1575)
* fix: report unknown config keys

refs #1573

* fix: preserve mixed config warning context

refs #1573

---------

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-07-18 21:27:48 +03:00
Ogulcan Celik e0758c3211 feat: harden named agent cli workflows
refs #1525
2026-07-17 23:59:56 +03:00
Ogulcan Celik 550e9f8cc0 fix: follow foreground process group leader cwd
refs #1472
2026-07-16 23:13:41 +03:00
Ogulcan Celik a22454f27c fix: preserve plugins during live handoff
refs #893
2026-07-16 00:32:22 +03:00
akbash 600753b47b
fix: guard cli requests against protocol mismatches (#1453)
refs #1435

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-07-15 23:43:21 +03:00
Ogulcan Celik 7767f3ed64 test: wait for multi-client resize propagation 2026-07-15 23:33:23 +03:00
Ogulcan Celik 80d2958aba fix(linux): scope foreground process discovery to panes
refs #1399
2026-07-14 23:40:35 +03:00
Ogulcan Celik 5cfe5e5e73 feat: add configurable sidebar metadata tokens 2026-07-13 03:30:13 +03:00
Ogulcan Celik a6905364b6 fix: clarify config fallback diagnostics 2026-07-12 03:58:27 +03:00
Ogulcan Celik 3e8f9df14e fix: improve config diagnostic delivery 2026-07-10 17:28:31 +03:00
Pitchfork-and-Torch 4f7fcc48d1 fix: follow foreground cwd for new terminals
refs #1245
2026-07-10 15:06:54 +03:00
Ogulcan Celik 9c45342766 fix: preserve explicit session sockets during live handoff
refs #1180

reported-by: dvic

based-on: https://github.com/dvic/herdr/pull/3
2026-07-09 16:32:26 +03:00
Dillon Mulroy adbaae68da
fix: reanchor pi status after session replacement (#1189)
* fix: reanchor pi status after session replacement

refs #943

* fix: guard active pi sessions from nested startup

refs #943

* fix: serialize pi session replacement reports

refs #943
2026-07-09 01:55:14 +03:00
Ogulcan Celik faee06764e test: synchronize multi-client resize assertion 2026-07-06 19:25:42 +03:00
ppggff 2bc1724c2d
fix: switch prefix ASCII input source on the foreground client (#1016)
* fix: switch prefix ASCII input source on the foreground client

The macOS prefix ASCII-switch ran in the headless server, whose
TISCopyCurrentKeyboardInputSource read is a stale per-process cache
(refreshed only via a main-run-loop notification the server never pumps),
so prefix could leave the terminal on the wrong input source.

Forward it to the foreground client, like clipboard: sync_prefix_input_source
emits AppEvent::PrefixInputSource as an intent; the server forwards it to the
foreground client and the monolithic app applies it in-process via
RealPrefixInputSource, which pumps its main run loop before the stale TIS read.
Key it on Mode::wants_ascii_input so multi-level prefix commands keep ASCII
until returning to the terminal, and restore the IME for rename text entry.

Adds ServerMessage::PrefixInputSource to the already-unreleased protocol 15.

refs #774

* fix: keep prefix input-source switch out of the headless server process

An App-internal drain (the exhaustive drain at the top of
handle_api_request, reachable from prefix-key runtime mutations) can
consume a queued PrefixInputSource intent before the server's
forwarding drain sees it, applying the TIS switch in the headless
server process and stranding the restore state. Gate the in-process
switch on App.local_input_source_switch, disabled by the headless
server alongside the other local side effects, so a swallowed intent
degrades to a skipped switch. Widen the forwarding-bypass maintenance
test to the handle_internal_event_with_prefix_sync wrapper.

refs #774

* docs: clarify prefix input-source comments and flag docs

refs #774

* fix: bump protocol for prefix input source

refs #774

---------

Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
2026-07-05 03:25:47 +03:00
Ogulcan Celik e713949ca5 test: wait for client frame before crash assertion 2026-07-05 03:00:45 +03:00
Ogulcan Celik c78349f422 fix: wait for server stop socket cleanup 2026-07-05 02:17:45 +03:00
Ogulcan Celik 5d9212a55a feat: expose session snapshot through cli 2026-07-04 16:51:10 +03:00
Ogulcan Celik 045f506ec8 fix: keep windows wait connections open
refs #963
2026-07-03 20:38:05 +03:00
Ogulcan Celik 13cb5d9ae6 feat: add shell completions
refs #435
2026-06-30 17:49:37 +03:00
Ogulcan Celik 6703413fc7 feat: expose api schema from cli 2026-06-29 22:58:34 +03:00
Ogulcan Celik 8b74fb8a12 feat: emit placement mutation events 2026-06-29 20:39:54 +03:00
Dillon Mulroy 3c7327c267
fix: avoid pi release on internal session reloads (#800)
* fix: avoid pi release on internal session reloads

* fix: align omp session shutdown release with pi

---------

Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-06-25 17:59:17 +03:00
Ogulcan Celik 92a10fc044 fix: protect root agent restore sessions
refs #712
2026-06-21 02:42:39 +03:00
Ogulcan Celik 46a2b259a7 fix: defer api worktree operations
refs #686

refs #657

refs #662

refs https://github.com/ogulcancelik/herdr/discussions/687
2026-06-19 18:59:43 +03:00
Eric Yue 07261e09be
feat: add devin cli detection and restore support (#622)
* feat: add devin cli detection and restore support

refs #606

* fix: keep devin integration session-only

---------

Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
2026-06-15 16:50:24 +03:00
Ogulcan Celik 08bb0768ae fix: handle kitty keypad input
refs #570
2026-06-15 15:12:56 +03:00
Ogulcan Celik c91348e68b fix: require plugin min herdr version 2026-06-15 00:49:58 +03:00
Ogulcan Celik d3be4f8b43 fix: add best-effort windows plugin support 2026-06-14 20:45:59 +03:00
Ogulcan Celik 7f702a7ad0 test: harden pane identity regression coverage 2026-06-14 19:03:16 +03:00
Ogulcan Celik 17544c36ee fix: make macos ci socket tests deterministic 2026-06-14 04:42:50 +03:00
Ogulcan Celik fbd20ad6e4 feat: add plugin v1 system
Add manifest-driven plugin actions, event hooks, pane entrypoints, link handlers, and host APIs.

Support plugin link, GitHub install, build commands, installed plugin registry, pane movement, runtime context, and plugin docs.
2026-06-14 03:47:07 +03:00
Ogulcan Celik d35c642ef3 feat: add pane move api and cli
refs #299
2026-06-13 01:59:24 +03:00
Ogulcan Celik f7a7da03fc fix: stabilize public pane and tab ids
refs #569
2026-06-12 19:10:09 +03:00