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 Kinney and Can 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