diff --git a/data/scripts/o b/data/scripts/o index 75b0d9b..c1abea8 100755 --- a/data/scripts/o +++ b/data/scripts/o @@ -393,7 +393,10 @@ cmd_tui() { local s="$CTX_SESSION" local a="$CTX_AGENT" - local tmux_session="o-${s}" + # Sanitize session name for tmux (replace / and : with -) + local safe_session="${s//\//-}" + safe_session="${safe_session//:/-}" + local tmux_session="o-${safe_session}-${a}" # Check for subcommands if [[ "${1:-}" == "exit" ]]; then @@ -405,12 +408,14 @@ cmd_tui() { tmux kill-session -t "=${tmux_session}" 2>/dev/null || true # Layout: chat (top 80%), prompt (bottom 20%) + # Use colon separator in o commands to handle session names with slashes + local ctx="$s:$a" tmux new-session -d -s "$tmux_session" -c "$HOME" tmux set-option -g mouse on - tmux send-keys -t "=${tmux_session}" "o $s/$a log -n 1000 | grep -v '\\[\\[\\[.*\\]\\]\\]' | grep -v '^\`\`\`'; o $s/$a read chat" Enter + tmux send-keys -t "=${tmux_session}" "o '$ctx' log -n 1000 | grep -v '\\[\\[\\[.*\\]\\]\\]' | grep -v '^\`\`\`'; o '$ctx' read chat" Enter tmux split-window -t "=${tmux_session}" -v -l 20% - tmux send-keys -t "=${tmux_session}" "clear; o $s/$a prompt" Enter + tmux send-keys -t "=${tmux_session}" "clear; o '$ctx' prompt" Enter tmux set-option -t "=${tmux_session}" status-right "starting... | %H:%M" tmux set-option -t "=${tmux_session}" status-right-length 64