dsh-global-todo 0.11.2 → 0.12.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/CHANGELOG.md CHANGED
@@ -1,3 +1,34 @@
1
+ ## [0.12.0] — 2026-10-21
2
+
3
+ An identity: one mark, drawn once and used everywhere.
4
+
5
+ - **The mark.** A checklist card whose top-right corner is open, with an arrow leaving through
6
+ the gap. It states the two things this plugin adds — there is a list, and an item leaves it for
7
+ a conversation. Stroke-only and `currentColor`, so the shell can render it at 16px in either
8
+ theme; the card's corner is deliberately broken because a closed corner plus an arrow turns
9
+ into mush below 24px.
10
+ - **`docs/icon.svg`** is the same geometry 20× on a `#14171C` tile (radius 116), plus PNG exports
11
+ at 16/32/48/64/128/256/512 in `docs/icons/`. A coloured status dot was designed and dropped:
12
+ at 128 and below it reads as a dirty pixel, not as information.
13
+ - **Sidebar glyph replaced** — same shape as the tile, 1.4/1.5/1.3 stroke weights, so the entry
14
+ point and the app icon are recognisably one thing.
15
+ - **The landing page is now shareable**: favicon, apple-touch icon and a 1200×630 `docs/og.png`
16
+ (ink tile, icon, one-liner, install command) wired through `og:*` and `twitter:*` tags. Both
17
+ READMEs carry the mark at 52px next to the title.
18
+
19
+ ## [0.11.3] — 2026-10-21
20
+
21
+ Say where the plugin is actually listed, and make that claim checkable.
22
+
23
+ - **`docs/DISTRIBUTION.md`** — every registry with its real state: live (npm, 1024 Store, dsh.pub,
24
+ DSH-Plugins-Marketplace, awesome-dsh-plugin, walkinglabs), in review (five pull requests),
25
+ promised (dshopen.org), and the topic feeds collected without a PR. npm is named as the only
26
+ install source; a listing showing an older version is described as normal rather than hidden.
27
+ - **`tools/listings.mjs`** — asks npm, the 1024 API, dsh.pub, the marketplace registry and two
28
+ repository files, each with a 25-second timeout, and prints one status per registry. A fetch that
29
+ cannot answer reports `error`, never "listed".
30
+ - **Both READMEs** gained a compact table; the shipped tarball now includes the doc they link to.
31
+
1
32
  ## [0.11.2] — 2026-10-21
2
33
 
3
34
  One test, because a review suggested lowering the Node floor.
package/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # dsh-global-todo
2
2
 
3
+ <img src="docs/icon.svg" width="52" height="52" alt="全局待办 icon: a list card with a check and an arrow leaving it">
4
+
3
5
  **A cross-session todo list for DeepSeek Harness: one file you own, written by you and your
4
6
  agent, and handed to a conversation in one click.**
5
7
 
@@ -18,7 +20,7 @@ Three things it does that a session-local plan cannot:
18
20
  dsh plugin add dsh-global-todo
