aboutsummaryrefslogtreecommitdiff
path: root/src/client
AgeCommit message (Collapse)Author
2026-10-05tmuxrdr: tmux's status line as the tab row (ui.tab_style = "tmux")Igor Soarez
herdr draws each tab as a centred, padded block, and a named tab shows its name without its number. With ui.tab_style = "tmux" the row is tmux 3.7c's default status line: "[session] " cut to status-left-length 10, then each window as "#I:#W#{?window_flags,#{window_flags}, }" -- current "*", last "-", zoomed "Z" -- one space apart, plain text in the status line's colours. Unnamed tabs are called after their active pane's directory, like automatic-rename-format '#{b:pane_current_path}'. The logic is in src/client/shell/tabs_tmux.rs; render_tab_bar keeps its layout, scrolling, mouse hits and + button, with three one-line hooks for width, text and style, and the session at the left. Each tab's active pane and each workspace's previous tab are remembered by the client, so nothing changes in the protocol and the client works against a stock herdr server. The default, herdr, draws as before.
2026-09-29fix: keep escape-prefixed terminal key bindings intact (#4759)Can Celik
* fix: keep escape-prefixed terminal key bindings intact refs #4751 * test: cover escape-prefixed option+backspace binding refs #4751 (cherry picked from commit 898f733f92dbbe53c428845534b03adb573f92be)
2026-09-28fix: capture Windows host default colors at startup (#4710)JJ Liebig
refs #1530 refs #4369
2026-09-28perf: send scrolling pane output as row shifts and skip blank cells (#4711)Can Celik
* perf: send scrolling pane output as row shifts and skip blank cells * fix: keep expanded scroll patches disjoint for the fast presentation path
2026-09-28feat: support multiple prefix keys (#4653)JJ Liebig
* 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-27feat: accept mouse events on terminal session control (#4685)Can Celik
2026-09-27feat: default machine add label to the ssh host (#4678)David Heinemeier Hansson
* 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-26fix: refresh host palette on terminal redraw (#4349)David Heinemeier Hansson
* fix: refresh host palette on terminal redraw * fix: count overlapping host palette queries --------- Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
2026-09-26fix: retain mouse input grace for split csi prefixes (#4636)akbash
refs #4630 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-09-24fix: keep copy mode active during projection updates (#4281)Marco Mayer
* fix: keep copy mode active during projection updates refs #3812 * fix: preserve linewise selections during projection gaps refs #3812 --------- Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
2026-09-24perf: avoid redundant client ANSI encoding work (#4552)JJ Liebig
refs #4546
2026-09-24feat!: replace the custom graphics api with optimized native kitty rendering ↵Can Celik
(#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-24fix: match navigator search terms independently (#4535)Eric Yue
* fix: match navigator search terms independently refs #4273 * docs: remove redundant navigator search note refs #4273
2026-09-23fix: prevent Windows non-text keys from triggering the space prefix (#4510)akbash
refs #4470 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-09-22fix: reuse ssh authentication and add machine recovery commands (#4490)Can Celik
* fix: reuse ssh authentication and add in-app mfa recovery refs #3763 * refactor: move ssh recovery to machine cli refs #3763
2026-09-21fix: distinguish agent completion from startup and session changes (#4457)Can Celik
refs #3338 refs #3990 refs #3916
2026-09-21perf: index navigator tabs and panes per endpoint (#4426)Eric Yue
2026-09-21fix: preserve session layouts across shutdown and restore failures (#4400)Can Celik
* 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-20fix: confirm closing the last tab in the tui (#4409)Eric Yue
* 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-20fix: keep workspace navigation visible in terminal theme (#4408)Eric Yue
* fix: keep workspace navigation visible in terminal theme refs #4300 * fix: clear workspace highlight on directional pane focus refs #4300 --------- Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-20fix: preserve delayed mouse reports with confirmed keyboard input (#4247)akbash
* fix: preserve delayed mouse reports with confirmed keyboard input refs #3480 * fix: capture geometry before replaying buffered mouse input refs #3480 --------- Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com> Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-19feat: show every agent and terminal in the go to picker (#4384)Can Celik
2026-09-19feat: add configurable pane screen and scrollback clearing (#4383)Can Celik
2026-09-18fix: reveal selected agent when cycling the sidebar (#4355)Can Celik
* fix: reveal selected agent when cycling the sidebar * fix: reveal agent after endpoint activation
2026-09-18fix(windows): preserve mouse capture during refresh (#4319)JJ Liebig
* fix(windows): preserve mouse capture during refresh refs #4284 * test(windows): fix default input gauntlet invocation * fix(windows): preserve pixel mouse transitions refs #4284
2026-09-18test: add local windows input gauntlet (#4298)akbash
* test: add local windows input gauntlet refs #4251 * test: add local windows input gauntlet Harden elevation and channel identity checks, distinguish known host limitations, and surface incomplete cleanup. refs #4251 * test(windows): harden input gauntlet execution refs #4251 * test(windows): make input gauntlet self-contained refs #4251 * test(windows): bound input gauntlet failure paths refs #4251 * test(windows): extend input qualification gauntlet refs #4251 * test(windows): complete input qualification matrix refs #4251 --------- Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com> Co-authored-by: Jonathan Liebig <jonathan.liebig@gmail.com>
2026-09-17fix(windows): temporarily revert VT only mode on Windows (#4295)JJ Liebig
refs #4251
2026-09-17fix(windows): recover VT input without changing readers (#4269)JJ Liebig
refs #4251
2026-09-17fix(windows): restore terminal after setup errors (#4261)JJ Liebig
refs #4251
2026-09-17fix(windows): preserve VT input during mouse refresh (#4257)JJ Liebig
refs #4251
2026-09-16fix: cache saved machine connection metadata (#4256)Can Celik
refs #4252
2026-09-16fix: let local agent clicks cancel remote handoffs (#4236)Can Celik
refs #3903
2026-09-16fix: keep local usable when remote machines stall (#4234)Can Celik
refs #3903
2026-09-16fix: keep remote surface updates incremental (#4209)Can Celik
refs #3769 refs #3745
2026-09-15fix(windows): preserve sgr mouse encoding after native capture (#4195)Can Celik
refs #4155
2026-09-15fix: preserve live selections during pane output (#4193)akbash
refs #3841 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-09-15fix: reveal newly focused workspaces in the machines sidebarOgulcan Celik
2026-09-15fix: reveal the full last tab in overflowing tab strips (#4152)akbash
refs #4151 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-09-15fix(windows): prefer VT input for SSH clients (#4148)JJ Liebig
refs #3932
2026-09-14fix(windows): batch input trace diagnostics (#4146)JJ Liebig
refs #3932
2026-09-14fix: reject stale pane surfaces after reconnect (#4141)JJ Liebig
2026-09-14fix: map pixel mouse by integer cell pitch (#4140)JJ Liebig
refs #3295
2026-09-14feat: add cursor-based editing to text inputs (#3698)Mark Jaquith
* feat: add cursor-based editing to text inputs refs #1803 * fix: preserve dialog actions with associated text refs #1803 * refactor: simplify text editor outcomes and tests refs #1803 --------- Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-14fix: avoid resending terminal cells for metadata updates (#4137)Can Celik
2026-09-14fix(windows): avoid lossy native Win32 input mode (#4133)JJ Liebig
refs #3932 refs #3702 refs #3910
2026-09-14fix: restore saved machine screens after reconnect (#4126)Can Celik
refs #3842
2026-09-14fix: preserve agent panel scroll when switching machines (#4101)Eric Yue
refs #3937 Root cause: Activating another endpoint applies a snapshot with a different endpoint-qualified graphics scope. This triggers reset_endpoint_projection, which clears agent_scroll together with endpoint-local state even though the agent list aggregates all machines. The selected agent receives focus, but the list jumps back to the top. Fix: Save the client-owned agent scroll offset and restore it only when activation changes endpoints. Keep same-endpoint reboot resets, workspace/tab scroll resets, input cleanup and existing list bounds clamping unchanged. This adds constant-time work on endpoint activation, with no protocol, persisted-state or pane-scaled rendering changes. Validation: The new regression fails on the original implementation with scroll 0 instead of 6. Tests cover repeated bidirectional agent clicks, stable visible rows, shrinking lists and same-machine reboots. All 242 client shell tests pass. Real SSH A/B testing against the same two disposable 0.9.0 servers reproduces the reset with both the stable and current-master clients. The patched client preserves the visible rows through six cross-machine switches and two same-machine control clicks. Native just ci passes: 3535 Rust tests, six default skips, plus lint, maintenance, architecture and integration-asset checks. All seven docs contract tests pass. Windows cross-lint was not run because its SDK is not installed; native macOS and Windows UI behavior was not tested.
2026-09-14fix: clean up idle ssh bridges and back off flapping connections (#4083)Can Celik
* fix: clean up idle ssh bridges and back off flapping connections * chore: keep ssh liveness smoke tooling local
2026-09-14fix: hide only kitty image placements overlapping overlays (#4081)Can Celik
2026-09-14fix(client): re-assert host mouse modes after a terminal reconnect (#4079)JJ Liebig
Co-authored-by: dengos <dengoswei@gmail.com>