aboutsummaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2026-04-25fix: deliver server-approved terminal toastsOgulcan Celik
2026-04-25fix: reduce default support log noiseOgulcan Celik
2026-04-25test: add libghostty upgrade contract coverageOgulcan Celik
2026-04-25fix(opencode): detect question prompt heuristicsOgulcan Celik
2026-04-25feat(opencode): report blocked state when question tool fires (#51)mspiegel31
* feat(opencode): report blocked state on question.asked event * docs: add question.asked/replied/rejected to opencode plugin mapping
2026-04-23feat(logging): add robust rotating support logsOgulcan Celik
2026-04-22fix: set a stable terminal identity for panesOgulcan Celik
2026-04-22feat: add terminal-delivered client notificationsOgulcan Celik
2026-04-22chore: remove unused test importsOgulcan Celik
2026-04-22fix: resolve transparent bg before inverse swap to prevent invisible text (#45)Yifeng He
Shells like zsh highlight pasted text using reverse video (SGR 7). The render pipeline makes the default background transparent (None) when it matches the host terminal background. When inverse swaps fg and bg, the transparent bg becomes fg=None (Color::Reset), which the host terminal renders as its default foreground — the same hue as the new bg, making the text invisible. Resolve None to the actual terminal background color before swapping so inverse produces correct contrasting colors. Fixes ogulcancelik/herdr#44 Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-04-21fix: make startup preview-release test version-independentOgulcan Celik
2026-04-21fix: restore terminal cursor state on client detachOgulcan Celik
2026-04-21fix: force repaint after headless runtime size changesOgulcan Celik
2026-04-21fix: restore headless test reliability on macosOgulcan Celik
2026-04-21test: refresh git branch cache in sidebar testOgulcan Celik
2026-04-21perf: reduce headless server render overheadOgulcan Celik
2026-04-21fix: stop headless idle spin and skip unnecessary macos probesOgulcan Celik
2026-04-21fix: close global menu before detachOgulcan Celik
2026-04-21feat: add persistent server-client sessionsCan Celik
Make herdr persistent by default. Launching herdr now starts or reattaches to a background session server. Clients can detach and reattach while panes and agent processes keep running. Session mode now supports multi-client attach, auto-detect startup, and a thin-client/headless-server split. This also refactors the large app, ui, input, pane, config, workspace, and persistence modules into smaller focused submodules, while preserving behavior and colocating tests with the code they exercise. Upgrade notes: - persistence mode is now the default - in-app quit detaches the current client instead of stopping the server - use `herdr server stop` to stop the background session - use `--no-session` for the old single-process behavior - default socket paths now live under the config directory
2026-04-16feat: allow hook-reported custom agent labelsOgulcan Celik
2026-04-16chore: clean up local repo guidanceOgulcan Celik
2026-04-16fix: only preview newer saved release notesOgulcan Celik
2026-04-16fix: switch updates to manual preview flowOgulcan Celik
2026-04-14fix treat droid mission control as idleOgulcan Celik
2026-04-14feat support double prefix passthroughOgulcan Celik
2026-04-14fix unify app key normalization for enhanced keyboard reportingOgulcan Celik
2026-04-13fix highlight active workspace in collapsed sidebarOgulcan Celik
2026-04-13refactor extract app api and runtime command modulesOgulcan Celik
2026-04-13feat add custom shell and pane keybind commandsOgulcan Celik
2026-04-13fix input encoding for ctrl+letter in kitty modeOgulcan Celik
2026-04-13fix: tighten tab bar scrolling behaviorOgulcan Celik
2026-04-13fix: reserve q for navigate quit onlyOgulcan Celik
2026-04-12fix: preserve scrollback for droid primary-screen redrawsOgulcan Celik
2026-04-11feat: support transparent panel chromeOgulcan Celik
2026-04-11fix: prefer native clipboard tools over osc52 fallbackOgulcan Celik
2026-04-10fix: harden amp blocked detectionOgulcan Celik
2026-04-10fix: preserve workspace when closing the last pane in a tabOgulcan Celik
2026-04-10fix: forward pane osc 52 clipboard writesOgulcan Celik
2026-04-10fix: forward OSC 52 clipboard writes from pane childrenOthavio Quiliao
herdr embeds `libghostty-vt` as a headless terminal emulator per pane, and its readonly stream handler silently drops `.clipboard_contents` actions. As a result, any child process that writes OSC 52 to copy to the system clipboard (for example Amp, which enables mouse reporting and handles selection internally) has its sequence swallowed before it can reach the host terminal — the user sees the child's "copied" toast but the system clipboard is never updated. This change adds an `Osc52Forwarder` that observes raw PTY bytes in `process_pty_bytes`, reconstructs completed `ESC ] 52 ; (c|) ; <base64> (BEL|ST)` sequences (write/clear only — queries are dropped since herdr has no path to reply to the child), and returns them through the existing `ProcessBytesResult`. The reader task forwards the bytes to the main loop via a new `AppEvent::ClipboardWrite`, which is written to stdout from `handle_internal_event`. Routing through the main loop keeps stdout writes serialized with `terminal.draw` and the other existing host-terminal emitters, so the new forwarder does not race with rendering. Existing herdr-native selection (mouse drag in panes without mouse reporting) is unchanged and still writes through `selection::write_osc52`.
2026-04-10feat(tabs): add overflow scrolling and drag reorderOgulcan Celik
2026-04-09Merge pull request #25 from othavioquiliao/fix/pane-click-focus-mouse-reportingCan Celik
fix: click focus on panes running TUIs with mouse reporting
2026-04-09fix: always open pane context menu on right-clickOthavio Quiliao
The Down(Right) handler forwarded the click to the inner pane runtime when mouse reporting was active, then early-returned before creating the context menu state. For panes running a TUI that enables mouse reporting (e.g. Claude Code), right-clicking focused the pane but never opened the herdr context menu, even though right-click on plain shells or Codex still worked. Stop forwarding Down(Right) to the pane runtime altogether. Right-click on a pane now always focuses it and opens the herdr context menu, matching how terminal emulators like Ghostty, Alacritty, Kitty and iTerm2 treat right-click. This means the previous context menu actions (close pane, split, fullscreen, etc.) now also reach the intended pane via focus_pane before the menu is displayed. Remove Up(Right) and Drag(Right) from the middle/right forward branch so the inner TUI never sees an Up or Drag without a matching Down. Middle button forwarding is preserved because it is still used for paste in many terminal protocols. Tighten the existing right-click regression test with assertions that Mode::ContextMenu is entered and context_menu is populated. Without these extra checks the earlier version of the test only verified focus and failed to catch this exact bug.
2026-04-09fix: focus pane on left-click even when mouse reporting is activeOthavio Quiliao
The Down(Left) handler called forward_pane_mouse_button before focus_pane and early-returned when the forward succeeded, which happens for any pane running a TUI that has enabled mouse reporting (e.g. Claude Code). As a result, clicking such a pane forwarded the click to the inner TUI but never updated herdr's focus state, leaving the previous pane highlighted. Reorder the handler to focus first and forward after, matching the pattern already used by handle_terminal_wheel. Shells and TUIs without mouse reporting (e.g. Codex) were unaffected because their forward returned false and the focus update happened in the fallthrough branch. Add a regression test that installs a pane runtime with mouse reporting enabled via the '\x1b[?1002h' DECSET sequence and asserts that a Down(Left) event retargets focus.
2026-04-09fix(status): keep background startup idle panes out of doneOgulcan Celik
2026-04-09feat(api): return root panes from workspace and tab creationOgulcan Celik
2026-04-09fix: restore terminal colors on macos after droid exitOgulcan Celik
2026-04-09fix: restore host terminal colors after fullscreen tui exitOgulcan Celik
2026-04-09fix: autoscroll and clear mouse text selectionsOgulcan Celik
2026-04-09docs: clarify automatic detection and socket integrationsOgulcan Celik
2026-04-09fix: avoid blocking on claude slash menusOgulcan Celik