Skip to content

Repository files navigation

Phantom Todo

Phantom Todo · 桌面幽灵

一抹安静隐形于桌面的智能磨砂玻璃,个人知识库的神经末梢。

Platform Tauri Rust Vue License


诞生初心 · The Genesis

我们厌倦了。

厌倦了每次打开 "待办应用" 都要等 Electron 吃掉 300MB 内存,只为看一眼今天该做什么。厌倦了被复杂的日程管理器用日历视图、看板视图、甘特图淹没,然后在信息过载中忘掉真正紧迫的那件事。厌倦了任务数据被锁死在某个私有数据库里,无法用最朴素的方式——打开一个文本文件——去审视自己的生活。

Phantom Todo 拒绝了一切臃肿。

它没有数据库。没有云同步。没有日历控件。没有注册登录。它只是一块寄生在你 Windows 桌面上的智能磨砂玻璃——以 Windows 11 原生 Mica 材质融入壁纸,以不足 8MB 的内存占用安静驻守,以一个纯文本 Markdown 文件承载全部待办事项。

它的全部数据就是一个你可以用 Obsidian、VS Code、甚至 notepad.exe 打开的 .md 文件。你的待办列表是一份完全属于你的纯文本资产,不依赖任何服务、任何公司、任何格式锁定。

这不是又一个 Todo 应用。 这是一种关于极低交互开销绝对视觉秩序感的执念。


核心特性 · Core Killers

🪟 系统级深层寄生

特性 实现
Windows 11 Mica 材质 通过 DwmSetWindowAttribute 直接调用 DWM API,窗口背景即壁纸的磨砂延伸
DWM 物理圆角裁剪 DWMWA_WINDOW_CORNER_PREFERENCE = ROUND,从操作系统层面裁剪窗口形状,消灭 CSS 圆角与系统直角的冲突
动态系统主题色 实时读取 Windows 注册表 AccentColor,全局 UI 元素自动匹配你的个性化主题色
开机静默自启 一键配置,随系统启动无感驻留
系统托盘寄生 最小化到托盘,左键显隐切换,右键菜单管理

📄 零数据库纯文本驱动

<!-- 桌面幽灵 (Phantom Todo) 任务文件 -->

- [ ] 完成季度报告 @due:2026-06-20T18:00:00+08:00 @id:1718841600000
- [ ] 给导师发邮件 @id:1718842200000
- [x] 买咖啡豆 @id:1718843000000
  • 实时双向解析标准 GFM Task List 格式
  • Obsidian 无缝衔接——同一个 .md 文件,两个视图
  • 无私有格式、无数据库、无锁定,你的数据永远属于你

✨ 秩序美学与动效

动效 描述
深渊渐变 (Deep Fade-out) 列表底部 Alpha 透明度溶解,超出视区的任务渐隐为残影,拒绝生硬切断
瞬间消散 (Particle Dissolve) 勾选任务的一瞬——缩放、透明、空间收缩——视觉垃圾在 600ms 内蒸发殆尽
3 秒后悔药 (Fleeting Undo) 消散后浮现的幽灵按钮,3 秒后自行隐没,转瞬即逝的安全网
霓虹突变 (Neon Strike) ! 的高优任务:左侧霓虹红指示线 + 文字发光 + 独立呼吸动效
呼吸闪烁 (Breathing Light) 截止时间 < 1 小时的任务,纯 CSS 驱动的心跳节律,零 JS 开销

⏳ 时间漏斗 · Time Funnel

倒计时信息的降维展示——用最少的视觉元素传递最准确的紧迫感:

剩余 > 24h  →  冷淡灰字 "剩余 3 天"
1h ~ 24h    →  主题色高亮 "剩余 6 小时"
< 1h        →  🔴 警示红 + 呼吸闪烁 + Windows 原生 Toast 通知

倒计时每 60 秒自动重算,精准推送临界状态通知,即使你正在全屏打游戏。

📌 物理级图钉

一键锁定窗口——调用 setResizable(false) 从 OS 底层彻底关闭窗口边缘拉伸权限,同时移除 DOM 中的 resize 手柄。不是 CSS 禁用,是物理层面的锁死

🖥️ 多屏幕位置记忆

笔记本屏与外接显示器各自独立记忆窗口位置和尺寸。按物理分辨率分 key 存储,拔掉显示器再接回来,窗口自动恢复到上次的位置。


