From 556b16b2df7ea2c3e9b8ad13db4ad7370c1ad838 Mon Sep 17 00:00:00 2001 From: Ogulcan Celik Date: Fri, 5 Jun 2026 21:59:10 +0300 Subject: 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 --- docs/next/CHANGELOG.md | 1 + docs/next/README.md | 1 + .../website/src/content/docs/cli-reference.mdx | 9 +- .../website/src/content/docs/configuration.mdx | 4 + docs/next/website/src/content/docs/socket-api.mdx | 45 +- src/api/mod.rs | 3 + src/api/schema.rs | 208 ++++- src/api/server.rs | 6 + src/app/actions.rs | 120 +++ src/app/api.rs | 8 + src/app/api/panes.rs | 920 ++++++++++++++++++++- src/app/input/modal.rs | 107 ++- src/app/input/mouse.rs | 138 +++- src/app/input/navigate.rs | 41 +- src/app/input/terminal.rs | 10 +- src/app/mod.rs | 125 ++- src/app/state.rs | 38 +- src/cli/pane.rs | 530 +++++++++++- src/config/keybinds.rs | 36 + src/config/model.rs | 12 + src/layout.rs | 440 ++++++++-- src/persist/snapshot.rs | 2 + src/workspace.rs | 62 +- src/workspace/tab.rs | 33 +- 24 files changed, 2752 insertions(+), 147 deletions(-) diff --git a/docs/next/CHANGELOG.md b/docs/next/CHANGELOG.md index f0aeda9d..764043fd 100644 --- a/docs/next/CHANGELOG.md +++ b/docs/next/CHANGELOG.md @@ -10,6 +10,7 @@ ### Added - Added `herdr integration install droid` for Factory Droid hooks that report session ids through Herdr's socket API. When native agent session restore is enabled, Herdr can resume Droid panes with `droid --resume `. +- Added directional pane swap with `prefix+shift+h/j/k/l`, a pane context-menu swap action, pane layout/neighbor/edge/focus/resize socket APIs, matching CLI commands, and optional `pane split --ratio` support. ## [0.6.8] - 2026-06-04 diff --git a/docs/next/README.md b/docs/next/README.md index e15162ad..2523d61c 100644 --- a/docs/next/README.md +++ b/docs/next/README.md @@ -225,6 +225,7 @@ Press `ctrl+b` to enter prefix mode. Default actions are prefix-first and tmux-l | `prefix+shift+w` | rename workspace | | `prefix+shift+d` | close workspace | | `prefix+h/j/k/l` | focus pane | +| `prefix+shift+h/j/k/l` | swap pane | | `prefix+v` / `prefix+minus` | split pane | | `prefix+x` | close pane | | `prefix+b` | toggle sidebar | diff --git a/docs/next/website/src/content/docs/cli-reference.mdx b/docs/next/website/src/content/docs/cli-reference.mdx index bf3c37d3..8d983dcf 100644 --- a/docs/next/website/src/content/docs/cli-reference.mdx +++ b/docs/next/website/src/content/docs/cli-reference.mdx @@ -100,8 +100,15 @@ herdr tab close ```bash herdr pane list [--workspace ] herdr pane get +herdr pane layout [--pane ID|--current] +herdr pane neighbor --direction left|right|up|down [--pane ID|--current] +herdr pane edges [--pane ID|--current] +herdr pane focus --direction left|right|up|down [--pane ID|--current] +herdr pane resize --direction left|right|up|down [--amount FLOAT] [--pane ID|--current] herdr pane rename