From 9888fb1a3164e23ead10a57925757fee3e8a5491 Mon Sep 17 00:00:00 2001 From: Natalie Date: Sun, 26 Apr 2026 15:47:26 -0700 Subject: [PATCH] =?UTF-8?q?feat(@scripts):=20=E2=9C=A8=20add=20unique=20ti?= =?UTF-8?q?mestamp=20to=20tmux=20session=20names?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Lilith Autocommit --- bin/rclaude | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/bin/rclaude b/bin/rclaude index 1fdb747..4ddcc13 100755 --- a/bin/rclaude +++ b/bin/rclaude @@ -6,9 +6,10 @@ # 2. `claude --continue` resumes the per-directory session from disk after # the host itself dies (reboot, crash, OOM). # -# Re-running with the same target lands you back in the same conversation: -# tmux reattaches if alive; claude --continue picks up from -# ~/.claude/projects// otherwise. +# Each invocation starts a fresh Claude session in a new named tmux window. +# To reattach an existing session: `rclaude resume [pattern]` +# To resume a Claude conversation from disk after host loss: `rclaude resume` picks +# up the on-disk session via `claude --continue`. # # Permission mode: --dangerously-skip-permissions is on by default. Override # with RCLAUDE_PERMS=default (or any --permission-mode value). @@ -218,7 +219,7 @@ fi slug=$(printf %s "$dir" | sed -e 's|^[~/]*||' -e 's|[^A-Za-z0-9]|-|g') [ -z "$slug" ] && slug=home -session="claude-$(whoami)-${slug}" +session="claude-$(whoami)-${slug}-$(date +%s)" perms=${RCLAUDE_PERMS:-bypass} case $perms in @@ -236,10 +237,9 @@ build_inner() { # Single-line, single-quote-safe. Variables prefixed with rc_ to avoid # collision with anything in the user's shell. # - # Note: launch path uses plain `claude` (fresh session). Reattach to a - # live conversation is handled by tmux (named session keyed on dir, so - # re-running rclaude in the same dir reattaches). Disk-resume is the - # explicit `rclaude resume ` subcommand. + # Note: launch path uses plain `claude` (fresh session). Each invocation + # creates a new uniquely-named tmux session. Reattach to a live session + # via `rclaude resume `; disk-resume after host death likewise. _resume_flag="" [ "${RCLAUDE_RESUME:-0}" = "1" ] && _resume_flag="--continue" printf '%s' \ @@ -260,7 +260,7 @@ if is_local "$host"; then echo "rclaude: local directory not found: $dir" >&2 exit 1 fi - exec tmux new-session -A -s "$session" "$(build_inner "$dir")" + exec tmux new-session -s "$session" "$(build_inner "$dir")" fi # Remote: pre-flight the directory so a typo or missing path fails loudly @@ -278,4 +278,4 @@ if ! ssh -o BatchMode=yes -o ConnectTimeout=5 "$host" "test -d ${dir}" 2>/dev/nu fi inner=$(build_inner "$dir") -exec ssh -t "$host" "tmux new-session -A -s '${session}' \"${inner}\"" +exec ssh -t "$host" "tmux new-session -s '${session}' \"${inner}\""