dsh-global-todo 0.16.2 → 0.16.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/CHANGELOG.md +14 -0
- package/README.md +38 -6
- package/README.zh.md +33 -6
- package/docs/FAQ.md +11 -11
- package/docs/QUICKSTART.md +14 -2
- package/docs/ROADMAP.md +12 -7
- package/lib/index.js +1 -1
- package/package.json +5 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
## [0.16.3] — 2026-10-23
|
|
2
|
+
|
|
3
|
+
Documentation release: the npm page finally shows the current install instructions.
|
|
4
|
+
|
|
5
|
+
- **npm's README is frozen at publish time**, so the install/per-profile rewrite and the
|
|
6
|
+
「哪些功能还没有 / Not there yet」 sections (README.zh.md, FAQ, ROADMAP) reach GitHub but not the
|
|
7
|
+
npm page until a new version ships. Nothing in `lib/` changes.
|
|
8
|
+
- **The market index no longer blocks publishing.** Its test required the index's newest version
|
|
9
|
+
to equal `package.json`'s — which cannot hold between a version bump and its publish, and
|
|
10
|
+
`prepack` runs the suite, so the first release after the market index landed could not be
|
|
11
|
+
tagged. The offline rule is now one-directional (the index may not offer a version newer than
|
|
12
|
+
the tree), and staleness moved to `npm run market:fresh`, which asks the registry. AGENTS.md
|
|
13
|
+
documents the two-step order: publish, then regenerate the index and commit it.
|
|
14
|
+
|
|
1
15
|
## [0.16.2] — 2026-10-22
|
|
2
16
|
|
|
3
17
|
A date-only deadline is local midnight, so a date bound stops swallowing part of its own day.
|
package/README.md
CHANGED
|
@@ -172,21 +172,53 @@ What each file shows, and when it is regenerated, is indexed in
|
|
|
172
172
|
|
|
173
173
|
## Install
|
|
174
174
|
|
|
175
|
+
**Check your profile name first.** The plugin is installed into one profile, not into the
|
|
176
|
+
machine; a wrong profile name still exits 0, and then nothing shows up in the sidebar after a
|
|
177
|
+
restart — the most common first-run trap.
|
|
178
|
+
|
|
179
|
+
```sh
|
|
180
|
+
ls ~/.dsh/profiles # Windows: dir %USERPROFILE%\.dsh\profiles
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
Replace `<profile>` below with one of the names that command prints (`web` on most hosts;
|
|
184
|
+
use your desktop or `headless` profile name if that is what you run):
|
|
185
|
+
|
|
175
186
|
```sh
|
|
176
187
|
# from npm
|
|
177
|
-
dsh plugin --profile
|
|
188
|
+
dsh plugin --profile <profile> add dsh-global-todo
|
|
178
189
|
|
|
179
190
|
# or from a checkout, which is also the development path
|
|
180
|
-
dsh plugin --profile
|
|
191
|
+
dsh plugin --profile <profile> add /absolute/path/to/dsh-global-todo
|
|
181
192
|
```
|
|
182
193
|
|
|
183
|
-
The plugin is a Loader row, not a hot-loaded script: **restart the host** (`dsh web
|
|
184
|
-
after installing, then refresh the page. A "待办 / Todos"
|
|
194
|
+
The plugin is a Loader row, not a hot-loaded script: **restart the host** (`dsh web`, or
|
|
195
|
+
whatever start command you use) after installing, then refresh the page. A "待办 / Todos"
|
|
196
|
+
entry appears in the sidebar.
|
|
197
|
+
|
|
198
|
+
> Sidebar still empty? Check three things in order: ① which profiles `ls` actually printed and
|
|
199
|
+
> whether the one you installed into is the one running; ② whether the host really restarted
|
|
200
|
+
> (the Loader is read once at boot); ③ whether the page was refreshed (the client module graph
|
|
201
|
+
> belongs to the release the page booted with).
|
|
185
202
|
|
|
186
203
|
The npm package is the source of truth. A community catalog can lag behind it or point at an
|
|
187
|
-
older release; pin the version you want (`dsh plugin --profile
|
|
204
|
+
older release; pin the version you want (`dsh plugin --profile <profile> add dsh-global-todo@0.13.1`)
|
|
188
205
|
when it matters.
|
|
189
206
|
|
|
207
|
+
### Installing from DSH's Discover tab
|
|
208
|
+
|
|
209
|
+
DSH's Discover tab reads a plugin market index from a URL you add yourself — dsh ships none, and
|
|
210
|
+
a user-added index is the one path that installs without copying a command. This repository
|
|
211
|
+
publishes one:
|
|
212
|
+
|
|
213
|
+
```text
|
|
214
|
+
https://lugabeeee.github.io/dsh-global-todo/market/index.json
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
It is generated from npm by `npm run market` (`docs/market/index.json`) and validated against
|
|
218
|
+
dsh's own `@deepseek-ai/dsh-plugin-market-index` before it is written. `npm test` fails when its
|
|
219
|
+
newest version is not the version in `package.json`, so a release that forgets to regenerate it
|
|
220
|
+
is caught before it ships.
|
|
221
|
+
|
|
190
222
|
**Hand-copied a directory instead?** Check it before wondering why the plugins page looks wrong:
|
|
191
223
|
|
|
192
224
|
```sh
|
|
@@ -200,7 +232,7 @@ the desktop app print `Plugin metadata … ENOENT … \locale` while the plugin
|
|
|
200
232
|
To roll back:
|
|
201
233
|
|
|
202
234
|
```sh
|
|
203
|
-
dsh plugin --profile
|
|
235
|
+
dsh plugin --profile <profile> remove dsh-global-todo
|
|
204
236
|
```
|
|
205
237
|
|
|
206
238
|
Your list is not touched by install or uninstall: it lives outside the plugin, at
|
package/README.zh.md
CHANGED
|
@@ -151,16 +151,43 @@ HTML(不依赖宿主、零依赖),再以 1280×720 拍进 `docs/screenshot
|
|
|
151
151
|
|
|
152
152
|
## 安装
|
|
153
153
|
|
|
154
|
+
**先确认 profile 名字。** 插件是装进某个 profile 的,不是装进整台机器;profile 名写错,
|
|
155
|
+
命令会成功,但重启后侧栏里什么都没有——这是最常见的一次踩坑。
|
|
156
|
+
|
|
157
|
+
```sh
|
|
158
|
+
ls ~/.dsh/profiles # Windows: dir %USERPROFILE%\.dsh\profiles
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
把下面命令里的 `<profile>` 换成上一步列出来的那个(本机常见是 `web`;用桌面端就填桌面端的
|
|
162
|
+
profile 名,用 headless 就填 `headless`):
|
|
163
|
+
|
|
154
164
|
```sh
|
|
155
165
|
# 从 npm 装
|
|
156
|
-
dsh plugin --profile
|
|
166
|
+
dsh plugin --profile <profile> add dsh-global-todo
|
|
157
167
|
|
|
158
168
|
# 或从本地检出装(也是开发路径)
|
|
159
|
-
dsh plugin --profile
|
|
169
|
+
dsh plugin --profile <profile> add /绝对路径/dsh-global-todo
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
插件是宿主组合里的**一行 Loader**,不是热加载脚本:**装完要重启宿主**(`dsh web`,
|
|
173
|
+
或你用的那个启动命令),再刷新页面。侧栏会出现「待办」入口。
|
|
174
|
+
|
|
175
|
+
> 侧栏还是空的?按顺序查三件事:① 上面的 `ls` 里到底有哪几个 profile,你装的是不是正在跑的那个;
|
|
176
|
+
> ② 宿主有没有真的重启(Loader 只在启动时读一次);③ 页面有没有刷新(客户端模块图属于
|
|
177
|
+
> 启动时那个 release)。
|
|
178
|
+
|
|
179
|
+
### 从 DSH 的 Discover 标签安装
|
|
180
|
+
|
|
181
|
+
DSH 的 Discover 标签读的是**你自己添加**的一个 JSON 索引(官方不带索引),这也是唯一一条
|
|
182
|
+
不用手抄命令的安装路径。本仓库发布了一份:
|
|
183
|
+
|
|
184
|
+
```text
|
|
185
|
+
https://lugabeeee.github.io/dsh-global-todo/market/index.json
|
|
160
186
|
```
|
|
161
187
|
|
|
162
|
-
|
|
163
|
-
|
|
188
|
+
它由 `npm run market` 从 npm 生成(`docs/market/index.json`),写入前会用 DSH 自己的
|
|
189
|
+
`@deepseek-ai/dsh-plugin-market-index` 校验一遍。**索引里的最新版本与 `package.json` 不一致时
|
|
190
|
+
`npm test` 会失败** —— 发版后忘了重新生成,会在发出去之前就被拦下。
|
|
164
191
|
|
|
165
192
|
**如果你是手动拷贝目录(而不是从 npm 装)**,先自检一遍,别靠猜:
|
|
166
193
|
|
|
@@ -174,12 +201,12 @@ npx dsh-global-todo-doctor "$HOME/.dsh/plugins-local/全局待办插件"
|
|
|
174
201
|
`Plugin metadata … ENOENT … \locale`。
|
|
175
202
|
|
|
176
203
|
npm 上的包才是事实来源。社区目录可能落后于 npm、或指向某个旧 release;需要确定版本时
|
|
177
|
-
直接钉版本(`dsh plugin --profile
|
|
204
|
+
直接钉版本(`dsh plugin --profile <profile> add dsh-global-todo@0.13.1`)。
|
|
178
205
|
|
|
179
206
|
回滚:
|
|
180
207
|
|
|
181
208
|
```sh
|
|
182
|
-
dsh plugin --profile
|
|
209
|
+
dsh plugin --profile <profile> remove dsh-global-todo
|
|
183
210
|
```
|
|
184
211
|
|
|
185
212
|
装卸都不会碰你的清单——它在插件之外:`$DSH_HOME/global-todo/todos.json`。
|
package/docs/FAQ.md
CHANGED
|
@@ -68,18 +68,18 @@ CSV 没有直接入口:先转成 JSON 或 Markdown。Markdown 解析是容错
|
|
|
68
68
|
|
|
69
69
|
没有 Agent 参与时用不上的只有四件事:抓取、派发、Agent 的完成声明、会话回读。
|
|
70
70
|
|
|
71
|
-
## 8.
|
|
71
|
+
## 8. 哪些功能目前还没有?
|
|
72
72
|
|
|
73
|
-
|
|
|
73
|
+
| 目前没有 | 现状 |
|
|
74
74
|
|---|---|
|
|
75
|
-
| 看板 / 日历视图 |
|
|
76
|
-
| 重复任务 | `dueAt`
|
|
77
|
-
| 子任务树 |
|
|
78
|
-
| 上传附件 |
|
|
79
|
-
| 多清单 / 项目 |
|
|
80
|
-
| 自动开工 |
|
|
81
|
-
| 桌面端面板 |
|
|
82
|
-
| 账号 / 多用户 |
|
|
75
|
+
| 看板 / 日历视图 | 现在只有列表,加三种分组(对话 / 时间 / 级别);没有拖拽看板,没有日历 |
|
|
76
|
+
| 重复任务 | `dueAt` 是单个时间点,还没有 recurrence 字段;同一截止只提醒一次,改了时间才会重新提醒 |
|
|
77
|
+
| 子任务树 | 现在只有扁平的 `steps`,最多 20 条 |
|
|
78
|
+
| 上传附件 | 现在只存引用(绝对路径或 URL),不复制字节 |
|
|
79
|
+
| 多清单 / 项目 | 现在只有一份全局清单 |
|
|
80
|
+
| 自动开工 | 现在没有;它是一份个人清单,不是任务队列 |
|
|
81
|
+
| 桌面端面板 | 现在只有 Web 客户端 |
|
|
82
|
+
| 账号 / 多用户 | 现在没有;只有一个本机(或受信网络)可访问的 HTTP 面 |
|
|
83
83
|
|
|
84
84
|
## 9. 两个进程同时写这个文件会怎样?
|
|
85
85
|
|
|
@@ -122,7 +122,7 @@ CSV 没有直接入口:先转成 JSON 或 Markdown。Markdown 解析是容错
|
|
|
122
122
|
## 12. 怎么干净卸载?
|
|
123
123
|
|
|
124
124
|
```sh
|
|
125
|
-
dsh plugin --profile
|
|
125
|
+
dsh plugin --profile <profile> remove dsh-global-todo
|
|
126
126
|
```
|
|
127
127
|
|
|
128
128
|
然后重启宿主、刷新页面,侧栏入口消失。清单和设置都还在原处——这是刻意的。
|
package/docs/QUICKSTART.md
CHANGED
|
@@ -15,14 +15,26 @@ headless / ACP / SDK 组合里没有面板,只剩 Agent 工具。
|
|
|
15
15
|
|
|
16
16
|
## 1. 安装
|
|
17
17
|
|
|
18
|
+
先看你实际有哪些 profile(插件是装进某一个 profile,不是装进整台机器):
|
|
19
|
+
|
|
20
|
+
```sh
|
|
21
|
+
ls ~/.dsh/profiles # Windows: dir %USERPROFILE%\.dsh\profiles
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
把打印出来的名字填进去(大多数是 `web`):
|
|
25
|
+
|
|
18
26
|
```sh
|
|
19
|
-
dsh plugin --profile
|
|
27
|
+
dsh plugin --profile <profile> add dsh-global-todo
|
|
20
28
|
```
|
|
21
29
|
|
|
22
|
-
装完**重启宿主**(`dsh web
|
|
30
|
+
装完**重启宿主**(`dsh web`,或你用的那个启动命令),再**刷新页面**。插件是 Loader 里的一行,
|
|
31
|
+
不是热加载脚本。
|
|
23
32
|
|
|
24
33
|
验证:侧栏出现「待办」入口。
|
|
25
34
|
|
|
35
|
+
侧栏还是空的?按顺序查三件事:① 你装的是不是正在跑的那个 profile;② 宿主有没有真的重启;
|
|
36
|
+
③ 页面有没有刷新。三件都对还是没有,跑 `npx dsh-global-todo-doctor <插件目录>` 自检。
|
|
37
|
+
|
|
26
38
|
## 2. 打开面板
|
|
27
39
|
|
|
28
40
|
点侧栏的「待办」。这是**全局面板**:不绑定某个会话,切到别的对话、关掉再开,清单还是同一份。
|
package/docs/ROADMAP.md
CHANGED
|
@@ -246,10 +246,15 @@ mislead.
|
|
|
246
246
|
| Drag to reorder | Manual order is meaningful to some people; it also needs a stable `position` field and a decision about how it interacts with due-date grouping. |
|
|
247
247
|
| Multi-list / projects | A `list` field with one default list; deferred because "global single list" is the current identity. |
|
|
248
248
|
|
|
249
|
-
##
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
- **
|
|
254
|
-
|
|
255
|
-
|
|
249
|
+
## Not there yet
|
|
250
|
+
|
|
251
|
+
Things the list does not have today. Some may arrive later; none of them is a promise.
|
|
252
|
+
|
|
253
|
+
- **Calendar and board views.** The panel is a list with three groupings today. There is no
|
|
254
|
+
calendar view and no drag-and-drop board.
|
|
255
|
+
- **Auto-running todos.** Nothing starts work on a schedule today; the list records what a
|
|
256
|
+
person intends to do.
|
|
257
|
+
- **Copying attachment bytes.** Attachments are references (absolute path or URL) today; see
|
|
258
|
+
`DESIGN.md` for why references beat stale copies.
|
|
259
|
+
- **A second source of truth.** Everything reads and writes the one JSON file today; anything
|
|
260
|
+
that mirrors it elsewhere (a database, a remote service) would have to justify itself.
|
package/lib/index.js
CHANGED
|
@@ -37,7 +37,7 @@ import { createStore, resolveStorePath } from './store.js'
|
|
|
37
37
|
import { createTools, normalizeToolGroups, selectTools } from './tools.js'
|
|
38
38
|
|
|
39
39
|
/** Must equal `package.json`'s version; `npm run check` enforces that. */
|
|
40
|
-
export const VERSION = '0.16.
|
|
40
|
+
export const VERSION = '0.16.3'
|
|
41
41
|
|
|
42
42
|
/** Plugin id. Also the Loader row id in `cordis.patch.yml`. */
|
|
43
43
|
export const name = 'dsh-global-todo'
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-global-todo",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.3",
|
|
4
4
|
"icon": "./docs/icon.svg",
|
|
5
5
|
"description": "Cross-session todo list for DeepSeek Harness: one JSON file a person and an agent both write to, with step plans that ship as a numbered hand-off, session read-back, and a human confirmation before an agent's \"done\" counts.",
|
|
6
6
|
"type": "module",
|
|
@@ -83,7 +83,10 @@
|
|
|
83
83
|
"prepack": "npm run verify",
|
|
84
84
|
"check:render": "node tools/preview.mjs --check",
|
|
85
85
|
"check:live": "node tools/live-check.mjs",
|
|
86
|
-
"check:matrix": "node scripts/matrix.mjs"
|
|
86
|
+
"check:matrix": "node scripts/matrix.mjs",
|
|
87
|
+
"market": "node tools/market.mjs",
|
|
88
|
+
"market:check": "node tools/market.mjs --check",
|
|
89
|
+
"market:fresh": "node tools/market.mjs --fresh"
|
|
87
90
|
},
|
|
88
91
|
"dsh": {
|
|
89
92
|
"manifestVersion": 1,
|