Major architectural refactoring to separate server and UI concerns: Architecture Changes: - Split into anvilsrv (server daemon) and Assist (Acme client) - Removed UI coupling from server (OnAliasChange, WinID tracking) - Server runs as background daemon, client reconnects as needed - Client auto-starts server if not running Server (anvilsrv): - Add daemon management: start/stop/status commands - Daemonize by default (fgstart for foreground/debug mode) - Proper PID file handling in $NAMESPACE (not /tmp) - Graceful shutdown with SIGTERM handling - Duplicate start prevention with stale PID detection Client (Assist): - Auto-start anvilsrv if not running - Fixed plan9 package imports (OWRITE/OREAD constants) - Removed unused context import Security Fixes: - Move PID file from /tmp to $NAMESPACE (prevent symlink attacks) - Add path validation in session creation: - Clean path traversal (/../../../etc → /etc) - Verify directory exists before creating session - Ensure absolute paths - Reject non-directory paths - Add SECURITY.md documenting 9P socket risks Service Integration: - Add systemd service files (system, user, template) - Add runit service files (run, finish) - Add service documentation and installation instructions Build & Testing: - Both binaries build successfully - All daemon operations verified (start/stop/status/daemonize) - Path validation tested and working - Auto-start functionality verified - Add DevReviewQA workflow script 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| backend | ||
| backends | ||
| debug | ||
| p9 | ||
| sandbox | ||
| session | ||
| ui | ||