Mini Diarium

fjrevoredo·fjrevoredo.MiniDiarium

Encrypted, local-first journaling app

A local-first journal with serious encryption. Free, open source, and never touches the internet.

winget install --id fjrevoredo.MiniDiarium --exact --source winget

Latest 0.6.3·July 27, 2026

Release Notes

What's Changed

This release completes the in-app navigation migration with header day controls and a ⋮ menu, adds timeline display preferences and a donation page, and fixes Linux spell check. Internally, the backend is now a three-crate open-core workspace with a sealed API façade, and the Microsoft Store update pipeline is live.

Added

  • Website donation page: added a donation page at mini-diarium.com/donate/ (https://mini-diarium.com/donate/), reachable from a "Support the project" section on the homepage and a Donate link in the site-wide footer. It lists Ko-fi (card, PayPal, Apple Pay) and the Monero, Bitcoin, and Bitcoin-over-Lightning addresses, each with a copy-to-clipboard button, plus the same network-mismatch and traceability notes as DONATE.md. Donations were previously reachable only from the GitHub repo.
  • Day navigation in the header (TODO-0063): the header date is now flanked by previous-day (◀) and next-day (▶) buttons, and clicking the date opens the Go to Date picker. These actions no longer require opening the OS menu bar. The next-day button respects the "allow future entries" preference, stopping at today when future entries are disabled.
  • Statistics, Import, and Export are now always available from the app (TODO-0065): the header ⋮ menu always shows Preferences, Statistics, Import, and Export. None of them require a trip to the OS menu bar anymore.
  • Timeline display preferences (TODO-0072, addressing #205 (https://github.com/fjrevoredo/mini-diarium/issues/205)): a new Timeline section under Preferences → Writing lets you shrink the timeline date column and hide the entry preview. Date format offers Full ("Monday, January 15, 2024"), Long, Medium, Short, and ISO (2024-01-15). Every style except ISO follows your interface language, and each option in the dropdown shows a live example using today's date. Show entry preview collapses each row to just the date and title when turned off, fitting more entries on screen. Both default to the previous behavior, so nothing changes unless you opt in. Screen readers always hear the full date, even when the visible column uses a short format.

Changed

  • The native OS menu is now just Preferences and Exit (TODO-0065): every other native menu item (Previous/Next Day, Go to Today, Go to Date, Previous/Next Month, Statistics, Import, Export, About) is gone now that all of them are reachable inside the app, from the header controls and the ⋮ menu. On Windows and Linux the menu bar is a single File menu. On macOS the Mini Diarium app menu keeps Preferences and Quit alongside the standard Services/Hide/Show All items (Edit and Window are untouched, since they back standard OS text-editing and window behavior). About now opens from the ⓘ button in the header, which already did the same thing. All keyboard shortcuts (Ctrl/Cmd+[, ], Shift+[, Shift+], T, G, F, ,) continue to work exactly as before.

Fixed

  • Spell check now works on Linux (TODO-0081, addressing #227 (https://github.com/fjrevoredo/mini-diarium/issues/227)): the "Enable spellcheck" preference silently did nothing on Linux, so misspelled words never got the red squiggly underline. It now works. Mini Diarium turns on spell checking and picks a dictionary based on your interface language, refined by your system locale's region when the two agree. Toggling the preference off removes the underlines immediately, with no restart needed. Windows and macOS are unchanged. The Flatpak build bundles dictionaries for all seven interface languages. The .deb/.rpm builds use your system's installed hunspell dictionaries, or you can drop your own into your enchant config directory. See Preferences → Spell check on Linux (https://mini-diarium.com/docs/preferences/) for details.
  • Missing Linux spellcheck dictionary guidance: Preferences now gives plain-language recovery steps when spell checking is unavailable, including a link to Linux setup instructions and Flatpak repair guidance.

Internal

  • Native-menu removal and the JS shortcut layer (TODO-0065, closing TODO-0062/0063/0064): src-tauri/src/menu.rs now builds only the Preferences item, so menu-preferences is the only menu-* event the backend emits and MainLayout is its only listener. The LockableMenuItems managed state and updatemenulockstate are gone (Preferences is always enabled), removing eight call sites across the auth commands and the AppHandle parameters that existed only to reach them. MenuLabels/updatemenu_locale shrank to the two surviving labels across all six locales. The six removed accelerators are now a single keydown handler in the new src/lib/keyboard-shortcuts.ts (registered by MainLayout): it matches brackets on e.code, ignoring Alt so AltGr bracket input still reaches the editor. Their navigation logic moved into src/lib/day-navigation.ts (goToToday, goToPreviousMonth, goToNextMonth, the latter keeping the future-clamp). The "is any overlay open" guard that MainLayout used to duplicate is now a single isAnyOverlayOpen() in src/state/ui.ts, shared by all three consumers.
  • inAppMenu feature flag graduated and retired (TODO-0065): the flag is gone from the FeatureFlag union and DEFAULTS, per the ADR's no-migration retirement rule. src/state/feature-flags.ts is now dormant infrastructure with an empty union. The next feature needing a runtime toggle adds three lines rather than rebuilding the store. Flags are declared in a FEATURE_FLAGS registry that pairs each with its label's i18n key. Preferences → Advanced → Experimental Features renders from that registry and hides itself entirely when it's empty, which is the case today. The inAppMenuLabel translation was deleted from en.ts and all six locale files. e2e/specs/header-actions.spec.ts no longer seeds the flag and instead adds a Ctrl+[ smoke check. That's the only proof the JS shortcut layer really replaced the OS accelerators in a real WebView. helpers.ts keeps its now-callerless setFeatureFlag helper on purpose, because the WebView2 reload gotcha it encodes is expensive to rediscover. The onboarding tour's Import step no longer needs a native-menu-bar fallback, which removed the last consumer of edgeHint. EdgeHint, computeEdgeHintPosition, and EdgeDot came out of OnboardingOverlay.tsx (the remaining cleanup is tracked as TODO-0062-01).
  • Core-crate distribution decided (TODO-0084, open-core M4a): recorded the decision in docs/decisions/2026-07-core-crate-distribution.md, which settles how the two library crates (mini-diarium-core, mini-diarium-crypto) would reach a second consumer. The choice is a tagged git dependency. crates.io publication is deferred behind an explicit trigger, not rejected. A git submodule is rejected outright. The reasoning is a permanence asymmetry: a crates.io yank neither deletes the artifact nor frees the name, while a git dependency can always be upgraded to a published crate later. No second consumer exists yet, so publishing now would create a semver obligation with no matching benefit. Publishing is also transitive: shipping mini-diarium-core on crates.io would require publishing mini-diarium-crypto first, which is why "publish crypto only" is recorded as the fallback if a crate name ever comes under threat (all three names were unclaimed as of 2026-07-24, and leaving them unclaimed is a knowingly-accepted risk). Both library crates keep independent 0.x versions decoupled from the app's, stay out of bump-version.sh/.ps1, the pre-release guard, and RELEASING.md, and the pre-1.0/internal API.md contract is unchanged. Both API.md files, RELEASING.md, and OPENCORESTRATEGY.md were updated to match. Documentation only, no code or behavior change.
  • Filled in the Cargo manifest license and author metadata: none of the three crates declared a license, despite the repo being MIT, and all three carried a placeholder authors = ["you"]. Both are now correct (license = "MIT", repository, and the real copyright holder). This is a correctness fix made independently of the M4a distribution decision above, not publishing prep. One user-visible effect: Tauri derives the Debian package Maintainer field from the app crate's authors, so .deb releases previously shipped Maintainer: you. The Windows Installer Manufacturer field is unaffected, since tauri-utils derives bundle.publisher from the identifier (com.minidiarium → minidiarium), not from authors.
  • Enabled the Microsoft Store update pipeline (TODO-0078): brought the never-run msstore-publish.yml to a working state and validated it end-to-end with a green dry run (draft submission created via --noCommit, confirmed PendingCommit, never published). The dry runs surfaced four fixes.
  • The msstore publish call now uses Microsoft's documented MSIX package-update form, msstore publish

<path-to-.msix> -id . It previously passed the product id as the positional project/URL argument.

  • scripts/build-msix.ps1 is invoked directly in the already-shell: pwsh pack step, instead of through a nested pwsh that failed to resolve the script on the runner.
  • An optional dryrunversion input lets the pipeline be validated against a branch that actually contains the msix/ tooling. No released tag at or before v0.6.2 does, since it was added hours after that tag, and such a tag's version wouldn't exceed the live Store package either.
  • winget install failures are now fail-fast. PowerShell doesn't treat a nonzero winget exit code as terminating, so a transient download failure was previously swallowed until a confusing error showed up 15 minutes later in the pack step.

Real releases are unaffected: they omit dryrunversion and derive the version from the tag. This also required a maintainer-side fix outside the codebase. The account had no Microsoft Entra tenant to … (truncated — see ReleaseNotesUrl for full notes)

Installer type: nullsoft

x643815E7323C825D70E402EBBF074165479107F3D11D24A50368976037DDE95CE9

Details

Homepage
https://github.com/fjrevoredo/mini-diarium
License
MIT
Publisher
fjrevoredo
Support
https://github.com/fjrevoredo/mini-diarium/issues
Privacy Policy
https://github.com/fjrevoredo/mini-diarium/blob/master/docs/PRIVACY.md
Copyright
Copyright (c) 2026 Francisco J. Revoredo
Moniker
mini-diarium

Tags

privacyjournalingjournaldiaryfossopen-sourcerust

Older versions (21)

0.6.2
x64F97E46DA7DC120B19B98B8B9DCDAC96D45A3721C1A29766AD08D425A380051CB
0.6.1
x64811124EC3BDCE3EF1B3832A52D345B4DD36857541EAB37C90354F06628B7B5CD
0.6.0
x64F9834F49F51F2990AA63A17ECBD1F3DEDB9F0281469E4A2BDD3B766A77AAC7FC
0.5.4
x64C530A084C6E800CA33780A6C750E9E196178B4B2F8C0CFEAB849F609625119A2
0.5.3
x648DA30AA786D341E07F4926E09FDAFFB381EBF2223F335F3921A1A2200454369C
0.5.2
x644F1580D51EA7D153E6013170F03D91723A9769A2D7D34D14282EACC7BBFC014E
0.5.1
x64C1509423BE23ABF25A47555045DB5105B61C151E046CE2145725B24347081C76
0.4.22
x64686190BDB4CA83FA6CBD67F1EA7BC2A53B95A4E0AB0C9AFA0CAE6329249DA12A
0.4.21
x647337A3C23DD9D6F43BA60B1DE06645151E36C0ADD184D22FEFFC19ECF1E7FC4F
0.4.20
x64FA188438ECFE24826308A4F8983CF44CC5C986BDA9A18218F41278D90C18A0BF
0.4.19
x64F9F9894AE72561FB7B82FE0FF5C775980C0F014434AA477A21864B8A8E6837A6
0.4.18
x645AAADC54EB6FA95EC0D1CD460B28C13DF9DD59764DFA7020C0F07D00D9AAB65F
0.4.15
x64D0F536410429E6090FDFD4AA364709A96069DE934C51B5E1FCB8D8661CCBB29F
0.4.14
x648ADA9F7CAB95E1BEEA3ADE0BC01D96DD53CF2ABDACB7719E52E4E6E6BA29F375
0.4.13
x64C15559EFE011C39A01CF4F707EE310F86B4522A55614E00B83F6D869010DD563
0.4.12
x64977782B2605E773EBF51EB653674EB163A15CBBEA07CC888D4FEFA1AFDA2430A
0.4.10
x64FFCBCE67BBB7FEB26BF65082B6EF9A9DAA9E307CA100E5359D3C72A7A827F70A
0.4.8
x647A11EFA6ADD5F0193BA4018188B439DADB35F107D1A5F2A6292CBD463247F6AC
0.4.7
x64040953146F9BC8D1E8D6C234223D2FE11F61B4256AF5C2905F8A6543F2FCB2F6
0.4.6
x648C9B3E14CBED0DB0B9B57499F7B8C77B4E8BF7F277BC9EDD1148CDF01DEFA715
0.4.4
x6415D0C03A993174996921D0D5201E36552432819BE6265913403D2DE378A6107F