
mini-diarium v0.6.5
一款仅限本地的日记应用,具备严格的加密保护。免费、开源,且永不连接互联网。
Mini Diarium
一款仅本地运行、具备强加密的日记应用。 免费、开源,且永不联网。
mini-diarium.com · 下载 · 文档 · 功能 · 设计理念 · 性能基准
☕ 支持本项目
Mini Diarium 是免费、开源的,并且将永远如此。如果你觉得它有用并想支持其开发,可以考虑在 Ko-fi 上请我喝杯咖啡。每一笔捐赠都将直接用于维持这个项目的生命并推动其改进。
更喜欢加密货币?Monero、Bitcoin 和 Lightning 的捐赠方式见下方及 DONATE.md。
使用加密货币捐赠(Monero · Bitcoin · Lightning)
Monero (XMR),标准主网地址:
4ApNmqczyAoWsprSrCMsPNKTGhxaH1Cs6agLVaGiKuBBVSotWK9uj3oVQkWYUX9XUGQJyC9WB7cMofE8wfp5BbUoEdcwbjv
Bitcoin (BTC),链上原生 SegWit(bech32):
bc1q0y6v888ala2f8r7tm8g30vqt9ma09w9ww4jhum
Bitcoin over Lightning,一个适用于 Cake Wallet、Phoenix、Zeus、Blink 和 Wallet of Satoshi 的 Lightning 地址:
发送前请务必对照 master 分支上的 DONATE.md 核实地址。该文件还包含网络警告以及捐赠的用途与不用途说明。
下载
从 GitHub Releases 下载适用于你平台的最新版本。
需要 Windows 10 (1809)+、macOS 10.15 Catalina+ 或 Linux(Ubuntu 20.04+、Fedora 36+、Arch 或同等发行版)。
快速安装:
- Windows(Microsoft Store):apps.microsoft.com/detail/9PJFTX44ZS43
- Windows(WinGet):
winget install fjrevoredo.MiniDiarium - macOS(Homebrew):
brew tap fjrevoredo/mini-diarium然后执行brew install --cask mini-diarium - Linux(Flatpak):
flatpak install flathub io.github.fjrevoredo.mini-diarium - NixOS / Nix(Flakes):
nix run github:fjrevoredo/mini-diarium
有关软件包格式、首次运行说明(Gatekeeper / SmartScreen)以及校验和验证,请参阅 docs/INSTALLATION.md。
快速开始
- 启动 Mini Diarium
- 创建密码(这将加密你的日记;如果忘记密码则无法恢复)
- 写下你的第一篇日记。输入时会自动保存
- 使用
Ctrl+[/Ctrl+]在日期之间切换,或点击日历上的日期 - 完成后锁定你的日记
背景
Mini Diarium 是 Samuel Meuli 所著 Mini Diary 的精神继承者。我非常喜欢原版工具。它简单、私密,并且完全做到了日记应用该做的事。遗憾的是,它已多年无人维护,其依赖也已过时。我最初考虑将其分叉并现代化技术栈,但发现并不可行。因此我从零开始重建,在保持相同核心理念(加密、仅本地、专注)的同时,使用 Tauri 2、SolidJS 和 Rust 完全重写。最终成果是一款更轻量、更快速、加密更强并带有一些个性化设计的应用。
理念优先
Mini Diarium 刻意带有鲜明的设计主张。理念并非附属说明,它就是产品本身:
- 小巧、可扩展的核心:保持核心职责精简(加密、存储、认证),将额外功能推向扩展点
- 稳妥的安全:使用成熟的算法和经过审计的库,绝不使用自研加密
- 天生仅本地:无云同步、无遥测、无分析、无隐藏网络行为
- 易进易出:从常见格式导入,并以开放格式导出,避免锁定
- 范围专注:优先私人日记,而非功能堆砌
- 简单优于花哨:更少的活动部件、更小的攻击面、更易维护
完整原则及其如何落实到架构中,请阅读 PHILOSOPHY.md。
[!NOTE] Mini Diarium 将 AI 工具作为人类工程师的助力,而非替代品。每一项变更仍需经过深思熟虑的设计、严谨的实现、充分的测试和直接的反馈。责任、作者身份和最终判断始终归于人类。
功能
- 密钥文件认证:使用 X25519 私钥文件(而非密码或作为密码的补充)解锁你的日记,就像日记的 SSH 密钥。参见 docs/KEY_FILE_AUTHENTICATION.md。
- 仅本地日记:创建可在设备上自动解锁(无需密码提示)的日记,同时仍对静态条目进行加密。
- AES-256-GCM 加密:所有条目均使用随机主密钥加密。每种认证方式各自持有一份该密钥的包装副本,因此添加或移除一种认证方式的时间复杂度为 O(1),无需重新加密你的条目。
- 多日记:为不同用途(个人、工作、旅行)分别保存独立日记。
- 富文本编辑器:支持插入图片。
- 标签
- 每日多条目:同一日期可保存多条独立条目,而不会合并
- 日历导航
- 导入:支持 Mini Diary JSON、Day One JSON/TXT 和 jrnl JSON,采用增量导入方式,保留同日期的独立条目
- 导出:JSON 用于保持结构保真,Markdown 用于人类可读的最佳努力导出
- 主题
- 自动备份:在迁移和破坏性操作前创建经过验证的加密快照,并采用分层保留策略,可追溯至一年前
- 统计
- 偏好设置:每周起始日、未来条目开关、标题可见性、拼写检查、自动锁定、密码修改、认证方式管理
- 跨平台:Windows、macOS 和 Linux
- 零网络访问:无遥测、无分析、无更新检查
文档
- 在线用户文档:https://mini-diarium.com/docs
- 离线 / GitHub 用户指南:docs/USER_GUIDE.md
- 安装:docs/INSTALLATION.md
- 密钥文件认证:docs/KEY_FILE_AUTHENTICATION.md
- 架构图与流程:docs/ARCHITECTURE.md
- 已知问题 / 权衡取舍:docs/KNOWN_ISSUES.md
- 隐私:docs/PRIVACY.md
- 安全模型 + 报告:SECURITY.md
- 用户插件(Rhai):docs/user-plugins/USER_PLUGIN_GUIDE.md
架构
有关图表和详细数据流,请参阅 docs/ARCHITECTURE.md。
键盘快捷键
| 操作 | 快捷键 |
|---|---|
| 前一天 | Ctrl+[ |
| 后一天 | Ctrl+] |
| 跳转到今天 | Ctrl+T |
| 跳转到日期 | Ctrl+G |
| 上个月 | Ctrl+Shift+[ |
| 下个月 | Ctrl+Shift+] |
| 偏好设置 | Ctrl+, |
统计、导入和导出可通过“日记”菜单访问(无默认键盘加速键)。
在 macOS 上,请使用 Cmd 代替 Ctrl。
从源码构建
前置要求: Rust(参见 rust-toolchain.toml)、Bun 1.x 以及 Tauri v2 系统依赖。
有关详细的平台特定说明(Linux 软件包名称、Fedora 设置、Wayland 故障排查),请参阅 CONTRIBUTING.md。
git clone https://github.com/fjrevoredo/mini-diarium.git
cd mini-diarium
bun install
bun run tauri build
构建产物将位于 target/release/bundle/(Cargo 工作区根目录拥有 target/)。
技术栈
- Tauri 2:桌面应用框架(Rust 后端,Web 前端)
- SolidJS:响应式 UI 框架
- Rust:后端逻辑、加密、数据库
x25519-dalek、hkdf、sha2:用于密钥文件认证的 X25519 ECIES 密钥包装
- SQLite:本地加密数据库存储
- TipTap:富文本编辑器
- UnoCSS:实用优先的 CSS
- Kobalte:可访问的 UI 原语
已知问题
有关已知限制、刻意权衡和技术债务的完整列表,请参阅 docs/KNOWN_ISSUES.md。
面向用户的主要问题:
- 不支持并发访问同一日记文件(设计如此)
- 无密码恢复——丢失所有凭据即永久丢失(设计如此)
- 全文搜索以内存扫描方式对解密后的条目执行(在 v0.2.0 移除 FTS 后重新加入);不会将任何可搜索内容写入磁盘
- 重复导入同一文件会创建重复条目(无去重机制)
- 插件更改需要重启应用才能生效
扩展 Mini Diarium
你可以使用 Rhai 脚本在日记的 plugins/ 文件夹中添加本地导入/导出扩展。
有关要求、最佳实践和完整示例插件,请参阅 docs/user-plugins/USER_PLUGIN_GUIDE.md。
性能基准
针对加密和数据库热路径的 Criterion 基准测试会在每次推送到 master 时运行,并发布在 fjrevoredo.github.io/mini-diarium/benchmarks/。
该页面涵盖四个方面:Argon2id 密钥派生(刻意缓慢——约 200 毫秒以抵抗暴力破解)、三种条目大小下的 AES-256-GCM 加密/解密、SQLite 操作(插入、更新、删除、日期枚举、全表扫描)以及字数统计。每张卡片显示最新耗时,并附有最近 30 次 CI 运行的 Chart.js 趋势图。
贡献
有关设置说明、开发流程和约定,请参阅 CONTRIBUTING.md。 维护者如需添加官方插件,请参阅 docs/BUILTIN_PLUGIN_GUIDE.md。 维护者如需更改前端 UI/状态、Rust 后端、Tauri IPC 边界、WebView 安全或 CI,请参阅 docs/best-practices。
翻译
Mini Diarium 支持以下语言:
- English
- French (Français)
- German (Deutsch)
- Hindi (हिन्दी)
- Italian (Italiano)
- Portuguese (Brazil) (Português (Brasil))
- Spanish (Español)
如果你想添加对其他语言的支持,请参阅 docs/TRANSLATIONS.md,了解如何创建语言文件并提交 PR。
发布
面向维护者:有关分步发布说明,请参阅 docs/releasing/RELEASING.md。
安全
有关安全模型及如何报告漏洞,请参阅 SECURITY.md。
许可证
Mini Diarium 采用 MIT 许可证授权。参见 LICENSE。
致谢
由 Francisco J. Revoredo 倾心打造(并得到 Claude Code 的一点帮助)。
贡献者
感谢所有为 Mini Diarium 贡献代码、翻译或改进的人: