aboutsummaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
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
2026-04-09fix: harden codex detection for narrow panesOgulcan Celik
2026-04-09fix: detect agent state from terminal tail instead of viewportOgulcan Celik
2026-04-09feat(cli): support labels when creating tabs and workspacesOgulcan Celik
2026-04-09fix(tabs): keep default numeric labels auto-generatedOgulcan Celik
2026-04-09merge: reload keybindsOgulcan Celik
2026-04-09feat: add manual reload keybinds actionOgulcan Celik
2026-04-09feat(api): expose done as agent statusOgulcan Celik
2026-04-09fix: render inline and fenced code in release notesOgulcan Celik
2026-04-09fix: only show cursor in focused paneOgulcan Celik
2026-04-08feat: add debounced session autosaveOgulcan Celik
2026-04-08test: strengthen session snapshot capture contractOgulcan Celik
2026-04-08fix: harden unix socket api waitsOgulcan Celik
2026-04-08feat: add resizable sidebar sectionsOgulcan Celik
2026-04-08Merge pull request #9 from Edmund-a7/masterCan Celik
fix: support IME input for Chinese and other UTF-8 characters
2026-04-07fix: make pane run use bracketed-paste-aware send inputOgulcan Celik
2026-04-07fix: tighten release manifest sync flowOgulcan Celik
2026-04-07fix: support IME input for Chinese and other UTF-8 charactersacumen7
Phase 1: UTF-8 encoding support - Modified encode_text_input() to handle characters without modifiers - Added unit tests for Chinese character encoding Phase 2: IME composition support - Removed REPORT_ALL_KEYS_AS_ESCAPE_CODES keyboard flag - Prevents keyboard protocol from interfering with IME - Allows digit keys to be captured by input method for candidate selection Fixes issue where IME input was not working properly. Supports Chinese, Japanese, Korean, and other UTF-8 input methods. Maintains compatibility with all existing features. Tested: - All 388 unit tests pass - Chinese IME input with pinyin works correctly - All navigate mode shortcuts work normally - All terminal applications work normally
2026-04-07fix: preserve lf in raw terminal inputOgulcan Celik
2026-04-07fix: make pane run submit commands atomicallyOgulcan Celik
2026-04-07fix: use website update manifestOgulcan Celik
2026-04-07fix: persist ghostty key encoders per paneOgulcan Celik
2026-04-07fix: animate all-workspaces agent panel spinnersOgulcan Celik
2026-04-07docs: clarify herdr pane split and wait output usageOgulcan Celik
2026-04-07fix: restore collapsed sidebar expand toggleOgulcan Celik
2026-04-07fix: avoid spawning git for branch lookupOgulcan Celik
2026-04-07fix: use byte-based pane scrollback limitOgulcan Celik
2026-04-06refactor: use libghostty-native selection text readingOgulcan Celik
2026-04-06refactor: centralize structural session snapshot compatibilityOgulcan Celik
2026-04-06fix: keep sidebar width stable and persist user resizeOgulcan Celik
2026-04-06feat: add all-workspaces scope to agent panelOgulcan Celik
2026-04-06feat: add compact agent detail to collapsed sidebarOgulcan Celik
2026-04-06fix: defer new tab creation until dialog confirmOgulcan Celik
2026-04-06fix(ui): make sidebar spaces list scrollableOgulcan Celik
2026-04-06fix(ui): add sidebar section headers and align workspace drag slotsOgulcan Celik
2026-04-05fix: respect synchronized terminal output batchesOgulcan Celik
2026-04-05refactor: remove vt100 backend and make ghostty defaultCan Celik
2026-04-05refactor: own pane mouse protocol enums outside vt100Can Celik