mirror of
https://github.com/l0ng-ai/tty7.git
synced 2026-09-22 00:02:23 +00:00
- macOS updater: wait for the parent by watching getppid() reparent to launchd instead of polling kill(pid, 0), which a recycled pid could satisfy forever. The kill loop remains only for a hand-run updater. - Windows: a new update guard (config-dir update.lock, held by the updater from daemon stop to relaunch) makes ensure_running refuse to spawn a daemon mid-install, so a tty7 CLI call or manual launch can no longer relock the images the installer is replacing. Stale guards — dead writer or past the TTL — are shed on sight. - Windows portable: the update backup now carries an incomplete marker from before the first file moves until the replacement lands. At launch the app reports a backup still carrying it as an interrupted update (the installation may mix two versions; the old files are preserved), and silently removes marker-less backups a finished update failed to delete past an antivirus hold.