Split config manifest/state and normalize URLs
I use this tool across multiple machines and keep my dotfiles under version control. The problem is that every time I update on one machine and push the dotfiles, the other machines think they already have the latest versions. This happens because the manifest mixes two things that should be separate: the repository list (portable) and the per-machine state (mutable versions).
This PR cleanly separates them. The manifest now contains only the repository names, while the per-machine version state is stored in a separate location. On Linux this follows the XDG spec in ~/.local/share/
Summary
- Separate per-machine mutable binary state into its own state file while keeping the manifest minimal and portable.
- Normalize manifest repository URLs to canonical base URLs (e.g., https://github.com/owner/repo) while keeping version-specific release URLs in the state file only.
- Introduce migration logic in CheckAndLoad to automatically split legacy manifests and normalize existing URLs on the first run.
Ooh I've been having this same annoyance and just pull bin changes from one pretty-much-always-on machine, overwriting local bin changes. Looking forward to this in a release once it's ready :heart: