aboutsummaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2026-08-20fix(graphics): isolate oversized kitty images (#3035)akbash
* fix(graphics): isolate oversized kitty images refs #3033 * fix(graphics): budget pane image cleanup refs #3033 --------- Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-08-20fix(windows): detect cursor bundled node process (#3034)akbash
* fix(windows): detect cursor bundled node process refs #3032 * docs: clarify cursor detection scope * fix(windows): constrain cursor runtime detection refs #3032 --------- Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-08-20fix: add claude screen activity fallbacksOgulcan Celik
refs #1630 refs #2241
2026-08-20fix: synchronize plugin pane pwd (#2985)akbash
* fix: synchronize plugin pane pwd refs #2984 * refactor: isolate plugin pwd platform policy refs #2984 * docs: fix changelog conflict resolution --------- Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com> Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-08-20fix: honor mouse capture config in terminal attach (#2995)akbash
refs #2992 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-08-20fix(input): preserve mouse forwarding through handoff (#3002)akbash
refs #3000 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-08-20fix: strip ansi sequences from tab bar status (#3003)akbash
* fix: strip ansi sequences from tab bar status refs #3001 * docs: clarify tab bar escape sequence scope refs #3001 --------- Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-08-19fix(cli): exit quietly when output pipes close (#2996)akbash
refs #2994 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-08-19fix(theme): keep active terminal row visible under cursor (#2989)akbash
refs #2987 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
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-18feat: make Windows generally availableOgulcan Celik
2026-08-18fix: preserve macOS IME commits in report-all mode (#2947)Can Celik
2026-08-18fix: isolate hidden pane render cadence (#2892)akbash
refs #2890 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
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-17fix: sync powershell process working directory (#2879)JJ Liebig
2026-08-17fix: match Windows Ctrl+digit keybindings (#2913)Can Celik
refs #2910
2026-08-16fix(theme): skip host palette queries under wsl (#2852)Can Celik
refs #2440
2026-08-15fix(theme): keep default active rows subtle and add navigate cursor color ↵Can Celik
(#2838) refs #2792
2026-08-15feat: make headless terminal size configurable (#2829)Can Celik
refs #2828
2026-08-15fix(client): handle remote terminal hangup (#2827)Can Celik
refs #2424
2026-08-14fix: detect qwen localized active states (#2818)Can Celik
refs #2756
2026-08-14fix: use verified local packages for windows updates (#2816)JJ Liebig
refs #2751
2026-08-14fix: speed up alternate-screen history reads (#2426)Can Celik
refs #2387
2026-08-14fix: keep active sidebar rows visible (#2794)Can Celik
refs #2792
2026-08-14feat(cli): guide agents to Herdr resourcesOgulcan Celik
2026-08-14fix: reject prompts to blocked agents (#2790)akbash
* fix: reject prompts to blocked agents refs #2788 * docs: clarify agent prompt timing refs #2788 --------- Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-08-14fix: detect all claude half-circle spinner frames (#2762)akbash
refs #2760 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-08-14fix: wait for new pane shell readiness (#2774)akbash
* fix: wait for new pane shell readiness refs #2773 * refactor: share agent startup bounds refs #2773 * fix: reconcile agent names after startup timeout refs #2773 * fix: cover agent cleanup scheduling skew refs #2773 * fix: bound pane shell readiness retries refs #2773 --------- Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com> Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.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(graphics): support high-dpi direct file frames (#2680)Can Celik
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-13feat: add qwen code detection and restore (#2743)Can Celik
refs #2730
2026-08-13fix(agent): focus Copilot before prompting (#2734)Erik Krogen
* fix(agent): focus Copilot before prompting refs #1698 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * test(agent): cover stale focus-reporting state refs #1698 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-08-12fix: strip claude title spinner frames (#2709)akbash
* fix: source title activity glyphs from manifests refs #2707 * fix: simplify manifest-driven title stripping refs #2707 * fix: reconcile handoff title policies refs #2707 * fix: strip claude title spinner frames refs #2707 * fix: keep claude detection manifest unchanged --------- Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com> Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
2026-08-12fix: use the running binary in agent hooks (#2722)JJ Liebig
2026-08-12fix: preserve workspace labels for root repositories (#2727)Can Celik
refs #2594
2026-08-12perf: avoid repeated Git config reads (#2688)JJ Liebig
refs #2643 Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-08-12fix: synchronously terminate cancelled status commandsOgulcan Celik
2026-08-12fix: detect claude 2.1.228 half-circle busy spinnerOgulcan Celik
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-11fix(render): compact large terminal redraws (#2675)akbash
refs #2670 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-08-11fix(windows): reduce idle agent detection CPU (#2651)Can Celik
* fix(windows): reduce idle agent detection CPU refs #2642 * fix(windows): gate agent process discovery refs #2642 --------- Co-authored-by: Jonathan Liebig <jonathan.liebig@gmail.com>
2026-08-11fix: derive repo name for embedded bare layouts (#2660)akbash
refs #2657 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-08-11fix: wait for agent prompt readiness (#2537)JJ Liebig
* fix: wait for agent prompt readiness refs #2410 * fix: return pane updates after tab bar command refs #2410 --------- Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-08-11feat: keep the outer terminal window title in sync with the session (#2627)David Heinemeier Hansson
* feat: keep the outer terminal window title in sync with the session Herdr emulates the terminals in its panes, so an OSC 0/OSC 2 title written inside a pane stops at Herdr and never reaches the terminal Herdr itself runs in. That outer title is what window managers read for title bars, tab bars, and group bars, so it kept showing whatever the shell or ssh happened to leave behind. Add `ui.window_title`, rendered from {hostname}, {workspace}, {tab}, {pane}, and {terminal_title}, and push it to the foreground client whenever it changes. It renders on the server, so {hostname} names the machine the panes actually run on rather than the machine a thin remote client runs on, and it is gated on a pending render so an idle loop never pays for it. A title is only remembered as delivered once a foreground client takes it, so the first client to attach is written to rather than skipped. `client.window_title.set` still wins over the configured title, and clearing it now hands the title back to `ui.window_title` instead of only "herdr". * fix: deliver the outer window title to a newly attached client ClientConnected assigns the foreground client directly rather than going through promote_client_to_foreground, so clearing the sent-title cache there missed the case that matters most: attaching a second terminal to a running session. The title was usually unchanged, so the sync returned early and the new terminal kept whatever its shell or ssh had left. Key the cache on the client that received the title instead of relying on every foreground assignment to invalidate it. * perf: keep hidden pane output off the window title path Output from a hidden or background pane sets needs_render without setting needs_full_render, and the retained render plan then skips presentation for it entirely. Syncing the title on needs_render meant every coalesced hidden-output tick still formatted, sanitized, and allocated a title that could not have changed, against the hidden-source early exit AGENTS.md requires. Every input to the title is app state, which always requests a full render, so gate on that instead. The one exception is the focused pane's own terminal title, which arrives through PTY parsing, so ask for a full render when that changes and the configured title uses it. * fix: only cache a window title a client writer received * fix: carry an api set window title across a live handoff * fix: make outer window title updates event-driven --------- Co-authored-by: Ogulcan 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-10fix(windows): strip elevated terminal title decoration (#2632)JJ Liebig
2026-08-10fix(server): prioritize shutdown requests (#2624)Can Celik
refs #2612
2026-08-10test(windows): serialize media player environment access (#2619)JJ Liebig
2026-08-10fix: track opencode tui session selection (#2455)akbash
refs #2450 Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>