feat: v0.12.0 Settings window, per-session Remote Control, delete conversations
- Settings (⋯ → Settings…, palette): theme, terminal text size, interface size, notifications, Remote Control & privacy. The ⋯ menu shrinks. - Remote Control per session: registry choice > Settings default > DEVDESK_REMOTE_CONTROL. Switching an idle session restarts its Claude on the same conversation; busy sessions change at the next start. rc_active comes from the running process; RC tag on sessions. - --delete-convo: remove a conversation's local transcript and subagent files; refused while in use. Delete… in Search past conversations. Closes #61 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WHRLCCdXYm41Qx5kNhehaP
This commit is contained in:
@@ -115,3 +115,30 @@ cmd_presence() {
|
||||
setsid -f bash -c 'sleep 120; [ -n "$(find "$1" -newermt "-110 seconds" 2>/dev/null)" ] || rm -f "$1"' _ "$marker" \
|
||||
</dev/null >/dev/null 2>&1 3>&- || true
|
||||
}
|
||||
|
||||
# --delete-convo ID (devdesk#61): permanently delete a conversation's local files
|
||||
# (the transcript ~/.claude/projects/<folder>/<id>.jsonl and its <id>/ folder of
|
||||
# subagent transcripts and tool results). Refused while a running session uses
|
||||
# it. Dormant sessions that would resume it forget it (they start fresh).
|
||||
# Copies kept by Anthropic (Remote Control, the API) are not touched: those are
|
||||
# deleted at claude.ai.
|
||||
cmd_delete_convo() {
|
||||
[ $# -eq 1 ] || dd_die "usage: devdesk attach --delete-convo ID"
|
||||
local id=$1 file dir other
|
||||
[[ $id =~ ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$ ]] || dd_die "bad conversation id: $id"
|
||||
file=$(dd_convo_file "$id") || true
|
||||
{ [ -n "$file" ] && [ -f "$file" ]; } || dd_die "no conversation $id"
|
||||
case "$file" in "$(dd_projects_dir)"/*/"$id.jsonl") ;; *) dd_die "unexpected path: $file" ;; esac
|
||||
for other in $(jq -rM --arg id "$id" '.sessions | to_entries[] | select(.value.claude_session_id == $id) | .key' "$DEVDESK_REGISTRY" 2>/dev/null); do
|
||||
if dd_server_up && dd_tmux has-session -t "=$other" 2>/dev/null; then
|
||||
dd_die "session $other is using this conversation: end it first"
|
||||
fi
|
||||
done
|
||||
dir=${file%.jsonl}
|
||||
rm -f -- "$file"
|
||||
[ ! -d "$dir" ] || rm -rf -- "$dir"
|
||||
# shellcheck disable=SC2016 # jq variables
|
||||
dd_registry_update '.sessions |= with_entries(if .value.claude_session_id == $id then .value |= (del(.claude_session_id) | del(.claude_source)) else . end)' \
|
||||
--arg id "$id"
|
||||
jq -cMn --arg id "$id" '{ok: true, deleted: $id}'
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user