aboutsummaryrefslogtreecommitdiff
path: root/src/ui/dialogs.rs
AgeCommit message (Collapse)Author
2026-09-01refactor: render the shell in the client (#3487)Can Celik
* 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-08-10fix(ui): anchor the host cursor to modal name inputs (#2569)Kataoka Katsuki
* fix(ui): anchor the host cursor to modal name inputs IMEs draw their composition preview at the host terminal cursor. The rename and new-worktree dialogs drew a block glyph instead of setting one, so the frame carried no cursor and the client kept the position the focused pane last reported. Japanese composition appeared behind the dialog and only reached the field on Enter. Set the cursor to the caret column instead, counting wide characters as two cells. refs #1755 * fix(ui): keep the clamped caret cell blank A name that fills the field left the clamped caret sitting on the last rendered glyph. A terminal inverts the cell under its cursor and an IME composes there, so the glyph was hidden and composition overlapped it. Render the text one column short of the field. The field is still cleared in full, so the clamped caret always lands on a blank cell. refs #1755 --------- Co-authored-by: kataokatsuki <kataokatsuki@users.noreply.github.com> Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-08-03fix: propagate host color scheme to pane apps (#2214)Can Celik
refs #714
2026-07-28perf: skip rendering hidden pty updatesOgulcan Celik
2026-07-19fix: show current workspace name in close confirmationOgulcan Celik
refs #1364
2026-07-18feat: add optional workspace name promptOgulcan Celik
2026-06-26fix: measure ui labels by display widthOgulcan Celik
refs #810
2026-06-19fix: defer api worktree operationsOgulcan Celik
refs #686 refs #657 refs #662 refs https://github.com/ogulcancelik/herdr/discussions/687
2026-05-31fix: confirm implicit worktree group closeOgulcan Celik
refs #369
2026-05-22feat: add git worktree workspace managementOgulcan Celik
refs #137
2026-05-11feat: add optional pane border labelsOgulcan 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