Skip to content

Release history

Vykar releases

Fast, encrypted, deduplicated backups

All releases

47 shown

Upgrade now
v0.16.1 Bug fix
Dependencies

Prune fix + SFTP log change

v0.16.0 Bug fix

Fixed backup performance regression on iCloud-heavy macOS trees by skipping `getxattr` on dataless inodes.

Full changelog

Bug fixes

  • Backup performance on iCloud-heavy macOS trees: skip getxattr on dataless inodes. The walker was round-tripping to fileproviderd for every cloud-managed file, serializing the pipeline; dataless xattrs are already supplied by the parent snapshot or skipped entirely. (#133)
  • GUI: surface previously-swallowed config-read and tmp-cleanup errors via the in-app log channel instead of let _ = dropping them silently.
  • Linux quota syscalls: switch FFI pointer casts to ptr::from_mut to satisfy Rust 1.95 clippy::pedantic on Linux-only code paths.

Reliability & code quality

  • Crypto: MasterKey::generate now propagates OsRng failures instead of panicking — relevant for sandboxed/container environments where kernel entropy may be temporarily unavailable.
  • Storage: document that synchronous StorageBackend methods (notably SFTP) may block on a Tokio runtime internally and must not be invoked from inside an async context.
  • Workspace lints: tighten clippy policy across all crates — deny unwrap_used, panic, panic_in_result_fn, cast_precision_loss, unsafe_code (per-module opt-in with SAFETY comments), enable pedantic with a focused allowlist. ~94 files adapted; lossy as-casts replaced with checked integer math.
  • Types: encapsulate ChunkId / PackId / SnapshotId newtypes behind from_bytes() / as_bytes(); drop the unused VykarError::Storage variant.
  • CLI: split main.rs into lib.rs + helpers, introduce a thiserror-based CliError, group run_backup arguments into BackupRunOpts.
  • Core: gate BudgetGuard and dead helpers on cfg(test), drop avoidable clones in pending-index recovery, document blocking sleeps in session/lock helpers.
  • GUI: refactor UI state models; split megamodules into focused submodules.

Infrastructure

  • CI now runs lint, test, and docs on pull requests, not just post-merge.

Downloads

| Platform | Asset |
| --- | --- |
| Linux x86_64 (glibc) | vykar-v0.16.0-x86_64-unknown-linux-gnu.tar.gz |
| Linux x86_64 (musl, static) | vykar-v0.16.0-x86_64-unknown-linux-musl.tar.gz |
| Linux aarch64 (glibc) | vykar-v0.16.0-aarch64-unknown-linux-gnu.tar.gz |
| Linux aarch64 (musl, static) | vykar-v0.16.0-aarch64-unknown-linux-musl.tar.gz |
| macOS Apple Silicon | vykar-v0.16.0-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vykar-v0.16.0-x86_64-pc-windows-msvc.zip |
| GUI (Linux AppImage) | vykar-gui-v0.16.0-x86_64.AppImage |

SHA256 checksums are attached as SHA256SUMS.

Full changelog: v0.15.0...v0.16.0

v0.15.0 Bug fix
Notable features
  • Check reports snapshot items affected by missing packs
  • Check item-granular repair drops bad items while preserving the snapshot
  • Backup handles macOS dataless iCloud files cleanly
Full changelog

Features

  • Check: report snapshot items affected by missing packs, so you can see exactly what's lost (#122)
  • Check: item-granular repair drops bad items but preserves the snapshot, instead of failing the whole snapshot (#123)
  • Backup: handle macOS dataless (cloud-only) iCloud files cleanly
  • GUI: snapshots table now defaults to newest-first (#126)

Bug Fixes

  • Backup: skip Windows unsupported reparse points and cloud-file errors with a path-bearing warning instead of aborting (#127)
  • GUI: open the config file in the system editor on Linux/Windows (#125)
  • Check: honest existence-progress reporting and a TOCTOU hint when sizes mismatch
  • Limits: renice all threads on Linux, not just the calling task

Infrastructure

  • Windows signing: pin SimplySign Desktop 2.9.14, dismiss the version-check modal, surface keytool errors instead of silencing them, and capture CI screenshots
  • Satisfy clippy 1.95 lints

Downloads

| Platform | Artifact |
|---|---|
| Linux x86_64 (glibc) | vykar-v0.15.0-x86_64-unknown-linux-gnu.tar.gz |
| Linux x86_64 (musl) | vykar-v0.15.0-x86_64-unknown-linux-musl.tar.gz |
| Linux aarch64 (glibc) | vykar-v0.15.0-aarch64-unknown-linux-gnu.tar.gz |
| Linux aarch64 (musl) | vykar-v0.15.0-aarch64-unknown-linux-musl.tar.gz |
| macOS aarch64 | vykar-v0.15.0-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vykar-v0.15.0-x86_64-pc-windows-msvc.zip |
| Linux GUI (AppImage) | vykar-gui-v0.15.0-x86_64.AppImage |

v0.14.1 New feature
⚠ Upgrade required
  • --http-listen defaults to loopback only; use `--http-allow-public` or `VYKAR_HTTP_ALLOW_PUBLIC=1` to bind publicly
  • Endpoints: `/` (HTML), `/healthz` (text liveness probe), `/api/status.json` (JSON)
Notable features
  • Daemon web UI (`vykar daemon --http-listen`) providing HTML, healthz, and JSON endpoints
  • Auto‑routing slash patterns to path globs for find‑files (e.g., `/etc/**`)
  • Redesigned GUI: find‑files results layout reorganized and snapshot table columns reorderable with a wider time column
Full changelog

Fixes a few issues that came up with recent GUI features and adds the first version of a web UI.

Features

  • Daemon web UI (feat(daemon)): vykar daemon now exposes an optional read-only HTTP status page mirroring the GUI overview — process info, schedule, per-repo stats, recent snapshots, last cycle outcome, and an expandable sources list. Auto-refreshes every 30s and re-renders after every backup cycle / SIGHUP. No actions, no auth, no JS.

    Run it with:

    vykar daemon --http-listen 127.0.0.1:7575
    # or via env var (matches the Docker recipe):
    VYKAR_HTTP_LISTEN=127.0.0.1:7575 vykar daemon
    

    Endpoints: GET / (HTML), GET /healthz (plain text liveness probe), GET /api/status.json (JSON). Non-loopback binds are rejected at startup unless --http-allow-public (or VYKAR_HTTP_ALLOW_PUBLIC=1) is also set — front it with a reverse proxy if exposing publicly.

  • Find files: slash patterns are now auto-routed to path globs, so /etc/** does what you'd expect without an explicit flag.

  • GUI: redesigned find-files results layout, snapshot table column reorder with a wider time column.

Bug Fixes

  • GUI: don't highlight the repo row when a sub-item is selected.
  • GUI: pack find-files result groups at the top of the scroll view instead of stretching to fill.

Downloads

| Platform | File |
| --- | --- |
| Linux x86_64 (musl) | vykar-v0.14.1-x86_64-unknown-linux-musl.tar.gz |
| Linux x86_64 (gnu) | vykar-v0.14.1-x86_64-unknown-linux-gnu.tar.gz |
| Linux aarch64 (musl) | vykar-v0.14.1-aarch64-unknown-linux-musl.tar.gz |
| Linux aarch64 (gnu) | vykar-v0.14.1-aarch64-unknown-linux-gnu.tar.gz |
| macOS aarch64 | vykar-v0.14.1-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vykar-v0.14.1-x86_64-pc-windows-msvc.zip |
| Linux GUI (AppImage) | vykar-gui-v0.14.1-x86_64.AppImage |

SHA256 checksums are attached as *.sha256 siblings.

v0.14.0 Breaking risk
Notable features
  • GUI & CLI `diff` command to compare files between snapshots with size deltas
  • Multi-row selection and batch delete on the Snapshots page in the GUI
  • Grouped find results by snapshot for easier scanning in the GUI
Full changelog

Features

  • GUI + CLI diff command: compare regular files between two snapshots (added, removed, modified, with size deltas).
  • GUI – multi-row selection and batch delete on the Snapshots page.
  • GUI – grouped find results by snapshot for easier scanning.

Reliability & Correctness

  • Symlink validation on restore: validates symlink targets and warns on unsafe ones (absolute or escaping the restore root).
  • restore --verify: optional plaintext chunk hash check during restore for end-to-end integrity verification.
  • Harden stale lock crash recovery so a crashed maintenance run no longer blocks subsequent operations.
  • Harden backup reads against TOCTOU races between stat and open.
  • Bound non-segmented reads to pre_meta.size + 1 to detect files growing during backup.
  • Validate Item::size invariant during restore + check; surface metadata failures as errors instead of silently corrupting output.
  • Harden pack offset arithmetic against corrupted indexes.
  • Enforce the durable commit boundary via the type system (refactor(commit)).
  • Surface post-commit failures as warnings rather than aborting the snapshot.
  • Surface command_dump failures as typed errors instead of expect() panics.

Refactors

  • Split backup/pipeline.rs into orchestrator + stage submodules.
  • Split commands/restore.rs into phase submodules; stream restore in bounded batches.
  • Drop redundant clones on backup/restore hot paths.

Bug Fixes

  • GUI: write config files with owner-only permissions (0600).
  • GUI: rephrase prune dialog to avoid tinyfd quote-rejection on Windows.
  • core: format byte counts in daemon-visible summary logs.
  • storage: drain PUT request body in s3_backend test mocks (test stability).

Infrastructure

  • Stop stress test scripts on first failure.
  • Gate the absolute-symlink warning test to Unix.

Downloads

| Platform | Artifact |
|---|---|
| Linux x86_64 (glibc) | vykar-v0.14.0-x86_64-unknown-linux-gnu.tar.gz |
| Linux x86_64 (musl) | vykar-v0.14.0-x86_64-unknown-linux-musl.tar.gz |
| Linux aarch64 (glibc) | vykar-v0.14.0-aarch64-unknown-linux-gnu.tar.gz |
| Linux aarch64 (musl) | vykar-v0.14.0-aarch64-unknown-linux-musl.tar.gz |
| Linux GUI (AppImage) | vykar-gui-v0.14.0-x86_64.AppImage |
| macOS aarch64 | vykar-v0.14.0-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vykar-v0.14.0-x86_64-pc-windows-msvc.zip |

v0.13.0 Breaking risk
Breaking changes
  • Tabs and multi-window UI removed; pages now split into `ui/components/` and `ui/pages/`
Notable features
  • New sidebar-driven layout with repo‑name persistence, Overview shows newest three snapshots, in‑window Cancel button
  • WebDAV _Mount_ button on Overview (whole repo) and Snapshots (single snapshot) binds to localhost, opens browser, provides Stop link
Full changelog

Features

  • GUI: New sidebar-driven layout. Tabs and multi-window are gone; pages are now split into ui/components/ and ui/pages/, repo selection persists by name (survives reordering/renaming), Overview shows the newest three snapshots, an in-window Cancel button mirrors the tray path, and Page is now a typed enum shared between Slint and Rust (4610137).
  • GUI: Browse snapshots via WebDAV. A new Mount button on Overview (whole repo) and Snapshots (single snapshot) binds 127.0.0.1:0, opens the default browser at the bound URL, and shows a footer banner with a clickable link and Stop button (2dac663).

Performance

  • File cache: ~33% smaller on disk and in RAM. The save path is now zstd-compressed behind a new FORMAT_VERSION_BYTE 0x10, csize is no longer cached (rehydrated from the index at commit), and single-chunk entries are inlined via a custom serde codec that emits the same wire format as Vec<CachedChunkRef> with zero Vec allocation on deserialize. Measures 63 B/entry on disk on a 10k-entry regression test (was ~95 B) (806d24b).

Bug Fixes

  • Scheduler survives system sleep. Both GUI and daemon schedulers stored next_run as Instant; on macOS and Linux monotonic clocks freeze during sleep, so a 2h interval effectively restarted from wake. next_run is now SystemTime, and each wait is capped at 60s so the loop re-evaluates wall-clock state within a minute of wake. Fixes #110 (9276384).
  • Sessions reap stale markers at 45 min with an independent heartbeat. Long-running backups on one host could block maintenance on another for up to 72h. A dedicated SessionGuard heartbeat thread replaces pipeline-driven refreshes, refresh_session is now non-resurrecting, and VykarError::ActiveSessions now carries host/pid/age plus a structural None for malformed markers so maintenance fails closed. Fixes #107 (2c7a393).
  • File cache: drop hardcoded 256 MiB plausibility cap. A ~714 MiB cache on a host backing up /srv/mail + /srv/nextcloud/data was silently rejected every run, costing ~7 min of parent-reuse rebuild per backup. Cap removed; decode outcomes are now split into Loaded / Rejected / Malformed so rejections and parse failures log distinctly (49a1ea3).
  • Retry: default backoff widened to ~70s. max_retries raised from 3 to 5 and retry_delay_ms from 1000 to 1500, so cumulative backoff (base 47s, max 93s with jitter) can ride out a typical WiFi reconnect after laptop sleep. Healthy connections are unaffected (0a48b13).

Downloads

| Platform | Artifact |
| --- | --- |
| Linux x86_64 (glibc) | vykar-v0.13.0-x86_64-unknown-linux-gnu.tar.gz |
| Linux x86_64 (musl) | vykar-v0.13.0-x86_64-unknown-linux-musl.tar.gz |
| Linux aarch64 (glibc) | vykar-v0.13.0-aarch64-unknown-linux-gnu.tar.gz |
| Linux aarch64 (musl) | vykar-v0.13.0-aarch64-unknown-linux-musl.tar.gz |
| Linux GUI | vykar-gui-v0.13.0-x86_64.AppImage |
| macOS aarch64 | vykar-v0.13.0-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vykar-v0.13.0-x86_64-pc-windows-msvc.zip |

v0.12.15 Bug fix

Fixed restoration of file and symlink source paths.

Full changelog

Bug Fixes

  • Restore file and symlink source paths via unified root policy (8d9862b)

Infrastructure

  • Eliminate APPIMAGE env race in GUI autostart tests (f3a1b0f)

Downloads

| Platform | Artifact |
| --- | --- |
| Linux x86_64 (glibc) | vykar-v0.12.15-x86_64-unknown-linux-gnu.tar.gz |
| Linux x86_64 (musl) | vykar-v0.12.15-x86_64-unknown-linux-musl.tar.gz |
| Linux aarch64 (glibc) | vykar-v0.12.15-aarch64-unknown-linux-gnu.tar.gz |
| Linux aarch64 (musl) | vykar-v0.12.15-aarch64-unknown-linux-musl.tar.gz |
| Linux GUI | vykar-gui-v0.12.15-x86_64.AppImage |
| macOS aarch64 | vykar-v0.12.15-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vykar-v0.12.15-x86_64-pc-windows-msvc.zip |

v0.12.14 New feature
Notable features
  • GUI autostart and start‑in‑background settings
  • Window tree view now shows source paths
  • CLI command to delete multiple snapshots in one operation
Full changelog

Features

  • GUI: New autostart and start-in-background settings (#82).
  • GUI: Restore window tree view now shows source paths (#57).
  • CLI: --repo / --source options on the bare command; unavailable repos are skipped instead of aborting.
  • CLI: Delete multiple snapshots in a single command (#87).
  • Backup: Verbose logging fixed for the bare vykar command; excluded files are now logged (#73).

Bug Fixes

  • Mount: Recover from a poisoned mutex in the WebDAV read path instead of deadlocking.
  • GUI: Tray Open/Quit stays responsive during startup refresh.
  • Deps: Bumped all dependencies; fixes the aws-lc-sys build failure (#90).

Internal

  • Consolidated filesystem walkers across platforms (#101).
  • Unified entry materialization across the pipeline and sequential backup paths.
  • Split worker.rs megaswitch (GUI) and repo/mod.rs facade into focused submodules.
  • Privatized core chunker and limits modules; trimmed default features and narrowed hook error types.
  • Bundled oversized parameter lists into context structs across pipeline and GUI.

Infrastructure

  • CI now runs the full test suite on Linux, macOS, and Windows (#102).

Downloads

| Platform | Artifact |
| --- | --- |
| Linux x86_64 (glibc) | vykar-v0.12.14-x86_64-unknown-linux-gnu.tar.gz |
| Linux x86_64 (musl) | vykar-v0.12.14-x86_64-unknown-linux-musl.tar.gz |
| Linux aarch64 (glibc) | vykar-v0.12.14-aarch64-unknown-linux-gnu.tar.gz |
| Linux aarch64 (musl) | vykar-v0.12.14-aarch64-unknown-linux-musl.tar.gz |
| Linux GUI (AppImage) | vykar-gui-v0.12.14-x86_64.AppImage |
| macOS (Apple Silicon) | vykar-v0.12.14-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vykar-v0.12.14-x86_64-pc-windows-msvc.zip |

v0.12.13 New feature
Notable features
  • Linux desktop AppImage packaging added
  • CLI `backup` subcommand gains `--threads` option for parallelism control
  • Nix flake packaging introduced
Full changelog

What's Changed

Features

  • GUI: Add AppImage packaging for Linux desktop
  • CLI: Add --threads option to backup subcommand for controlling upload parallelism
  • Nix: Add Nix flake packaging — by @Sntx626 (#96)

Bug Fixes

  • GUI: Move folder dialog off Slint event loop to prevent Windows freeze

Internal

  • Extract shared utilities into vykar-common crate
  • Deduplicate code and fix anti-patterns across workspace
  • Inline redundant CLI output helpers

Downloads

| Platform | File |
|---|---|
| Linux x86_64 (glibc) | vykar-v0.12.13-x86_64-unknown-linux-gnu.tar.gz |
| Linux x86_64 (musl) | vykar-v0.12.13-x86_64-unknown-linux-musl.tar.gz |
| Linux aarch64 (glibc) | vykar-v0.12.13-aarch64-unknown-linux-gnu.tar.gz |
| Linux aarch64 (musl) | vykar-v0.12.13-aarch64-unknown-linux-musl.tar.gz |
| Linux x86_64 AppImage | vykar-gui-v0.12.13-x86_64.AppImage |
| macOS aarch64 | vykar-v0.12.13-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vykar-v0.12.13-x86_64-pc-windows-msvc.zip |

v0.12.12 New feature
Notable features
  • Version number displayed in GUI status bar
Full changelog

GUI improvements and Windows runtime fix.

Features

  • GUI: show version number in the status bar

Bug Fixes

  • GUI: invert tray icon on dark themes for Linux/Windows
  • Windows: statically link MSVC C runtime to avoid missing DLL errors on systems without Visual C++ Redistributable

Downloads

| Platform | File |
|----------|------|
| Linux x86_64 (static) | vykar-v0.12.12-x86_64-unknown-linux-musl.tar.gz |
| Linux x86_64 (glibc, GUI) | vykar-v0.12.12-x86_64-unknown-linux-gnu.tar.gz |
| Linux aarch64 (static) | vykar-v0.12.12-aarch64-unknown-linux-musl.tar.gz |
| Linux aarch64 (glibc) | vykar-v0.12.12-aarch64-unknown-linux-gnu.tar.gz |
| macOS Apple Silicon | vykar-v0.12.12-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vykar-v0.12.12-x86_64-pc-windows-msvc.zip |

v0.12.11 New feature
Notable features
  • Added `env_file` config key to load `.env` files before variable expansion
  • Windows binaries are now Authenticode-signed via Certum SimplySign (PKCS#11)
Full changelog

Fixes Windows and Linux platform issues, adds env_file config support, and introduces Windows Authenticode code signing.

Features

  • Add env_file config key to load .env files before variable expansion
  • Windows binaries are now Authenticode-signed via Certum SimplySign (PKCS#11)

Bug Fixes

  • SFTP: use POSIX path joins to prevent backslash path separators leaking into remote paths on Windows
  • GUI: run tray icon on a dedicated GTK thread to fix Linux tray rendering issues (#69)
  • Daemon: release glibc malloc arenas after each backup cycle to reduce RSS on long-running daemons

Docs

  • Add Windows path quoting examples to config docs and templates
  • Note that local repo paths need ReadWritePaths= in systemd unit files
  • Use correct XDG paths in systemd service example

Downloads

| Platform | File |
|----------|------|
| Linux x86_64 (static) | vykar-v0.12.11-x86_64-unknown-linux-musl.tar.gz |
| Linux x86_64 (glibc, GUI) | vykar-v0.12.11-x86_64-unknown-linux-gnu.tar.gz |
| Linux aarch64 (static) | vykar-v0.12.11-aarch64-unknown-linux-musl.tar.gz |
| Linux aarch64 (glibc) | vykar-v0.12.11-aarch64-unknown-linux-gnu.tar.gz |
| macOS Apple Silicon | vykar-v0.12.11-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vykar-v0.12.11-x86_64-pc-windows-msvc.zip |

v0.12.10 Bug fix
Notable features
  • Sortable columns added to WebDAV directory listings
Full changelog

This release mainly addresses rendering issues of the GUI client on Windows.

Features

  • Add sortable columns to WebDAV directory listings in mount (#60)

Bug Fixes

  • Replace tinyfiledialogs password box with native Slint dialog (#55)
  • Switch GUI renderer from FemtoVG to Skia for native font rendering (#55)
  • Show error dialog on GUI startup failure instead of silent exit
  • Use ASCII hyphens in dialog titles for Windows compatibility
  • Remove checksum verification from install script (broken by missing SHA256SUMS)

Infrastructure

  • Fix boolean type for publish_release workflow input

Downloads

| Platform | File |
|----------|------|
| Linux x86_64 (static) | vykar-v0.12.10-x86_64-unknown-linux-musl.tar.gz |
| Linux x86_64 (glibc, GUI) | vykar-v0.12.10-x86_64-unknown-linux-gnu.tar.gz |
| Linux aarch64 (static) | vykar-v0.12.10-aarch64-unknown-linux-musl.tar.gz |
| Linux aarch64 (glibc) | vykar-v0.12.10-aarch64-unknown-linux-gnu.tar.gz |
| macOS Apple Silicon | vykar-v0.12.10-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vykar-v0.12.10-x86_64-pc-windows-msvc.zip |

v0.12.9 Breaking risk
Breaking changes
  • Removed redundant SHA256 checksum files from releases
Notable features
  • Improved snapshot list with stats, grouping, and honest error handling
Full changelog

Features

  • Improved snapshot list with stats, grouping, and honest error handling (#53)

Bug Fixes

  • Fix tooltip z-order and cursor overlap in GUI (#56)
  • Upgrade Slint 1.13 → 1.15 to fix Windows font rendering

Dependencies

  • Bump 7 breaking dependencies: ureq 3, russh 0.58, nix 0.31, lz4_flex 0.13, lru 0.16, dav-server 0.11, windows-sys 0.61

Infrastructure

  • Add unit tests for S3 backend and http_util
  • Remove redundant SHA256 checksum files from releases

Downloads

| Platform | File |
|----------|------|
| Linux x86_64 (static) | vykar-v0.12.9-x86_64-unknown-linux-musl.tar.gz |
| Linux x86_64 (glibc, GUI) | vykar-v0.12.9-x86_64-unknown-linux-gnu.tar.gz |
| Linux aarch64 (static) | vykar-v0.12.9-aarch64-unknown-linux-musl.tar.gz |
| Linux aarch64 (glibc) | vykar-v0.12.9-aarch64-unknown-linux-gnu.tar.gz |
| macOS Apple Silicon | vykar-v0.12.9-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vykar-v0.12.9-x86_64-pc-windows-msvc.zip |

v0.12.8 Bug fix
Notable features
  • GUI lazy-create subwindows and FemtoVG rendering
  • Config options `check.max_percent` and `check.full_every` for fine‑grained scheduling
Full changelog

Features

  • Check config options check.max_percent and check.full_every for fine-grained check scheduling (7e50787)
  • GUI: lazy-create subwindows, fix stale-tree race, switch rendering to FemtoVG (ba7750d)

Performance

  • Fix O(n²) index reconcile, add fast-path commit, reduce cache rebuilds (d0bad6a)
  • Pre-size FileCache HashMap to eliminate resize doublings (3774231)
  • Skip idle progress updates and repeated lookup work (044bafd)
  • Consume PathBuf instead of copying for walk abs_path (1f9be7e)
  • Auto-size worker threads by backend locality (1036684)
  • Use Arc<Vec<ChunkRef>> for shared cache-hit ownership (800ef67)

Bug Fixes

  • Make vykar-dumps visible and guard against path collisions (dbc7e2b)
  • CI: build slim Docker image last so it appears default on GHCR (f3de13a)

Refactor

  • Consolidate repo open functions into OpenOptions builder (66cf45a)
  • Deduplicate and rename duration parsers (983e4d1)

Other

  • Revert mimalloc allocator from GUI binary (ed00d99)
  • Docs: add Ansible role install option (c2e1768), merge reference tables inline (2df9525)

Downloads

| Platform | Archive |
|----------|---------|
| Linux x86_64 (musl) | vykar-v0.12.8-x86_64-unknown-linux-musl.tar.gz |
| Linux x86_64 (glibc) | vykar-v0.12.8-x86_64-unknown-linux-gnu.tar.gz |
| Linux aarch64 (musl) | vykar-v0.12.8-aarch64-unknown-linux-musl.tar.gz |
| Linux aarch64 (glibc) | vykar-v0.12.8-aarch64-unknown-linux-gnu.tar.gz |
| macOS Apple Silicon | vykar-v0.12.8-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vykar-v0.12.8-x86_64-pc-windows-msvc.zip |

Checksums in SHA256SUMS.

v0.12.7 New feature
Notable features
  • Inode-sorted walker for Linux reduces disk seeks on rotational media
  • Hybrid file cache keyed by canonicalized source paths with parent‑snapshot fallback, hardened against corruption and torn writes
  • SIGUSR1 ad‑hoc backup trigger for the daemon
Full changelog

Features

  • Inode-sorted walker for Linux with per-directory filesystem detection — reduces disk seeks on rotational media (937d954, 1163f3c)
  • Hybrid file cache keyed by individual canonicalized source paths with parent-snapshot fallback, hardened against abort corruption and torn writes (64d15aa, 153ad7c, 97f775b, 6178599)
  • SIGUSR1 ad-hoc backup trigger for the daemon (08838dd)
  • GUI: date column in Log tab, sorted newest-first (dc0aa01)
  • Docker: apprise variant image for hook notifications (e74bd1e)
  • File cache lifecycle diagnostics at info level (8edf355)

Performance

  • Skip file cache load for command-dump-only sources (ca2d765)

Bug Fixes

  • Eliminate idle CPU usage in GUI from Slint animation driver and polling loops (d76ddd8, b468abe)
  • Make parent snapshot matching order-independent (9ea8c45)
  • Use u64 for statfs magic constants to compile on musl (1a52d6c)
  • Use short hostname to avoid network-dependent FQDNs (8d89d03)

Documentation

  • Document compression defaults and CLI override (5b8e597)
  • Consistent label-first ordering in sources docs (a4f51a5)

Downloads

| Platform | Archive |
|----------|---------|
| Linux x86_64 (musl) | vykar-v0.12.7-x86_64-unknown-linux-musl.tar.gz |
| Linux x86_64 (glibc) | vykar-v0.12.7-x86_64-unknown-linux-gnu.tar.gz |
| Linux aarch64 (musl) | vykar-v0.12.7-aarch64-unknown-linux-musl.tar.gz |
| Linux aarch64 (glibc) | vykar-v0.12.7-aarch64-unknown-linux-gnu.tar.gz |
| macOS Apple Silicon | vykar-v0.12.7-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vykar-v0.12.7-x86_64-pc-windows-msvc.zip |

Checksums in SHA256SUMS.

v0.12.6 New feature
Notable features
  • S3: Added soft-delete mode for Object Lock compatibility.
  • Core: Coalesce pack range reads to speed up item-stream loading.
  • GUI: Cmd-W / Ctrl-W shortcut now closes window to tray.
Full changelog

What's Changed

Features

  • S3: Add soft-delete mode for S3 Object Lock compatibility
  • Core: Coalesce pack range reads for faster item-stream loading
  • GUI: Add Cmd-W / Ctrl-W shortcut to close window to tray

Bug Fixes

  • S3: Add Content-MD5 and Content-Type to presigned PUT requests
  • GUI: Refresh repo details after backup and snapshot deletion

Downloads

| Platform | Archive |
|----------|---------|
| Linux x86_64 (glibc) | vykar-v0.12.6-x86_64-unknown-linux-gnu.tar.gz |
| Linux x86_64 (musl) | vykar-v0.12.6-x86_64-unknown-linux-musl.tar.gz |
| Linux aarch64 (glibc) | vykar-v0.12.6-aarch64-unknown-linux-gnu.tar.gz |
| Linux aarch64 (musl) | vykar-v0.12.6-aarch64-unknown-linux-musl.tar.gz |
| macOS Apple Silicon | vykar-v0.12.6-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vykar-v0.12.6-x86_64-pc-windows-msvc.zip |
| Docker | ghcr.io/borgbase/vykar:0.12.6 |

SHA256 checksums are available in SHA256SUMS and per-artifact .sha256 files.

v0.12.5 New feature
Notable features
  • GUI: Sources tab rows are expandable for better overview
  • Docker image now bundles curl, jq, and bash to support hook execution
Full changelog

What's Changed

Features

  • GUI: Add expandable source rows in Sources tab for better overview
  • Docker: Add curl, jq, and bash to Docker image for hook support

Bug Fixes

  • Core: Move hook orchestration to core so hooks run from all clients (CLI and GUI)
  • Core: Treat EIO (os error 5) as a soft/skippable backup error
  • GUI: Use display-width-aware truncation to prevent panic on multi-byte filenames
  • GUI: Improve restore dialog UX with busy state, completion feedback, and cancellable distinction

Improvements

  • GUI: Restructure with idiomatic Slint architecture

Documentation

  • Clarify crypto design, add architecture rationale, update roadmap
  • Restructure Exclude Patterns section for clarity
  • Add network-aware backup recipes

Downloads

| Platform | Archive |
|----------|---------|
| Linux x86_64 (glibc) | vykar-v0.12.5-x86_64-unknown-linux-gnu.tar.gz |
| Linux x86_64 (musl) | vykar-v0.12.5-x86_64-unknown-linux-musl.tar.gz |
| Linux aarch64 (glibc) | vykar-v0.12.5-aarch64-unknown-linux-gnu.tar.gz |
| Linux aarch64 (musl) | vykar-v0.12.5-aarch64-unknown-linux-musl.tar.gz |
| macOS Apple Silicon | vykar-v0.12.5-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vykar-v0.12.5-x86_64-pc-windows-msvc.zip |
| Docker | ghcr.io/borgbase/vykar:0.12.5 |

SHA256 checksums are available in SHA256SUMS and per-artifact .sha256 files.

v0.12.4 Bug fix

Fixed S3 LIST response decoding and removed buggy lock acquisition retry logic.

Full changelog

Bug Fixes

  • Fix S3 LIST response key decoding for Garage compatibility (#29). rusty_s3 sends encoding-type=url with ListObjectsV2 but never decodes the response. Garage URL-encodes / as %2F, which broke all list() operations (locks, snapshots, packs, sessions). Keys are now percent-decoded after XML parsing. This is a no-op for backends that don't encode (AWS S3, MinIO).
  • Remove lock acquisition LIST retry loop that was based on an incorrect eventual-consistency diagnosis. Add a non-panic fallback for the edge case where LIST doesn't return a just-written key.

Downloads

| Platform | Archive |
|----------|---------|
| Linux x86_64 (glibc) | vykar-v0.12.4-x86_64-unknown-linux-gnu.tar.gz |
| Linux x86_64 (musl) | vykar-v0.12.4-x86_64-unknown-linux-musl.tar.gz |
| Linux aarch64 (glibc) | vykar-v0.12.4-aarch64-unknown-linux-gnu.tar.gz |
| Linux aarch64 (musl) | vykar-v0.12.4-aarch64-unknown-linux-musl.tar.gz |
| macOS aarch64 | vykar-v0.12.4-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vykar-v0.12.4-x86_64-pc-windows-msvc.zip |
| Docker | ghcr.io/borgbase/vykar:0.12.4 |

v0.12.3 Breaking risk
Breaking changes
  • Renamed GUI action from "Backup All" to "Full Backup"
  • Removed per‑repository Check and Compact buttons
Notable features
  • Added tooltips for the Full Backup option
  • Daemon multi‑repo output now includes a prominent header and URL link
Full changelog

Features

  • Rename "Backup All" to "Full Backup" in GUI, add tooltips, remove per-repo Check/Compact buttons
  • Improve daemon multi-repo output with prominent header and URL (#30)

Bug Fixes

  • Fix snapshot view showing only selected repo after Full Backup (#31)
  • Handle S3 eventual consistency on lock acquire and improve lock error display (#29)

Infrastructure

  • Fix release publish job failing due to Docker buildx cache artifact interfering with artifact download

Downloads

| Platform | File |
|----------|------|
| Linux x86_64 (glibc) | vykar-v0.12.3-x86_64-unknown-linux-gnu.tar.gz |
| Linux x86_64 (musl) | vykar-v0.12.3-x86_64-unknown-linux-musl.tar.gz |
| Linux aarch64 (glibc) | vykar-v0.12.3-aarch64-unknown-linux-gnu.tar.gz |
| Linux aarch64 (musl) | vykar-v0.12.3-aarch64-unknown-linux-musl.tar.gz |
| macOS aarch64 | vykar-v0.12.3-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vykar-v0.12.3-x86_64-pc-windows-msvc.zip |
| Docker | ghcr.io/borgbase/vykar:0.12.3 |

v0.12.2 Bug fix
Notable features
  • Coverage‑guided fuzz tests for parser and crypto paths
  • SIGHUP‑based config hot‑reload in daemon mode
  • Docker image published to GHCR on release
Full changelog

Bug Fixes

  • Display CLI timestamps in local timezone instead of UTC
  • Auto-refresh snapshot view after backup completes in GUI
  • Handle inconsistent SFTP status codes in mkdir_p for symlinks

Features

  • Add coverage-guided fuzz tests for parser and crypto paths
  • Add SIGHUP-based config hot-reload for daemon mode
  • Add Docker image published to GHCR on release

Documentation

  • Add Testing section to architecture page

Downloads

| Platform | File |
|----------|------|
| Linux x86_64 (musl) | vykar-v0.12.2-x86_64-unknown-linux-musl.tar.gz |
| Linux x86_64 (glibc) | vykar-v0.12.2-x86_64-unknown-linux-gnu.tar.gz |
| Linux aarch64 (musl) | vykar-v0.12.2-aarch64-unknown-linux-musl.tar.gz |
| Linux aarch64 (glibc) | vykar-v0.12.2-aarch64-unknown-linux-gnu.tar.gz |
| macOS Apple Silicon | vykar-v0.12.2-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vykar-v0.12.2-x86_64-pc-windows-msvc.zip |
| Docker | ghcr.io/borgbase/vykar:0.12.2 |

v0.12.1 New feature
Notable features
  • New `check --repair` mode automatically fixes issues detected by `vykar check`
Full changelog

What's Changed

Features

  • check --repair: New repair mode for vykar check that automatically fixes detected issues, plus unified scan pipelines for consistency (c70e534)

Bug Fixes

  • Accept both strings and lists for global/repo hook values in config (901e5c5)
  • Suppress misleading plaintext passphrase warning when passcommand is used (bbc24a7)

Testing

  • Add proptest and matrix-style tests for compression, index delta, prune, and deserialize (cd790b8)
  • Verify passcommand handles shell quoting via sh -c (c00ba40)

Docs

  • Add mermaid diagrams to architecture page and style globally (ef495fe)
  • Restructure comparison into security, operations, and UX tables (05b27c2)

Downloads

| Platform | File |
|---|---|
| macOS (Apple Silicon) | vykar-v0.12.1-aarch64-apple-darwin.tar.gz |
| Linux x86_64 (glibc) | vykar-v0.12.1-x86_64-unknown-linux-gnu.tar.gz |
| Linux x86_64 (musl) | vykar-v0.12.1-x86_64-unknown-linux-musl.tar.gz |
| Linux aarch64 (glibc) | vykar-v0.12.1-aarch64-unknown-linux-gnu.tar.gz |
| Linux aarch64 (musl) | vykar-v0.12.1-aarch64-unknown-linux-musl.tar.gz |
| Windows x86_64 | vykar-v0.12.1-x86_64-pc-windows-msvc.zip |

Verify downloads with SHA256SUMS.

v0.12.0 Breaking risk
Breaking changes
  • on-disk repository format changed; mutable manifest removed; existing v0.11.x repos are not compatible and must be recreated with `vykar delete` then `vykar init`, permanently removing all backup data
Notable features
  • Append-only repository layout (mutable manifest removed)
  • TOFU repository identity pinning to prevent silent repo swaps
  • YAML-driven scenario runner for automated backup testing
Full changelog

⚠️ Breaking Change

The on-disk repository format has changed to enable append-only repositories (mutable manifest removed). Existing repositories created with v0.11.x are not compatible. You must run vykar delete followed by vykar init to re-create them. This will permanently remove all existing backup data in the repository — ensure you have alternative copies of critical data before upgrading.

Features

  • Append-only repository layout — Eliminate the mutable manifest for a simpler, more robust on-disk format.
  • TOFU repository identity pinning — Prevent silent repo swaps by pinning the repository identity on first use.
  • YAML-driven scenario runner — Automated backup testing via declarative YAML scenario files.
  • Proptest round-trip properties — Property-based tests for crypto, serde, and backup pipelines.

Bug Fixes

  • Batch-verify packs via shard listing — Fix verify_delta_packs to use shard directory listing instead of index walk.
  • REST server backward-compat — Handle v1 repo format manifest key for older repositories.
  • Harden config parsing and local write durability — Stricter config validation and fsync guarantees.

Testing

  • Proptest property tests for the CDC chunker.
  • Corruption fixture matrix tests for vykar check.

Infrastructure

  • Bypass faker-file for fast corpus generation (30s → 1s).
  • Consolidate scripts into single testbench Python project.
  • Migrate benchmark script to Python.

Docs

  • Clarify that each source entry produces its own snapshot.
  • Expand exclude patterns section with syntax reference and common mistakes.

Downloads

| Platform | Artifact |
|----------|----------|
| Linux x86_64 (glibc) | vykar-v0.12.0-x86_64-unknown-linux-gnu.tar.gz |
| Linux x86_64 (musl) | vykar-v0.12.0-x86_64-unknown-linux-musl.tar.gz |
| Linux aarch64 (glibc) | vykar-v0.12.0-aarch64-unknown-linux-gnu.tar.gz |
| Linux aarch64 (musl) | vykar-v0.12.0-aarch64-unknown-linux-musl.tar.gz |
| macOS aarch64 | vykar-v0.12.0-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vykar-v0.12.0-x86_64-pc-windows-msvc.zip |

Checksums available in SHA256SUMS.

v0.11.8 Bug fix

Fixed plaintext chunk_id_key consistency race during restore.

Full changelog

Bug Fixes

  • fix: plaintext chunk_id_key consistency and restore race with compact — Ensure unencrypted repos derive a stable chunk_id_key and fix a race condition where restore could read a pack that compact was repacking.
  • fix(test): isolate scheduler lock in daemon tests — Use per-fixture XDG_CONFIG_HOME to prevent scheduler lock contention across parallel test runs.

Infrastructure

  • Update e2e test guidance and REST backend defaults.

Downloads

| Platform | Artifact |
|----------|----------|
| Linux x86_64 (glibc) | vykar-v0.11.8-x86_64-unknown-linux-gnu.tar.gz |
| Linux x86_64 (musl) | vykar-v0.11.8-x86_64-unknown-linux-musl.tar.gz |
| Linux aarch64 (glibc) | vykar-v0.11.8-aarch64-unknown-linux-gnu.tar.gz |
| Linux aarch64 (musl) | vykar-v0.11.8-aarch64-unknown-linux-musl.tar.gz |
| macOS aarch64 | vykar-v0.11.8-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vykar-v0.11.8-x86_64-pc-windows-msvc.zip |

Checksums available in SHA256SUMS.

v0.11.7 New feature
Notable features
  • Full backup→prune→compact→check cycle centralized in vykar-core, exposed to both CLI and GUI
  • Duplicate scheduler prevention using flock-based locking
  • GUI remains running in system tray when its window is closed
Full changelog

Features

  • Full backup cycle in core: Centralize the complete backup→prune→compact→check cycle in vykar-core, making it available to both CLI and GUI
  • Duplicate scheduler prevention: Use flock-based locking to prevent multiple scheduler instances from running concurrently
  • GUI stays in tray: Keep the app running in the system tray when the window is closed

Bug Fixes

  • GUI Cancel button: Fix Cancel button not working during running backup operations
  • Config validation: Reject unknown keys in source-level hooks configuration

Downloads

| Platform | Archive |
|----------|---------|
| Linux x86_64 (glibc) | vykar-v0.11.7-x86_64-unknown-linux-gnu.tar.gz |
| Linux x86_64 (musl) | vykar-v0.11.7-x86_64-unknown-linux-musl.tar.gz |
| Linux aarch64 (glibc) | vykar-v0.11.7-aarch64-unknown-linux-gnu.tar.gz |
| Linux aarch64 (musl) | vykar-v0.11.7-aarch64-unknown-linux-musl.tar.gz |
| macOS aarch64 | vykar-v0.11.7-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vykar-v0.11.7-x86_64-pc-windows-msvc.zip |

Verify downloads with the SHA256SUMS file.

v0.11.6 New feature
Notable features
  • Lock fencing detects stale locks during writes to avoid data corruption
  • Verbose backup status (`--verbose`) provides per‑file progress reporting
Full changelog

Features

  • Lock fencing: Detect stale locks during writes to prevent data corruption from expired lock holders (6dbd1ac)
  • Verbose backup status: Per-file status reporting during backup with --verbose flag (7c695fd)

Bug Fixes

  • Allow result_large_err lint on impl blocks with ureq closures (d7c069d)

Downloads

| Platform | File |
|----------|------|
| Linux x86_64 (glibc) | vykar-v0.11.6-x86_64-unknown-linux-gnu.tar.gz |
| Linux x86_64 (musl) | vykar-v0.11.6-x86_64-unknown-linux-musl.tar.gz |
| Linux aarch64 (glibc) | vykar-v0.11.6-aarch64-unknown-linux-gnu.tar.gz |
| Linux aarch64 (musl) | vykar-v0.11.6-aarch64-unknown-linux-musl.tar.gz |
| macOS aarch64 | vykar-v0.11.6-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vykar-v0.11.6-x86_64-pc-windows-msvc.zip |

v0.11.5 New feature
Notable features
  • Cron expressions (e.g., `0 2 * * *`) supported as an alternative to fixed intervals
  • Dead-PID detection automatically removes stale sessions; added `break-lock --sessions` command
  • aarch64 Linux release builds now produced in CI
Full changelog

Features

  • Cron-style scheduling: use cron expressions (e.g. 0 2 * * *) as an alternative to fixed intervals
  • Dead-PID detection for sessions: stale sessions from crashed processes are now detected automatically; added break-lock --sessions to manually clear them; per-session .index journals are preserved for crash recovery
  • aarch64 Linux release builds now included in CI

Bug Fixes

  • GUI: initialize GTK before tray icon creation on Linux, fixing startup crashes
  • Mount: use snapshot creation date as mtime in WebDAV view

Other

  • Logging and output made consistent across all command tiers
  • Documentation: added desktop GUI page with install instructions, added Kopia to comparison table

Downloads

| Platform | File |
|----------|------|
| macOS (Apple Silicon) | vykar-v0.11.5-aarch64-apple-darwin.tar.gz |
| Linux x86_64 (glibc) | vykar-v0.11.5-x86_64-unknown-linux-gnu.tar.gz |
| Linux x86_64 (musl) | vykar-v0.11.5-x86_64-unknown-linux-musl.tar.gz |
| Linux aarch64 (glibc) | vykar-v0.11.5-aarch64-unknown-linux-gnu.tar.gz |
| Linux aarch64 (musl) | vykar-v0.11.5-aarch64-unknown-linux-musl.tar.gz |
| Windows x86_64 | vykar-v0.11.5-x86_64-pc-windows-msvc.zip |

v0.11.4

Fixed GUI display of Windows paths by stripping the `\?\

Full changelog

What's Changed

Performance

  • SFTP throughput improvements: Better connection pool sizing, directory existence cache, larger SSH windows, and zero-copy put for significantly faster SFTP backups

Bug Fixes

  • GUI: Strip \\?\ prefix from Windows config path display

Improvements

  • Simplified concurrency settings: Reduced from 13 configuration knobs to 5 flat fields

Infrastructure

  • Added VM and SFTP end-to-end tests

Downloads

| Platform | Archive |
|----------|---------|
| Linux (x86_64, glibc) | vykar-v0.11.4-x86_64-unknown-linux-gnu.tar.gz |
| Linux (x86_64, musl) | vykar-v0.11.4-x86_64-unknown-linux-musl.tar.gz |
| macOS (Apple Silicon) | vykar-v0.11.4-aarch64-apple-darwin.tar.gz |
| Windows (x86_64) | vykar-v0.11.4-x86_64-pc-windows-msvc.zip |

v0.11.3 Bug fix

Fixed SFTP write/flush/close timeouts to retry with fresh connections and increased the per‑request timeout.

Full changelog

Bug Fixes

  • SFTP: retry on write/flush/close timeouts — russh-sftp wraps all SFTP errors as io::ErrorKind::Other, which was classified as permanent. Write timeouts now trigger retries with fresh connections instead of aborting immediately. Also raises the default per-request SFTP timeout from 10s to 30s, enables SSH keepalive (30s interval) to detect dead connections and keep NAT mappings alive, and enables TCP_NODELAY. A new sftp_timeout config option (5–300s) allows tuning per-request timeouts for slow links.
  • GUI: allow empty-repo config — the GUI now starts normally when no repositories are configured, instead of exiting with an error.
  • GUI: persist state on macOS Cmd+Q and window resize — GUI state is now saved when quitting via Cmd+Q or resizing the window on macOS.
  • REST/WebDAV: fix 405 on percent-encoded paths — resolves HTTP 405 errors when repository paths contain percent-encoded characters. Also fixes default config password prompt behavior.

Downloads

| Platform | Archive |
|----------|---------|
| Linux x86_64 (glibc) | vykar-v0.11.3-x86_64-unknown-linux-gnu.tar.gz |
| Linux x86_64 (musl, static) | vykar-v0.11.3-x86_64-unknown-linux-musl.tar.gz |
| macOS Apple Silicon | vykar-v0.11.3-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vykar-v0.11.3-x86_64-pc-windows-msvc.zip |

v0.11.2 New feature
Notable features
  • Hide console window on Windows release builds
  • Vykar executable displays custom logo icon on Windows
  • Normalize backslash path separators to forward slashes in backup rel_path for cross‑platform compatibility
Full changelog

Windows Improvements

  • Hide console window: The GUI no longer opens a terminal/console window alongside the application on Windows release builds
  • Executable icon: The Windows .exe now displays the vykar logo icon instead of the generic Windows executable icon
  • Path separators: Fixed backslash path separators in backup rel_path on Windows, normalizing them to forward slashes for cross-platform compatibility

GUI

  • Auto-init repos: Uninitialized repositories are now automatically initialized on GUI startup

Documentation

  • Updated benchmark chart and summary data

Downloads

| Platform | CLI | GUI | Server |
|----------|-----|-----|--------|
| Linux x86_64 (glibc) | vykar-x86_64-unknown-linux-gnu.tar.gz | vykar-gui-x86_64-unknown-linux-gnu.tar.gz | vykar-server-x86_64-unknown-linux-gnu.tar.gz |
| Linux x86_64 (musl) | vykar-x86_64-unknown-linux-musl.tar.gz | — | vykar-server-x86_64-unknown-linux-musl.tar.gz |
| macOS Apple Silicon | vykar-aarch64-apple-darwin.tar.gz | Vykar Backup.app.tar.gz | vykar-server-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vykar-x86_64-pc-windows-msvc.zip | vykar-gui-x86_64-pc-windows-msvc.zip | vykar-server-x86_64-pc-windows-msvc.zip |

Verify downloads with SHA256SUMS.txt.

v0.11.1 Bug fix

Fixed crash recovery to locate orphaned session journals without deleting live `.json` markers and improved error messages by showing the repository URL.

Full changelog

Bug Fixes

  • Crash recovery now finds orphaned session journals. Previously, recover_pending_index() only looked for its own session ID's journal (sessions/<current_id>.index), which never matched an interrupted session's file since each backup gets a fresh random ID. Recovery now scans all .index files under sessions/ and classifies each by its companion .json marker state (orphan, stale, active, unknown). Only orphaned and stale journals are recovered; active sessions are skipped conservatively.

  • Recovery never deletes .json session markers. Session marker lifecycle is managed exclusively by deregister_session() (normal exit) and cleanup_stale_sessions() (72h threshold, under maintenance lock). This prevents a slow-refreshing but live backup from being misclassified as stale and having its marker deleted, which could allow maintenance to proceed while the backup is still active.

  • Show repository URL in "repository not found" error instead of leaking internal storage detail.

Downloads

| Platform | Archive |
|---|---|
| Linux x86_64 (glibc) | vykar-x86_64-unknown-linux-gnu.tar.gz |
| Linux x86_64 (musl) | vykar-x86_64-unknown-linux-musl.tar.gz |
| macOS aarch64 | vykar-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vykar-x86_64-pc-windows-msvc.zip |

v0.11.0 Breaking risk
Breaking changes
  • Binary names changed: vger → vykar, vger-server → vykar-server, vger-gui → vykar-gui
  • Config file renamed from vger.yaml to vykar.yaml
  • Config directories migrated: ~/.config/vger/ → ~/.config/vykar/, /etc/vger/ → /etc/vykar/
Notable features
  • Reorganized recipe documentation with added VM backup section
  • Simplified install script closing message
Full changelog

Project Rename: V'Ger → Vykar

This release renames the project from V'Ger to Vykar (from Latin vicarius, "substitute").

Breaking Changes

  • Binary names: vgervykar, vger-servervykar-server, vger-guivykar-gui
  • Config file: vger.yamlvykar.yaml
  • Config directories: ~/.config/vger/~/.config/vykar/, /etc/vger//etc/vykar/
  • Environment variables: VGER_CONFIGVYKAR_CONFIG, VGER_PASSPHRASEVYKAR_PASSPHRASE, VGER_TOKENVYKAR_TOKEN
  • Cache/state paths: ~/.cache/vger/~/.cache/vykar/
  • Dump directory: .vger-dumps/.vykar-dumps/
  • macOS app: V'ger Backup.appVykar Backup.app

Migration

  1. Rename your config file: mv ~/.config/vger/vger.yaml ~/.config/vykar/vykar.yaml
  2. Update any environment variables in your shell profile or systemd units
  3. Update cron jobs or scripts referencing the old binary names

Repository format is unchanged — existing repos work without modification.

Other Changes

  • Reorganize recipe docs, add VM backup section
  • Simplify install script closing message

Downloads

| Platform | File |
|----------|------|
| Linux x86_64 (glibc) | vykar-v0.11.0-x86_64-unknown-linux-gnu.tar.gz |
| Linux x86_64 (musl) | vykar-v0.11.0-x86_64-unknown-linux-musl.tar.gz |
| macOS aarch64 | vykar-v0.11.0-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vykar-v0.11.0-x86_64-pc-windows-msvc.zip |

v0.10.2 Bug fix
⚠ Upgrade required
  • Pin GNU build runner to Ubuntu 24.04 in CI workflow to avoid silent glibc version changes.
Full changelog

Bug Fixes

  • Install script: auto-detect glibc version — The install script now probes the system's libc and glibc version, automatically selecting the statically-linked musl build when glibc is too old (< 2.39) or undetectable. Previously, the script always picked the GNU build, which failed at runtime on older distributions (e.g. Debian 11, Ubuntu 20.04) with GLIBC_2.38 not found errors.
  • Install script: fix tmpdir: unbound variable — Fixed a crash at the end of the install script caused by a local variable escaping its scope under set -eu.

Infrastructure

  • Pin GNU build runner to Ubuntu 24.04 — The release workflow now explicitly pins ubuntu-24.04 instead of ubuntu-latest to prevent silent glibc version changes.

Downloads

| Platform | Architecture | File |
|----------|-------------|------|
| Linux (glibc) | x86_64 | vger-v0.10.2-x86_64-unknown-linux-gnu.tar.gz |
| Linux (musl) | x86_64 | vger-v0.10.2-x86_64-unknown-linux-musl.tar.gz |
| macOS | Apple Silicon | vger-v0.10.2-aarch64-apple-darwin.tar.gz |
| Windows | x86_64 | vger-v0.10.2-x86_64-pc-windows-msvc.zip |

v0.10.1 New feature
Notable features
  • `latest` alias for snapshots in `vger list` and `vger snapshot info`
  • Hostname displayed in `vger list` output and GUI snapshot table
  • Progress reporting shows command dump execution status alongside file processing
Full changelog

Features

  • latest alias for snapshots — Use latest in place of a snapshot ID in vger list and vger snapshot info to refer to the most recent snapshot.
  • Hostname in snapshot listvger list and the GUI snapshot table now display the hostname where the backup was taken.
  • Progress reporting for command dumps — Backup progress now shows command dump execution status alongside file processing.

Infrastructure

  • Signed and notarized macOS binaries — The CLI and GUI app bundle are now code-signed with a Developer ID certificate and notarized with Apple, eliminating Gatekeeper warnings on macOS.

Documentation

  • Add command dumps section to the configuration reference.
  • Consolidate config sections and add 3-2-1 backup tip.
  • Update roadmap with new planned features.

Downloads

| Platform | File |
|----------|------|
| Linux (x86_64, glibc) | vger-v0.10.1-x86_64-unknown-linux-gnu.tar.gz |
| Linux (x86_64, musl) | vger-v0.10.1-x86_64-unknown-linux-musl.tar.gz |
| macOS (Apple Silicon) | vger-v0.10.1-aarch64-apple-darwin.tar.gz |
| Windows (x86_64) | vger-v0.10.1-x86_64-pc-windows-msvc.zip |

v0.10.0 New feature
Notable features
  • Concurrent multi‑client backups with advisory lock serialization during commit phase
  • GUI inline YAML config editing via new Edit tab in vger-gui
  • macOS builds are now code signed and notarized
Full changelog

Features

  • Concurrent multi-client backups — multiple machines can now back up to the same repository simultaneously. Only the brief commit phase is serialized via advisory locks. (docs)
  • GUI: inline YAML config editing — new Edit tab in vger-gui for editing vger.yaml directly in the desktop app
  • macOS code signing and notarization — macOS builds are now signed and notarized for a smoother install experience

Performance

  • Fix 17 GB peak heap from large command dumpscommand_dump stdout is now streamed through the chunker instead of buffered in memory

Bug Fixes

  • Fix stress test HTTP opt-in handling and S3 range request signing

Docs & Community

  • Add CONTRIBUTING.md with contribution guidelines
  • Add security contact to README
  • Document concurrent multi-client backup workflow

Downloads

| Platform | File |
|----------|------|
| Linux (glibc) | vger-v0.10.0-x86_64-unknown-linux-gnu.tar.gz |
| Linux (musl/static) | vger-v0.10.0-x86_64-unknown-linux-musl.tar.gz |
| macOS (Apple Silicon) | vger-v0.10.0-aarch64-apple-darwin.tar.gz |
| Windows | vger-v0.10.0-x86_64-pc-windows-msvc.zip |

Checksums are in SHA256SUMS.

v0.9.0 New feature
Security fixes
  • Harden REST server repo deletion
Notable features
  • Smart snapshot dispatch across multiple repositories
  • Graceful Ctrl‑C handling with lock release and abort‑safe pack flushing
  • Partial‑success exit code (3) to continue backup on unreadable files
Full changelog

Features

  • Smart snapshot dispatch across multiple repositories
  • Graceful Ctrl-C with lock release and abort-safe pack flushing
  • Pending index journal for interrupted backup recovery
  • Live progress during large file backup
  • Partial-success exit code — continue backup on unreadable files (exit code 3)
  • Static musl Linux build for glibc-independent binary
  • Server: auto-detect filesystem quota with quotactl_fd

Performance

  • Dynamic pack size scaling
  • Batch-verify pending packs via shard listing instead of per-pack HEAD
  • Replace mmap with heap buffers for data-pack assembly

Bug Fixes

  • Stream pack verification to prevent multi-GB memory spikes
  • Use display width for progress line truncation with CJK chars
  • Use ioctl/Win32 for terminal width instead of COLUMNS env var
  • Prevent tracing warnings from corrupting progress line
  • Only warn about plaintext passphrase during init
  • Harden REST server repo deletion
  • Fix macOS app icon margin

Infrastructure

  • Auto-cancel superseded release workflow runs
  • Add zstd compression example to generated config template

Downloads

| Platform | File |
|----------|------|
| Linux x86_64 (glibc) | vger-x86_64-unknown-linux-gnu.tar.gz |
| Linux x86_64 (musl, static) | vger-x86_64-unknown-linux-musl.tar.gz |
| macOS aarch64 | vger-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vger-x86_64-pc-windows-msvc.zip |

SHA256 checksums are in SHA256SUMS.txt.

v0.8.1 Breaking risk
Breaking changes
  • Rename `rest_token` config field to `access_token`
Notable features
  • Package vger-gui as native macOS .app bundle
  • Tray menu overhaul with config switching, state persistence, and cancel fix
  • --upload-concurrency flag for tuning parallel uploads in vger backup
Full changelog

What's New

GUI

  • Package vger-gui as a native macOS .app bundle
  • Tray menu overhaul with config switching, state persistence, and cancel fix
  • Add progress reporting, cancel support, and snapshot stats display
  • Improve UI polish and startup config handling

Features

  • Add --upload-concurrency flag to vger backup for tuning parallel uploads
  • Rename rest_token config field to access_token (breaking config change)

Performance

  • Cache index blob locally for remote repositories — avoids re-downloading the full index on every backup
  • Drain completed uploads first to fix FIFO head-of-line blocking
  • Enable AES-GCM hardware acceleration on aarch64 (Apple Silicon / ARM servers)
  • Increase BufWriter capacity and sync data before rename in vger-server PUT handler

Bug Fixes

  • Move --repo flag from parent snapshot command to each subcommand for correct precedence
  • Retry body reads in REST and S3 backends on transient failures

Docs

  • Document plaintext encryption mode (none)
  • Reorder YAML examples to show label before url

Downloads

| Platform | Artifact |
|----------|----------|
| Linux x86_64 | vger-v0.8.1-x86_64-unknown-linux-gnu.tar.gz |
| macOS aarch64 | vger-v0.8.1-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vger-v0.8.1-x86_64-pc-windows-msvc.zip |

Checksums are available in SHA256SUMS.

v0.8.0 New feature
⚠ Upgrade required
  • Replace OpenDAL with rusty-s3 + ureq; explicit S3 endpoint configuration is now required
  • vger-server TOML config replaced by CLI flags and `VGER_TOKEN` env var
  • Compact threshold default changed to 20%
Notable features
  • `vger daemon` subcommand for scheduled headless backups
  • Server-side init uses a single REST endpoint (replaces 259 create_dir calls)
  • `--worker-threads` / `--max-blocking-threads` flags to tune vger-server thread pools
Full changelog

What's new in v0.8.0

Features

  • vger daemon — new subcommand for scheduled headless backups without cron
  • Server-side initvger init over REST now uses a single server endpoint instead of 259 individual create_dir calls
  • Server single-repo modevger-server defaults to localhost and supports single-repo mode for simpler setups
  • --worker-threads / --max-blocking-threads — new flags to tune vger-server thread pools
  • Server-side pack verificationvger check can verify pack integrity on the server with automatic fallback to client-side
  • BLAKE2b content checksums — REST backend uploads include a content checksum for end-to-end integrity
  • ZSTD-compressed chunk index — the chunk index is now ZSTD-compressed before encryption, reducing repo overhead

Performance

  • Restore overhaul — replaced rayon with pack-affinity partitioning and LRU handle eviction; batch same-file writes; fd-based metadata ops; single-pass item deserialization; group-local buffers saving ~174 MiB RSS; ZSTD decompressor reuse; temp-dir-then-move for crash safety
  • Compact — metadata-only size checks in Phase 1 replace full pack downloads

Storage

  • Replaced OpenDAL with rusty-s3 + ureq — lighter dependency tree, explicit S3 endpoint configuration required

Refactoring

  • Split vger-core into vger-types, vger-crypto, and vger-storage crates
  • Extracted vger-protocol crate for shared check/compact logic
  • Renamed extract to restore across the codebase
  • Added type-safe SnapshotId newtype
  • Replaced vger-server TOML config with CLI flags + VGER_TOKEN env var
  • Compact threshold default changed to 20%

Bug Fixes

  • Fix restore path-based metadata on non-Unix platforms
  • Cap GUI log model to prevent unbounded memory growth
  • Harden short-read detection and add restore error context
  • Fix Windows CI checkout with paths containing colons

Downloads

| Platform | File |
|----------|------|
| Linux x86_64 | vger-v0.8.0-x86_64-unknown-linux-gnu.tar.gz |
| macOS aarch64 | vger-v0.8.0-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vger-v0.8.0-x86_64-pc-windows-msvc.zip |

SHA256 checksums are attached to each artifact and in SHA256SUMS.

v0.7.1 Bug fix
Notable features
  • Streaming compress+encrypt pipeline emits one Vec per chunk, avoiding realloc-shrink issues (~140 MB RSS reduction)
  • Zero‑copy `put_owned` for pack uploads eliminates full‑pack allocations
  • Preallocated buffers and positional writes in REST restore halve syscalls per chunk
Full changelog

Performance

  • Streaming compress+encrypt pipeline — backup hot path now produces one Vec per chunk instead of 3–4, with exact-sized pack buffers that avoid glibc ptmalloc2 realloc-shrink pitfalls (~140 MB RSS reduction)
  • Eliminate redundant copies on pack upload — zero-copy put_owned for remote backends (S3, REST) avoids one full-pack-size allocation per flush; pre-sized worker chunk Vecs avoid ~7 reallocations per 10 MiB file
  • REST backend restore — preallocated get_range buffers and positional write_all_at on Unix halve syscalls per chunk
  • LZ4/ZSTD compression — LZ4 writes directly into spare capacity (no zero-fill); ZSTD uses compress_to_buffer to eliminate a ~131 KiB temp Vec per chunk
  • FileCache key compaction — replace full path strings with 16-byte BLAKE2b hashes as HashMap keys, saving ~20–35 MB RSS; backwards-compatible deserialization of legacy caches

Bug Fixes

  • REST 404 on empty-prefix LISTlist("") now uses the base URL directly instead of appending a trailing slash, with a new repo_list_all handler on the server

Documentation

  • Low-resource background backup recipe (ionice, nice, cgroup limits)

Infrastructure

  • Extracted shared script library (scripts/lib/) and simplified CLIs for stress.sh, benchmark.sh, and profile.sh

Downloads

| Platform | Binary |
|----------|--------|
| Linux x86_64 | vger-x86_64-unknown-linux-gnu.tar.gz |
| macOS aarch64 | vger-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vger-x86_64-pc-windows-msvc.zip |

v0.7.0 Breaking risk
Breaking changes
  • Remote storage URLs now require HTTPS by default; set `allow_insecure_http` to opt in.
Security fixes
  • Bind AEAD objects to identity context in AAD, preventing cross-repo ciphertext splicing
  • Reduce passphrase exposure in subprocesses and environment
Notable features
  • Parallel large-file pipeline using crossbeam-channel stages
  • `one_file_system` default changed to false (backups cross filesystem boundaries)
  • XOR dedup prefilter for fast redundant chunk skipping
Full changelog

Security

  • Enforce HTTPS by default for remote backends — remote storage URLs now require HTTPS; opt in with allow_insecure_http if needed
  • Bind AEAD objects to identity context in AAD — authenticated additional data now includes repository identity, preventing cross-repo ciphertext splicing
  • Reduce passphrase exposure in subprocesses and environment — passphrase handling minimizes in-memory lifetime and avoids leaking into child process environments

Features & Improvements

  • Parallel large-file pipeline — large files are segmented and chunked in parallel via explicit crossbeam-channel stages, replacing pariter
  • XOR dedup prefilter — a fast xor-based filter skips redundant chunk transforms before hitting the full dedup index
  • one_file_system default changed to false — backups now cross filesystem boundaries by default, so bind mounts and subvolumes are no longer silently skipped. Set one_file_system: true to restore the old behavior.
  • Walk optimization — skip redundant symlink_metadata calls for files when one_file_system is enabled

Bug Fixes

  • Fix deadlock between pariter reorder buffer and ByteBudget
  • Make delete-repo safe by classifying keys and fixing recursive list
  • Remove trailing encrypted header from pack files
  • Server: recover from RwLock poison instead of panicking
  • Windows: use HANDLE type alias for windows-sys 0.59 compatibility (Rust 1.93)
  • Fix clippy 1.93 lint for set_readonly(false) in tests

Dependencies

  • Replace filetime and http-body-util with internal implementations
  • Replace rpassword and dirs with internal helpers

Downloads

| Platform | File |
|----------|------|
| Linux x86_64 | vger-v0.7.0-x86_64-unknown-linux-gnu.tar.gz |
| macOS aarch64 | vger-v0.7.0-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vger-v0.7.0-x86_64-pc-windows-msvc.zip |

SHA256 checksums are available in SHA256SUMS.

v0.6.3 New feature
Notable features
  • `cache_dir` config option to control mmap temp files and cache storage location
  • Reuse ZSTD compression context via thread-local `Compressor` to reduce allocation churn
  • Pre-size FileCache HashMap using previous cache length for initial capacity
Full changelog

Memory Optimization

This release dramatically reduces peak memory usage across all operations through mmap-backed storage and streaming processing:

  • Mmap-backed pack assembly: Replace heap pack buffers with mmap-backed assembly, reducing backup heap usage from 384 MiB to ~4 MiB
  • Pack buffer pool memory reduction: ~40% reduction in pack buffer pool memory (640→384 MiB) before mmap conversion
  • Tiered dedup index: Add mmap cache and xor filter for memory-efficient chunk deduplication
  • Index-free extract: Restore files without loading the full chunk index into memory, using mmap restore cache
  • Streaming item serialization/deserialization: Eliminate temp allocations during backup and reduce extract peak memory
  • Incremental index update: Reduce save_state() peak memory by flushing incrementally (~138M saved)
  • Open-phase optimization: Reduce open-phase peak memory from ~227M to ~128M
  • Restore planner compaction: Use SmallVec and filtered chunk index for ~40% better throughput

Features

  • cache_dir config option: Control where mmap temp files and cache data are stored
  • Reuse ZSTD compression context: Thread-local Compressor reuse reduces allocation churn
  • Pre-size FileCache HashMap: Use old cache length for initial capacity

Bug Fixes

  • Release pack buffer pool in save_state() to avoid retaining memory past its useful life
  • Recalculate pack writer targets in load_chunk_index() for correct sizing

Infrastructure

  • Add profiling build option to release workflow
  • Add linux_only option for manual release workflow runs

Downloads

| Platform | File |
|----------|------|
| Linux x86_64 | vger-x86_64-unknown-linux-gnu.tar.gz |
| macOS aarch64 | vger-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vger-x86_64-pc-windows-msvc.zip |

Verify checksums with sha256sum -c SHA256SUMS.

v0.6.2 Bug fix
Notable features
  • Add `break-lock` command for removing stale advisory locks
Full changelog

What's Changed

Features

  • Add break-lock command for removing stale advisory locks

Bug Fixes

  • Fix pipeline_buffer_mib to enforce actual memory cap and prevent thread oversubscription
  • Deduplicate pack existence checks in check and compact, track corrupt/orphan packs

Performance

  • backup: Remove redundant chunk existence checks and O(n) pack offset scan
  • extract: Reduce memory usage by dropping unused data structures early
  • server: Stream file reads and use async fs ops in object/admin handlers
  • Optimize release profile

Refactoring

  • restore: Use positional args and remove prefix matching
  • cli: Split main.rs into focused modules
  • repo: Add dirty tracking to save_state() and encapsulate mutable fields

Infrastructure

  • Cache Rust dependencies across release workflow runs
  • Raise REST server request limit
  • Add vger-server systemd service instructions

Downloads

| Platform | Binary |
|----------|--------|
| Linux x86_64 | vger-x86_64-unknown-linux-gnu.tar.gz |
| macOS aarch64 | vger-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vger-x86_64-pc-windows-msvc.zip |

v0.6.1 Mixed
Security fixes
  • Harden crypto, compression, and passphrase handling — use `Zeroizing<>` for key material, validate decompression sizes, clear passphrase env vars after use
  • Harden key wrapping and command timeouts — enforce timeout on `passcommand` execution, strengthen encrypted key authentication
Notable features
  • Atomic writes and lazy directory creation in local storage backend
  • Centralized dependency versions with workspace dependencies
  • Workspace lints scaffolding (clippy::pedantic, forbid unsafe code)
Full changelog

What's Changed

Security

  • Harden crypto, compression, and passphrase handling — use Zeroizing<> for key material, validate decompression sizes, clear passphrase env vars after use
  • Harden key wrapping and command timeouts — enforce timeout on passcommand execution, strengthen encrypted key authentication

Performance

  • Use atomic writes and lazy directory creation in local storage backend

Bug Fixes

  • Fix cross-platform hostname resolution for Windows builds — replace unix-only nix::unistd::gethostname() with platform-specific helper

Infrastructure

  • Centralize dependency versions with workspace.dependencies
  • Add workspace lints scaffolding (clippy::pedantic, unsafe_code = "forbid")
  • Add SAFETY comments to all unsafe blocks
  • Replace .unwrap() with .expect() or if-let in production code paths
  • Remove unused dependencies: indicatif, hostname, whoami, dialoguer

Refactoring

  • Split monolithic config.rs into focused submodules (defaults, deserialize, hooks, limits, resolve, sources, types, util)
  • Narrow internal config visibility with pub(super) and #[serde(deny_unknown_fields)]

Downloads

| Platform | File |
|----------|------|
| macOS (Apple Silicon) | vger-v0.6.1-aarch64-apple-darwin.tar.gz |
| Linux (x86_64) | vger-v0.6.1-x86_64-unknown-linux-gnu.tar.gz |
| Windows (x86_64) | vger-v0.6.1-x86_64-pc-windows-msvc.zip |

SHA256 checksums are included in SHA256SUMS.

v0.6.0 Breaking risk
Breaking changes
  • Changed `vger delete` behavior to remove an entire repository; snapshot deletion now uses `vger snapshot delete`.
Notable features
  • Native local backend with path traversal protection replacing the OpenDAL adapter
  • SFTP backend using `russh` with connection pooling and reliability fixes
  • REST backend support enabled
Full changelog

What's New

Features

  • Native local backend with path traversal protection — replaces the OpenDAL local adapter with a purpose-built std::fs backend
  • SFTP backend — new russh-based SFTP backend with connection pooling and reliability fixes
  • Restructured delete commandsvger delete now deletes an entire repository; snapshot deletion moved to vger snapshot delete
  • REST backend support enabled

Bug Fixes

  • Parallel restore correctness — hardened extract command to fix race conditions and improve cancellation handling
  • Windows build — gate SFTP backend on Unix targets to fix cross-platform compilation
  • SFTP path handling — normalize joined paths with Path::join for correct behavior

Documentation

  • New backup recipes page covering databases, containers, filesystem snapshots, and monitoring hooks
  • Fixed ZFS recipe: warn that snapdir=visible is required (not the default)
  • Fixed Btrfs recipe: note that snapshot parent directory must exist
  • Added Podman volume paths and inspect commands to container recipes
  • Updated command docs and added social share image tags

Downloads

| Platform | File |
|----------|------|
| Linux x86_64 | vger-v0.6.0-x86_64-unknown-linux-gnu.tar.gz |
| macOS ARM | vger-v0.6.0-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vger-v0.6.0-x86_64-pc-windows-msvc.zip |

SHA256 checksums are available in SHA256SUMS.

v0.5.0 Breaking risk
Breaking changes
  • --repo flag removed from global scope and must be provided per subcommand
  • Restore snapshot ID changed from --snapshot to positional argument (vger extract <id>)
  • `list` command split into two separate commands: one for listing snapshots, another for listing snapshot contents
Notable features
  • Snapshot find command (`vger snapshot find`) searches files across all snapshots
  • Find Files window in GUI provides visual file search across backups
  • --compact flag for prune automatically compacts the repo after pruning
Full changelog

What's New

Features

  • Snapshot find command — search for files across all snapshots with vger snapshot find
  • Find Files window in GUI — visual file search across backups
  • --compact flag for prune — automatically compact the repo after pruning
  • Interactive config subcommandvger config now prompts interactively when no destination is specified
  • Curl-pipe installer — one-liner setup via curl | sh

CLI Changes (Breaking)

  • --repo moved to per-subcommand — no longer a global flag
  • Restore snapshot ID is now positionalvger extract <snapshot-id> instead of --snapshot
  • list split into two subcommands — separate commands for listing snapshots vs. snapshot contents

Improvements

  • Reject unquoted booleans, numbers, and nulls in YAML string fields (stricter config validation)
  • Cleaner CLI table output with a lighter, modern look
  • Hooks now limited to main backup commands only
  • Config templates refocused on minimal setup and core concepts
  • Unified backup label semantics
  • Restore dialog dark mode support and full config path display in GUI

Downloads

| Platform | Archive |
|----------|---------|
| Linux x86_64 | vger-v0.5.0-x86_64-unknown-linux-gnu.tar.gz |
| macOS aarch64 | vger-v0.5.0-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vger-v0.5.0-x86_64-pc-windows-msvc.zip |

Verify downloads with SHA256SUMS.

v0.4.0 Breaking risk
Breaking changes
  • `create` renamed to `backup`
  • `extract` renamed to `restore`
  • `archive` renamed to `snapshot`
Full changelog

What's New in v0.4.0

A major release with a new desktop GUI, significant performance improvements, and many usability enhancements.

Desktop GUI

  • New Slint-based desktop GUI (vger-gui) with tabbed interface, per-repo/source backup controls, and ComboBox selectors
  • System tray icon with scheduled backup support
  • Encryption mode selection from the GUI
  • Available on macOS and Linux

Performance

  • Pipeline parallelism — overlaps I/O and CPU during backup for significantly faster throughput
  • Cross-file batching for small files, reducing per-file overhead
  • Parallel ChunkId hashing via rayon thread pool
  • Streaming backup support for large file sets without excessive memory use
  • Rayon-parallelized chunk transform pipeline (compress + encrypt)
  • Fix for unbounded memory growth when backing up large files
  • S3 upload tuning and simplified upload path

New Features

  • Multi-repository configuration — manage multiple backup targets in a single config file
  • Hooks system — run shell commands before/after any vger command
  • vger combined — single command to run init, backup, prune, compact, and check
  • vger info — per-repository stats (size, chunk count, snapshots)
  • vger mount — WebDAV server with browser-friendly HTML file browser
  • command_dumps — capture command output (e.g., pg_dump) directly into backups
  • Resource limits — built-in CPU, I/O, and network throttling for backups
  • Live TTY progress with indicatif progress bars during backup
  • Configurable retry with exponential backoff for remote backends
  • Extended attributes (xattr) preservation on Unix
  • Environment variable expansion in YAML config files
  • Tilde expansion (~) in repository URLs and source paths
  • Config resolution with search paths and VGER_CONFIG env var
  • Windows support (CLI only)

CLI Improvements

  • Renamed createbackup and extractrestore for clarity
  • Renamed archivesnapshot across the entire codebase
  • Snapshot ID accepted as positional argument in delete
  • list now shows source paths and unified labels
  • Combine multiple source paths into a single snapshot
  • Improved table styling for CLI output

Bug Fixes

  • Fix stale file cache causing empty restores after delete + compact
  • Fix backup correctness issues in edge cases
  • Hardened repository operations with backend-native locking and repack

Infrastructure

  • CI workflow for main branch with integration tests
  • Release builds for Linux (x86_64), macOS (aarch64), and Windows (x86_64)
  • Expanded test coverage and reliability improvements
  • License changed to GPL-3.0-only (to align with Slint UI dependency)

Downloads

| Platform | Archive |
|----------|---------|
| Linux x86_64 | vger-v0.4.0-x86_64-unknown-linux-gnu.tar.gz |
| macOS ARM | vger-v0.4.0-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vger-v0.4.0-x86_64-pc-windows-msvc.zip |

Each archive contains vger (CLI), vger-server, and vger-gui (Linux/macOS only). SHA256 checksums are provided for all artifacts.

v0.3.0 Breaking risk
⚠ Upgrade required
  • `~` expansion now supported in repository URLs and source paths
  • Hooks system added for pre/post command shell execution
  • Configurable exponential‑backoff retry for remote backends
Breaking changes
  • `extract` is renamed to `restore`
  • `create` is renamed to `backup`
  • `archive` is renamed to `snapshot`
Notable features
  • Added `info` subcommand for per‑repository stats
  • Added `combined` command to run all backup steps sequentially
  • Mount WebDAV server with a browser‑friendly HTML file browser
Full changelog

What's New

New Commands & Options

  • info subcommand for per-repository stats
  • combined command to run all backup steps in sequence
  • mount WebDAV server with browser-friendly HTML file browser
  • Accept snapshot ID as positional argument in delete
  • Rename extractrestore and createbackup for clarity
  • Rename archivesnapshot across the codebase

Performance

  • Parallel backup chunk transform pipeline with rayon
  • Streaming support for larger backups
  • S3 upload tuning and simplification

Configuration

  • Multi-repository configuration support
  • Config resolution workflow with search paths and env vars
  • Environment variable expansion in YAML config loading
  • Expand ~ in repository URLs and source paths
  • Hooks system for running shell commands before/after vger commands
  • Built-in backup resource limits for CPU, IO, and network
  • Configurable retry with exponential backoff for remote backends
  • Additional exclude options

CLI Improvements

  • Live TTY progress bar for backup operations
  • Improved table styling with color, Unicode/ASCII auto-detection, and NO_COLOR support
  • Show source paths and unified label in list output

Other

  • Extended attribute (xattr) support
  • Change license to GPL-3.0-only (to match Slint UI)
  • Documentation restructured and migrated to mdbook
  • Include vger-server in release tarballs
v0.2.0 New feature
Notable features
  • REST server and client backend for remote repository access
  • `compact` command to reclaim space from deleted/pruned archives
  • Pack files: group chunks into ~32 MiB packs for efficient storage
Full changelog

What's New

  • REST server and client backend for remote repository access
  • compact command to reclaim space from deleted/pruned archives
  • Pack files: group chunks into ~32 MiB packs for efficient storage
  • Comprehensive test suite for vger-core

Assets

  • vger-0.2.0-aarch64-apple-darwin.tar.gz — macOS ARM64 binaries (vger + vger-server)

Beta — feedback welcome: [email protected]