Skip to content

Foresight v0.1.1 — predictable folder placement

Choose a tag to compare

@superuser-miguel superuser-miguel released this 29 Jul 14:37
· 53 commits to main since this release
v0.1.1

A bug-fix release, and it's one worth updating for: a folder you add now lands in the destination as that folder.

The fix

Previously, if a job's source was a single folder, Foresight handed rsync the trailing-slash form (rsync -a /photos/ /backup) — which copies the folder's contents into the destination rather than the folder itself. So dropping Photos onto a backup drive scattered its children loose across the drive's top level, mixed in with whatever was already there. The only way to get the folder you expected was to create it in the destination first.

Now every source is passed to rsync verbatim. Photos arrives as Photos. A file arrives as that file. This applies identically whether you drag items in, use Add Folders, or use Add Files — all three go through the same code path, and one function is still the only place a path becomes an rsync argument.

rsync's contents-mode is a legitimate workflow, so it isn't gone — it's just something you now ask for, under Advanced → Sync folder contents. It's only available when the job has exactly one folder as its source, since a trailing slash is meaningless otherwise.

Worth noting: nesting is also the safer default for Mirror deletions. With the folder passed verbatim, --delete can only prune inside the subfolder this transfer actually writes, never the wider destination.

Also in this release

  • What Foresight Can Do now opens with a plain-language note on where your files land, so the placement rule is stated in the app rather than learned by surprise.
  • The change is covered by unit tests on the argument builder plus an end-to-end test driving real rsync, which asserts the contents don't spill.

Installing / upgrading

Foresight now has its own signed repository, so this is the last release you
have to install by hand — from here on, new versions arrive with flatpak update:

flatpak install --user https://superuser-miguel.github.io/foresight/foresight.flatpakref

That adds the remote and installs the app in one step. If you already have 0.1.0
from a bundle, uninstall it first (flatpak uninstall --user io.github.superuser_miguel.Foresight) —
a bundle install has no origin, so it can't be upgraded in place.

The Foresight.flatpak bundle below is still published for offline or air-gapped
installs, but it stays un-updatable by nature.

Saved presets carry over. Presets saved under 0.1.0 load with Sync folder contents off — matching the new, predictable behaviour rather than silently reproducing the old spill.

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.

The bundle is built offline from the GPG-signed v0.1.1 tag against a vendored crate graph. Verify the tag with git verify-tag v0.1.1 (key D67DB8E03D50A8C0).

Still to come

  • Remote sync over SSH has no UI yet — the engine and sandbox already carry it, only the user@host:/path endpoint is missing.
  • Excludes are a single space-separated field, not a managed list.

Full changelog: v0.1.0...v0.1.1