So Todo 是一个仅面向 Windows 的待办事项应用,使用 Dioxus 0.7、Tailwind CSS 和 DaisyUI 构建。应用数据存储在本地 SQLite 单文件中,既可直接运行单文件 sotodo.exe,也可构建 Microsoft Store 使用的 MSIX 包。
- 未完成、日历、已完成三个视图
- 待办可选择是否设置日期、时间和提前提醒
- 支持到期时通知,以及到期前指定分钟数通知
- 未完成待办超过到期时间后标记为已超期
- 支持不指定日期/时间的待办,并在列表中单独分组
- 支持每周、每月等重复待办
- 描述内容支持多行展示,超过两行默认折叠,可点击展开
- Windows 系统托盘,支持显示主界面和退出
- 支持最小化到托盘、置顶、无原生标题栏拖动
- 支持开机自启动
- 默认跟随系统明暗主题,也可选择 DaisyUI 支持的主题
- 支持中文/英文界面,并可跟随系统语言
- 使用 SQLite 单文件存储,无需外部数据库
- 图标、CSS 等运行时资源内嵌到 exe
数据库文件位于:
%USERPROFILE%\.sotodo\sotodo.db
SQLite 通过 rusqlite 的 bundled 特性随应用编译,不需要额外安装 SQLite。
安装 Rust 和 Dioxus CLI 后,可以启动桌面开发服务:
dx serve --platform desktop运行测试:
cargo test构建 Windows 桌面输出件:
dx build --platform desktop --locked输出目录:
target\dx\sotodo\debug\windows\app\sotodo.exe
本地开发版本显示为 develop。
通过 GitHub Actions 发布时,tag 名会写入应用内版本号,例如 v0.0.2。新增形如 v* 的 tag 并推送后,会触发 release workflow 构建并发布对应版本。
安装 Windows SDK 后,可构建未签名的 Store-ready MSIX:
.\scripts\build-msix.ps1 -Version v1.0.0.5输出文件位于 dist\sotodo.msix。新版本使用四段 tag,例如 v1.0.0.5,并原样写入 MSIX 包版本。为兼容旧 release,三段 tag 仍会按 v0.0.4 -> 1.0.0.4 转换。该包使用 Partner Center 中为 So Todo 分配的正式 Identity,上传 Microsoft Store 后由商店重新签名。商店文案、隐私政策和人工提交清单见 store/。
应用运行时需要的 CSS 和图标资源会内嵌到可执行文件中。assets/ 目录仍然是编译期输入,但发布后的应用不依赖外部 assets/ 文件夹。
assets/ 编译期 CSS 和应用图标资源
packaging/msix/ Microsoft Store 清单和磁贴图标
scripts/ MSIX 构建与资源生成脚本
src/ UI、状态、存储、托盘、自启和通知模块
store/ 商店文案、隐私政策和提交清单
Cargo.toml Rust 依赖和 feature 配置
Dioxus.toml Dioxus 桌面打包配置
.github/ GitHub Actions 构建和发布配置