aboutsummaryrefslogtreecommitdiff
path: root/src/app/input
AgeCommit message (Collapse)Author
2026-09-01refactor: render the shell in the client (#3487)Can Celik
* 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-08-25fix: require explicit workspace group close (#3206)akbash
refs #2874 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-08-25fix: route osc 8 file links to plugin handlers (#2942)akbash
refs #2941 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-08-23fix(windows): preserve non-us shifted text (#3055)Can Celik
* fix(windows): preserve non-us shifted text refs #3045 * fix(windows): retain shifted key repeat lifecycle refs #3045
2026-08-22fix: copy selections before delayed mouse release (#3102)akbash
refs #3100 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-08-21fix: match generated characters in prefix bindings (#3085)Can Celik
refs #3079
2026-08-19fix(perf): eliminate redundant terminal wake work (#2962)Can Celik
* fix(perf): eliminate redundant terminal wake work * fix(perf): harden release benchmark gate * test(perf): strengthen performance guardrails
2026-08-18fix: reap ctrl-click url openers (#2906)akbash
* fix: reap ctrl-click url openers refs #2903 * fix: scope linux opener test import refs #2903 * test: isolate url opener regression refs #2903 --------- Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-08-13fix: keep tab and sidebar clicks when the terminal reports a stray drag (#2736)Michael Hackner
* fix: keep tab and sidebar clicks when the terminal reports a stray drag This works around a Ghostty bug that causes herdr tabs to be unclickable in fullscreen mode. Ghostty on macOS in native fullscreen emits one motion report after a fresh press in the strip where the menu bar reveals, with the row shifted to near the bottom of the grid. The cause is upstream: macOS delivers one mouse event whose y is nearly a window height away from the real pointer, and Ghostty reports it as it arrives (iTerm2 and Terminal.app report the same clicks correctly). Herdr treated the stray report as a real drag and lost the click two ways: it opened a tab reorder with no drop target, making the release a no-op, and it handed the release to the pane under the bogus coordinates. Now, a press on the tab bar or sidebar owns the gesture until release, and a tab drag only starts once the pointer is over a real drop target. refs #796 * fix: scope chrome mouse gestures to their input source * fix: preserve chrome drag input source * fix: preserve concurrent chrome presses --------- Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
2026-08-13fix: preserve logical lines in scrollback editor (#2735)akbash
refs #2733 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com> Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-08-11fix: disambiguate shifted punctuation keybinds (#2676)akbash
refs #2674 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com> Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-08-10fix(input): ignore modified j/k/up/down in session navigator (#2377)PISIT KOOLPLUKPOL
The Char('j')/Char('k')/Down/Up match arms in handle_navigator_key had no modifier guard, unlike every sibling arm in the same match block, so Ctrl+K, Alt+J, etc. also moved the navigator selection. refs #1981 Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-08-10feat: add move tab keybind actions (#2561)David Heinemeier Hansson
* feat: add move tab keybind actions Add optional keys.move_tab_previous/move_tab_next actions that reorder the active tab one position, wrapping at either end. Reuses the existing tab.move runtime path that mouse drag reordering already drives. * fix: exit navigate mode on single-tab move attempts
2026-08-10feat: add configurable tab bar status (#2586)Can Celik
* feat: show a zoom indicator in the desktop tab bar Reserve the right edge of the tab row for a ZOOM pill while the focused pane is zoomed, matching the accent style of the mode bars. The per-tab Z suffix stays; the pill makes the zoomed state visible at a glance like tmux's status-right flag. * feat: optionally show the hostname in the desktop tab bar Add ui.tab_bar_hostname to display the machine's hostname at the right edge of the tab row, like tmux's #h in status-right. The value resolves where the server renders, so remote sessions show the remote host. Off by default. * fix: strip control characters from the tab bar hostname * fix: hide the hostname when it would squeeze out the tab strip * feat: add configurable tab bar status * fix: harden tab bar status updates * fix: terminate tab bar status process trees * fix: disable status commands on unsupported platforms * fix: skip unchanged status command renders * fix: keep tab bar status opt-in by default --------- Co-authored-by: David Heinemeier Hansson <david@hey.com>
2026-08-09feat: add direct pane resize keybindings (#2558)David Heinemeier Hansson
2026-08-09feat(graphics): add direct pane frame streaming (#2523)Can Celik
* feat(graphics): add direct pane frame streaming * feat(graphics): expose pane visibility * test(graphics): preserve legacy terminal image output * fix(graphics): harden streaming lifecycle * fix(input): preserve mouse releases outside panes
2026-08-08feat(input): add per-pane right-click routing (#2504)Can Celik
2026-08-07fix(input): preserve shift in kitty alternate reports (#2479)Can Celik
refs #2435
2026-08-06feat(copy-mode): add big-word motions (#2270)JP Lew
Co-authored-by: Ubuntu <ubuntu@ip-172-31-252-234.ca-west-1.compute.internal> Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-08-05fix(input): preserve modifyOtherKeys key releases (#2303)akbash
refs #2302 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com> Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-08-04fix(input): keep pending url clicks across host focus loss (#2291)Kataoka Katsuki
Opening a URL raises the browser, which takes focus away from the host terminal before the mouse release arrives. release_input_source(_headless) cleared pending_url_click_sources on that focus loss, so the release was forwarded to the pane and the agent opened the same URL again. Clear the set in clear_input_source instead, whose only production caller is remove_client. refs #2290 Co-authored-by: kataokatsuki <kataokatsuki@users.noreply.github.com>
2026-08-04feat(ui): add distinct status indicators (#2282)Can Celik
refs #2260
2026-08-03fix: page keys scroll pane scrollback at zsh and REPL prompts (#2191)Michael Hackner
* fix: page keys scroll pane scrollback at zsh and REPL prompts PageUp/PageDown were forwarded to the pane whenever DECCKM (application cursor) was on, assuming only primary-screen pagers enable it, but zsh's line editor also enables DECCKM, as do REPLs such as python3. The result was PageUp scrolling shell history instead of Herdr scrollback. Bracketed paste discriminates the two: it means the app accepts typed or pasted text at a prompt, so line editors enable it and pagers do not. * test: update page key state fixture --------- Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-08-03fix: propagate host color scheme to pane apps (#2214)Can Celik
refs #714
2026-08-01fix(input): preserve native key lifecycle across routing (#2142)Can Celik
refs #2077 Co-authored-by: Jonathan Liebig <jonathan.liebig@gmail.com>
2026-08-01chore: remove experiments from settings tuiOgulcan Celik
2026-07-31feat: support bottom tab bar placement (#2118)Can Celik
* feat: support bottom tab bar placement * fix: preserve mouse cleanup under bottom mode bar refs #2117
2026-07-30chore: finish repository organization migrationOgulcan Celik
2026-07-29fix: preserve navigate mode after pane focus (#1993)Adam Lau
refs #1850 Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-07-26fix: preserve prefix mode for modifier eventsOgulcan Celik
refs #1870
2026-07-26fix: support non-us shifted keybindings (#1876)Can Celik
* fix: support non-us shifted keybindings refs #1870 * docs: require current pull request base
2026-07-26fix: improve sidebar worktree hierarchy and reordering (#1873)Can Celik
* fix: clarify sidebar worktree hierarchy refs #1694 * feat: reorder worktree groups as a unit refs #1694
2026-07-26fix: avoid renders for passive mouse motion (#1872)Can Celik
refs #1865
2026-07-25fix: copy retained mouse selections with keyboard shortcutsOgulcan Celik
refs #1782
2026-07-24feat: filter keybind help (#1832)corrius
* feat: filter keybind help refs #1825 * fix: recognize shifted slash in keybind help --------- Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
2026-07-24fix: consume handled url click gesturesOgulcan Celik
refs #1761
2026-07-23fix: preserve kitty printable key releasesOgulcan Celik
refs #1746
2026-07-22refactor: centralize new terminal cwd selectionOgulcan Celik
replaces contributions from Pitchfork-and-Torch
2026-07-22refactor: replace pane mouse and clipboard internalsOgulcan Celik
replaces contributions from othavi0
2026-07-20feat: add plugin-driven agent views and startup hooksOgulcan Celik
2026-07-19feat: connected tree glyphs, workspace grouping, and search auto-select in ↵Ogulcan Celik
navigator refs #1611
2026-07-18feat: add optional workspace name promptOgulcan Celik
2026-07-17perf: adopt libghostty integration improvementsOgulcan Celik
refs #276
2026-07-16fix: preserve selection when auto-copy is disabled (#1496)akbash
refs #1471 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-07-15feat: add floating popup panesOgulcan Celik
refs #1125
2026-07-14feat: configure sidebar entry gapsOgulcan Celik
2026-07-14fix: stop copy mode line-end at text (#1411)akbash
2026-07-14fix: forward horizontal wheel events to panes (#1402)akbash
refs #1349 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-07-13fix: reap detached custom command children (#1384)akbash
* fix: reap detached custom command children refs #1360 * test: harden child cleanup and sidebar metrics refs #1360 --------- Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-07-13feat: add configurable sidebar metadata tokensOgulcan Celik