| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| checksums-linux.txt | 2026-02-21 | 195 Bytes | |
| Mini-Diarium-0.3.0-linux.AppImage | 2026-02-21 | 83.1 MB | |
| Mini-Diarium-0.3.0-linux.deb | 2026-02-21 | 10.6 MB | |
| checksums-macos.txt | 2026-02-21 | 95 Bytes | |
| Mini-Diarium-0.3.0-macos.dmg | 2026-02-21 | 18.7 MB | |
| checksums-windows.txt | 2026-02-21 | 194 Bytes | |
| Mini-Diarium-0.3.0-windows.exe | 2026-02-21 | 7.6 MB | |
| Mini-Diarium-0.3.0-windows.msi | 2026-02-21 | 9.1 MB | |
| 0.3.0 source code.tar.gz | 2026-02-21 | 9.6 MB | |
| 0.3.0 source code.zip | 2026-02-21 | 9.7 MB | |
| README.md | 2026-02-21 | 6.4 kB | |
| Totals: 11 Items | 148.3 MB | 0 | |
Mini Diarium v0.3.0 - Our biggest release yet
We did several major refactorings, fixes, and security upgrades. We cleaned up many open topics and we fixed many issues in the macOS version.
Added
- macOS menu bar: proper App menu (About, Preferences, Services, Hide, Quit), Edit menu (Undo/Redo, Cut/Copy/Paste/Select All for standard keyboard shortcuts), and Window menu (Minimize, Zoom, Close). The custom menu is now installed app-wide via Tauri
AppHandle::set_menu(instead ofwindow.set_menu, which is unsupported on macOS), so menu actions and shortcuts work correctly on macOS. - Lock-state menu enforcement: Navigation and Diary menu items are disabled while the diary is locked and automatically re-enable on unlock, preventing spurious menu actions on the lock screen. File/Help items (Preferences, About, Quit) remain available at all times.
- About from menu: Help › About (Windows/Linux) and Mini Diarium › About (macOS) now open the About overlay.
- Auto-lock on Windows session lock/suspend: the app now listens for native Windows session/power events and auto-locks the diary when the session is locked/logged off or the system is suspending.
- E2E test suite: end-to-end tests using WebdriverIO + tauri-driver that exercise the full app stack (real binary, real SQLite). The core workflow test covers diary creation, writing an entry, locking, and verifying persistence after unlock. Run locally with
bun run test:e2e; runs automatically in CI on Ubuntu after the build step.
Security
- Key material zeroized on all exit paths: wrapping keys derived during
wrap_master_keyandunwrap_master_keyare now explicitly zeroed before returning on both the success path and every error path (wrong password, wrong key file, decryption failure). Previously the wrapping key bytes could remain in memory whenever an incorrect credential was entered. - Auth structs zeroize on drop:
PasswordMethodandPrivateKeyMethodnow implementZeroizeOnDrop; memory is reliably overwritten when the struct is dropped, regardless of call site. - Keypair unlock buffer zeroized: the intermediate
Vec<u8>holding private key bytes decoded from the key file duringunlock_diary_with_keypairis now explicitly zeroized immediately after copying into the stack array. SecretBytesnewtype for decrypted master key:unwrap_master_keynow returnsSecretBytes(aZeroizeOnDropwrapper) instead of a bareVec<u8>, enforcing automatic cleanup of master key material regardless of whether the caller remembers to call.zeroize().- Mutex poisoning handled gracefully: all Tauri command handlers now propagate a
"State lock poisoned"error instead of panicking via.unwrap()if a thread panics while holding the diary state lock. Previously a single panicking thread could permanently crash the app for the user. - Diary directory config rejects relative paths:
config.jsonentries with relative paths (e.g.../../etc/passwd) are now silently rejected; only absolute paths are accepted. migrate_v3_to_v4is now atomic: the two-statement migration that drops the plaintext FTS table and bumps the schema version is now wrapped in a singleBEGIN IMMEDIATE/COMMITtransaction, consistent with other migrations.
Fixed
- Ordered lists in Markdown export: entries containing numbered lists (
<ol>) now export as1. First,2. Second, etc. instead of being silently converted to unordered bullet lists. - Word counts inflated by HTML markup: word counts for entries written in the rich-text editor were inflated because HTML tags (
<p>,<strong>,<em>, etc.) were counted as word tokens.count_wordsnow strips tags before counting. Existing stored word counts are not retroactively corrected, but new writes and updates are accurate. - Export JSON version always showed
0.1.0: themetadata.versionfield in JSON exports now reflects the actual app version instead of the hardcoded string"0.1.0". - Startup directory errors are now logged: failure to determine the system app-data directory or to create the app directory now emits a warning to the log instead of silently falling back or ignoring the error.
- Export no longer does N+1 queries: JSON and Markdown export previously fetched entry dates and then queried each entry individually. All entries are now fetched and decrypted in a single SQL query.
- E2E CI failure on Linux:
browserName: 'edge'is now set only on Windows (required by msedgedriver/WebView2) and omitted entirely on Linux. WebKitWebDriver (webkit2gtk-driver) rejects both'edge'and an empty string''; omitting the key means no browser-name constraint is imposed, which satisfies WebKitWebDriver's W3C capability matching. - E2E spec (
e2e/specs/diary-workflow.spec.ts) is now excluded from the Vitest unit test run, preventing aReferenceError: browser is not definedfailure when runningbun run test:run. - macOS CI build failure with Tauri
2.10.x: updated predefined menu item calls to the current API (services/hide/hide_others/show_allnow passNonelabel argument, and Window menuzoomwas replaced withmaximize). - Bundle identifier warning on macOS: changed app identifier from
com.minidiarium.apptocom.minidiarium, and added startup compatibility fallback so existing installs using the legacycom.minidiarium.appapp-data directory continue to load their existing diary/config. -
Auto-lock UI desync after OS lock: backend lock operations now emit a
diary-lockedevent so the frontend immediately transitions to the lock screen instead of remaining in an unusable unlocked layout. -
Custom diary location: choose where your diary file is stored (Preferences → Diary File → Change Location). The file is moved to the selected folder and the choice persists across restarts, enabling cloud sync via Dropbox, OneDrive, or any folder-based sync tool. The diary is automatically locked during the move; the app reloads so you can re-authenticate from the new location.
- Website contact obfuscation: footer email link now renders via
data-*attributes plus inline script so the address is reconstructed in the browser and not present in the raw HTML.
Full changelog: https://github.com/fjrevoredo/mini-diarium/compare/...v0.3.0