Skip to main content

Changelog

Every improvement, automatically tracked from our commit history.

Subscribe via Atom feed
← Prev Page 37 of 117 Next →
February 25, 2026
patch Desktop Shell

Add biometric enrollment validation flow

Desktop 1.68.2 → 1.68.3 | 62d21910
Details

After enabling biometric unlock in settings, the app now locks

immediately and prompts the user to verify biometric works. If the user

successfully unlocks with biometric, the feature stays enabled. If they

cancel biometric and unlock with their master password instead, biometric

is automatically disabled and unenrolled — ensuring the user has proven

the biometric flow works before relying on it.

patch Desktop Shell

Fix macOS biometric unlock for unsigned debug builds

Desktop 1.68.1 → 1.68.2 | a3a78138
Details

The modern SecItem keychain API requires the keychain-access-groups

entitlement, which unsigned .NET debug builds lack (errSecMissingEntitlement

-34018). Split MacBiometricService into two code paths using preprocessor

directives:

  • DEBUG: Uses legacy SecKeychainAddGenericPassword / FindGenericPassword

(file-based keychain, no entitlements needed) with separate LAContext

Touch ID evaluation via ObjC block bridging.

  • RELEASE: Uses modern SecItemAdd / SecItemCopyMatching with biometric

access control (kSecAccessControlBiometryCurrentSet) for signed builds.

Both paths store the master password in the macOS Keychain gated by

biometric verification and fall back to manual password entry on failure.

patch CoreDesktop Shell

Add cloud sync entity progress indicator to status bar pill

Core 1.15.2 → 1.15.3 | Desktop 1.68.0 → 1.68.1 | b1b2c8e6
Details

Track entity-level sync progress (synced/total) through the full stack:

Rust SyncProgress shared state computed from cursor count + outbox

distinct entities, exposed via FFI get_status, deserialized into C#

CloudSyncStatus, and displayed in the storage state pill as

"Cloud · X/Y" while entities are pending upload. Falls back to the

existing storage percentage display once all entities are synced.

patch Desktop Shell

Modernize startup loader UX: shimmer animation, chromeless windows, auto-focus

Desktop 1.66.4 → 1.66.5 | ec48cdf6
Details

Replace the plain indeterminate ProgressBar in UnlockView and SetupWizardView

with a custom shimmer ping-pong animation using Avalonia keyframe animations.

A 60px indicator slides left-to-right inside a 200x3px track with opacity-masked

edges for a polished shimmer effect.

Remove macOS title bar chrome from UnlockWindow and SetupWindow by switching to

SystemDecorations="BorderOnly" with ExtendClientAreaToDecorationsHint and

NoChrome hints. This removes the traffic lights while preserving the window

shadow, letting the existing CornerRadius="16" card design stand on its own.

Add auto-focus behavior: UnlockWindow.Opened calls Activate() to bring the

window to the front, and UnlockView.AttachedToVisualTree focuses the PasswordBox

so users can immediately start typing their master password.

Version bump to 1.66.5.

patch Desktop Shell

Fix crash on photo drop from cloud-mounted drives

Desktop 1.66.3 → 1.66.4 | 6dc9c6a0
Details

LocalStorageProvider.StoreFileAsync was synchronous despite the async

signature — it called File.OpenRead + SHA256.HashData on the UI thread.

When the source file is on a cloud mount (Google Drive, iCloud), the

read can stall or timeout, throwing an IOException that propagated up

through the Avalonia dispatcher as an unhandled exception, killing the app.

Fixed by making StoreFileAsync truly async: file hashing now uses an

async FileStream with SHA256.ComputeHashAsync on a background thread,

with a 30-second timeout via linked CancellationTokenSource.

Desktop v1.66.4

← Prev Page 37 of 117 Next →

Get notified about new releases