@walknpm/todo-cli 1.2.0 → 2.0.0
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 +200 -144
- package/README.zh-CN.md +150 -153
- package/package.json +19 -6
- package/src/cli.js +396 -24
- package/src/server.js +422 -0
- package/src/todo.js +544 -35
- package/web/css/style.css +804 -0
- package/web/index.html +216 -0
- package/web/js/app.js +934 -0
package/README.zh-CN.md
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
# todo-cli
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> [English](./README.md) | **简体中文**
|
|
4
4
|
|
|
5
|
-
一个零依赖的 Node.js
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
一个零依赖的 Node.js 待办事项管理器,支持 **CLI + Web 界面**。完整的增删改查、
|
|
6
|
+
子任务、循环任务、任务依赖、时间追踪、置顶、批量操作、分类/标签、优先级排序、
|
|
7
|
+
截止日期、搜索、统计、看板、日历视图、时间线、导出(JSON / CSV / Markdown)
|
|
8
|
+
和自动更新。数据保存在 `~/.todo-cli/todos.json`。
|
|
8
9
|
|
|
9
10
|
## 环境要求
|
|
10
11
|
|
|
@@ -16,7 +17,7 @@
|
|
|
16
17
|
|
|
17
18
|
```bash
|
|
18
19
|
npm install -g @walknpm/todo-cli
|
|
19
|
-
todo --version # → todo
|
|
20
|
+
todo --version # → todo v2.0.0
|
|
20
21
|
```
|
|
21
22
|
|
|
22
23
|
**通过 git:**
|
|
@@ -25,189 +26,185 @@ todo --version # → todo v1.1.0
|
|
|
25
26
|
git clone https://gitcode.com/hw_aishell_projects/todo_cli.git
|
|
26
27
|
cd todo_cli
|
|
27
28
|
npm install -g .
|
|
28
|
-
todo --version # → todo
|
|
29
|
+
todo --version # → todo v2.0.0
|
|
29
30
|
```
|
|
30
31
|
|
|
31
|
-
##
|
|
32
|
-
|
|
33
|
-
| 命令 | 说明 |
|
|
34
|
-
| --------------------- | -------------------------------------------------- |
|
|
35
|
-
| `add <标题>` | 添加新待办 |
|
|
36
|
-
| `list` | 列出待办(默认命令) |
|
|
37
|
-
| `done <id>` | 标记完成(`done --all` = 全部完成) |
|
|
38
|
-
| `toggle <id>` | 切换完成 / 待办状态 |
|
|
39
|
-
| `edit <id>` | 编辑待办 |
|
|
40
|
-
| `delete <id>` | 删除待办 |
|
|
41
|
-
| `search <关键词>` | 搜索标题 / 标签 / 分类 / 备注 |
|
|
42
|
-
| `stats` | 显示统计概览 |
|
|
43
|
-
| `export [json\|csv\|md]` | 导出全部待办到标准输出 |
|
|
44
|
-
| `archive` | 归档(删除所有已完成项) |
|
|
45
|
-
| `update` | 自动更新到最新版(`--check` = 仅检查不安装) |
|
|
46
|
-
| `clear` | 清空所有待办 |
|
|
47
|
-
| `help` | 显示帮助 |
|
|
48
|
-
|
|
49
|
-
`-h` / `--help` 可附加在**任意命令**后(或单独使用)显示帮助。
|
|
50
|
-
`-v` / `--version` 显示版本号。
|
|
51
|
-
|
|
52
|
-
## 参数标志
|
|
53
|
-
|
|
54
|
-
| 标志 | 适用命令 | 说明 |
|
|
55
|
-
| ---------------------- | ---------------- | ------------------------------------------ |
|
|
56
|
-
| `-p, --priority <v>` | add, edit | `high` \| `medium` \| `low`(默认: medium) |
|
|
57
|
-
| `-t, --tags <v>` | add, edit | 逗号分隔的标签 |
|
|
58
|
-
| `-c, --category <v>` | add, edit | 分类名称 |
|
|
59
|
-
| `-d, --due <v>` | add, edit | 截止日期 `YYYY-MM-DD` |
|
|
60
|
-
| `--note <v>` | add, edit | 较长的备注 / 描述 |
|
|
61
|
-
| `--title <v>` | edit | 新标题 |
|
|
62
|
-
| `--status <v>` | list | `all` \| `done` \| `pending` |
|
|
63
|
-
| `--tag <v>` | list | 按标签过滤 |
|
|
64
|
-
| `--sort <v>` | list | `priority` \| `created` \| `due` \| `id` |
|
|
65
|
-
| `--all` | done | 完成所有待办项 |
|
|
66
|
-
| `--check` | update | 仅检查是否有更新,不安装 |
|
|
67
|
-
| `--format <v>` | export | `json` \| `csv` \| `md`(默认: json) |
|
|
68
|
-
|
|
69
|
-
## 使用示例
|
|
32
|
+
## 🚀 Web 界面
|
|
70
33
|
|
|
71
|
-
|
|
72
|
-
# 添加待办(含截止日期、优先级、标签、分类、备注)
|
|
73
|
-
todo add "提交报税单" -p high -d 2025-01-31 -c finance -t urgent,monthly --note "附上收据"
|
|
74
|
-
|
|
75
|
-
# 列出与过滤
|
|
76
|
-
todo list
|
|
77
|
-
todo list --status pending --sort due
|
|
78
|
-
todo list --category work --priority high
|
|
34
|
+
启动 Web 服务器:
|
|
79
35
|
|
|
80
|
-
|
|
81
|
-
todo
|
|
82
|
-
|
|
83
|
-
#
|
|
84
|
-
todo done --all
|
|
85
|
-
todo archive
|
|
86
|
-
|
|
87
|
-
# 统计概览
|
|
88
|
-
todo stats
|
|
89
|
-
|
|
90
|
-
# 自动更新
|
|
91
|
-
todo update --check # 检查是否有新版本
|
|
92
|
-
todo update # 安装最新版本
|
|
93
|
-
|
|
94
|
-
# 导出
|
|
95
|
-
todo export csv > todos.csv
|
|
96
|
-
todo export md
|
|
36
|
+
```bash
|
|
37
|
+
todo web # 默认端口 3456
|
|
38
|
+
todo web 8080 # 自定义端口
|
|
39
|
+
npm run web # 通过 npm 脚本
|
|
97
40
|
```
|
|
98
41
|
|
|
99
|
-
|
|
42
|
+
然后在浏览器中打开 **http://localhost:3456**。
|
|
43
|
+
|
|
44
|
+
### Web 界面功能
|
|
45
|
+
|
|
46
|
+
| 功能 | 说明 |
|
|
47
|
+
| ---- | ---- |
|
|
48
|
+
| **仪表盘** | 统计卡片、完成率、最近待办、即将到期 |
|
|
49
|
+
| **列表视图** | 完整待办列表,支持行内操作、筛选、排序、搜索 |
|
|
50
|
+
| **看板** | 拖拽在"待办"和"已完成"列之间移动 |
|
|
51
|
+
| **日历** | 月历视图,待办按截止日期显示 |
|
|
52
|
+
| **时间线** | 所有待办的时间顺序活动流 |
|
|
53
|
+
| **添加/编辑弹窗** | 完整表单,包含循环和置顶 |
|
|
54
|
+
| **详情视图** | 子任务管理、依赖关系、时间戳、快捷操作 |
|
|
55
|
+
| **时间追踪** | 启动/停止计时器,浮动计时器组件 |
|
|
56
|
+
| **深色/浅色主题** | 切换并保存到 localStorage |
|
|
57
|
+
| **响应式** | 适配桌面、平板和手机 |
|
|
58
|
+
| **键盘快捷键** | `n` = 新建待办,`/` = 搜索,`Esc` = 关闭弹窗 |
|
|
59
|
+
|
|
60
|
+
## 命令
|
|
61
|
+
|
|
62
|
+
### 核心命令
|
|
63
|
+
|
|
64
|
+
| 命令 | 说明 |
|
|
65
|
+
| ---- | ---- |
|
|
66
|
+
| `add <标题>` | 添加新待办 |
|
|
67
|
+
| `list` | 列出待办(默认命令) |
|
|
68
|
+
| `show <id>` | 查看待办详情 |
|
|
69
|
+
| `done <id>` | 标记完成(`done --all` = 全部完成) |
|
|
70
|
+
| `toggle <id>` | 切换完成/待办状态 |
|
|
71
|
+
| `edit <id>` | 编辑待办 |
|
|
72
|
+
| `delete <id>` | 删除待办(别名:`rm`、`remove`) |
|
|
73
|
+
| `duplicate <id>` | 复制待办(别名:`dup`) |
|
|
74
|
+
| `pin <id>` | 切换置顶状态 |
|
|
75
|
+
| `search <关键词>` | 搜索标题/标签/分类/备注/负责人 |
|
|
76
|
+
| `stats` | 显示统计信息 |
|
|
77
|
+
| `export [json\|csv\|md]` | 导出所有待办 |
|
|
78
|
+
| `archive` | 归档(删除)所有已完成的待办 |
|
|
79
|
+
| `clear` | 删除所有待办 |
|
|
80
|
+
| `web [端口]` | 启动 Web 界面服务器(默认:3456) |
|
|
81
|
+
| `update` | 更新到最新版本(`--check` = 仅检查) |
|
|
82
|
+
| `help` | 显示帮助 |
|
|
83
|
+
|
|
84
|
+
### 子任务
|
|
100
85
|
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
│ ├── store.js # JSON 文件持久化层
|
|
107
|
-
│ ├── todo.js # 领域逻辑(增删改查、搜索、统计、导出等)
|
|
108
|
-
│ └── cli.js # 命令解析、ANSI 彩色、表格输出
|
|
109
|
-
├── skill/
|
|
110
|
-
│ ├── SKILL.md # DSH 技能指令
|
|
111
|
-
│ ├── README.md # 技能文档
|
|
112
|
-
│ └── CHANGELOG.md # 技能变更记录
|
|
113
|
-
├── package.json
|
|
114
|
-
├── README.md # 英文文档
|
|
115
|
-
└── README.zh-CN.md # 中文文档
|
|
86
|
+
```bash
|
|
87
|
+
todo subtask add <id> <标题> # 添加子任务
|
|
88
|
+
todo subtask done <id> <sid> # 切换子任务完成状态
|
|
89
|
+
todo subtask edit <id> <sid> <标题> # 编辑子任务标题
|
|
90
|
+
todo subtask delete <id> <sid> # 删除子任务
|
|
116
91
|
```
|
|
117
92
|
|
|
118
|
-
|
|
93
|
+
### 循环任务
|
|
119
94
|
|
|
120
|
-
|
|
95
|
+
```bash
|
|
96
|
+
todo recur <id> daily [间隔] # 每 N 天重复
|
|
97
|
+
todo recur <id> weekly [间隔] # 每 N 周重复
|
|
98
|
+
todo recur <id> monthly [间隔] # 每 N 月重复
|
|
99
|
+
todo recur <id> yearly [间隔] # 每 N 年重复
|
|
100
|
+
todo recur <id> off # 取消循环
|
|
101
|
+
```
|
|
121
102
|
|
|
122
|
-
|
|
123
|
-
> 复制对应场景的代码块即可。
|
|
103
|
+
当循环待办被标记为完成时,会自动创建一个新的待办实例,截止日期按循环间隔推进。
|
|
124
104
|
|
|
125
|
-
###
|
|
105
|
+
### 任务依赖
|
|
126
106
|
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
1. 全局安装:npm install -g @walknpm/todo-cli
|
|
131
|
-
2. 验证安装:运行 todo --version,确认输出 "todo v1.1.0"
|
|
132
|
-
3. 功能验证:依次执行以下命令并确认每步输出正常:
|
|
133
|
-
- todo add "部署测试任务" -p high -t test -c verify
|
|
134
|
-
- todo list
|
|
135
|
-
- todo done 1
|
|
136
|
-
- todo stats
|
|
137
|
-
- todo clear
|
|
138
|
-
4. 如果任何步骤报错,请展示完整错误信息并尝试修复。
|
|
139
|
-
|
|
140
|
-
完成后告诉我安装路径和 todo --version 的输出。
|
|
107
|
+
```bash
|
|
108
|
+
todo dep add <id> <依赖id> # 添加依赖(阻止完成)
|
|
109
|
+
todo dep remove <id> <依赖id> # 移除依赖
|
|
141
110
|
```
|
|
142
111
|
|
|
143
|
-
###
|
|
112
|
+
### 时间追踪
|
|
144
113
|
|
|
114
|
+
```bash
|
|
115
|
+
todo timer start <id> # 开始计时(会停止其他正在运行的计时器)
|
|
116
|
+
todo timer stop <id> # 停止计时并记录时间
|
|
117
|
+
todo timer log <id> <分钟> # 手动记录时间
|
|
118
|
+
todo timer # 查看活动计时器
|
|
145
119
|
```
|
|
146
|
-
请帮我部署 todo-cli 并导入已有待办数据:
|
|
147
|
-
|
|
148
|
-
1. 克隆并安装:
|
|
149
|
-
git clone https://gitcode.com/hw_aishell_projects/todo_cli.git
|
|
150
|
-
cd todo_cli && npm install -g .
|
|
151
120
|
|
|
152
|
-
|
|
121
|
+
### 批量操作
|
|
153
122
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
123
|
+
```bash
|
|
124
|
+
todo bulk done <ids...> # 批量完成
|
|
125
|
+
todo bulk delete <ids...> # 批量删除
|
|
126
|
+
todo bulk priority <ids...> -p <值> # 批量设置优先级
|
|
127
|
+
todo bulk category <ids...> -c <值> # 批量设置分类
|
|
128
|
+
todo bulk assign <ids...> --assignee <值> # 批量设置负责人
|
|
158
129
|
```
|
|
159
130
|
|
|
160
|
-
|
|
131
|
+
## 示例
|
|
161
132
|
|
|
162
|
-
```
|
|
163
|
-
|
|
133
|
+
```bash
|
|
134
|
+
# 添加包含所有字段的待办
|
|
135
|
+
todo add "提交报税单" -p high -d 2025-01-31 -c finance -t urgent,monthly --note "附上收据" --estimate 120 --assignee bob
|
|
164
136
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
```
|
|
137
|
+
# 列表与筛选
|
|
138
|
+
todo list --status pending --sort due
|
|
139
|
+
todo list --overdue
|
|
140
|
+
todo list --category work --priority high
|
|
170
141
|
|
|
171
|
-
|
|
142
|
+
# 子任务
|
|
143
|
+
todo subtask add 1 "调研方案"
|
|
144
|
+
todo subtask add 1 "撰写草稿"
|
|
145
|
+
todo subtask done 1 1
|
|
172
146
|
|
|
173
|
-
|
|
174
|
-
|
|
147
|
+
# 循环任务
|
|
148
|
+
todo recur 3 weekly 1
|
|
149
|
+
todo done 3 # 自动创建下周的新实例
|
|
175
150
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
3. 运行 todo --version 确认版本号已更新
|
|
179
|
-
4. 运行 todo list 确认已有数据未丢失
|
|
180
|
-
5. 告诉我更新结果。
|
|
181
|
-
```
|
|
151
|
+
# 任务依赖
|
|
152
|
+
todo dep add 5 3 # 待办 #5 在 #3 完成前被阻止
|
|
182
153
|
|
|
183
|
-
|
|
154
|
+
# 时间追踪
|
|
155
|
+
todo timer start 2
|
|
156
|
+
todo timer stop 2
|
|
157
|
+
todo timer log 2 30
|
|
184
158
|
|
|
185
|
-
|
|
186
|
-
|
|
159
|
+
# 置顶与复制
|
|
160
|
+
todo pin 1
|
|
161
|
+
todo duplicate 3
|
|
187
162
|
|
|
188
|
-
|
|
189
|
-
1
|
|
190
|
-
|
|
191
|
-
3. 确认 todo --version 输出版本号
|
|
163
|
+
# 批量操作
|
|
164
|
+
todo bulk done 1 2 3
|
|
165
|
+
todo bulk priority 1 2 3 -p high
|
|
192
166
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
5. 确认备份文件内容有效
|
|
167
|
+
# Web 界面
|
|
168
|
+
todo web 8080
|
|
196
169
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
7. 执行 todo list 确认表格正常显示
|
|
200
|
-
8. 执行 todo delete 1 清理验证数据
|
|
170
|
+
# 统计
|
|
171
|
+
todo stats
|
|
201
172
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
173
|
+
# 导出
|
|
174
|
+
todo export csv > todos.csv
|
|
175
|
+
todo export md
|
|
205
176
|
|
|
206
|
-
|
|
177
|
+
# 自动更新
|
|
178
|
+
todo update --check
|
|
179
|
+
todo update
|
|
207
180
|
```
|
|
208
181
|
|
|
209
|
-
|
|
182
|
+
## 项目结构
|
|
183
|
+
|
|
184
|
+
```
|
|
185
|
+
todo_cli/
|
|
186
|
+
├── bin/
|
|
187
|
+
│ └── todo.js # 可执行入口
|
|
188
|
+
├── src/
|
|
189
|
+
│ ├── store.js # JSON 文件持久化层
|
|
190
|
+
│ ├── todo.js # 领域逻辑(增删改查、子任务、循环、依赖、计时、批量...)
|
|
191
|
+
│ ├── cli.js # 命令解析、ANSI 颜色、表格输出
|
|
192
|
+
│ └── server.js # 零依赖 HTTP 服务器(REST API + 静态文件)
|
|
193
|
+
├── web/
|
|
194
|
+
│ ├── index.html # SPA 外壳
|
|
195
|
+
│ ├── css/
|
|
196
|
+
│ │ └── style.css # 现代响应式设计(深色/浅色主题)
|
|
197
|
+
│ └── js/
|
|
198
|
+
│ └── app.js # SPA 应用逻辑(仪表盘、列表、看板、日历、时间线)
|
|
199
|
+
├── skill/
|
|
200
|
+
│ ├── SKILL.md
|
|
201
|
+
│ ├── README.md
|
|
202
|
+
│ └── CHANGELOG.md
|
|
203
|
+
├── package.json
|
|
204
|
+
├── README.md # 英文文档
|
|
205
|
+
└── README.zh-CN.md # 中文文档
|
|
206
|
+
```
|
|
210
207
|
|
|
211
|
-
##
|
|
208
|
+
## 许可证
|
|
212
209
|
|
|
213
210
|
MIT
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@walknpm/todo-cli",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "A zero-dependency Node.js CLI todo list manager with
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "A zero-dependency Node.js CLI + Web todo list manager with subtasks, recurring, dependencies, time tracking, kanban, calendar, and more.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "src/cli.js",
|
|
7
7
|
"bin": {
|
|
@@ -11,7 +11,9 @@
|
|
|
11
11
|
"node": ">=18"
|
|
12
12
|
},
|
|
13
13
|
"scripts": {
|
|
14
|
-
"start": "node bin/todo.js"
|
|
14
|
+
"start": "node bin/todo.js",
|
|
15
|
+
"web": "node src/server.js",
|
|
16
|
+
"dev": "node src/server.js 3456"
|
|
15
17
|
},
|
|
16
18
|
"keywords": [
|
|
17
19
|
"todo",
|
|
@@ -19,18 +21,29 @@
|
|
|
19
21
|
"task",
|
|
20
22
|
"productivity",
|
|
21
23
|
"todo-list",
|
|
22
|
-
"command-line"
|
|
24
|
+
"command-line",
|
|
25
|
+
"web-ui",
|
|
26
|
+
"kanban",
|
|
27
|
+
"calendar",
|
|
28
|
+
"subtasks",
|
|
29
|
+
"recurring",
|
|
30
|
+
"time-tracking"
|
|
23
31
|
],
|
|
24
32
|
"author": "walknpm",
|
|
25
33
|
"license": "MIT",
|
|
26
34
|
"repository": {
|
|
27
35
|
"type": "git",
|
|
28
|
-
"url": "https://gitcode.com/hw_aishell_projects/
|
|
36
|
+
"url": "https://gitcode.com/hw_aishell_projects/todo-web.git"
|
|
37
|
+
},
|
|
38
|
+
"homepage": "https://gitcode.com/hw_aishell_projects/todo-web",
|
|
39
|
+
"publishConfig": {
|
|
40
|
+
"access": "public",
|
|
41
|
+
"registry": "https://registry.npmjs.org"
|
|
29
42
|
},
|
|
30
|
-
"homepage": "https://gitcode.com/hw_aishell_projects/todo_cli",
|
|
31
43
|
"files": [
|
|
32
44
|
"bin/",
|
|
33
45
|
"src/",
|
|
46
|
+
"web/",
|
|
34
47
|
"skill/",
|
|
35
48
|
"README.md",
|
|
36
49
|
"README.zh-CN.md"
|