Skip to content

Release history

Vykar releases

Fast, encrypted, deduplicated backups

All releases

51 shown

Upgrade now
v0.18.0 Breaking risk
Breaking upgrade

Cache format change

No immediate action
v0.17.1 Bug fix

Daemon refresh + dialog leak fix

Upgrade now
v0.17.0 Breaking risk
Breaking upgrade

Snapshot format change

No immediate action
v0.16.2 Bug fix

Skip locked files + Added column

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]