技术栈 · Tech Stack

┌─────────────────────────────────────────────┐
│              Phantom Todo                   │
├─────────────┬───────────────────────────────┤
│  Frontend   │  Vue 3 + TypeScript + Vite    │
│  Backend    │  Rust (Tauri 2)               │
│  Storage    │  Plain Markdown (.md)         │
│  Native API │  Windows DWM + Registry       │
│  Build      │  Cargo + npm + NSIS/WiX       │
└─────────────┴───────────────────────────────┘
层级 技术 职责
渲染引擎 Tauri 2 (WebView2) 系统 WebView,无捆绑 Chromium,内存 < 8MB
后端核心 Rust 文件 I/O、原子写入、DWM API 调用、系统托盘
前端框架 Vue 3 Composition API 响应式 UI、动效系统、状态管理(零外部依赖)
构建工具 Vite 5 秒级 HMR、Tree-shaking
类型安全 TypeScript 5 前端全量类型覆盖
原生能力 windows-rs 0.58 Mica 材质、圆角、Accent Color 读取

快速开始 · Quick Start

环境要求

依赖 最低版本 安装指引
Rust 1.75+ rustup.rs
Node.js 18+ nodejs.org
Windows 11 (22H2+) Mica 材质需要 Win11

克隆与运行

# 1. 克隆仓库
git clone https://github.com/YourUsername/phantom-todo.git
cd phantom-todo

# 2. 安装前端依赖
npm install

# 3. 开发模式启动(支持热重载)
npx tauri dev

# 4. 生产环境打包(输出 .exe + .msi + NSIS 安装包)
npx tauri build

产物位置

src-tauri/target/release/
├── phantom-todo.exe                              # 独立可执行文件
└── bundle/
    ├── msi/Phantom Todo_0.1.0_x64_en-US.msi      # MSI 安装包
    └── nsis/Phantom Todo_0.1.0_x64-setup.exe      # NSIS 安装包

项目结构 · Architecture

phantom-todo/
├── src/                          # Vue 前端
│   ├── App.vue                   # 主界面(拖拽、resize、图钉、深渊渐变)
│   ├── api/tasks.ts              # IPC 桥接 + 时间漏斗算法
│   ├── store/taskStore.ts        # 全局状态(Undo 机制、心跳定时器)
│   ├── components/
│   │   ├── TaskItem.vue          # 任务条目(消散动效、霓虹突变、呼吸闪烁)
│   │   ├── QuickInput.vue        # 全局快捷键浮窗
│   │   ├── TimeDial.vue          # 滑动拨盘时间选择器
│   │   └── UndoToast.vue         # 3 秒后悔药
│   └── styles/index.css          # 设计 Token 系统
├── src-tauri/                    # Rust 后端
│   ├── src/
│   │   ├── main.rs               # 入口
│   │   ├── lib.rs                # Tauri Builder(Mica、托盘、快捷键)
│   │   ├── commands.rs           # IPC 命令层
│   │   ├── storage.rs            # 文件 I/O(原子写入 + 窗口状态持久化)
│   │   ├── models.rs             # 数据模型 + Markdown 解析器
│   │   └── windows_api.rs        # Windows 原生 API 封装
│   ├── capabilities/main.json    # Tauri 权限声明
│   └── tauri.conf.json           # 应用配置
└── Phantom List.md               # 产品需求文档 (PRD)

数据文件 · Data

Phantom Todo 的全部用户数据存储在 Windows AppData 目录下,不在项目目录内

C:\Users\<你的用户名>\AppData\Roaming\com.phantom-todo\
├── tasks.md              # 待办事项(标准 GFM Task List)
└── window_state.json     # 窗口位置/尺寸(按屏幕分辨率分 key)

设计哲学 · Design Philosophy

  1. 寄生,不占有——融入壁纸而非遮挡壁纸
  2. 文本即数据——拒绝数据库,拥抱纯文本
  3. 降维,不堆砌——用最少元素传递最大信息量
  4. 消散,不删除——完成任务是一种视觉愉悦,不是信息清理
  5. 本地,不云端——你的待办列表是你的私产

开源协议 · License

MIT License © Phantom Director

你可以自由使用、修改和分发本项目。


Built with obsession. Powered by Rust + Vue.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages