feat(@scripts): ✨ add unique timestamp to tmux session names
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
parent
4b63a48d05
commit
9888fb1a31
1 changed files with 10 additions and 10 deletions
20
bin/rclaude
20
bin/rclaude
|
|
@ -6,9 +6,10 @@
|
||||||
# 2. `claude --continue` resumes the per-directory session from disk after
|
# 2. `claude --continue` resumes the per-directory session from disk after
|
||||||
# the host itself dies (reboot, crash, OOM).
|
# the host itself dies (reboot, crash, OOM).
|
||||||
#
|
#
|
||||||
# Re-running with the same target lands you back in the same conversation:
|
# Each invocation starts a fresh Claude session in a new named tmux window.
|
||||||
# tmux reattaches if alive; claude --continue picks up from
|
# To reattach an existing session: `rclaude resume [pattern]`
|
||||||
# ~/.claude/projects/<encoded-cwd>/ otherwise.
|
# 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
|
# Permission mode: --dangerously-skip-permissions is on by default. Override
|
||||||
# with RCLAUDE_PERMS=default (or any --permission-mode value).
|
# 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')
|
slug=$(printf %s "$dir" | sed -e 's|^[~/]*||' -e 's|[^A-Za-z0-9]|-|g')
|
||||||
[ -z "$slug" ] && slug=home
|
[ -z "$slug" ] && slug=home
|
||||||
session="claude-$(whoami)-${slug}"
|
session="claude-$(whoami)-${slug}-$(date +%s)"
|
||||||
|
|
||||||
perms=${RCLAUDE_PERMS:-bypass}
|
perms=${RCLAUDE_PERMS:-bypass}
|
||||||
case $perms in
|
case $perms in
|
||||||
|
|
@ -236,10 +237,9 @@ build_inner() {
|
||||||
# Single-line, single-quote-safe. Variables prefixed with rc_ to avoid
|
# Single-line, single-quote-safe. Variables prefixed with rc_ to avoid
|
||||||
# collision with anything in the user's shell.
|
# collision with anything in the user's shell.
|
||||||
#
|
#
|
||||||
# Note: launch path uses plain `claude` (fresh session). Reattach to a
|
# Note: launch path uses plain `claude` (fresh session). Each invocation
|
||||||
# live conversation is handled by tmux (named session keyed on dir, so
|
# creates a new uniquely-named tmux session. Reattach to a live session
|
||||||
# re-running rclaude in the same dir reattaches). Disk-resume is the
|
# via `rclaude resume <pattern>`; disk-resume after host death likewise.
|
||||||
# explicit `rclaude resume <pattern>` subcommand.
|
|
||||||
_resume_flag=""
|
_resume_flag=""
|
||||||
[ "${RCLAUDE_RESUME:-0}" = "1" ] && _resume_flag="--continue"
|
[ "${RCLAUDE_RESUME:-0}" = "1" ] && _resume_flag="--continue"
|
||||||
printf '%s' \
|
printf '%s' \
|
||||||
|
|
@ -260,7 +260,7 @@ if is_local "$host"; then
|
||||||
echo "rclaude: local directory not found: $dir" >&2
|
echo "rclaude: local directory not found: $dir" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
exec tmux new-session -A -s "$session" "$(build_inner "$dir")"
|
exec tmux new-session -s "$session" "$(build_inner "$dir")"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Remote: pre-flight the directory so a typo or missing path fails loudly
|
# 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
|
fi
|
||||||
|
|
||||||
inner=$(build_inner "$dir")
|
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}\""
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue