Commit Graph
524 Commits
Author SHA1 Message Date
JJ Liebig 6521382dbe fix: recover blocked shared ssh connections (#5252)
* fix: recover blocked shared ssh connections

refs #4721

* test: support shared ssh checks in client fixtures

refs #4721

* test: separate ssh cancellation from timeout scheduling

refs #4721
2026-10-14 02:40:36 +02:00
github-actions[bot] 1cbd794559 release: synchronize metadata for v0.9.4 2026-10-13 15:41:33 +00:00
JJ LiebigandBart Louwers afd7aa94b0 fix: retry a reconnecting machine immediately when selected (#5232)
* fix: retry a reconnecting machine immediately when selected

Assisted-by: Claude <noreply@anthropic.com>

* fix: retry the active SSH machine when selected

refs #4721

---------

Co-authored-by: Bart Louwers <bart@emeel.net>
2026-10-13 16:39:00 +02:00
Can Celik 241b99cd39 refactor: share cli and api command contracts (#5212)
* refactor: share cli and api command contracts

* fix: address cli contract review findings
2026-10-13 04:25:38 +03:00
kangal-bot 212b710b92 docs: publish preview documentation 2026-10-12 13:48:37 +00:00
Can Celik dc6b6e5f42 fix: confirm closing a workspace's last pane in the tui (#5173)
refs #5143
2026-10-12 01:50:48 +03:00
Eric YueandCan Celik be0e73f724 fix: reject oversized canonical input on macos (#4988)
refs #4950

Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-10-11 23:39:48 +03:00
JJ Liebig 4dc23bb15d fix: respect mouse capture when routing hyperlink clicks (#5064)
refs #4874
2026-10-08 01:30:46 +02:00
Can Celik 1b23719b3e fix: tell fish that herdr reflows its prompt on resize (#4977)
* fix: tell fish that herdr reflows its prompt on resize

refs #3672

* fix: match fish_handle_reflow casing exactly on windows

refs #3672

* test: keep temp path out of fish env spawn test command

refs #3672
2026-10-07 22:37:33 +03:00
JJ Liebig b977116cd7 feat: update managed plugins from GitHub (#4245) 2026-10-05 17:08:32 +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
Ogulcan Celik d6b40d4edd docs: correct codex idle state docs
refs #4507
2026-10-01 04:13:58 +03: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
Ogulcan Celik d4e335e7b4 docs: drop external example link from agent support guide 2026-09-30 19:10:36 +03: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
Ogulcan Celik fb8b9e2e04 docs: restore 0.9.3 agent doc corrections and sort self-reporting agents 2026-09-30 00:51:51 +03:00
github-actions[bot] f9a99bd2de release: synchronize metadata for v0.9.3 2026-09-29 19:29:39 +00:00
Ogulcan Celik e456163a2e docs: list kiro cli as supporting herdr 2026-09-29 22:10:20 +03:00
kangal-bot 8256ce1cfa docs: publish preview documentation 2026-09-29 18:54:42 +00: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
Ogulcan Celik dbe3a2360e docs: correct resume version and link self-reporting agents 2026-09-29 17:35:27 +03:00
github-actions[bot] 1ab85d31ac release: synchronize metadata for v0.9.2 2026-09-29 13:19:53 +00: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
kangal-bot e8e12a43c6 docs: publish preview documentation 2026-09-29 12:12:59 +00: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
kangal-bot 267d47fb57 docs: publish preview documentation 2026-09-28 13:48:11 +00: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 0b9c8ead00 feat: simplify ssh machine setup discovery (#4204) 2026-09-27 20:46:47 +02:00
Ogulcan Celik 21d71a0308 docs: add a guide for adding herdr support to your agent 2026-09-27 21:09:35 +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
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
JJ Liebig a28bed2b29 docs: explain tmux auto-attach guard in herdr panes (#4592) 2026-09-24 21:33:45 +02:00
Can CelikandJJ Liebig c411883ec6 feat!: replace the custom graphics api with optimized native kitty rendering (#4561)
* feat!: replace the custom graphics api with optimized native kitty rendering

* fix: enable safe kitty optimizations automatically

---------

Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-24 20:59:48 +03:00
JJ Liebig 9c96f7ddb3 fix: avoid inferring codex idle from terminal output (#4563)
refs #4507
2026-09-24 02:23:42 +02:00
Can Celik 1c6397b1cd fix: reuse ssh authentication and add machine recovery commands (#4490)
* fix: reuse ssh authentication and add in-app mfa recovery

refs #3763

* refactor: move ssh recovery to machine cli

refs #3763
2026-09-22 19:12:29 +03:00
Can Celik 90b0e40ab3 fix: preserve hook agent status across live handoff (#4493) 2026-09-22 18:31:37 +03:00
Can Celik f6390752a5 fix: track opencode subagent status per pane (#4357)
refs #1362
2026-09-22 16:25:17 +03:00
JJ Liebig 46a5091838 fix: stagger restored agent startups (#4487)
* fix: stagger restored agent startups

refs #4102

* fix: report startup delay changes requiring restart

refs #4102
2026-09-22 15:23:31 +02:00
Can Celik 8ac9542757 fix: clear inherited terminal and agent session identity (#4461)
refs #4104
2026-09-22 02:20:47 +03:00
Can Celik 28360107c1 fix: distinguish agent completion from startup and session changes (#4457)
refs #3338
refs #3990
refs #3916
2026-09-21 20:47:14 +03:00
Can Celik 3602c757e0 fix: refresh forwarded ssh agents after reconnect (#4443)
refs #1931
2026-09-21 15:22:46 +03:00
kangal-bot 95e97bff3a docs: publish preview documentation 2026-09-20 21:51:02 +00:00
Can CelikandJJ Liebig 0ff0f27e22 fix: preserve session layouts across shutdown and restore failures (#4400)
* fix: preserve session layouts across shutdown and restore failures

refs #4320

* test: update subscription fixture for pane restore errors

---------

Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-21 00:29:45 +03:00
Eric YueandJJ Liebig f090ce95d0 fix: confirm closing the last tab in the tui (#4409)
* fix: confirm closing the last tab in the tui

refs #4379

* docs: clarify last-tab worktree confirmation in translations

refs #4379

---------

Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-20 19:33:11 +02:00
Eric YueandJJ Liebig 65927cef1c fix: drain event subscriptions and report history loss (#4225)
* fix: drain event subscriptions and report history loss

refs #4178

Root cause:
Each subscription emits at most one matching event per 100 ms poll, while
the shared event history retains only 512 entries. Bursts therefore build
a backlog, and an evicted cursor silently resumes at the oldest retained
event with no indication that earlier events were lost.

Fix:
Drain the bounded retained batch for lifecycle and agent-status streams.
Check for history loss while holding the same lock used to read events,
then return an events_lost error and close only the affected subscription.
Keep event envelopes, request shapes, endpoint codecs and wait behavior
unchanged. Preserve state filters, initial snapshots, event order and the
existing cadence for snapshot-only subscriptions.

Document resubscription and snapshot recovery in the unreleased API docs.
Add regressions for burst draining, startup-window loss, retention bounds,
status ordering and filtering, and unavailable history.

Validation:
Three socket regressions fail before the fix and pass afterward. Thirty-two
focused API tests and five repeated rounds of socket tests pass. The real
current-master comparison receives 516 of 600 events before the fix and
600 of 600 after it in about 0.97 seconds. A paused reader receives the
explicit error, and a new subscription plus snapshot recovers successfully.

Full native just ci on the dependency-inclusive branch passes 3631 Rust
tests with six default skips, formatting, all-target Clippy, 112 maintenance
tests, six architecture tests and 39 integration-asset tests. All seven
docs contract tests pass. No retries or additional exclusions were used.
Local Windows cross-lint was not run because its SDK is unavailable.

* test: cover subscription isolation across platforms

refs #4178

---------

Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-20 16:56:47 +02:00