Changelog
All notable changes to Kerveros. The format follows Keep a Changelog, and the project follows Semantic Versioning. Grab the latest build on the download page.
1.2.0 — 2026-06-12
New licensing system, plus a Linux keychain fix.
Changed
- Licensing now runs through Lemon Squeezy. You enter your key once to activate it online; the app re-validates periodically and keeps working offline for up to two weeks between checks. Refunded keys stop working. This license check is the only thing Kerveros sends to a server — never your files, names, or usage. (Replaces the previous offline Ed25519 key scheme.)
Fixed
- Linux keychain support. License, trial, and bucket-passphrase storage now use the system Secret Service on Linux — previously no Linux keychain backend was compiled in, so those silently failed.
- Friendlier activation errors for the cases you’ll actually hit: a refunded/disabled key, activation limit reached, no connection, or a key that isn’t found.
1.1.3 — 2026-05-17
Rebrand to kerveros.agileturtles.gr plus a round of macOS UX fixes from a real desk-test (not a static audit).
Changed
- Domain rebrand. All marketing/EULA/support URLs and email addresses now point at
kerveros.agileturtles.grandkerveros@agileturtles.grrespectively. - macOS bundle identifier is now
gr.agileturtles.kerveros. Anyone already on 1.1.x will be asked to re-grant keychain access on first launch and re-paste their license; the keychain entries from the old bundle id are inaccessible to the new identity.
Added
- Native macOS menu bar. App/File/Edit/View/Window menus, so Cmd+C/V/X/A/Z work reliably inside text inputs and standard Window menu shortcuts (Cmd+M minimize, etc.) are honored.
- Right-click context menu on file rows. Same actions as the “…” dropdown, but anchored at the cursor.
- 3-state theme cycle. Toolbar toggle now cycles Light → Dark → System (monitor icon for “follow system”).
- “Enter license key” entry point in Settings → License for trial and expired states.
Fixed
- Red X close button on macOS now hides the window instead of doing nothing. Cmd+W hides too; the tray icon and Cmd+Q still quit.
- Dock-icon click reopens the window after it’s been hidden.
- License activation now tolerates copy/paste mangling. NBSP, soft hyphens, en-dashes auto-substituted by chat clients, and word-wrap line breaks no longer surface as “malformed license key”.
- Settings → License panel reflects activation/deactivation live instead of requiring the dialog to be reopened.
- Deactivate confirmation is a proper dialog; clipboard-copy fallback is a toast.
- More S3 / keychain errors map to user-friendly text: AccessDenied, throttling, keychain-locked.
1.1.2 — 2026-05-17
Emergency hotfix — 1.1.1 macOS bundle rendered to a blank screen on launch.
Fixed
- Production bundle no longer renders blank on macOS. A circular vendor-chunk dependency left React undefined at startup; the broken chunk splits were dropped.
1.1.1 — 2026-05-16
Round-3 audit pass: real distributed-correctness, audit-attribution, and stale-closure bugs caught by a fresh review of the v1.1.0 surface. CI tuned for minimum minutes.
Fixed
- Manifest S3 lock release-token verification. Release now reads-then-deletes only when our acquire token still matches, so a stolen lock is never deleted out from under a teammate.
- Teammate metadata stomp on identical-content same-id upload — committing identical bytes no longer silently overwrites who uploaded the file and when.
- Intra-batch duplicate reporting shows “duplicate of foo.pdf” instead of a self-referential name, and identical-content files in one batch now count as “Uploaded: 1, Duplicate: 1”.
- Manifest-lock verify retries transient errors so a momentary 5xx no longer strands the lock.
- Tray check-in, keyboard shortcuts, lock-holder parsing, batch-progress dialog, and refresh toasts all hardened against stale-state and unmount races.
- Release CI fixes: workflow parser rejection, macOS signing with empty certificate secret, Tauri version alignment.
Changed
- CI tuned for minimum minutes: superseded runs cancel, doc-only commits skip CI, dev-profile test builds, integration suite only on main.
- Dev-mode remount fixes (StrictMode/HMR) and a scrollable Settings dialog on small windows.
1.1.0 — 2026-05-10
Monetization track + two-round audit pass. Every check-in/check-out path now collision-safe, cancel-responsive, and idempotent under concurrent client load.
Fixed (audit pass)
- Idempotent batch uploads safe under content-id collisions — a truncated-hash collision can no longer overwrite a different file’s manifest entry.
- Cancel button responsive during in-flight uploads (RwLock instead of a shared Mutex).
- Manifest S3 lock embeds a per-acquire token and verifies its own write won the race.
- Audit log CSV export: bounded concurrency, progress, skipped-file warning rows, and CSV-injection guard so a maliciously-named file can’t execute as a spreadsheet formula.
- Event-listener registration hardened against fast unmounts and silent rejections (5 sites).
- Garbage collection no longer deletes freshly-uploaded blobs on providers that omit
LastModified; 5-minute grace window for mid-upload blobs. - Per-batch cancel flags; streaming SHA-256 with byte-count cap prevents OOM on multi-GB files;
backup_allskips out-of-spec blobs before decryption. - Lock verification absorbs S3 read-after-write consistency windows; watchdog notification keys pruned; assorted NaN-safety and stale-closure fixes.
Added (monetization track)
- Proprietary EULA replacing the previous MIT license; third-party licenses enumerated.
- Auto-updater with GitHub Releases as manifest host: silent background check on launch + every 24 hours, non-intrusive install toast with snooze.
- Opt-in Sentry crash reporting with first-launch consent dialog.
- Offline license-key system using Ed25519 signatures — no license server.
- 14-day free trial with the timestamp stored in the OS keychain; expired state keeps read-only access so you never lose your data.
- License activation modal with paste-to-activate UX and friendly error mapping.
- Onboarding wizard: storage-provider quick-pick (Tigris recommended, Backblaze B2, AWS S3, MinIO, custom) with endpoint auto-fill and free-tier signup links.
- Granular connection-test errors: bucket-missing, bad credentials, DNS, timeout, TLS each get a specific message.
- Marketing site; MinIO-backed integration tests for the sync engine; end-to-end license-roundtrip tests.
Changed
- Release CI signs Apple bundles (notarization), Windows artifacts (Azure Trusted Signing), and produces signed updater bundles.
- Read-only paths (download, backup, history) explicitly stay free for trial-expired users.
- Project-wide formatting pass; assorted internal API cleanups.
1.0.0 — 2026-03-15
Initial release.
Added
- Local-first encrypted file collaboration via S3-compatible storage.
- Tauri v2 desktop app, cross-platform (macOS universal, Windows x64, Linux x64).
- XChaCha20-Poly1305 + Argon2id envelope encryption.
- Lock-based coordination via S3 conditional puts; lock-history audit trail.
- Manifest-based file registry with ETag caching.
- 12 file-type icon categories, virtual scrolling for ≤20k files, drag-and-drop upload.
- Backup-all command writes decrypted copies of every file to a chosen folder.
- Atomic file writes (write-temp-then-rename) for crash safety; S3 retry with exponential backoff.
- Invite-code (
kerv:prefix) export/import for team onboarding; 3-step onboarding wizard with connection test. - Warm OKLCH theme, dark-mode toggle, keyboard shortcuts, friendly error messages, ARIA labels.
- CSP, master-key zeroize on disconnect, locked-file delete guard, folder-name validation hardening.
- Multi-platform release CI on tag push.