dsh-todo-time-log 0.6.1 → 0.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -83,7 +83,7 @@
83
83
 
84
84
  <p align="center"><img src="https://github.com/FantasyStarry/dsh-todo-time-log/raw/main/docs/images/demo-complete.png" alt="完成与撤销操作示范" width="100%"></p>
85
85
 
86
- 1. 点行内的「完成」(看板里是卡片上的 checkbox),完成时刻自动写入。
86
+ 1. 点行首的勾选圈(看板里是卡片上的勾选框),完成时刻自动写入。
87
87
  2. 底部浮出 toast,「撤销」可以一键退回未完成状态。
88
88
  3. 表格的「完成时间」列立即出现时间;页面高度不变,视线不被打断。
89
89
 
@@ -91,7 +91,7 @@
91
91
 
92
92
  <p align="center"><img src="https://github.com/FantasyStarry/dsh-todo-time-log/raw/main/docs/images/demo-quickadd.png" alt="对话式快速录入操作示范" width="100%"></p>
93
93
 
94
- 1. 打开「对话录入」,先确认工作区 —— `@` 文件补全按工作区隔离。
94
+ 1. 点新建框右侧的「批量」进入批量录入,先确认工作区 —— `@` 文件补全按工作区隔离。
95
95
  2. 一句话可以写多条,支持 `#分类`、`@文件`、`!优先级`、`^类型`。
96
96
  3. 发送后逐条回执;不满意可以整批撤销。
97
97
 
@@ -110,15 +110,18 @@
110
110
 
111
111
  | 能力 | 说明 |
112
112
  | --- | --- |
113
- | 🕒 创建 / 完成时间 | 全自动记录,本地时间 `YYYY-MM-DD HH:mm:ss`,未完成显示 `-`;重复完成、重复取消都会给出明确提示 |
114
- | 🗂 四视图 | 表格 / 看板 / 甘特图 / 日历,同一份数据四种视角;切换视图保留筛选与排序 |
113
+ | 🕒 创建 / 完成时间 | 全自动记录,本地时间 `YYYY-MM-DD HH:mm:ss`,未完成显示 `-`;表格的完成时间列直接给出「用时 / 进行中」两行,重复完成、重复取消都会给出明确提示 |
114
+ | 🗂 四视图 | 表格 / 看板 / 甘特图 / 日历,同一份数据四种视角;切换视图保留筛选与排序,排序统一走表头 |
115
+ | 🧭 行内操作 | 勾选圈完成、点标题展开详情、行尾「⋯」编辑 / 删除;删除二次确认后仍可用 toast 撤销 |
115
116
  | 📊 甘特图 | 纯前端计算(不新增接口):条形 = 创建 → 完成,未完成延伸到「现在」,支持全部 / 近 7 天 / 近 30 天 |
116
117
  | 🏷 分类 · 优先级 · 类型 | 项目分类(可从「已用分类 / 工作区 / 文件夹」建议里选)、高 / 中 / 低优先级、缺陷 / 新功能 / 改进 / 疑问 / 杂项 / 其他 |
117
118
  | 📎 `@工作区文件` | 把待办关联到代码文件;只给文件、不给分类时,自动取文件所在目录作为分类 |
118
119
  | ✍️ 四种录入 | 面板表单、对话式一句话(`新任务 写周报 #工作`)、`/todo` 斜杠命令、智能体工具 `todo_time_log` |
119
120
  | 🤖 智能体工具 | 智能体可 `list / get / create / complete / uncomplete / update / delete / health`,与 UI 共用同一实现 |
121
+ | 📦 导入 / 导出 | 页头「数据」:JSON 无损备份、CSV 给 Excel 统计;导入先预览再写入,支持合并 / 仅新增 / 覆盖全部,自动备份并可直接撤销 |
120
122
  | 🔒 本地数据 | `<DSH_PROFILE_DIR 或 ~/.dsh>/todo-time-log/todos.json`;临时文件 + rename 原子替换、写入串行化、跨进程文件锁 |
121
- | 🌗 主题与无障碍 | 全部颜色走 `--dsw-alias-*` token,明暗主题自适应;`aria-live`、`aria-sort`、键盘操作、减少动效偏好 |
123
+ | ✨ 动效 | 列表入场错位、勾选回弹、详情 / 菜单展开、对话框淡入、甘特条「画」出来、筛选计数弹一下;只用 transform / opacity / clip-path,时长 120–200ms |
124
+ | 🌗 主题与无障碍 | 全部颜色走 `--dsw-alias-*` token,明暗主题自适应;`aria-live`、`aria-sort`、键盘操作;`prefers-reduced-motion` 下全部动画与过渡关闭 |
122
125
  | ⌨️ 面板快捷键 | `/` 聚焦搜索、`n` 聚焦新建、`f` 循环切换筛选 |
