Commit Graph
512 Commits
Author SHA1 Message Date
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
Can Celik e0507237ad feat: show every agent and terminal in the go to picker (#4384) 2026-09-19 15:43:47 +03:00
Can Celik cc7c696cd0 feat: add configurable pane screen and scrollback clearing (#4383) 2026-09-19 14:47:18 +03:00
akbashandakbash-bot 241063f7ff fix: preserve request ids in socket error responses (#4353)
* fix: preserve request ids in socket error responses

refs #4344

* docs: clarify socket error response limits

refs #4344

---------

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-09-18 17:41:56 +03:00
Can CelikandJJ Liebig a19a595c55 perf: enable ssh compression for remote connections (#4340)
Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-18 17:02:09 +03:00
JJ Liebig 101ccc20d3 fix(windows): prefer pwsh for the default pane shell (#4297)
* fix(windows): prefer pwsh for the default pane shell

Windows panes launched Windows PowerShell 5.1 (powershell.exe) whenever [terminal] default_shell was unset, ignoring PowerShell 7 even when pwsh.exe resolved on PATH. Resolve the unset default against PATH and prefer pwsh.exe, falling back to the inbox powershell.exe. An explicit default_shell still wins.

* fix(windows): validate pwsh before using it as the default shell

portable-pty resolves the configured shell with Path::exists and passes that path to CreateProcessW, which does not fall through to later PATH entries. Selecting an invalid pwsh.exe would therefore break new panes instead of falling back. Only prefer a pwsh.exe that starts with the PE MZ magic, and return its path so the validated binary is the one launched.

* fix(windows): validate the full PE header before preferring pwsh

Checking only the DOS MZ signature still accepted truncated images, DLLs, and foreign-architecture binaries. Because portable-pty passes the resolved path straight to CreateProcessW without trying later PATH entries, validate the PE signature, the COFF header (machine, executable-image bit, not a DLL, section count), and the optional header before preferring pwsh.exe.

* fix(windows): accept native ARM64 pwsh and validate the section table

Herdr ships an x64 Windows build that also runs on Windows ARM64 under x64 emulation, so cfg!(target_arch) cannot tell whether a native ARM64 pwsh.exe is launchable. Accept every executable machine type Windows supports instead of rejecting ARM64 on the x86_64 build. Also bound-check the section table (40 bytes per declared section) after the optional header so a truncated table falls back instead of being selected.

* fix(windows): detect the native host machine for pwsh compatibility

Machine compatibility was derived from cfg!(target_arch), which reports the emulated x64 process on Windows ARM64, and then briefly accepted ARM64 on every host. Read the native machine with IsWow64Process2 in the platform layer instead: ARM64 Windows accepts ARM64/x64/x86 images, x64 accepts x64/x86, and x86 accepts only x86.
2026-09-17 17:45:07 +02:00
Can Celik 5f3763dda8 fix: cache saved machine connection metadata (#4256)
refs #4252
2026-09-16 23:55:12 +03:00
266d6f6d87 fix: respect opencode tui.json registrations (#4250)
refs #4240

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-16 22:22:37 +02:00
github-actions[bot] 956f23ff6b release: synchronize metadata for v0.9.1 2026-09-16 18:40:20 +00:00
kangal-bot cee4fc2dc6 docs: publish preview documentation 2026-09-16 16:38:39 +00:00
Eric YueandJJ Liebig ab15da285e fix: require exact session names before deletion (#4233)
* fix: require exact session names before deletion

refs #3819

* test: isolate session deletion regression tests

refs #3819

---------

Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-16 14:41:41 +02:00
Can Celik d1a53b2c0e fix: keep local usable when remote machines stall (#4234)
refs #3903
2026-09-16 15:16:45 +03:00
Can Celik 266b8e3802 fix: preserve macos services across logout (#4202)
refs #4100
2026-09-15 21:37:49 +03:00