psd 8.0 is a reliability release. The sync, crash recovery and shutdown paths were rebuilt around one rule: a browser profile is never lost, no matter when psd is interrupted.
Highlights
- Atomic resync and unsync. psd writes a complete new copy of the profile, flushes it, then swaps it in with
mv --exchange. A crash or power loss mid-sync leaves the previous copy intact. - New
psd recoververb. Recovery is restartable and always picks the newest complete copy. psd.service runs it automatically on stop, and sessions started by older psd versions are recovered too. - Browsers get time to quit. psd waits for running browsers to exit cleanly before unsync and kills one that ignores TERM after 10 seconds. Processes still holding a profile are named in the log.
- No more racing runs. psd runs are serialized with a lock, and the initial sync is all-or-nothing: if one profile fails, every profile is put back.
- Safer housekeeping.
psd previewno longer changes anything, crashrecovery snapshots are rotated byBACKUP_LIMIT, and profiles that would share a tmpfs dir are refused. - Test suite.
make checkruns the fault-injection suite, which kills psd before every step and checks nothing is lost.
Upgrade
- Stop psd before upgrading:
systemctl --user stop psd - Install, then
systemctl --user daemon-reloadand start psd again.
- The atomic swap needs coreutils 9.5 or newer. Older versions fall back to an in-place copy, which is safe but not atomic.
- Each resync needs free space next to the profile for whatever changed since the last one. If space runs out, the resync fails and the previous copy is kept.
- Known gap: a 7.x session with
USE_BACKUPS=nothat crashed before its first resync cannot be recovered automatically. Stop psd cleanly before upgrading.
Install
- Arch:
profile-sync-daemonfrom the extra repo - From source:
make && sudo make install
Full Changelog: v7.04...v8.0