Commit Graph
214 Commits
Author SHA1 Message Date
Ogulcan Celik a763406db2 ci: run on master pushes and cancel superseded runs 2026-04-10 14:54:04 +03:00
Ogulcan Celik 5f17a5f839 docs(changelog): draft unreleased entry 2026-04-10 14:52:45 +03:00
Ogulcan Celik 4a3b8f2fcf fix: forward pane osc 52 clipboard writes 2026-04-10 14:32:07 +03:00
Othavio Quiliao 6c62dba44e fix: forward OSC 52 clipboard writes from pane children
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-10 14:32:07 +03:00
Ogulcan Celik 13fe950fe4 test: stabilize shell-based api and cli wrapper tests 2026-04-10 14:26:31 +03:00
Ogulcan Celik 831bb66c0c feat(tabs): add overflow scrolling and drag reorder 2026-04-10 14:16:25 +03:00
Ogulcan Celik e20be7bdae ci: install and pin setup-zig 2026-04-10 13:58:44 +03:00
github-actions[bot] 8cfa84921c chore: approve contributor othavioquiliao 2026-04-09 19:41:40 +00:00
Can Celik b024c273e3 Merge pull request #25 from othavioquiliao/fix/pane-click-focus-mouse-reporting
fix: click focus on panes running TUIs with mouse reporting
2026-04-09 22:41:15 +03:00
Othavio Quiliao 42fa2648ee fix: always open pane context menu on right-click
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-09 16:06:27 -03:00
Othavio Quiliao 5e711fb7d3 fix: focus pane on left-click even when mouse reporting is active
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-09 16:04:06 -03:00
Ogulcan Celik 2c50690877 fix(status): keep background startup idle panes out of done 2026-04-09 21:59:18 +03:00
Ogulcan Celik c45a3b2dc1 feat(api): return root panes from workspace and tab creation 2026-04-09 21:59:18 +03:00
Ogulcan Celik a6cbc97651 docs: update website manifest for v0.4.6 2026-04-09 19:27:13 +03:00
Ogulcan Celik cfbde68bb0 release: v0.4.6 v0.4.6 2026-04-09 19:09:40 +03:00
Ogulcan Celik 992b0c954a docs: update unreleased changelog 2026-04-09 19:09:02 +03:00
Ogulcan Celik 065926d9b7 fix: restore terminal colors on macos after droid exit 2026-04-09 19:05:42 +03:00
Ogulcan Celik a134563729 fix: restore host terminal colors after fullscreen tui exit 2026-04-09 18:44:53 +03:00
Ogulcan Celik 953ff58e9f fix: autoscroll and clear mouse text selections 2026-04-09 17:52:09 +03:00
Ogulcan Celik be271f8dbe docs: clarify agent workflow and testing commands 2026-04-09 17:50:54 +03:00
Ogulcan Celik dacbfed01e docs: clarify automatic detection and socket integrations 2026-04-09 17:39:13 +03:00
Ogulcan Celik 227f02c58b fix: avoid blocking on claude slash menus 2026-04-09 17:28:02 +03:00
Ogulcan Celik 9495979573 fix: harden codex detection for narrow panes 2026-04-09 17:28:02 +03:00
Ogulcan Celik 1cbd312936 fix: detect agent state from terminal tail instead of viewport 2026-04-09 17:28:02 +03:00
Ogulcan Celik 8ae7ccc5b2 docs: refresh website copy 2026-04-09 14:58:18 +03:00
Ogulcan Celik 0203cc80e9 docs: update website manifest for v0.4.5 2026-04-09 14:41:29 +03:00
Ogulcan Celik 14808e9e29 release: v0.4.5 v0.4.5 2026-04-09 14:36:02 +03:00
Ogulcan Celik 2448f16a2b docs: draft unreleased changelog 2026-04-09 14:35:14 +03:00
Ogulcan Celik aeeba8f637 test: stabilize cli wrapper integration shell startup 2026-04-09 14:31:34 +03:00
Ogulcan Celik 98dcbcf576 docs: refactor readme 2026-04-09 05:25:14 +03:00
Ogulcan Celik bb2c579df2 feat(cli): support labels when creating tabs and workspaces 2026-04-09 04:42:35 +03:00
Ogulcan Celik 5460a9601e fix(tabs): keep default numeric labels auto-generated 2026-04-09 04:32:45 +03:00
Ogulcan Celik b5b61c1484 merge: reload keybinds 2026-04-09 04:07:14 +03:00
Ogulcan Celik 74a6161bff feat: add manual reload keybinds action 2026-04-09 04:06:02 +03:00
Ogulcan Celik a3ecb4e3b4 feat(api): expose done as agent status 2026-04-09 03:31:37 +03:00
Ogulcan Celik 05a6d89e33 fix: render inline and fenced code in release notes 2026-04-09 03:06:29 +03:00
Ogulcan Celik 4c68032f73 docs: define multi-agent worktree policy 2026-04-09 03:00:06 +03:00
github-actions[bot] e52cb20b9e chore: approve contributor naaive 2026-04-08 23:21:43 +00:00
Ogulcan Celik 7245aa6c12 fix: only show cursor in focused pane 2026-04-09 02:20:49 +03:00
Ogulcan Celik c62599de00 feat: add debounced session autosave 2026-04-08 18:27:16 +03:00
Ogulcan Celik 3689515f6a test: strengthen session snapshot capture contract 2026-04-08 17:24:33 +03:00
Ogulcan Celik 46f9651dfa docs: update website manifest for v0.4.4 2026-04-08 14:47:54 +03:00
Ogulcan Celik 19976e4e49 ci: avoid azure ubuntu mirrors in release builds v0.4.4 2026-04-08 14:38:34 +03:00
Ogulcan Celik ac32197115 release: v0.4.4 2026-04-08 14:20:22 +03:00
Ogulcan Celik eb4519f922 docs: add changelog pr attribution guidance 2026-04-08 14:19:31 +03:00
Ogulcan Celik 4f6bdd8272 test: split socket lifecycle subscription coverage 2026-04-08 14:06:50 +03:00
Ogulcan Celik d33a4be830 test: re-enable stable socket api integration tests 2026-04-08 13:58:13 +03:00
Ogulcan Celik acf5bbad51 fix: harden unix socket api waits 2026-04-08 03:17:44 +03:00
Ogulcan Celik e4e14142b1 feat: add resizable sidebar sections 2026-04-08 01:51:50 +03:00
Ogulcan Celik 216aa99d5d ci: add just ci for pull request checks 2026-04-08 01:36:27 +03:00