bin icon indicating copy to clipboard operation
bin copied to clipboard

Split config manifest/state and normalize URLs

Open bresilla opened this issue 1 month ago • 1 comments

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/, and on Windows and macOS it follows their respective standard app-data paths. With this split, one can push git changes to without every update mutating the manifest.

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.

bresilla avatar Dec 01 '25 16:12 bresilla

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:

Amolith avatar Dec 04 '25 20:12 Amolith