19
21
  ```
20
22
 
21
- [在线主页](https://lugabeeee.github.io/dsh-global-todo/) · [中文说明](README.zh.md) · [5-minute quickstart](docs/QUICKSTART.md) · [FAQ](docs/FAQ.md) · [Every state has a baseline image](#screenshots) · [Design notes](docs/DESIGN.md)
23
+ [Live page](https://lugabeeee.github.io/dsh-global-todo/) (22-second typographic demo) · [中文说明](README.zh.md) · [5-minute quickstart](docs/QUICKSTART.md) · [FAQ](docs/FAQ.md) · [Every state has a baseline image](#screenshots) · [Design notes](docs/DESIGN.md)
22
24
 
23
25
  ---
24
26
 
@@ -390,6 +392,24 @@ Errors are typed: `400` for a rejected value, `404` for an unknown id, `413` for
390
392
  oversized body, `403` for a request that fails the fence, `502` when a hand-off cannot
391
393
  reach the agents service. The body is always `{ ok, ... }` with a machine `reason`.
392
394
 
395
+ ## Where it is listed
396
+
397
+ npm is the only install source; every registry below is a discovery surface. Verified 2026-10-21 —
398
+ re-check with `node tools/listings.mjs` rather than trusting this list.
399
+
400
+ | Registry | Form | State |
401
+ |---|---|---|
402
+ | [npm](https://www.npmjs.com/package/dsh-global-todo) | the package | `0.11.2` |
403
+ | [1024 Store](https://deepseek1024.com) | catalog entry ([PR #654](https://github.com/imsai-sh/awesome-deepseek-harness-plugins/pull/654), merged) | listed; its install line still resolves to the GitHub source |
404
+ | [dsh.pub](https://dsh.pub/en/plugins/dsh-global-todo/) | published page + `dshpub` CLI | live, pinned to a commit |
405
+ | [DSH-Plugins-Marketplace](https://github.com/bradeGithub/DSH-Plugins-Marketplace) | `registry.json`, collected from the `dsh-plugin` topic | `v0.11.2`, risk tier `safe` |
406
+ | [awesome-dsh-plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin) (19.7k★) | one YAML per plugin | merged ([PR #7498](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/pull/7498)) |
407
+ | [walkinglabs](https://github.com/walkinglabs/awesome-deepseek-harness-plugins) | source-verified README | merged ([PR #114](https://github.com/walkinglabs/awesome-deepseek-harness-plugins/pull/114)) |
408
+
409
+ Five more are in review (Zhiyuan-Fan, kejixiaoliang, beancookie, dshworks, losebird) and one
410
+ maintainer promised to include it (dshopen.org). The full table, including the auto-collected
411
+ topic feeds we have not verified, is [docs/DISTRIBUTION.md](docs/DISTRIBUTION.md).
412
+
393
413
  ## Where the data lives
394
414
 
395
415
  `$DSH_HOME/global-todo/todos.json`, or any absolute path you set:
package/README.zh.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # dsh-global-todo · 全局待办
2
2
 
3
+ <img src="docs/icon.svg" width="52" height="52" alt="全局待办图标:一张打了勾、并有箭头离开的清单卡片">
4
+
3
5
  **一份跨会话的待办清单:一个属于你的文件,你和 Agent 读写同一份,一键交给某个对话继续干。**
4
6
 
5
7
  三件会话级计划做不到的事:
@@ -14,7 +16,7 @@
14
16
  dsh plugin add dsh-global-todo
15
17
  ```
16
18
 