123
126
 
124
127
  ---
@@ -174,7 +177,7 @@ plugin_manager action=install_bundle target=<本地仓库绝对路径>
174
177
  | 入口 | 怎么用 | 适合 |
175
178
  | --- | --- | --- |
176
179
  | 面板表单 | 顶部输入框 + 分类 / 优先级 / 类型选择器,Enter 创建 | 手动逐条记录 |
177
- | 对话式录入 | 面板右上「对话录入」,一句话写多条,逐条回执 + 撤销 | 一次记一堆 |
180
+ | 对话式录入 | 新建框右侧「批量」,一句话写多条,逐条回执 + 撤销 | 一次记一堆 |
178
181
  | `/todo` 命令 | Harness 主输入框:`/todo 写周报 #工作 lib/store.js` | 不离开对话流 |
179
182
  | 智能体工具 | 让模型调用 `todo_time_log`(`create` / `complete` / `list` …) | 让 AI 代记、代查 |
180
183
 
@@ -212,6 +215,22 @@ curl -s http://127.0.0.1:<port>/api/dsh-todo-time-log/health
212
215
 
213
216
  HTTP 接口与智能体工具共用同一个业务实现(`executeTodoAction`),因此不存在「UI 能做的工具做不到」的情况;接口经宿主认证,未登录返回 401、跨站/不可信来源返回 403。
214
217
 
218
+ ### 导入 / 导出
219
+
220
+ 面板右上角「数据」打开对话框:
221
+
222
+ | 能力 | 说明 |
223
+ | --- | --- |
224
+ | 导出 JSON | 无损信封(`version: 5` + 全部字段 + 时间戳),可原样回导;导出前会先合并其他窗口刚写入的数据 |
225
+ | 导出 CSV | UTF-8 BOM + CRLF,Excel 直接打开;时间为本地 `YYYY-MM-DD HH:mm:ss`(秒级,毫秒级无损请用 JSON),`文件` 用 `;` 分隔,额外一列只读的 `耗时(分钟)` |
226
+ | 导入 JSON | 支持本插件信封 v1–v5、裸 `Todo[]` 数组;旧版本字段自动迁移 |
227
+ | 导入 CSV | 中英文表头别名(标题/title、分类/project、状态/status、优先级/priority、类型/type、创建时间/createdAt …),中文值「已完成 / 高 / 缺陷」也能识别 |
228
+ | 两段式导入 | 选文件后先 `dryRun` 预览「新增 / 更新 / 跳过 / 移除 / 非法行」,确认后才写盘 |
229
+ | 冲突策略 | **合并**(默认,同 ID 取 `updatedAt` 较新)/ **仅新增**(同 ID 跳过)/ **覆盖全部**(先自动备份再整体替换) |
230
+ | 自动备份 + 撤销 | 每次真正写入前生成 `<dataFile>.bak-<时间戳>`;导入结果的 toast 带「撤销」,恢复前还会再备份一次当前状态 |
231
+
232
+ 限制:单次导入最多 5000 条(与列表上限一致),导入请求体上限 8 MiB;备份文件保留在同一目录,可手动删除或恢复。
233
+
215
234
  ---
216
235
 
217
236
  ## 数据与安全
@@ -219,6 +238,7 @@ HTTP 接口与智能体工具共用同一个业务实现(`executeTodoAction`
219
238
  - **本地优先**:数据只存在本地 JSON 文件,不联网、不上传、不触发模型调用。
220
239
  - **写入可靠**:临时文件 + rename 原子替换;全部写操作串行化;跨进程写入用文件锁 + mtime 合并,避免多窗口互相覆盖。
221
240
  - **损坏自愈**:JSON 损坏 / 结构异常 / 版本不支持会分别归档备份,然后重建空列表并给出提示;修复与异常提示只投递一次,不刷屏。
241
+ - **导入可回退**:导入 / 覆盖前自动写入 `<dataFile>.bak-<时间戳>` 备份;撤销只允许恢复同目录下本插件生成的 `.bak-*` 文件,路径穿越与任意文件读取都会被拒绝。
222
242
  - **版本迁移**:v1 → v5 全部自动迁移,下一次写入即落盘新版本。
223
243
  - **接口边界**:`/files`、`/quick-add` 只接受 `/workspaces` 返回的候选工作区;文件引用只接受工作区相对路径,绝对路径、盘符、`..` 一律拒绝。
224
244