Repository navigation
Foresight v0.1.2 — exclude-rule editor and a preset save fix
An exclude-rule editor, and a fix for presets that quietly failed to save.
Exclude rules are a list now
Advanced → Exclude patterns was a single space-separated field, which made a whole class of rule impossible to write: My Documents/ split into two rules, My and Documents/, and neither matched anything. Since Foresight hands rsync an argv vector with no shell in between, that splitting was self-inflicted — nothing downstream ever needed it.
It's now a list: one row per rule, each with its own remove button, added by typing a rule and pressing Enter. The row header shows how many rules are active without opening it. Rules are trimmed of surrounding whitespace but otherwise passed whole, so My Documents/, Photos [2024], and weird;name all work. Duplicates are refused rather than silently doubled.
Fixed: presets that looked saved but weren't
A preset whose name contained [, ], a tab, or a line break was silently discarded on save. The name was used as a config-file section header, and those characters aren't legal there — so nothing was written.
The failure was invisible: the preset appeared in the dropdown, applied correctly, and kept working for the rest of the session. It was simply gone at the next launch, with no error anywhere. A preset called Photos [raw] was enough to trigger it.
Preset names are now stored as ordinary values, so no name can be unstorable.
Upgrading
If you installed from the repository, this arrives with:
flatpak updateIf you're on a bundle install, switch over once and updates come automatically from then on:
flatpak uninstall --user io.github.superuser_miguel.Foresight
flatpak install --user https://superuser-miguel.github.io/foresight/foresight.flatpakrefExisting presets load unchanged and are migrated to the new layout the next time you save one. Nothing to do by hand.
Two rsync behaviours worth knowing
Both are correct rsync, and both surprise people:
- Excluded files already in the destination are protected from Mirror deletions. If you exclude
*.tmp, old.tmpfiles sitting in the destination are kept, not removed. Add--delete-excludedunder Extra arguments if you want them gone. - A rule can't end in a space, since surrounding whitespace is trimmed. A file literally named
"report "can't be excluded by name.
How it ships
Sandboxed, reaching your files only through XDG portals — no --filesystem=home, no blanket host access. rsync 3.4.4 is bundled and version-pinned. No telemetry.
Built offline from the GPG-signed v0.1.2 tag against a vendored crate graph. Verify with git verify-tag v0.1.2 (key D67DB8E03D50A8C0).
Still to come
- Include rules —
--includealongside excludes, so a rule can carve an exception out of a broader one. - Remote sync over SSH. Network access and an
sshclient are already in place; still needed are agent forwarding so keys never enter the sandbox, a host-key trust story, and the endpoint UI.
Full changelog: v0.1.1...v0.1.2