fix: v0.9.1 robustness cleanups
build-deb / Lint, test, package (push) Successful in 3m53s
build-deb / Deploy to CT 126 (push) Successful in 10s
build-deb / Notify on failure (push) Skipped

- run_resume falls back to a new conversation only when the transcript file
  is gone; other failures end at the menu with the recorded id intact.
- The SessionStart hook resolves the session name under the registry lock;
  rename holds it across tmux rename-session and the registry move
  (dd_registry_locked, nestable).
- dd_load_env parses KEY=value like systemd instead of sourcing the files.
- devdesk-deploy: DPkg::Lock::Timeout, explicit FAILED lines on stdout and in
  the log; the hook answers synchronously and CI checks the HTTP status.
  logrotate for the deploy log.
- postinst drops duplicate terminal-features entries; hooks sweep stale
  temp files.

Closes #12

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-11 01:01:51 -04:00
co-authored by Claude Opus 5.5
parent 73e77aca73
commit 74927a7640
14 changed files with 277 additions and 68 deletions
+25
View File
@@ -1,3 +1,28 @@
devdesk (0.9.1) bookworm; urgency=medium
* Robustness (#12):
- A resume that fails (an early Ctrl+C, a network error) no longer
replaces the session's recorded conversation with a new one: Claude
starts fresh only when the conversation's file is really gone;
otherwise the menu offers to try again.
- The SessionStart hook reads the session name under the registry lock
that rename holds, so renaming during /clear or a restart can't leave
the conversation id under the old name.
- Env files are parsed the way systemd parses them instead of being
sourced: values are literal (no $ expansion or command substitution),
and bad lines are reported and skipped.
- Deploys wait for the dpkg lock (120 s), log an explicit "deploy
FAILED" line, and the webhook answers with the result, so CI's deploy
job fails (and alerts) when the install fails. The deploy log is
rotated monthly.
- postinst removes the duplicate tmux terminal-features entries left by
upgrades before 0.3.1.
- Temp files of hooks killed mid-write are swept.
- NPM now sends X-Frame-Options DENY and CSP frame-ancestors 'none' for
dev.lotusguild.org (proxy config, not part of the package).
-- Jared Vititoe <jjvititoe1@gmail.com> Sun, 11 Oct 2026 01:01:33 -0400
devdesk (0.9.0) bookworm; urgency=medium
* Search past conversations (#24): every Claude conversation on this host
+8
View File
@@ -0,0 +1,8 @@
/var/log/devdesk-deploy.log {
monthly
rotate 6
compress
delaycompress
missingok
notifempty
}
+7
View File
@@ -13,6 +13,13 @@ configure)
# Apply tmux.conf changes to a running server without restarting it.
if [ -S /run/devdesk/tmux.sock ]; then
tmux -N -S /run/devdesk/tmux.sock source-file /usr/share/devdesk/tmux.conf >/dev/null 2>&1 || true
# Before 0.3.1 every upgrade appended another copy of DevDesk's
# terminal-features entry; tmux.conf now sets index 90. Drop the copies.
tmux -N -S /run/devdesk/tmux.sock show -s terminal-features 2>/dev/null |
awk '$2 == "xterm-256color:RGB" && $1 != "terminal-features[90]" { print $1 }' |
while read -r opt; do
tmux -N -S /run/devdesk/tmux.sock set -su "$opt" >/dev/null 2>&1 || true
done
fi
;;
esac