dsh-global-todo 0.12.1 → 0.12.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 +27 -0
- package/docs/FAQ.md +31 -0
- package/docs/screenshots/panel-detail.png +0 -0
- package/docs/screenshots/panel-empty.png +0 -0
- package/docs/screenshots/panel-filtered.png +0 -0
- package/docs/screenshots/panel-inbox.png +0 -0
- package/docs/screenshots/panel-reminders.png +0 -0
- package/docs/screenshots/panel-review.png +0 -0
- package/docs/screenshots/panel-select.png +0 -0
- package/docs/screenshots/panel-settings.png +0 -0
- package/docs/screenshots/panel.png +0 -0
- package/docs/screenshots/tour.gif +0 -0
- package/lib/client.js +3 -3
- package/lib/index.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,30 @@
|
|
|
1
|
+
## [0.12.3] — 2026-10-21
|
|
2
|
+
|
|
3
|
+
A desktop report explained, and the packaging contract behind it guarded.
|
|
4
|
+
|
|
5
|
+
- **`docs/FAQ.md` §15** answers `Plugin metadata … ENOENT … \locale`: the Host resolves
|
|
6
|
+
`<pkg>/locale/en.json` through the `exports` wildcard (which Node resolves **without** checking
|
|
7
|
+
the file), then scans that directory. A hand-copied `plugins-local` folder that kept `lib/`,
|
|
8
|
+
`package.json` and the patch but dropped `locale/` therefore reports this — while the plugin
|
|
9
|
+
itself still loads. The entry gives both fixes (install from npm, or copy `locale/` and
|
|
10
|
+
`docs/icon.svg` into the local folder) and says the metadata is read once at startup.
|
|
11
|
+
- **`test/manifest.test.mjs` now asserts the contract**: the `./locale/*.json` export exists and
|
|
12
|
+
`locale` is in `files`. Drop either and the plugins page silently loses its title, description
|
|
13
|
+
and icon — the exact failure that shipped as a user-visible error.
|
|
14
|
+
|
|
15
|
+
## [0.12.2] — 2026-10-21
|
|
16
|
+
|
|
17
|
+
The description reached the last two places it was still thin.
|
|
18
|
+
|
|
19
|
+
- **The panel's own subtitle** (under the title, always visible) now names what the list does
|
|
20
|
+
rather than just what it is: `跨会话一份清单:你和 Agent 都能加,也能带着步骤交给对话继续干`.
|
|
21
|
+
- **The landing page copy** matches the plugin page and the store: hero lede, the meta
|
|
22
|
+
description, `og:description` and `twitter:description` all say the same three things — one
|
|
23
|
+
shared file, steps travel with the hand-off, and done needs your confirmation.
|
|
24
|
+
- **`docs/og.png` re-rendered** with the new sentence, so a shared link and the page agree.
|
|
25
|
+
- Screenshots and `tour.gif` regenerated: the old frames still carried the previous subtitle.
|
|
26
|
+
The captioned demo video was not rebuilt — that needs the capture harness against a live panel.
|
|
27
|
+
|
|
1
28
|
## [0.12.1] — 2026-10-21
|
|
2
29
|
|
|
3
30
|
The plugin now says what it does — in the two places people read before installing.
|
package/docs/FAQ.md
CHANGED
|
@@ -157,3 +157,34 @@ rm -r "$DSH_HOME/global-todo"
|
|
|
157
157
|
失败一定带原因,也记在详情的「最近派发」里;不会静默什么都不做。
|
|
158
158
|
|
|
159
159
|
|
|
160
|
+
## 15. 桌面端报 `Plugin metadata … ENOENT … \locale` 是什么?
|
|
161
|
+
|
|
162
|
+
**插件本身已经加载了,这是「显示文字」取不到**,不影响面板和工具。宿主读插件页标题/描述的顺序是:
|
|
163
|
+
先解析 `<包>/locale/en.json`(走 `exports` 里的 `./locale/*.json`),解析成功后**扫这个目录**,
|
|
164
|
+
把 `zh.json`/`en.json` 逐个读进来。目录不存在,扫描就抛 ENOENT,于是元信息报错。
|
|
165
|
+
|
|
166
|
+
也就是说:**你那份本地插件目录缺 `locale/` 文件夹**。常见于把仓库文件夹手动复制到
|
|
167
|
+
`%USERPROFILE%\.dsh\plugins-local\` 时只拷了 `lib`、`package.json`、`cordis.patch.yml`。
|
|
168
|
+
|
|
169
|
+
修法二选一:
|
|
170
|
+
|
|
171
|
+
1. **推荐**:别用本地目录,直接装 npm 包(包里有 `locale/en.json`、`locale/zh.json`):
|
|
172
|
+
|
|
173
|
+
```powershell
|
|
174
|
+
dsh plugin add dsh-global-todo
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
2. 保留本地目录,把缺的补齐(`$src` 换成仓库或 npm 包里那份):
|
|
178
|
+
|
|
179
|
+
```powershell
|
|
180
|
+
$dst = "$env:USERPROFILE\.dsh\plugins-local\全局待办插件"
|
|
181
|
+
$src = "C:\path\to\dsh-global-todo"
|
|
182
|
+
New-Item -ItemType Directory -Force "$dst\locale" | Out-Null
|
|
183
|
+
Copy-Item "$src\locale\*.json" "$dst\locale\" -Force
|
|
184
|
+
Copy-Item "$src\docs\icon.svg" "$dst\docs\" -Force # 图标同理会报错
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
然后重启宿主(插件元信息在启动时读一次)。
|
|
188
|
+
|
|
189
|
+
为什么会这么脆:`exports` 的 `./locale/*.json` 是**通配映射**,Node 解析它时不检查文件是否存在,
|
|
190
|
+
所以宿主以为文件在、去扫目录,才发现没有。完整安装不会触发;只有手工拷半份才会。
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
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 = '
|
|
53
|
+
const UI_REV = 'ui53'
|
|
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
|
|
|
@@ -59,7 +59,7 @@ window.__ModuleLoader__.load({
|
|
|
59
59
|
const zh = {
|
|
60
60
|
'entry.label': '待办',
|
|
61
61
|
'panel.title': '全局待办',
|
|
62
|
-
'panel.subtitle': '
|
|
62
|
+
'panel.subtitle': '跨会话一份清单:你和 Agent 都能加,也能带着步骤交给对话继续干',
|
|
63
63
|
'action.refresh': '刷新',
|
|
64
64
|
'action.retry': '重试',
|
|
65
65
|
'action.add': '添加',
|
|
@@ -356,7 +356,7 @@ window.__ModuleLoader__.load({
|
|
|
356
356
|
const en = {
|
|
357
357
|
'entry.label': 'Todos',
|
|
358
358
|
'panel.title': 'Global todos',
|
|
359
|
-
'panel.subtitle': 'One list across sessions
|
|
359
|
+
'panel.subtitle': 'One list across sessions - you and the agent write it, and hand items on with their steps',
|
|
360
360
|
'action.refresh': 'Refresh',
|
|
361
361
|
'action.retry': 'Retry',
|
|
362
362
|
'action.add': 'Add',
|
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.12.
|
|
39
|
+
export const VERSION = '0.12.3'
|
|
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.12.
|
|
3
|
+
"version": "0.12.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",
|