Skip to content

Releases: borgbase/vykar

v0.16.0

06 May 14:05

Choose a tag to compare

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

04 May 07:27

Choose a tag to compare

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

27 Apr 21:26

Choose a tag to compare

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.

Screenshot 2026-04-27 at 21 42 36

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

27 Apr 18:26

Choose a tag to compare

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.
Screenshot 2026-04-27 at 09 23 06

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

23 Apr 07:30

Choose a tag to compare

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).
v0-13-0

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

19 Apr 07:19

Choose a tag to compare

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

18 Apr 04:33

Choose a tag to compare

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

15 Apr 13:56

Choose a tag to compare

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

24 Mar 12:00

Choose a tag to compare

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

23 Mar 22:07

Choose a tag to compare

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