# DeskFloat 开发进度

最后更新：2026-05-25

## 总体状态：MVP 完成 ✅

7 个里程碑全部完成，可运行/可构建，待真实环境联调与样式打磨。

---

## 里程碑详情

### 1. 项目骨架 ✅
- [x] `package.json` / `tsconfig.json` / `vite.config.ts`
- [x] `src-tauri/Cargo.toml` / `tauri.conf.json` / `build.rs`
- [x] `src-tauri/capabilities/default.json`（窗口/fs/shell/notification/global-shortcut 等权限）
- [x] 应用图标：用 `mmx image generate` 生成紫蓝玻璃风格 256² PNG，再用 `npx tauri icon` 转出 ICO/ICNS/各分辨率 PNG
- [x] 透明无边框窗口配置（decorations: false, transparent: true, alwaysOnTop, skipTaskbar）
- [x] `data-tauri-drag-region` 拖拽热区

### 2. JSON 持久化 + Zustand ✅
- [x] `storage.rs`：`AppState` 结构 + `data_path/ensure_data_file/read_state/write_state`
- [x] 启动时若 `data.json` 不存在则写入默认值（含 2 个示例快捷方式）
- [x] `commands.rs`：`load_state` / `save_state` 双向通道
- [x] `useAppStore.ts`：Zustand 全局 store + 300ms 防抖落盘
- [x] 启动 hydrate → store 落地 → `ready` 标志门控渲染

### 3. 任务列表 ✅
- [x] 工具栏触发按钮 `TasksTrigger`（含未完成数量徽标）
- [x] 展开面板 `TasksPanel`：输入框（回车新增）+ 列表
- [x] 单条任务：勾选、双击编辑、悬停显示删除/编辑按钮
- [x] @dnd-kit 拖拽排序
- [x] "清除已完成"批量动作

### 4. 自定义快捷按钮 ✅
- [x] `ShortcutsBar`：工具栏内横向滚动按钮区
- [x] `ShortcutsPanel`：管理面板（列表 + 增删改）
- [x] `ShortcutEditor`：编辑表单（名称 / 类型 / 目标 / 参数 / 工作目录 / 图标网格）
- [x] 4 种执行器：
  - `url` → 前端 `@tauri-apps/plugin-opener`
  - `app` / `cmd` / `powershell` → Rust `runner.rs::execute`（带 `CREATE_NO_WINDOW` 防控制台闪烁）
- [x] 27 个 lucide 图标白名单可选（避免引入全量包）

### 5. 番茄钟 ✅
- [x] `pomodoroStore.ts`：阶段（work/break）+ 剩余秒 + tick 逻辑
- [x] `PomodoroIndicator`：工具栏指示器（脉冲点 + MM:SS）
- [x] `PomodoroPanel`：开始/暂停/重置 + 进度条 + 可调工作/休息分钟
- [x] 阶段切换自动调用 `notify_user` 发系统通知
- [x] 监听 `deskfloat:toggle-pomodoro` 自定义事件（响应全局快捷键）

### 6. 设置 + 全局快捷键 + 自启 ✅
- [x] `SettingsPanel`：置顶 / 透明度 / 自启 / 数据目录入口
- [x] 三个全局热键编辑（`showHide` / `newTask` / `togglePomodoro`）
- [x] `useHotkeys.ts`：`register` + `unregisterAll`，配置变更时重新注册
- [x] 透明度通过 CSS 变量 `--bg-opacity` 实时刷新
- [x] 置顶通过 `set_always_on_top` 命令同步到窗口
- [x] 开机自启使用 `tauri-plugin-autostart`

### 7. 打磨 ✅
- [x] 折叠态（180×40）/ 正常态（560×56）/ 展开态（自适应）三档窗口尺寸动态切换（`set_window_size`）
- [x] 抽屉式面板下滑动画
- [x] 自定义 toggle / range 控件样式
- [x] README + 当前 PROGRESS 文档
- [x] 前端 `tsc -b && vite build` 通过：bundle 245 KB JS / 17 KB CSS（gzip 后 77 KB / 3.6 KB）
- [x] 后端 `cargo check` 通过

---

## 验证清单（手工 QA TODO）

下次需要在真机上跑 `npm run tauri:dev` 后逐项验证：

- [ ] 窗口透明 + 置顶 + 拖动正常
- [ ] 任务增删改查 + 拖拽排序持久化
- [ ] 4 种快捷方式分别执行成功（URL/notepad/cmd echo/PS）
- [ ] 番茄钟阶段切换通知到达
- [ ] 3 个全局快捷键在窗口失焦时仍生效
- [ ] 修改快捷键 → 旧热键释放、新热键注册
- [ ] 开机自启开关可来回切换
- [ ] `npm run tauri:build` 出 MSI / NSIS 安装包并能安装运行

---

## 后续可选增强（非 MVP）

- ~~系统托盘 + 右键菜单（show/hide/quit）~~ ✅ 已实现（`src-tauri/src/tray.rs`）
- 番茄钟"专注次数"统计（用户在初版选择不要）
- 快捷方式拖拽排序
- 多主题切换（浅色 / 高对比）
- 多窗口/多个独立工具栏布局
