aboutsummaryrefslogtreecommitdiff
path: root/src/app/state.rs
AgeCommit message (Collapse)Author
2026-05-25feat: make focus-gain redraw configurableOgulcan Celik
refs #282
2026-05-24feat: persist pane history across restarts (#248)zhugehyuk
refs #217 Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-05-24feat: add session navigatorOgulcan Celik
refs #157
2026-05-23feat: configure new terminal cwdOgulcan Celik
2026-05-22feat: add git worktree workspace managementOgulcan Celik
refs #137
2026-05-22feat: add configurable mouse scroll linesOgulcan Celik
refs #236
2026-05-21refactor: separate server client boundariesOgulcan Celik
2026-05-21fix: keep cjk ime agent allow-list safeOgulcan Celik
refs #149
2026-05-21feat(experimental): add reveal_hidden_cursor_for_cjk_ime opt-in for CJK IME ↵ChihGodlee
tracking When the focused pane requests ?25l (cursor hidden) but paints its own cursor — common in TUIs like Claude Code, pi, and codex — macOS native input methods stop tracking the candidate-window position. CJK users (Chinese / Japanese / Korean) cannot see candidate windows follow as they type. Setting [experimental] reveal_hidden_cursor_for_cjk_ime = true exposes the focused pane's cursor anchor to the outer terminal regardless of the pane's hidden-cursor request, restoring IME tracking for CJK input. [experimental] cjk_ime_agents is an optional allow-list. When empty, the reveal applies to any focused pane. When non-empty (e.g. ["claude", "codex"]), the reveal only applies if the focused pane's detected agent matches one of the listed names. This lets users enable the workaround only for AI-agent TUIs that paint their own cursor, leaving plain shells and other programs untouched. Accepted names: pi, claude, codex, gemini, cursor, cline, opencode, copilot, kimi, kiro, droid, amp, grok, hermes. Unknown names are ignored. When the pane reports no cursor position (cursor_state returns None for some TUIs), the anchor falls back to the pane's top-left so a stable IME hint is always available. [experimental] cjk_ime_cursor_shape (default "steady_block") controls the DECSCUSR shape rendered for the revealed cursor; six variants are accepted: block, steady_block, underline, steady_underline, bar, steady_bar. Trade-off when enabled: a hardware cursor will be visible in the outer terminal for apps that hide the cursor without painting a replacement. Default false preserves the behavior set in 2c95071. Pair the reveal with cjk_ime_agents to scope it to specific TUIs. Manually verified on macOS 26.5 aarch64 with system Pinyin IME against Claude Code: candidate window tracks cursor with flag enabled, returns to anchored-at-start behavior with flag disabled. refs #149
2026-05-20fix: clarify keybinding conflict warningsOgulcan Celik
refs #154
2026-05-20feat: badge outdated integration updatesOgulcan Celik
2026-05-20feat: add keybinding v2Ogulcan Celik
refs #154 refs #201 refs #202 refs #219
2026-05-20feat: add configurable default shellOgulcan Celik
refs #196
2026-05-20feat: surface agent integrations in onboardingOgulcan Celik
2026-05-19feat: add hosted product announcementsOgulcan Celik
2026-05-18feat: configure sidebar min/max width via [ui] (#135)CHIH,GODLEE
* feat: configure sidebar min/max width via [ui] Expose the previously hardcoded MIN_SIDEBAR_WIDTH / MAX_SIDEBAR_WIDTH clamps as [ui] sidebar_min_width / sidebar_max_width. Defaults remain 18 / 36 so existing configs are unchanged. Hot-reload is wired through the existing [ui] block; reload re-clamps the live width to the new bounds so tightening takes effect immediately. Reject inverted bounds (min > max) at every entry point so a bad config can never reach u16::clamp(min, max), which panics: App::new falls back to defaults, and apply_live_config treats the whole [ui] section as invalid and returns a partial reload report. refs #132 * test: keep sidebar reload width within bounds refs #132 --------- Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
2026-05-18feat: Support 16-bit terminal themes (#146)Zack Drach
Add a terminal theme that inherits the terminal default background and uses the host terminal's 16-color ANSI palette for UI colors. refs #140
2026-05-17feat: add selection autoscroll and fix stale selection on transitions (#129)leeeanh
When dragging to select text near pane edges, a 30ms recurring tick now continues scrolling and extending the selection while the mouse is idle. The autoscroll stops on MouseUp, key input, navigate action, cursor leaving the hot zone, scrollback boundary, missing metrics, or pane rect change. Also fixes pre-existing bugs where workspace/tab/pane transitions failed to clear selection state, which could cause stale selections to persist across views. Selection clearing on pane death is scoped to only the dying pane. Also fixes anchor_screen_pos returning pane-relative coordinates instead of screen coordinates, which caused false drag detection and spurious edge autoscroll on same-cell events when the pane has a non-zero origin. refs #128 Co-authored-by: leeanh <mac@macs-MacBook-Pro.local>
2026-05-17chore: rename fullscreen keybinding to zoomOgulcan Celik
2026-05-17feat: add direct terminal attach streamOgulcan Celik
2026-05-17refactor: extract terminal state and runtime from panesOgulcan Celik
2026-05-17feat: add homebrew update handlingOgulcan Celik
refs #127
2026-05-16feat: add immediate new tab optionOgulcan Celik
refs #123
2026-05-16feat: add scrollback editor keybindOgulcan Celik
refs #122
2026-05-15feat: add indexed keybind familiesOgulcan Celik
2026-05-15feat: add light theme variantsOgulcan Celik
2026-05-14feat: add tmux-style mouse capture configOgulcan Celik
2026-05-13feat: support kitty graphics in attached clientsOgulcan Celik
2026-05-12feat: add agent cycling and tab wheel switchingOgulcan Celik
fixes #92
2026-05-11feat: add notification target keybindOgulcan Celik
2026-05-11feat: add optional pane border labelsOgulcan Celik
2026-05-09chore: enable clippy lintingOgulcan Celik
2026-05-09Show focus on active agent in agents panel like spaces panel does (#84)YoungTaek
* feat: show focus on active agent in agents panel like spaces panel does * refactor: improve to calculation and binding style
2026-05-08feat: make agent toasts focus panesOgulcan Celik
2026-05-06fix: persist agent panel scope in configOgulcan Celik
2026-05-06feat: add vesper theme (#71)Shoubhit Dash
2026-05-05feat: add mobile terminal layoutOgulcan Celik
2026-04-28feat: notify active panes when terminal is unfocusedOgulcan Celik
2026-04-26feat: refine live config lifecycleOgulcan Celik
2026-04-26feat: add live config reloadOgulcan Celik
2026-04-22feat: add terminal-delivered client notificationsOgulcan 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
2026-04-14fix unify app key normalization for enhanced keyboard reportingOgulcan Celik
2026-04-13feat add custom shell and pane keybind commandsOgulcan Celik
2026-04-10feat(tabs): add overflow scrolling and drag reorderOgulcan Celik
2026-04-09feat: add manual reload keybinds actionOgulcan Celik
2026-04-08feat: add debounced session autosaveOgulcan Celik
2026-04-08feat: add resizable sidebar sectionsOgulcan Celik
2026-04-07fix: use byte-based pane scrollback limitOgulcan Celik
2026-04-06fix: keep sidebar width stable and persist user resizeOgulcan Celik