Commit graph

5 commits

Author SHA1 Message Date
Snider
c36e4f72a3 style(update): fix trailing newline in cmd.go
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 12:46:17 +00:00
Snider
7789f422e0 fix(update): use build tags for platform-specific watcher code
Split platform-specific functions into separate files:
- cmd_unix.go: Unix implementation using Setpgid and signal 0
- cmd_windows.go: Windows implementation using CREATE_NEW_PROCESS_GROUP
  and OpenProcess for PID checking

Fixes Windows cross-compilation error where Setpgid field doesn't exist.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 12:19:32 +00:00
Snider
e4b47f9d29 refactor(update): use watcher pattern for auto-restart
Replace the direct exec-based restart with a spawned watcher process:
- Add hidden --watch-pid flag for internal use
- spawnWatcher() spawns background process before update
- watchAndRestart() polls for parent death, then restarts binary
- Uses signal 0 on Unix to check if process is alive
- Windows fallback spawns new process and exits

This approach is safer because:
- Parent exits cleanly before restart (no file locking issues)
- Watcher is detached from parent process group
- Works reliably across platforms

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 12:14:51 +00:00
Snider
0ef41ef642 feat(update): auto-restart after update to load new version
Uses syscall.Exec on Unix to replace the current process with the
updated binary, running --version to confirm. On Windows, falls back
to a message asking to restart manually.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 12:09:32 +00:00
Snider
03727e18bb feat(cli): add core update command for self-updating
- `core update` - Update to latest stable release
- `core update check` - Check for updates without applying
- `core update --channel=dev` - Update to latest dev build
- `core update --force` - Force update even if already on latest

Uses the existing updater package with GitHub releases support.
Automatically detects platform (OS/arch) and downloads correct binary.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 12:06:49 +00:00