Commit Graph
205 Commits
Author SHA1 Message Date
Jonathan Liebig 76aacf4631 fix: cancel and clean up endpoint connection attempts
refs #4721
2026-10-13 20:19:29 +02:00
JJ Liebig ee731a221e fix: allow busy servers time to become ready (#5241)
refs #4721
2026-10-13 18:00:54 +02:00
JJ Liebig 43f873e179 fix: enforce handshake response deadlines (#5242)
refs #4721
2026-10-13 17:54:00 +02: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 dc6b6e5f42 fix: confirm closing a workspace's last pane in the tui (#5173)
refs #5143
2026-10-12 01:50:48 +03:00
4d8a601a3c fix: keep sgr pixel mouse units consistent (#4971)
* fix: keep sgr pixel mouse units consistent

refs #3675

* fix: keep starting when the host leaves pixel mouse mode set

refs #3675

---------

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
2026-10-12 00:21:05 +03:00
Can Celik e73d21ea29 fix: restore keyboard protocol flags after a terminal reconnect (#5088)
* fix: restore keyboard protocol flags after a terminal reconnect

refs #4985

* test: cover keyboard protocol refresh with an outer kitty mode

refs #4985
2026-10-11 23:19:42 +03:00
Can Celik 2563803dca fix: open goto search on shifted slash in report-all panes (#5090)
* fix: open goto search on shifted slash in report-all panes

refs #4963

* fix: use the typed character for overlay slash and text shortcuts

refs #4963

* fix: require typed evidence for a shifted slash in goto

refs #4963
2026-10-08 23:12:44 +03:00
Can Celik abf0d07cf8 fix: map non-latin layout ctrl chords to their base keys (#4961)
* fix: map non-latin layout ctrl chords to their base keys

refs #1079

* fix: keep us shifted symbols for non-latin punctuation chords

* fix: limit base-key chords to non-latin scripts and skip altgr-like ctrl+alt

* fix: recover shifted key alternates from vt bytes on windows input

* fix: cover cherokee, syllabics, mongolian and nearby scripts in base-key chords

* fix: cover lowercase cherokee supplement in base-key chords

* fix: only reparse windows vt keys that carry a shifted kitty alternate

* fix: match ghostty for layout ctrl chords and drop extra rewrites

* fix: keep shift-implied layout ctrl chords on the layout key

* fix: pair layout chord releases when modifiers change first

* fix: lease layout ctrl chords by their reported key
2026-10-08 23:12:29 +03:00
Can Celik 3928966591 fix: deliver quick esc taps on macos with kitty keyboard (#5089)
* fix: deliver quick esc taps on macos with kitty keyboard

refs #1266

* test: cover esc splitting edge cases under the macos input policy

refs #1266
2026-10-08 22:15:37 +03:00
Eric Yue 4f8961180c fix: preserve literal plus keybindings (#4983)
refs #4960
2026-10-08 19:22:51 +03:00
JJ Liebig 4dc23bb15d fix: respect mouse capture when routing hyperlink clicks (#5064)
refs #4874
2026-10-08 01:30:46 +02:00
JJ Liebig 848075ff8c fix: retain workspace navigation during machine switches (#5061)
refs #5019
2026-10-07 23:06:20 +02:00
JJ Liebig 4e624cd50e fix: preserve windows accent-key shortcuts (#5021) 2026-10-07 16:48:40 +02:00
Can Celik a124eed73c refactor: route all pane key encoding through libghostty (#5017)
* test: add input transparency conformance harness

* test: cover split host replies in input conformance harness

* fix: let libghostty encode every key sent to panes

* refactor: read live keyboard modes only from libghostty

* fix: wait for split input sequences instead of typing their fragments

* refactor: drop unused keyboard protocol argument from pane key encoding

* test: fix windows-only keyboard mode tests after libghostty mode refactor

* test: measure windows key record transparency against the keyboard layout

* fix: forward windows punctuation and altgr chords that produce no character

* test: expect libghostty kitty encoding in the windows conpty probe and cover release, alternate, text and modifyOtherKeys passthrough

* ci: lint windows-only test code in the cross-platform windows check

* refactor: delete herdr's own key encoder

* test: expect xterm modifyOtherKeys 2 encoding for shifted letters in the windows gauntlet

* refactor: read windows input through one native console reader

* refactor: parse sgr mouse reports once and map pixel reports without rewriting them

* refactor: decode framed input once instead of re-framing it in the client

* fix: keep macos alt, non-us kitty keys, text releases and reply-tail recovery correct after the libghostty switch

* fix: stop waiting for host replies the terminal never sends

* fix: deliver shifted punctuation releases after shift is let go

* fix: never type super, hyper or meta chords into panes that cannot read them

refs #4356

* test: replay reporter captures for fixed split-read and key-release issues

refs #4856
refs #4025
refs #4184

* fix: forward f1, f2 and f4 from kitty keyboard hosts

refs #4403

* fix: send pixel mouse reports to unfocused panes and only when the host supports them

refs #4750

* fix: treat 0x08 as backspace when the terminal's erase key is ctrl+h

refs #3244

* test: fix macos lint and keep the pixel mouse server test unix-only

* fix: deliver legacy alt+escape on macos instead of dropping it

* fix: address review findings on super+enter, held key releases and the pixel mouse probe

* test: expect super+enter to stay out of plain windows panes

* test: wait for the host pixel mouse mode instead of reading the channel once

* fix: send ctrl+shift+letter to plain shells as its control byte

* fix: encode each key under one keyboard mode snapshot

* fix: keep ime text intact and stop inventing key releases for committed text

* fix: release held key reports on focus loss and never drop held-key leases

* fix: send ctrl chords on non-latin layouts as their physical key

* fix: match non-latin ctrl chord releases after ctrl is let go

* fix: drop super chords before the windows conpty fallback in plain panes
2026-10-07 04:53:29 +03:00
Komsan Nipharat 040d345d3b fix(input): leave navigate mode on ctrl+[ (#2340)
refs #1431
2026-10-05 14:33:28 +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
Eric Yue 2923ce8747 fix: keep sidebar collapse clickable with agent scrollbars (#4734)
* fix: keep sidebar collapse clickable with agent scrollbars

refs #4692

* docs: document sidebar mouse handling and regression coverage

refs #4692
2026-10-05 13:43:24 +03:00
JJ Liebig 347f9c99bc feat: use native actionable Windows notifications (#4803)
refs #4773
2026-09-30 18:56:30 +02:00
JJ Liebig 6262b49148 fix: keep repository parents out of worktree children (#4772)
refs #4736
2026-09-29 23:29:58 +02:00
Can Celik 898f733f92 fix: keep escape-prefixed terminal key bindings intact (#4759)
* fix: keep escape-prefixed terminal key bindings intact

refs #4751

* test: cover escape-prefixed option+backspace binding

refs #4751
2026-09-29 20:34:45 +03:00
JJ Liebig dbdb8dc8f5 fix: show configured prefix on welcome screen (#4747)
refs #4745
2026-09-29 15:44:30 +02: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
JJ Liebig eef1914307 fix(windows): avoid redundant clipboard history entries (#4709)
refs #4688
2026-09-29 14:05:54 +02:00
JJ Liebig d5680d84fd fix: capture Windows host default colors at startup (#4710)
refs #1530
refs #4369
2026-09-28 17:16:27 +02:00
Can Celik 80c0c07250 perf: send scrolling pane output as row shifts and skip blank cells (#4711)
* 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-28 16:19:42 +03: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
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
akbashandakbash-bot 7184be49fe fix: retain mouse input grace for split csi prefixes (#4636)
refs #4630

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-09-26 01:20:08 +02:00
Marco MayerandOgulcan Celik 8d95e9bd45 fix: keep copy mode active during projection updates (#4281)
* 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-24 23:12:04 +03:00
JJ Liebig afd9e19893 perf: avoid redundant client ANSI encoding work (#4552)
refs #4546
2026-09-24 21:00:57 +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
Eric Yue b7781a67e2 fix: match navigator search terms independently (#4535)
* fix: match navigator search terms independently

refs #4273

* docs: remove redundant navigator search note

refs #4273
2026-09-24 13:45:59 +02:00
akbashandakbash-bot 23479dd162 fix: prevent Windows non-text keys from triggering the space prefix (#4510)
refs #4470

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-09-23 03:54:44 +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 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
Eric Yue 7e91c4cd93 perf: index navigator tabs and panes per endpoint (#4426) 2026-09-21 02:13:34 +02: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 74505861e4 fix: keep workspace navigation visible in terminal theme (#4408)
* 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-20 16:33:50 +02:00
c00a62dda1 fix: preserve delayed mouse reports with confirmed keyboard input (#4247)
* 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-20 16:10:16 +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
Can Celik 028780cebc fix: reveal selected agent when cycling the sidebar (#4355)
* fix: reveal selected agent when cycling the sidebar

* fix: reveal agent after endpoint activation
2026-09-18 21:50:26 +03:00
JJ Liebig da6bcd5969 fix(windows): preserve mouse capture during refresh (#4319)
* 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-18 02:42:37 +02:00
b88e8116e9 test: add local windows input gauntlet (#4298)
* 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-18 01:13:13 +02:00
JJ Liebig 5c61d8ec2e fix(windows): temporarily revert VT only mode on Windows (#4295)
refs #4251
2026-09-17 15:33:04 +02:00
JJ Liebig e7e3dfa60e fix(windows): recover VT input without changing readers (#4269)
refs #4251
2026-09-17 03:14:57 +02:00