§ changelog

Semver, with the caveat that pre-1.0 minor bumps are allowed to be breaking.

0.3.7

2026-04-14
  • Fix: symlink targets were resolved instead of preserved. Affected pools created on 0.3.0–0.3.6.
  • Fix: frostvex verify --strict hang on pools with empty directories.
  • Internal: BLAKE3 batched API now used for chunk hashing — small CPU win.

0.3.6

2026-04-08
  • Fix: deprecation warning for --target printed twice on macOS.
  • Internal: bump quinn to 0.13.2.

0.3.5

2026-04-02
  • Fix: frostvex stat --json now matches the documented schema (was missing peer_count).
  • Fix: log rotation off-by-one when file path doesn't exist yet.

0.3.4

2026-03-26
  • Fix: systemd unit file shipped with wrong working directory.
  • Improve: error message when peer pubkey doesn't match — now suggests frostvex peers exchange.

0.3.3

2026-03-20
  • Fix: race in chunk store insert when two writers staged the same chunk concurrently.
  • Improve: frostvex log now correctly handles negative --since ranges.

0.3.2

2026-03-15
  • Fix: panic on Windows when path contained \\?\ prefix.
  • Fix: bandwidth schedule windows applied incorrectly across midnight.

0.3.1

2026-03-10
  • Fix: migration from 0.2.x left a stale manifest.jsonl.lock on crash.

0.3.0

2026-03-08 · breaking
  • Breaking: on-disk pool format changed (auto-migration on first run, see release post).
  • Breaking: --no-checksum renamed to --no-parity; --target renamed to --to. Old names print deprecation, removed in 0.5.
  • New: lock-free manifest engine — 4–6× faster merges under contention. Full writeup in "Why I rewrote the merge engine in Rust".
  • New: layered tree manifest — 65% reduction in steady-state diff time.
  • New: per-pool Reed-Solomon shard configuration.
  • New: structured (JSON) logging via [log] format = "json".
  • New: configurable QUIC keepalive (default 25s).

0.2.7

2026-02-19
  • Fix: parity verification false-positive on chunks with all-zero contents.
  • Improve: peer discovery now retries with exponential backoff on connection failure.

0.2.6

2026-02-04
  • Improve: Windows symlink handling. Known regression in 0.2.5; this restores correct behavior.
  • Fix: incorrect exit code on Ctrl-C interrupt (was 0, should be 130).

0.2.5

2026-01-22
  • Internal: switched chunk hashing from xxh3 to BLAKE3. Writeup pending.
  • Fix: frostvex peers list emitted ANSI codes when piped.

0.2.4

2026-01-08
  • Fix: edge case in delta computation where chunk boundaries fell on UTF-16 surrogates.

0.2.3

2025-12-18
  • Improve: progress reporting cadence — emits one update per 100 ms instead of 10 ms (less terminal noise).

0.2.2

2025-11-29
  • Fix: panic when peer pubkey is malformed.
  • Fix: frostvex prune ignored the --older-than flag.

0.2.1

2025-11-15
  • Fix: chunk store grew unboundedly when a sync was interrupted mid-transfer.

0.2.0

2025-10-30
  • New: peer-to-peer mode. Pulls and syncs without a central server.
  • New: mDNS peer discovery on the LAN.
  • New: bandwidth caps with schedule windows.
  • Breaking: frostvex run renamed to frostvex sync.

0.1.x

2024-09 — 2025-10
  • Initial public releases. Single-direction sync between two endpoints over QUIC. Reed-Solomon parity. BLAKE3 hashes (since 0.1.6).
  • Pre-history is on the first commit log if you really want to know.