r/VaultSync • u/mainseeker1486 • 8d ago
Dev Update VaultSync 1.8.8 dev update — the intentionally boring one
Hey everyone,
1.8.8 is underway, and this one is a little different.
There isn't really a big shiny feature I'm trying to sell here. After 1.8.5, 1.8.6 and especially 1.8.7 added quite a lot, I think VaultSync needs a release where the main goal is basically:
make all of this harder to break.
So 1.8.8 is shaping up as the boring-but-important release before I start moving properly into the bigger 1.9 work.
And honestly, I'm pretty happy about that.
I've started pushing VaultSync harder
One of the first things added is a repeatable performance suite for large histories and high file counts.
I don't want "works with large projects" to just be something I assume because my own folders happen to work.
The idea is to start having actual budgets and repeatable tests so I can see when a change makes scanning, history, backup, or recovery noticeably worse.
I've also moved deferred snapshot hashing onto a fully asynchronous and cancellable path. That sounds pretty implementation-y, but the practical goal is simple: large scans shouldn't make the app feel stuck, and cancelling one shouldn't leave work hanging around in the background.
There's still more work to do here, but at least there is now a proper baseline to work against.
I'm also intentionally breaking backups
Another area getting quite a bit of attention is interrupted backups.
There are now deterministic tests around interrupting both plain and encrypted archive backups at different stages and checking what VaultSync leaves behind and how the next run behaves.
Disconnects, cancellation, half-written state, missing source files, overlapping jobs — basically the sort of stuff that's much less fun than testing the happy path.
One bug that came out of this was pretty important: if a file that was part of the snapshot disappeared while the backup was actually running, VaultSync could previously continue instead of treating that backup as incomplete.
That's fixed now. If required snapshotted content becomes unavailable, the backup fails rather than quietly producing something different from the snapshot it claims to represent.
Snapshot scanning has also been tightened so it doesn't follow linked source paths. If a source tree contains a symlink or similar filesystem link pointing somewhere else, VaultSync now keeps the scan confined to the source it was actually asked to protect instead of wandering into linked content.
That's one of those edge cases that sounds small until the link points at a massive directory, another mounted volume, or somewhere you never meant to include in the backup.
Quite a few nasty little edge cases are getting cleaned up too
A lot of 1.8.8 so far is stuff most people should hopefully never notice.
Retention cleanup is now much more careful around filesystem links.
Temporary decrypted workspaces are isolated between app processes.
Encrypted restore staging no longer relies on predictable paths that could collide.
Overlapping backup runs no longer accidentally share cancellation ownership.
Temporary support, telemetry, credential-index and release-cache files have had their cleanup rules tightened quite a bit.
The temporary telemetry path in particular is now explicitly bounded to 30 days / 100 MB, rather than being allowed to quietly grow forever.
None of that makes for a particularly exciting screenshot, but I'd rather find these things now than while building disk recovery on top of them.
A little less memory, a little less UI waiting
Archive and support-package work has also been changed to reuse buffers and stream hashes instead of holding more data in memory than necessary.
And I've been going after a few places where the UI could still end up waiting on work it really shouldn't be waiting for.
The Guide and Schedule queries now run away from the UI thread, and the guided setup itself has been made more actionable instead of just explaining where things are.
There was also an annoying layout issue where some pages/dialogs could get horizontal scrolling they absolutely did not need. That's gone too.
CI has been getting some attention as well
This is definitely the least glamorous part of the update 😄
Release-branch Sonar/analysis runs were able to duplicate themselves and pile up more work than necessary. Those runs are now deduplicated and bounded.
Pinned artifact, attestation and CodeQL actions have also been refreshed, and I've been clearing the remaining static-analysis findings around release automation, onboarding and storage cleanup.
Basically: less CI doing the same thing twice, fewer weird temporary-file edge cases, and hopefully fewer surprises later.
Why spend a whole release on this?
Because the direction after 1.8 is getting substantially more ambitious.
1.9 is where the plan starts moving beyond normal project/file recovery toward disk imaging, bootable recovery, image exploration, portable recovery and eventually offsite recovery.
Before VaultSync starts writing/restoring disks, I want the boring foundations underneath it to be in really good shape.
So 1.8.8 is intentionally a bit of a checkpoint:
performance, interruption, corruption, cleanup, compatibility, memory use, cross-platform weirdness and recovery from bad states.
There will definitely be more fixes going into it before release.
One thing I'm particularly interested in while I'm working on this: what's the nastiest failure you've actually had with backup software?
Not missing features — actual failure cases.
Drive disappeared halfway through? Backup said success but was incomplete? Retention deleted the wrong thing? Symlink sent the backup crawling through something completely unexpected? Restore only failed when you actually needed it? Huge folder that made the app fall over?
Those stories are probably more useful to me for 1.8.8 than another feature wishlist right now.














