- On startup, daemon sweeps orphaned /tmp/jj-claude-*-files from pre-daemon
hook versions and dead-PID tracking files from all repos
- Cross-session file conflicts detected on post-edit and returned in response
(logged as warnings, non-blocking)
- session-start now returns inventory of all other active sessions with their
tracked files, PIDs, and ages
- Stale session reap reduced from 2h to 30min default (matches idle shutdown),
configurable via JJ_HOOK_STALE_MIN env var
- Debounce interval configurable via JJ_HOOK_DEBOUNCE_SEC env var (default 3s,
max 30s) — previously documented but not implemented
- handleEvent response changed from bare bool to structured JSON with ok/error/
sessions/conflicts fields (backward compatible — ok field still present)
- 30 Go tests (up from 13): inventory, conflicts, env vars, legacy cleanup
- Fix: set -e for manual commands (squash-wip, status, reap)
- Fix: portable mkdir lock for session-end leftover commit race condition
- Fix: ARG_MAX guard for large file lists (>500 files)
- Fix: walk up PPID chain to find long-lived ancestor process
- Fix: default mtime when stat fails (prevents arithmetic error)
- Add: wip/claude-{session} bookmark on each session commit
- Add: base revision tracking (-base file, shown in status)
- Add: JJ_HOOK_AUTO_SQUASH=1 opt-in auto-squash at session end
- Change: settings.local.json → settings.json (team-shared by default)
- Tests: 77 total (8 new for bookmarks, base, auto-squash, status, reap)