Commit Graph
142 Commits
Author SHA1 Message Date
Kataoka Katsukiandkataokatsuki 1997b88b3f fix(input): keep pending url clicks across host focus loss (#2291)
Opening a URL raises the browser, which takes focus away from the host
terminal before the mouse release arrives. release_input_source(_headless)
cleared pending_url_click_sources on that focus loss, so the release was
forwarded to the pane and the agent opened the same URL again.

Clear the set in clear_input_source instead, whose only production caller
is remove_client.

refs #2290

Co-authored-by: kataokatsuki <kataokatsuki@users.noreply.github.com>
2026-08-04 17:46:43 +03:00
akbashandakbash-bot e6fa5289f2 fix(ui): preserve sidebar scroll across clients (#2280)
refs #2255

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-08-04 15:37:33 +03:00
Michael HacknerandCan Celik eacea2daf0 fix: page keys scroll pane scrollback at zsh and REPL prompts (#2191)
* fix: page keys scroll pane scrollback at zsh and REPL prompts

PageUp/PageDown were forwarded to the pane whenever DECCKM (application
cursor) was on, assuming only primary-screen pagers enable it, but zsh's
line editor also enables DECCKM, as do REPLs such as python3. The result
was PageUp scrolling shell history instead of Herdr scrollback.

Bracketed paste discriminates the two: it means the app accepts typed or
pasted text at a prompt, so line editors enable it and pagers do not.

* test: update page key state fixture

---------

Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-08-03 04:08:47 +03:00
Can Celik 10eb0bc744 fix: propagate host color scheme to pane apps (#2214)
refs #714
2026-08-03 02:05:27 +03:00
serhat dolmaci 885c9a6b5b fix(socket_paths): remove dead if-branch in derive_client_socket_from_api_socket (#2157) 2026-08-01 19:38:43 +03:00
Can CelikandJonathan Liebig 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
Ogulcan Celik bc1c052d15 fix: read alternate-screen agent history 2026-07-31 16:22:04 +03:00
Can Celik 0732039eaf fix: preserve windows sessions after ssh logout (#2098)
* fix: preserve windows sessions after ssh logout

refs #2008

* chore: document windows wmi safety

refs #2008
2026-07-30 23:39:03 +03:00
Can Celik ac47b9e679 fix: resume agents after headless restore (#2088)
refs #2064
2026-07-30 19:15:00 +03:00
Ogulcan Celik e27a4ea427 perf: skip rendering hidden pty updates 2026-07-28 23:29:11 +03:00
Ogulcan Celik 81f355fada perf: replace agent spinners with static status marks 2026-07-28 14:56:53 +03:00
Can Celik e536bd8bd9 fix: support non-us shifted keybindings (#1876)
* fix: support non-us shifted keybindings

refs #1870

* docs: require current pull request base
2026-07-26 04:22:05 +03:00
Can Celik 547aba8e0a fix: avoid renders for passive mouse motion (#1872)
refs #1865
2026-07-26 00:28:11 +03:00
Can Celik b01fc37e66 perf: avoid full pane renders for spinner animation (#1868) 2026-07-25 23:20:08 +03:00
Can Celik d4e0dd3d90 perf: eliminate repeated workspace git discovery (#1842)
* perf: eliminate repeated workspace git discovery

refs #1838

* fix: keep workspace labels current without extra redraws

refs #1838

* fix: retain discovered workspace git metadata

refs #1838
2026-07-25 04:26:55 +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 36de78dd4f fix: preserve kitty graphics during host repaints
refs #1628
2026-07-24 01:31:06 +03:00
akbashandOgulcan Celik 503613c8ec fix: inherit host palette in pane queries (#1759)
refs #1752

Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
2026-07-24 01:28:35 +03:00
Ogulcan Celik e7fc85bfdb fix: preserve kitty printable key releases
refs #1746
2026-07-23 03:47:44 +03:00
akbashandakbash-bot 6382bd433a fix: reject oversized text pastes safely (#1676)
refs #1665

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-07-21 17:33:07 +03:00
Ogulcan Celik d30ab1b54f feat: add plugin-driven agent views and startup hooks 2026-07-20 00:55:36 +03:00
Ogulcan Celik 8dcb75a5c0 refactor: extract active tab surface rendering 2026-07-16 22:47:10 +03:00
Ogulcan Celik 2c7c8beb07 feat: add floating popup panes
refs #1125
2026-07-15 04:02:14 +03:00
Ogulcan Celik 88370e1516 feat: add isolated pane graphics streaming 2026-07-15 02:32:52 +03:00
Ogulcan Celik b88aa1301e fix: flush live handoff responses before exit 2026-07-14 22:07:06 +03:00
2e5da968ea fix: forward outer focus events to panes (#1388)
* fix: forward outer focus events to panes

refs #1337

* fix: preserve ordered focus forwarding

refs #1337

---------

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
2026-07-14 01:06:11 +03:00
akbashandakbash-bot 75ed6abc62 fix: reap detached custom command children (#1384)
* fix: reap detached custom command children

refs #1360

* test: harden child cleanup and sidebar metrics

refs #1360

---------

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-07-13 17:25:52 +03:00
Ogulcan Celik 5cfe5e5e73 feat: add configurable sidebar metadata tokens 2026-07-13 03:30:13 +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
Ogulcan Celik d6285aaa59 fix: avoid render-time plain url scans 2026-07-08 00:44:49 +03:00
Ogulcan Celik b425260f9d perf: move session autosaves off main loop 2026-07-07 15:35:20 +03:00
4f22e9a73b fix: preserve wrapped pane links (#1099)
refs #1098

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-07-06 23:59:59 +03:00
ppggffandOgulcan Celik 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 04682e57e6 refactor: route headless deferred creates through runtime helpers 2026-07-04 16:51:10 +03:00
Ogulcan Celik 15cab964f3 feat: emit layout update events for runtime layout changes 2026-07-04 16:51:10 +03:00
Ogulcan Celik 6ea68f9af2 fix: forward page keys to primary-screen pagers
refs #953
2026-07-03 21:50:34 +03:00
Ogulcan Celik 045f506ec8 fix: keep windows wait connections open
refs #963
2026-07-03 20:38:05 +03:00
Ogulcan Celik 848554517a fix: keep copy feedback above retained pane updates
refs #555
2026-07-02 21:54:05 +03:00
Ogulcan Celik 3459798b60 fix: extend local server startup wait 2026-06-30 20:47:28 +03:00
Ogulcan Celik 0bab01573a refactor: route headless workspace tab mutations through runtime dispatch 2026-06-30 20:29:57 +03:00
Ogulcan Celik 26db26e416 fix: keep remote sessions alive across disconnects 2026-06-30 19:49:55 +03:00
Ogulcan Celik 0fa6440d41 feat: add terminal session control stream 2026-06-30 02:48:02 +03:00
Ogulcan Celik bffc4a82c8 feat: add terminal session observe stream 2026-06-30 01:10:28 +03:00
Ogulcan Celik 97f78226bf fix: route tui modal mutations through api authority 2026-06-29 18:57:13 +03:00
Ogulcan Celik 088922dfab fix: let user keybinds displace defaults
refs #747
2026-06-22 23:36:43 +03:00
Ogulcan Celik 3366121ac3 test: skip named pipe timeout on windows
refs #726
2026-06-22 02:34:09 +03:00
Ogulcan Celik 27ff4ddf96 fix: block idle client writer
refs #726
2026-06-22 01:43:32 +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
Ogulcan Celik d74ba8ca9e fix: emit plugin lifecycle events from ui worktree flows
refs #662
2026-06-18 16:05:43 +03:00
Ogulcan Celik 36b4001f45 feat: sync theme with host appearance
refs #675
2026-06-18 02:53:31 +03:00