fix: v0.10.3 no tmux right-click menus; close split panes
Right-clicking a pane opened tmux's menu, whose Split entries left a stray pane next to Claude (and whose Kill entries could end it). Unbind the right-click menus; add --unsplit and a palette entry that closes extra panes and keeps Claude's. Closes #52 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WHRLCCdXYm41Qx5kNhehaP
This commit is contained in:
+21
-2
@@ -15,7 +15,7 @@
|
||||
#
|
||||
# The web UI calls `devdesk attach --list | --repo NAME | --alerts | --investigate SESSION UID |
|
||||
# --upload SESSION FILE BYTES | --new NAME [PROJECT] [--worktree] | --rename OLD NEW | --end NAME |
|
||||
# --last-reply NAME | --existing NAME`
|
||||
# --last-reply NAME | --unsplit NAME | --existing NAME`
|
||||
# through ttyd; those print JSON.
|
||||
set -euo pipefail
|
||||
|
||||
@@ -182,6 +182,25 @@ dd_worktree_end() {
|
||||
fi
|
||||
}
|
||||
|
||||
# --unsplit NAME (devdesk#52): close the extra panes a split left in the session's
|
||||
# windows. Each window keeps one pane: Claude's in the claude window, else the
|
||||
# first. Prints {ok, closed}.
|
||||
cmd_unsplit() {
|
||||
[ $# -eq 1 ] || dd_die "usage: devdesk attach --unsplit NAME"
|
||||
dd_valid_name "$1" || dd_die "invalid session name: $1"
|
||||
{ dd_server_up && dd_tmux has-session -t "=$1" 2>/dev/null; } || dd_die "session '$1' isn't running"
|
||||
local win keep pane closed=0
|
||||
while read -r win; do
|
||||
keep=$(dd_tmux list-panes -t "=$1:$win" -F '#{pane_id} #{pane_start_command}' | awk '/devdesk-claude-run/ { print $1; exit }')
|
||||
[ -n "$keep" ] || keep=$(dd_tmux list-panes -t "=$1:$win" -F '#{pane_id}' | head -n 1)
|
||||
while read -r pane; do
|
||||
[ "$pane" = "$keep" ] && continue
|
||||
dd_tmux kill-pane -t "$pane" && closed=$((closed + 1))
|
||||
done < <(dd_tmux list-panes -t "=$1:$win" -F '#{pane_id}')
|
||||
done < <(dd_tmux list-windows -t "=$1" -F '#{window_index}')
|
||||
jq -cMn --argjson c "$closed" '{ok: true, closed: $c}'
|
||||
}
|
||||
|
||||
cmd_rename() {
|
||||
[ $# -eq 2 ] || dd_die "usage: devdesk rename OLD NEW"
|
||||
local old=$1 new=$2 running=0
|
||||
@@ -366,7 +385,7 @@ cmd_attach() {
|
||||
dd_linger
|
||||
return
|
||||
;;
|
||||
--peek | --search | --last-reply)
|
||||
--peek | --search | --last-reply | --unsplit)
|
||||
local action=${1#--}
|
||||
shift
|
||||
"cmd_${action//-/_}" "$@"
|
||||
|
||||
Reference in New Issue
Block a user