Commit Graph
62 Commits
Author SHA1 Message Date
JJ Liebig ad41567287 fix: scope window titles to each client view (#4130)
refs #4091
2026-09-14 18:35:18 +02:00
Can Celik 207be3c771 refactor: render the shell in the client (#3487)
* 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-09-01 15:48:22 +03:00
Can Celik d46d9a2275 fix: preserve workspace labels for root repositories (#2727)
refs #2594
2026-08-12 20:00:37 +03:00
Can Celik 10974c822d feat(input): add per-pane right-click routing (#2504) 2026-08-08 16:26:47 +03:00
Jon KinneyandCan Celik 09cdd88d0a fix(layout): return focus to the pane a split was opened from (#2266)
Closing a focused pane handed focus to the next pane in tree order.
For a pane opened beside another one -- a plugin split, a file viewer,
any transient tool pane -- that is rarely where the user was: it lands
on some unrelated neighbour rather than the pane that opened it.

Track the pane focus came from in TileLayout and prefer it when the
focused pane closes, falling back to tree order when there is no
history, when it points at the pane being closed, or when it points at
a pane that has since gone away. The history lives in the layout, so it
can only ever name a pane in the same tab.

A one-slot history is only sound if internal focus excursions never
write it, so the tree edits that used to bounce focus around now go
through target-taking primitives instead. close_pane removes a
background pane directly, so detach_pane and take_pane_for_move stop
focus-close-refocusing. split_pane splits a target without moving
focus: the runtime split path only focuses the new pane once the spawn
succeeds, which makes a failed split a pure rollback, and the targeted
and unfocused workspace split paths stop fabricating history.
insert_pane_near now takes the focus intent, so an unfocused pane move
leaves the target tab's history alone. The layout-level focused-split
helpers become test-only; production splits all flow through the
target-taking path.

Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-08-05 00:35:15 +03:00
Can Celik 10eb0bc744 fix: propagate host color scheme to pane apps (#2214)
refs #714
2026-08-03 02:05:27 +03:00
Ogulcan Celik e27a4ea427 perf: skip rendering hidden pty updates 2026-07-28 23:29:11 +03:00
Ogulcan Celik e16d7d8c07 fix: preserve linked worktree workspace labels 2026-07-28 15:34:13 +03:00
Can Celik d4e0dd3d90 perf: eliminate repeated workspace git discovery (#1842)
* perf: eliminate repeated workspace git discovery

refs #1838

* fix: keep workspace labels current without extra redraws

refs #1838

* fix: retain discovered workspace git metadata

refs #1838
2026-07-25 04:26:55 +03:00
Ogulcan Celik 5cfe5e5e73 feat: add configurable sidebar metadata tokens 2026-07-13 03:30:13 +03:00
Ogulcan Celik edd08e895f refactor: route pane layout tui actions through runtime wrappers 2026-07-04 03:15:11 +03:00
Ogulcan Celik 4ffd99c2ec fix: keep auto tab labels compact 2026-06-15 04:56:03 +03:00
Ogulcan Celik de0f43a061 test: add state invariants for refactor safety 2026-06-14 19:03:16 +03:00
Ogulcan Celik 226e87306d fix: preserve tab identity across restored sessions 2026-06-14 05:30:20 +03:00
Ogulcan Celik fbd20ad6e4 feat: add plugin v1 system
Add manifest-driven plugin actions, event hooks, pane entrypoints, link handlers, and host APIs.

Support plugin link, GitHub install, build commands, installed plugin registry, pane movement, runtime context, and plugin docs.
2026-06-14 03:47:07 +03:00
Ogulcan Celik d35c642ef3 feat: add pane move api and cli
refs #299
2026-06-13 01:59:24 +03:00
Ogulcan Celik f7a7da03fc fix: stabilize public pane and tab ids
refs #569
2026-06-12 19:10:09 +03:00
Ogulcan Celik 556b16b2df feat: add pane navigation controls
refs #421

refs #330

related discussions:

https://github.com/ogulcancelik/herdr/discussions/422

https://github.com/ogulcancelik/herdr/discussions/438

https://github.com/ogulcancelik/herdr/discussions/442
2026-06-05 22:06:02 +03:00
Ogulcan Celik fc4e1bbf6b perf: reduce sidebar git polling overhead
refs #353
2026-05-30 23:58:34 +03:00
Ogulcan Celik 8df1639048 fix: use login shells for macos panes
refs #350
2026-05-30 01:55:36 +03:00
Ogulcan Celik 0148c1379b feat: add git worktree workspace management
refs #137
2026-05-22 02:23:35 +03:00
Ogulcan Celik 866aaf740e refactor: separate server client boundaries 2026-05-21 20:22:57 +03:00
Ogulcan Celik 2b97799b67 feat: add configurable default shell
refs #196
2026-05-20 00:34:27 +03:00
Ogulcan Celik f7fe0f203e fix: polish terminal-core agent semantics 2026-05-17 01:41:17 +03:00
Ogulcan Celik 3ecacfddae feat: add direct terminal attach stream 2026-05-17 01:41:17 +03:00
Ogulcan Celik a36da363f1 refactor: extract terminal state and runtime from panes 2026-05-17 01:41:16 +03:00
Ogulcan Celik e4de58b37f feat: add agent start for server-owned terminals 2026-05-17 01:41:16 +03:00
Ogulcan Celik 86adf88351 feat: add terminal identity and agent cli facade 2026-05-17 01:41:16 +03:00
Ogulcan Celik 170d567487 fix: respect integration config dirs
refs #121
2026-05-16 18:31:35 +03:00
Ogulcan Celik fe693f613a feat: add optional pane border labels 2026-05-11 23:34:20 +03:00
Ogulcan Celik 819a71ea7a fix: refresh git status off the main loop
fixes #85
2026-05-09 21:57:26 +03:00
Ogulcan Celik bb0dad86f8 fix: split panes in target tab without stealing focus
fixes #75
2026-05-08 15:37:01 +03:00
Ogulcan Celik 4075041804 feat(logging): add robust rotating support logs 2026-04-23 00:48:22 +03:00
Ogulcan Celik bc410c4261 perf: reduce headless server render overhead 2026-04-21 18:00:59 +03:00
Can Celik 3397e1ce29 feat: add persistent server-client sessions
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-21 16:30:04 +03:00
Ogulcan Celik 0b831c8627 feat: allow hook-reported custom agent labels 2026-04-16 22:17:09 +03:00
Ogulcan Celik 1535a7117a feat add custom shell and pane keybind commands 2026-04-13 18:49:37 +03:00
Ogulcan Celik 831bb66c0c feat(tabs): add overflow scrolling and drag reorder 2026-04-10 14:16:25 +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 5460a9601e fix(tabs): keep default numeric labels auto-generated 2026-04-09 04:32:45 +03:00
Ogulcan Celik 643860d5e3 fix: avoid spawning git for branch lookup 2026-04-07 02:14:39 +03:00
Ogulcan Celik a51902ede9 fix: use byte-based pane scrollback limit 2026-04-07 00:04:32 +03:00
Ogulcan Celik 6ccf156a3d refactor: use libghostty-native selection text reading 2026-04-06 22:56:01 +03:00
Can Celik 8525503dba fix: match ghostty pane default colors to host terminal theme 2026-04-05 03:46:16 +03:00
Ogulcan Celik 831894facf refactor: make workspace api ids stable 2026-04-04 01:50:34 +03:00
Ogulcan Celik 1468436fe3 fix sidebar agent list to hide shells 2026-04-03 01:52:25 +03:00
Ogulcan Celik 94e6a2ff64 fix workspace identity and tab-aware notifications 2026-04-03 01:48:15 +03:00
Ogulcan Celik 94809b2022 fix: improve tab-aware agent labels 2026-04-03 00:48:31 +03:00
Ogulcan Celik 33ccc1656c fix: drop modifier-only keys before pane forwarding 2026-04-03 00:30:06 +03:00
Ogulcan Celik b695adee60 feat: add tabs within workspaces 2026-04-02 23:24:46 +03:00