Commit Graph
457 Commits
Author SHA1 Message Date
Ogulcan Celik f358549c2c fix: track opencode subagent status per pane
refs #1362
2026-09-18 18:44:02 +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
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
Can Celik 4428e1664d fix: preserve unloaded sessions before replacement (#4190)
refs #4125
2026-09-15 21:17:32 +03:00
akbashandakbash-bot 963f78f46c fix: preserve live selections during pane output (#4193)
refs #3841

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-09-15 16:20:51 +02:00
5e38e5fb5f fix: protect integration configs from failed writes (#3973)
* fix: atomically write integration configs

refs #3970

* fix: atomically write integration configs

refs #3970

* fix: atomically write integration configs

refs #3970

* fix: atomically write integration configs

refs #3970

* fix: atomically write integration configs

refs #3970

* fix: atomically write integration configs

refs #3970

* fix: atomically write integration configs

refs #3970

* fix: atomically write integration configs

refs #3970

* fix: atomically write integration configs

refs #3970

* fix: atomically write integration configs

refs #3970

* fix: atomically write integration configs

refs #3970

* fix: atomically write integration configs

refs #3970

* fix: atomically write integration configs

refs #3970

* fix: atomically write integration configs

refs #3970

* fix: atomically write integration configs

refs #3970

---------

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-14 22:13:52 +02:00
Can Celik 03749ae397 fix: default pane splits to the calling pane (#4123) 2026-09-14 18:16:13 +03:00
Can Celik c77af1892f fix: clean up idle ssh bridges and back off flapping connections (#4083)
* fix: clean up idle ssh bridges and back off flapping connections

* chore: keep ssh liveness smoke tooling local
2026-09-14 03:55:53 +03:00
Can Celik 21c1f8cf85 fix: hide only kitty image placements overlapping overlays (#4081) 2026-09-14 03:02:14 +03:00
3b478e69dc fix: scope agent views to the selected machine (#3784)
* fix: scope agent views to the selected machine

refs #3732

* fix: preserve stable agent view ordering

refs #3732

---------

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-14 02:11:07 +04:00
Can Celik f8e59221cb feat: add ctrl-hover highlighting and fix wrapped links (#4074)
refs #1282
2026-09-13 23:05:30 +03:00
JJ Liebig 5916765845 feat: install windows remote host packages (#3687)
* feat: install windows remote host packages

refs #3651

* docs: clarify windows saved reconnect package behavior

refs #3651

* fix: include windows installer in nix sources

refs #3651

* fix: preserve paths in windows scp transfers

refs #3651

* refactor: isolate windows remote package setup

refs #3651
2026-09-13 22:19:20 +03:00
Can CelikandCameron fc1cb77f05 feat: add Letta Code detection and restore (#3107)
refs #3106

Co-authored-by: Cameron <cameron@pfiffer.org>
2026-09-13 17:36:47 +02:00
a5e1c94157 fix: restrict claude session hooks to native sources (#4046)
refs #4018

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-13 15:04:22 +02:00
Can Celik fc44f61a10 fix: disconnect stalled terminal observers (#4039) 2026-09-13 13:47:53 +03:00
akbashandakbash-bot aa6b531a42 fix: update grok session after new (#2683)
* fix: update grok session after new

refs #2681

* fix: avoid powershell args shadowing

refs #2681

---------

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-09-13 02:04:27 +02:00
Mark JaquithandJonathan Liebig fb5525fc22 fix: opencode v2 lifecycle reporting (#3757)
* fix: support opencode v2 lifecycle reporting

* fix: repair Japanese docs

* fix: ignore payload-less OpenCode events

* fix: harden opencode v2 integration install and reporting

Follow-ups on top of the V2 lifecycle support:

- create `cli.json` when OpenCode has no V1 TUI preferences (`tui.json` or
  `kv.json`) to migrate, instead of only registering into an existing file
- settle stalled socket attempts with a plain connect timer, and resend the
  latest lifecycle state after a failed delivery so the pane cannot get stuck
- resolve the OpenCode state directory from `XDG_STATE_HOME`
- remove the managed `herdr-opencode` directory on uninstall
- document failed executions reporting `blocked`, keep the integration test
  environment independent of an inherited `XDG_STATE_HOME`, and simplify
  `reconcileBlockers` to reassign its map

---------

Co-authored-by: Jonathan Liebig <jonathan.liebig@gmail.com>
2026-09-11 22:36:18 +02:00
Can Celik a0474ae770 fix: preserve whole-word selection while dragging (#3969)
refs #1836
2026-09-11 22:58:01 +03:00
JJ Liebig 871ff8b91f fix: flush Windows Codex paste burst before prompt submit (#3961)
Codex's Windows input reader does not surface bracketed paste. It buffers
the prompt as a paste burst and rewrites a following Enter into a newline
until the burst idles out, so the previous size-based delay only reduced
the chance of losing the submit. Append a non-character key after the
paste so Codex flushes the burst synchronously, giving every prompt a
deterministic submit boundary.

refs #3187
2026-09-11 17:04:06 +02:00
Can Celik 5827145940 feat: support conditional sidebar token hiding (#3925) 2026-09-11 00:55:19 +03:00
Can Celik 043b804c44 feat: route cli commands to saved ssh machines (#3918) 2026-09-10 23:33:27 +03:00
Can Celik 1682cab326 fix: restore plugin focus events for client navigation (#3850)
refs #3824
2026-09-09 22:04:47 +03:00
b9ce96869e feat: navigate and highlight workspaces across machines (#3755)
* fix: highlight workspace navigation with saved machines

refs #3754

* feat: navigate workspaces across connected machines

refs #3754

* feat: navigate workspaces across machines

refs #3754

---------

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
2026-09-09 02:35:31 +03:00
JJ LiebigandOgulcan Celik 8996fc54fe fix: support preinstalled windows remote hosts (#3661)
* fix: support windows hosts in saved ssh machines

refs #3651

* fix: keep windows ssh bridge writes blocking

refs #3651

* fix: close saved windows ssh bootstrap input

refs #3651

* refactor: simplify remote bridge helpers

refs #3651

* refactor: isolate remote bridge platform behavior

refs #3651

* fix: close captured ssh input under windows consoles

refs #3651

* test: remove redundant remote command assertions

refs #3651

refs #3701

* test: handle framed ssh commands in machine setup

refs #3651

---------

Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
2026-09-09 00:08:42 +03:00
68c7b78ec2 fix: collapse worktree groups with saved machines (#3781)
* fix: collapse worktree groups with saved machines

refs #3778

* fix: scope worktree collapse by machine

refs #3778

* fix: collapse machines without switching focus

refs #3778

---------

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
2026-09-08 17:51:59 +03:00
Ogulcan Celik b99002ac99 release: v0.9.0 2026-09-07 22:12:53 +03:00
Ogulcan Celik 9be481fea6 docs: prepare 0.9.0 release documentation 2026-09-07 22:04:55 +03:00
Ogulcan Celik 702aa1e455 fix: require explicit consent for remote server replacement 2026-09-07 19:33:11 +03:00
4828181304 feat: make ui.pane_borders a three-state auto/always/off mode (#3234)
* feat: make ui.pane_borders a three-state auto/always/off mode

Legacy booleans keep parsing (true = auto, false = off); "always" frames
a lone pane while pane_outer_borders is enabled.

* fix: align pane border reload test and documentation

---------

Co-authored-by: Rudolf Schmidt <me@rudionrails.com>
Co-authored-by: Jonathan Liebig <jonathan.liebig@gmail.com>
2026-09-07 14:04:54 +02:00
Can Celik c7b79294e2 feat: add conditional styles for sidebar tokens (#3693) 2026-09-06 23:44:15 +03:00
Can Celik 9e9bc8a144 feat: manage multiple ssh machines from one client (#3670) 2026-09-06 02:27:06 +03:00
JJ LiebigandCan Celik 8162e26509 fix(windows): use active release directory on PATH (#3618)
* fix(windows): use active release directory on PATH

refs #3611

* fix(windows): expand variables in PATH comparisons

refs #3611

* fix(windows): restrict installer channel detection

refs #3611

---------

Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-09-05 01:47:00 +03:00
Ogulcan Celik a2b128978a feat: enable kitty graphics by default 2026-09-04 21:59:13 +03:00
JJ Liebig 3150bd92d6 fix(integration): resolve Devin config on Windows (#3595)
refs #2724
2026-09-04 01:05:35 +02:00
JJ Liebig 8633a398e6 fix: reliably submit delayed agent prompts (#3506) 2026-09-02 13:34:03 +02:00
Can Celik 6c0bb273d5 feat: support independent multi-client tab views (#3526) 2026-09-02 14:24:33 +03:00
Can Celik cc88b3b8e5 feat: add stable client endpoint compatibility (#3509)
* feat: add stable client endpoint compatibility

* fix: keep portable-pty patch checks composable

* ci: run maintenance checks in pull requests

* fix: reject endpoint errors from terminal clients

* feat: keep compatible servers running across updates
2026-09-02 02:45:20 +03:00
JJ Liebig 99c23cd1ea fix(windows): preserve native pane key identity (#3503) 2026-09-01 21:46:16 +02:00
Can Celik 207be3c771 refactor: render the shell in the client (#3487)
* feat: add opt-in client-rendered shell

* feat: add client-owned shell mouse controls

* feat: complete client-owned shell chrome

* feat: add client-owned shell settings and notifications

* feat: run client shell custom commands

* feat: render popup terminals in client shell

* feat: add client-owned scrollback and copy mode

* fix: preserve client worktree trust defaults

* feat: render startup diagnostics in client shell

* feat: render onboarding in client shell

* feat: render product announcements in client shell

* feat: render release notes in client shell

* feat: render mobile switcher in client shell

* feat: render kitty graphics in client shell

* fix: preserve client shell lifecycle coherence

* refactor: route client shell commands through endpoint connections

* refactor: make the client-rendered shell the default

* refactor: remove monolithic launch mode

* refactor: complete client-rendered shell cutover

* perf: retain client pane surface updates

* perf: scale retained pane surface updates

* perf: remove remote pane input latency

* test: make client shell checks platform-independent

* fix: prevent client timer starvation

* test: fix client shell platform gates

* test: accept retained surfaces in cross-area checks

* test: make client mode assertions platform-neutral

* fix: badge only outdated integrations
2026-09-01 15:48:22 +03:00
Can Celik 095f1337d6 fix: trust worktree repositories per request (#3344)
refs #3044
2026-08-28 18:25:07 +03:00
Can Celik c5051933f8 fix: ignore cursor events in claude hooks (#3342)
refs #2832
2026-08-28 18:03:07 +03:00
7b675f42af feat(detect): add muse agent with generic Pick blocked detection (#2489)
* feat(detect): add muse agent with generic Pick blocked detection

Add Muse agent manifests and runtime detection for idle/working/blocked
states. Blocked Pick is generic on footer 'Enter to select' so any
question title/message triggers, fixing missed waiting answer where
previous AND-gated rule required specific hint combos. Cover process
names muse, muse-bin, muse-code variants and YOLO footer.

refs #herdr

* fix(detect): tighten muse manifest and agent lookup

- manifests: change working_esc_interrupt and blocked_approval
  from whole_recent to bottom_non_empty_lines(8) to use captured
  bottom-buffer controls instead of incidental whole-pane text
- manifests: anchor idle_prompt line_regex to ^\s*⟩\s*$ so working
  chrome "⟩ ..." does not match idle
- runtime: restrict muse lookup to explicit aliases
  (muse|muse-bin|muse-code|muse-cli), remove starts_with("muse")
  fallback that misclassified museum/muse-helper/muser; add
  positive/negative identification tests
- keep website mirror identical; verified with agent_detection
  manifest check --require-website

refs #2489
refs #2456

* fix(detect): address mjdouglas vendor findings for muse

- manifests: widen pick_request_blocked to bottom_non_empty_lines(8) and add
  Enter to toggle for multi-select; add menu_request_blocked for user-opened
  pickers (enter confirm/esc go back/esc close/space toggle); add
  workspace_trust_blocked for Do you trust dialog; tighten blocked_approval
  to footer chrome Allow once/Always allow/Yes proceed; split idle_prompt
  into any gate for empty and typed draft and not-gate pick/menu anchors;
  change idle_status_fallback from YOLO to model \u00b7 effort \u00b7 cwd shape
- runtime: replace bare muse-bin alias with muse-bin-<version> digit check
  to match versioned launcher binary and avoid museum/muse-binary false
  positives
- cross-checked with vendor-side captures reported on PR #2489 against
  strings in shipped muse-bin binary

refs #2489

* fix(detect): handle path-qualified muse-bin versioned binary

lookup_agent now uses path_basename before matching so a launcher
exec with absolute argv0 like /usr/local/lib/muse/muse-bin-0.1.0-R708.1
is correctly identified. is_muse_versioned_binary also checks basename
so direct path-qualified names succeed without relying on the
argv0_argv fallback path. Prevents missed Muse detection when screen
state and sound overrides are not applied.

refs #2489

* fix(detect): add enter save to muse menu detection

Evidence documents /theme with enter save footer which was not
matched. Add enter save to menu_request_blocked any list and to
idle_prompt not-gate (highlighted row ⟩ <choice> shares glyph) and
keep website mirror in sync. Update evidence comment counts from
four to five.

refs #2489

* docs: add Muse to supported agents table

Muse detection (manifest, process identification, sound)
was added earlier but docs/next agents table omitted the row.
Add Muse as screen manifest / none (no integration hook,
consistent with Amp/Kiro/Maki) to en/ja/zh-cn translations.

* fix(detect): resize agent arrays for new upstream variant

Agent::ALL and SCREEN_MANIFEST_AGENTS gained an entry from master
but kept stale size annotations, breaking compilation after rebase.

refs #2489

* docs: add muse detection entry to next changelog

refs #2489

* docs: add muse sound override to config reference

refs #2489

* fix(detect): prevent false muse blocked states

refs #2489

---------

Co-authored-by: Omer Hamid Kamisli <ohkamisli@poikus.com>
Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
2026-08-27 14:30:24 +03:00
akbashandakbash-bot d79fd746a9 fix: require explicit workspace group close (#3206)
refs #2874

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-08-25 23:44:56 +03:00