17
- [在线主页](https://lugabeeee.github.io/dsh-global-todo/) · [English](README.md) · [5 分钟上手](docs/QUICKSTART.md) · [常见问题](docs/FAQ.md) · [每个条件状态都有基线图](#截图) · [设计说明](docs/DESIGN.md)
19
+ [在线主页](https://lugabeeee.github.io/dsh-global-todo/)(22 秒排版演示)· [English](README.md) · [5 分钟上手](docs/QUICKSTART.md) · [常见问题](docs/FAQ.md) · [每个条件状态都有基线图](#截图) · [设计说明](docs/DESIGN.md)
18
20
 
19
21
  ---
20
22
 
@@ -310,6 +312,24 @@ dsh plugin --profile web remove dsh-global-todo
310
312
  文件坏了会明确报 `store-corrupt` 而不是被静默清空;单条记录坏了只跳过那一条。
311
313
  备份就是复制这个文件。
312
314
 
315
+ ## 收录情况
316
+
317
+ npm 是唯一安装源,下面每个地方都只是「能不能被找到」。核对日期 2026-10-21;复核用
318
+ `node tools/listings.mjs`,不要只信这张表。
319
+
320
+ | 渠道 | 形式 | 状态 |
321
+ |---|---|---|
322
+ | [npm](https://www.npmjs.com/package/dsh-global-todo) | 包本体 | `0.11.2` |
323
+ | [1024 Store](https://deepseek1024.com) | 目录条目([PR #654](https://github.com/imsai-sh/awesome-deepseek-harness-plugins/pull/654) 已合并) | 已收录;安装行仍解析成 GitHub 源 |
324
+ | [dsh.pub](https://dsh.pub/zh/plugins/dsh-global-todo/) | 目录页 + `dshpub` CLI | 已上线,pin 到某个 commit |
325
+ | [DSH-Plugins-Marketplace](https://github.com/bradeGithub/DSH-Plugins-Marketplace) | `registry.json`,按 `dsh-plugin` topic 采集 | `v0.11.2`,风险分级 `safe` |
326
+ | [awesome-dsh-plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin)(19.7k★) | 每个插件一个 YAML | 已合并([PR #7498](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/pull/7498)) |
327
+ | [walkinglabs](https://github.com/walkinglabs/awesome-deepseek-harness-plugins) | 带来源核验的 README | 已合并([PR #114](https://github.com/walkinglabs/awesome-deepseek-harness-plugins/pull/114)) |
328
+
329
+ 另有五个在审(Zhiyuan-Fan、kejixiaoliang、beancookie、dshworks、losebird),一个维护者已承诺
330
+ 下次提交收录(dshopen.org)。完整表格、以及我们尚未逐条核实的 topic 自动采集渠道,见
331
+ [docs/DISTRIBUTION.md](docs/DISTRIBUTION.md)。
332
+
313
333
  ## 设计取舍
314
334
 
315
335
  **附件是引用,不是上传。** 文档就是一个原地不动的绝对路径,地址就是一个 URL。
@@ -0,0 +1,65 @@
1
+ # Where this plugin is listed
2
+
3
+ **npm is the only install source.** Every registry below is a discovery surface: it decides whether
4
+ someone finds the plugin, not what they get when they install it. The line that matters is
5
+
6
+ ```sh
7
+ dsh plugin add dsh-global-todo
8
+ ```
9
+
10
+ A registry that shows an older version is normal — their crawlers run on their own schedule. Last
11
+ verified **2026-10-21 11:27 (+08:00)**; in a checkout, re-check with `node tools/listings.mjs` instead
12
+ of trusting this table.
13
+
14
+ ## Live
15
+
16
+ | Registry | Form | What it gives you | Verified state |
17
+ |---|---|---|---|
18
+ | **npm** | the package | the install path | `dsh-global-todo@0.11.2` |
19
+ | **1024 Store** ([deepseek1024.com](https://deepseek1024.com)) · [repo](https://github.com/imsai-sh/awesome-deepseek-harness-plugins) | catalog entry, merged [#654](https://github.com/imsai-sh/awesome-deepseek-harness-plugins/pull/654) | searchable, has a public API | 🟡 entry live, but its install line still resolves to `github:LUgABeEEE/dsh-global-todo` — their npm enrichment has not caught up. Install works either way. |
20
+ | **dsh.pub** · [page](https://dsh.pub/en/plugins/dsh-global-todo/) | published page + `dshpub` CLI | `npx dshpub add LUgABeEEE/dsh-global-todo` | ✅ page live, pinned to a commit |
21
+ | **DSH-Plugins-Marketplace** ([bradeGithub](https://github.com/bradeGithub/DSH-Plugins-Marketplace)) | `registry.json`, collected from the `dsh-plugin` topic | one-click install inside DSH | ✅ `v0.11.2`, risk tier `safe` |
22
+ | **awesome-dsh-plugin** ([19.7k★](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin)) | one YAML per plugin | the largest directory | ✅ merged [#7498](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/pull/7498) |
23
+ | **walkinglabs/awesome-deepseek-harness-plugins** | README entry (source-verified list) | review-backed listing | ✅ merged [#114](https://github.com/walkinglabs/awesome-deepseek-harness-plugins/pull/114) |
24
+
25
+ ## Pending review
26
+
27
+ Open PRs, all made by hand against each repository's own format:
28
+
29
+ | Registry | Pull request | Note |
30
+ |---|---|---|
31
+ | Zhiyuan-Fan/Awesome-DeepSeek-Harness-Plugins | [#93](https://github.com/Zhiyuan-Fan/Awesome-DeepSeek-Harness-Plugins/pull/93) | 574★, curated bilingually |
32
+ | kejixiaoliang/awesome-dsh-plugins | [#144](https://github.com/kejixiaoliang/awesome-dsh-plugins/pull/144) | merges in monthly batches; first-time contributor CI needs the maintainer |
33
+ | beancookie/awesome-dsh-plugin | [#233](https://github.com/beancookie/awesome-dsh-plugin/pull/233) | same batch pattern |
34
+ | dshworks/awesome-dsh-plugins | [#174](https://github.com/dshworks/awesome-dsh-plugins/pull/174) | machine-readable registry; this PR is a re-verification |
35
+ | losebird/dsh-plugin-market | [#49](https://github.com/losebird/dsh-plugin-market/pull/49) | replaces a broken auto entry (`github:…#v0.6.6`, manual install) with an npm spec |
36
+ | polang233/dsh-plugin-index (dshopen.org) | [issue #16](https://github.com/polang233/dsh-plugin-index/issues/16) | no PR channel; maintainer replied "will be included in the next commit" |
37
+
38
+ ## Collected automatically
39
+
40
+ These scan the GitHub topic `dsh-plugin` (this repository carries it, plus `dsh`,
41
+ `deepseek-harness`, `cordis`, `todo-list`, `task-management`, `agent-tools`). No PR exists or is
42
+ needed; appearance depends on their scan cycle, and we have **not** verified each one:
43
+
44
+ `0xsline/awesome-deepseek-harness` · `vvlife/awesome-deepseek-harness-plugins` ·
45
+ `ZASENJC/dsh-plugins-store` · `YELEBAI/dsh-plugin-marketplace` ·
46
+ `awesome-dsh-plugin/dsh-find-plugin`
47
+
48
+ ## How to keep this honest
49
+
50
+ ```sh
51
+ node tools/listings.mjs
52
+ ```
53
+
54
+ It asks npm, the 1024 API, dsh.pub, the marketplace registry, and two repository files, each with a
55
+ 25-second timeout, and prints a status per registry. A fetch that cannot answer is reported as
56
+ `error`, never as "listed" — an unknown state should look unknown.
57
+
58
+ ## What we deliberately do not do
59
+
60
+ - **No duplicate PRs.** If a PR is open, it gets a comment with the current version, not a second
61
+ submission.
62
+ - **No PR to auto-collected lists.** A topic-tagged repository flows in by itself; a PR there is
63
+ noise for the maintainer.
64
+ - **No claims about a listing before it is visible.** "Pending" means a pull request exists, not
65
+ that the entry does.
package/docs/icon.svg CHANGED
@@ -1,19 +1,9 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="512" height="512" role="img" aria-label="Global todos">
2
- <rect width="512" height="512" rx="116" fill="#0d6b5e"/>
3
- <rect x="92" y="104" width="328" height="304" rx="32" fill="#f4faf8"/>
4
- <g>
5
- <circle cx="152" cy="184" r="23" fill="#e7f2ef"/>
6
- <path d="M141 184l8 8 15-17" fill="none" stroke="#0d6b5e" stroke-width="11" stroke-linecap="round" stroke-linejoin="round"/>
7
- <rect x="198" y="174" width="168" height="20" rx="10" fill="#c8d6d1"/>
8
- </g>
9
- <g>
10
- <circle cx="152" cy="264" r="23" fill="#e7f2ef"/>
11
- <path d="M141 264l8 8 15-17" fill="none" stroke="#0d6b5e" stroke-width="11" stroke-linecap="round" stroke-linejoin="round"/>
12
- <rect x="198" y="254" width="132" height="20" rx="10" fill="#c8d6d1"/>
13
- </g>
14
- <g>
15
- <circle cx="152" cy="344" r="23" fill="#f7edda"/>
16
- <circle cx="152" cy="344" r="9" fill="#c98a1e"/>
17
- <rect x="198" y="334" width="150" height="20" rx="10" fill="#d8e2de"/>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="512" height="512" role="img" aria-label="全局待办 / dsh-global-todo">
2
+ <title>全局待办 — 跨会话待办清单</title>
3
+ <rect width="512" height="512" rx="116" fill="#14171C"/>
4
+ <g transform="translate(96 96) scale(20)" fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round">
5
+ <path d="M9.2 2.4H4.4A1.9 1.9 0 0 0 2.5 4.3v7.4a1.9 1.9 0 0 0 1.9 1.9h6.2a1.9 1.9 0 0 0 1.9-1.9V8.4" stroke-width="1.4"/>
6
+ <path d="M4.9 8.5l1.9 1.9 3.5-4.3" stroke-width="1.5"/>
7
+ <path d="M10.4 4.6h3.1m0 0l-1.2-1.2m1.2 1.2l-1.2 1.2" stroke-width="1.3"/>
18
8
  </g>
19
9
  </svg>
@@ -18,9 +18,12 @@
18
18
  | [`panel-review.png`](panel-review.png) | 待确认:Agent 已完成、等人回答 | `npm run screenshots` |
19
19
  | [`panel-reminders.png`](panel-reminders.png) | 到点提醒条 | `npm run screenshots` |
20
20
  | [`tour.gif`](tour.gif) | 十帧幻灯片(列表 → 详情 → 列表 → 待确认 → 列表 → 收件箱 → 列表 → 提醒 → 列表 → 选择),2 秒一帧 | `npm run tour`(需要 ffmpeg;没有就跳过) |
21
+ | [`demo.mp4`](demo.mp4) | 22 秒**排版演示**:暗色主题下 2× 渲染的真实面板,五个主张逐屏给出,配轻音效、无旁白 | 见 [`docs/DEMO.md`](../DEMO.md),`tools/demo/` 下四个步骤 |
22
+ | [`demo-poster.png`](demo-poster.png) | 上面视频的首帧海报(12 秒处),给不自动播放的环境 | 从 `demo.mp4` 抽一帧 |
21
23
 
22
24
  `npm run screenshots` 会重写九张 PNG(顺序见 `tools/screenshot.mjs` 的 `SHOTS`);`npm run tour` 只重做
23
- gif,并要求 PNG 已经存在。
25
+ gif,并要求 PNG 已经存在。`demo.mp4` 是**另一条流水线**:它必须由真实浏览器录制,静态渲染做不到滚动、
26
+ 悬停和点击 —— 见 `docs/DEMO.md`。
24
27
 
25
28
  ## 这些图证明不了什么
26
29
 
Binary file
package/lib/client.js CHANGED
@@ -50,7 +50,7 @@ window.__ModuleLoader__.load({
50
50
  * different mechanisms (restart vs. hot reload), so "which one am I looking
51
51
  * at" needs an answer that the bundle itself carries.
52
52
  */
53
- const UI_REV = 'ui51'
53
+ const UI_REV = 'ui52'
54
54
  /** Last language resolved for the shell; module-level so a fetch failure can be worded too. */
55
55
  let activeLang = 'zh'
56
56
 
@@ -4870,14 +4870,41 @@ button.gt-chip[data-on="1"] { color: var(--dsw-alias-label-primary); border-colo
4870
4870
  }
4871
4871
 
4872
4872
  /** @param {{ size?: number, active?: boolean }} props */
4873
+ /**
4874
+ * The sidebar mark: a list that leaves the panel.
4875
+ *
4876
+ * One card, one check, one arrow crossing the card's open corner — the two facts this
4877
+ * plugin adds are both here (a list, and handing an item to a conversation). Stroke-only
4878
+ * and `currentColor` because the shell renders it at 16px in either theme; the same
4879
+ * geometry is the app icon (docs/icon.svg), scaled 20× on a #14171C tile.
4880
+ */
4873
4881
  function Glyph(props) {
4874
4882
  const size = props?.size ?? 16
4875
4883
  return h(
4876
4884
  'svg',
4877
4885
  { width: size, height: size, viewBox: '0 0 16 16', fill: 'none', 'aria-hidden': 'true' },
4878
- h('rect', { x: 1.6, y: 2.4, width: 12.8, height: 11.2, rx: 2.4, stroke: 'currentColor', strokeWidth: 1.3 }),
4879
- h('path', { d: 'M4.6 6.1l1.3 1.3 2.4-2.6', stroke: 'currentColor', strokeWidth: 1.3, strokeLinecap: 'round', strokeLinejoin: 'round' }),
4880
- h('path', { d: 'M4.6 10.6h6.8', stroke: 'currentColor', strokeWidth: 1.3, strokeLinecap: 'round' }),
4886
+ // The card is open at its top-right corner: that gap is where the arrow leaves,
4887
+ // and closing it would make both shapes mush together at 16px.
4888
+ h('path', {
4889
+ d: 'M9.2 2.4H4.4A1.9 1.9 0 0 0 2.5 4.3v7.4a1.9 1.9 0 0 0 1.9 1.9h6.2a1.9 1.9 0 0 0 1.9-1.9V8.4',
4890
+ stroke: 'currentColor',
4891
+ strokeWidth: 1.4,
4892
+ strokeLinecap: 'round',
4893
+ }),
4894
+ h('path', {
4895
+ d: 'M4.9 8.5l1.9 1.9 3.5-4.3',
4896
+ stroke: 'currentColor',
4897
+ strokeWidth: 1.5,
4898
+ strokeLinecap: 'round',
4899
+ strokeLinejoin: 'round',
4900
+ }),
4901
+ h('path', {
4902
+ d: 'M10.4 4.6h3.1m0 0l-1.2-1.2m1.2 1.2l-1.2 1.2',
4903
+ stroke: 'currentColor',
4904
+ strokeWidth: 1.3,
4905
+ strokeLinecap: 'round',
4906
+ strokeLinejoin: 'round',
4907
+ }),
4881
4908
  )
4882
4909
  }
4883
4910
 
package/lib/index.js CHANGED
@@ -36,7 +36,7 @@ import { createStore, resolveStorePath } from './store.js'
36
36
  import { createTools } from './tools.js'
37
37
 
38
38
  /** Must equal `package.json`'s version; `npm run check` enforces that. */
39
- export const VERSION = '0.11.2'
39
+ export const VERSION = '0.12.0'
40
40
 
41
41
  /** Plugin id. Also the Loader row id in `cordis.patch.yml`. */
42
42
  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.11.2",
3
+ "version": "0.12.0",
4
4
  "icon": "./docs/icon.svg",
5
5
  "description": "Global, cross-session todos for DeepSeek Harness: one list owned by the human and the agent together, with creation time, attached documents and links, and one-click hand-off to an agent session. 全局待办:跨会话一份清单,记录加入时间,可挂文档与地址,可一键交给 Agent 继续干。",
6
6
  "type": "module",
@@ -41,6 +41,7 @@
41
41
  "locale",
42
42
  "cordis.patch.yml",
43
43
  "docs/DESIGN.md",
44
+ "docs/DISTRIBUTION.md",
44
45
  "docs/ROADMAP.md",
45
46
  "docs/QUICKSTART.md",
46
47
  "docs/FAQ.md",
@@ -48,6 +49,7 @@
48
49
  "docs/screenshots",
49
50
  "!docs/screenshots/demo.mp4",
50
51
  "!docs/index.html",
52
+ "!docs/assets",
51
53
  "LICENSE",
52
54
  "README.md",
53
55
  "README.zh.md",