Changes since beta2
New features
- Hide OTPs by default — codes are hidden in the list to prevent shoulder-surfing and screenshot leaks. Click a row to copy and briefly reveal, then auto-hide. Toggle off in Settings → Display.
- Unified Settings → Backup — native (encrypted) database backup and restore are now in one place. The Export dialog is reduced to migration use only and warns when a plaintext format is chosen.
- Fresh-install empty state — first launch shows a dedicated "No database yet" page with Create / Open call-to-action instead of an empty locked window. Add and Import become enabled as soon as the database is created or opened.
- Search-provider trigger keyword — GNOME Shell / KDE Plasma search now requires a leading keyword (default "otp") so OTP results surface above unrelated runner clutter.
Bug fixes
- Fix AdwSpinner template crash on libadwaita 1.5 (welcome-dialog regression from beta2).
- Fix hide-OTP startup race that left the validity bar frozen after the first reveal.
- Hidden OTP cell is now blank instead of showing partial digits; the validity bar hides with the OTP rather than running visibly.
- "Unlocking…" no longer flashes on fresh install when there is no database to unlock.
- Recover gracefully when the database file is missing on disk (e.g. removed externally) — surface a toast and return to the empty state instead of crashing.
- AdwDialog forms have explicit content-width/height; long add/edit/import forms scroll on overflow instead of clipping below the viewport.
- Harden import/export against malformed backups; fsync failures during save are surfaced instead of silently lost.
- Fix weak-ref window in the export dialog.
Other
- README updates (digits/period range, CLI and search-provider sections, modernized build steps).
- SECURITY.md updates.
sha256: 6de85bdc8a4b77a084135f9179341bc1467de1ff304d30bffa99db03a75163eb