Commit Graph
53 Commits
Author SHA1 Message Date
Ogulcan Celik 57c880f0eb feat: add global last-pane navigation
refs #287
2026-05-26 14:50:13 +03:00
Zack DrachandCan Celik 6c4a947244 Add tmux-style double-click word copy (#296)
* feat: add tmux-style double-click copy

Double-clicking terminal output now selects and copies the token under the cursor, similar to tmux. The copied token briefly stays highlighted as feedback, and token detection handles common shell output like paths, URLs, variables, CJK text, and surrounding punctuation.

Mouse events are still forwarded unchanged when the child terminal has mouse reporting enabled.

refs #142

* fix: tighten double-click copy

refs #142

---------

Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-05-26 13:40:29 +03:00
zhugehyukandCan Celik 43c6ca3a5d feat: persist pane history across restarts (#248)
refs #217

Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-05-24 21:28:33 +03:00
Ogulcan Celik 26205a2ac5 feat: make navigate movement keybinds configurable
refs #193
2026-05-24 03:41:16 +03:00
Ogulcan Celik 80a314a908 feat: add session navigator
refs #157
2026-05-24 02:59:39 +03:00
Ogulcan Celik 09d9ddde97 fix: preserve local keybindings in remote sessions 2026-05-23 02:30:25 +03:00
Ogulcan Celik 3de6ea7999 feat: configure new terminal cwd 2026-05-23 00:32:46 +03:00
Ogulcan Celik 062259ba3e fix: arbitrate stale agent state evidence
refs #249
2026-05-22 19:55:07 +03:00
Ogulcan Celik 0148c1379b feat: add git worktree workspace management
refs #137
2026-05-22 02:23:35 +03:00
Ogulcan Celik a9ff4012bd feat: add configurable mouse scroll lines
refs #236
2026-05-22 00:12:53 +03:00
Ogulcan Celik 1f2f939862 fix: keep notifications below floating overlays
refs #228
2026-05-21 21:27:20 +03:00
Ogulcan Celik 866aaf740e refactor: separate server client boundaries 2026-05-21 20:22:57 +03:00
Ogulcan Celik df357b250c fix: clarify keybinding conflict warnings
refs #154
2026-05-20 22:08:26 +03:00
Ogulcan Celik c584037c77 feat: badge outdated integration updates 2026-05-20 22:08:04 +03:00
Ogulcan Celik 836fd7e585 feat: add keybinding v2
refs #154
refs #201
refs #202
refs #219
2026-05-20 18:55:41 +03:00
Ogulcan Celik 2b97799b67 feat: add configurable default shell
refs #196
2026-05-20 00:34:27 +03:00
Ogulcan Celik ff8e5a14ab fix: stop auto-opening release notes on startup 2026-05-20 00:34:04 +03:00
Ogulcan Celik fb93e37475 feat: surface agent integrations in onboarding 2026-05-20 00:00:16 +03:00
Ogulcan Celik d2074b12f1 feat: add hosted product announcements 2026-05-19 23:06:48 +03:00
Ogulcan Celik 17f5ac10b0 fix: handle rename prompt editing shortcuts
refs #204
2026-05-19 22:51:24 +03:00
kangal-botandkangal-bot 76ac2da20a fix: allow zoomed pane focus (#167)
refs #151

Co-authored-by: kangal-bot <kangal-bot@users.noreply.github.com>
2026-05-18 20:37:38 +03:00
kangal-botandkangal-bot fa0e380e62 fix: preserve alt backspace in panes (#165)
refs #155

Co-authored-by: kangal-bot <kangal-bot@users.noreply.github.com>
2026-05-18 20:13:19 +03:00
CHIH,GODLEEandOgulcan Celik 3189ede2b9 feat: configure sidebar min/max width via [ui] (#135)
* 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-18 15:27:43 +03:00
leeeanhandleeanh 45a4318bbb feat: add selection autoscroll and fix stale selection on transitions (#129)
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-17 15:05:30 +03:00
Ogulcan Celik d743b39a2b chore: rename fullscreen keybinding to zoom 2026-05-17 03:50:22 +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 b173a86e34 feat: add immediate new tab option
refs #123
2026-05-16 18:41:36 +03:00
Ogulcan Celik 7b8f699083 feat: add scrollback editor keybind
refs #122
2026-05-16 18:33:23 +03:00
Ogulcan Celik 58c379f1f0 fix: keep split resize hitboxes off pane content
fixes #120
2026-05-16 02:18:35 +03:00
Ogulcan Celik 4cbe72ec2d feat: add indexed keybind families 2026-05-15 20:31:01 +03:00
Ogulcan Celik 8ad3c40fab fix(input): only host-scroll plain page key presses 2026-05-15 18:37:59 +03:00
Ogulcan Celik bfe2f84f4f feat: add system toast delivery 2026-05-15 01:37:57 +03:00
Ogulcan Celik c2e58974f4 fix(input): scroll pane scrollback with pageup/pagedown and parse enhanced tilde sequences 2026-05-14 22:57:09 +03:00
Ogulcan Celik ed4253d603 feat: add tmux-style mouse capture config 2026-05-14 02:50:00 +03:00
Ogulcan Celik 520f4272d0 feat: add agent cycling and tab wheel switching
fixes #92
2026-05-12 00:24:13 +03:00
Ogulcan Celik 8d5dca8cfe feat: add notification target keybind 2026-05-11 23:47:51 +03:00
Ogulcan Celik fe693f613a feat: add optional pane border labels 2026-05-11 23:34:20 +03:00
Ogulcan Celik 9f210e9738 chore: enable clippy linting 2026-05-09 23:16:24 +03:00
Ogulcan Celik ac32c1a19b fix: clear agent toast after focus 2026-05-08 14:56:14 +03:00
Ogulcan Celik c08e51e666 feat: make agent toasts focus panes 2026-05-08 14:53:45 +03:00
Ogulcan Celik 34df89ae65 fix: persist agent panel scope in config 2026-05-06 22:53:56 +03:00
Ogulcan Celik f7b0ee2f75 feat: add mobile terminal layout 2026-05-05 18:32:42 +03:00
Ogulcan Celik eec56a56a9 fix: restore double prefix passthrough in client mode 2026-04-29 23:14:38 +03:00
Yifeng He 22d7bef568 fix: resize w claude code no flicker (#61)
* fix: mouse resize panel failed with claude-code no flicker

* test: run pane mouse reporting drag tests inside tokio runtime

Switch the new horizontal/vertical drag tests to `#[tokio::test]` so
`PaneRuntime::test_with_screen_bytes` has a reactor when it calls
`tokio::spawn`. CI was panicking with "there is no reactor running".

* test: refresh git state in workspace drop slot test

Workspace::test_new caches the parent repo's git branch at construction
time. On master CI the herdr checkout has ref: refs/heads/master in HEAD,
so the cache is populated and workspace_row_height returns 2. On PR CI
actions/checkout uses a detached merge ref, git_branch returns None, row
height becomes 1, and the drop-slot tie-break flips workspace_drop_index_at_row(2)
from Some(0) to Some(1). Refresh git state after pointing identity_cwd at
the per-test temp repo so the cache reflects the temp repo's HEAD.
2026-04-28 13:13:53 +03:00
Ogulcan Celik e9547a8e0d feat: refine live config lifecycle 2026-04-26 17:06:00 +03:00
Ogulcan Celik 3d1ef155bf feat: add live config reload 2026-04-26 02:07:33 +03:00
Ogulcan Celik 4075041804 feat(logging): add robust rotating support logs 2026-04-23 00:48:22 +03:00
Ogulcan Celik 4b482f37a1 feat: add terminal-delivered client notifications 2026-04-22 17:01:25 +03:00