dsh-global-todo 0.12.2 → 0.12.4
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 +33 -0
- package/docs/FAQ.md +31 -0
- package/lib/index.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,36 @@
|
|
|
1
|
+
## [0.12.4] — 2026-10-21
|
|
2
|
+
|
|
3
|
+
The repository leaked its own location. Three real paths, and a guard that could not see them.
|
|
4
|
+
|
|
5
|
+
- **Removed the absolute paths**: `AGENTS.md` named the guard by full path (now `$DSH_HOME/…`),
|
|
6
|
+
`tools/demo/seed.mjs` hard-coded the checkout (now resolved from `import.meta.url`),
|
|
7
|
+
`tools/demo/capture.mjs` hard-coded Playwright's location in one profile (now
|
|
8
|
+
`PLAYWRIGHT_MODULE` or the normal resolution), and `tools/demo/scenes.sh` hard-coded a font in
|
|
9
|
+
one home (now `DEMO_FONT`, else fontconfig).
|
|
10
|
+
- **The rule can now see them.** It only knew `/home/<user>/` and `/Users/<user>/`. It also
|
|
11
|
+
rejects Windows profile paths and any path containing this checkout's own home or directory —
|
|
12
|
+
computed at run time, so the repository cannot know every layout but it does know the one
|
|
13
|
+
running the check. Both shapes were verified by planting a file and watching the check fail.
|
|
14
|
+
- **The file list comes from git.** The hand-kept ignore list had drifted from `.gitignore`:
|
|
15
|
+
`reports/` and `.agent-teams/` were ignored by git yet still scanned, so a clean tree reported
|
|
16
|
+
four failures nobody could act on. `git ls-files --cached --others --exclude-standard` is now
|
|
17
|
+
the single source of truth, with the walker kept as a fallback. `reports/` also joined
|
|
18
|
+
`.gitignore`, where it belonged.
|
|
19
|
+
|
|
20
|
+
## [0.12.3] — 2026-10-21
|
|
21
|
+
|
|
22
|
+
A desktop report explained, and the packaging contract behind it guarded.
|
|
23
|
+
|
|
24
|
+
- **`docs/FAQ.md` §15** answers `Plugin metadata … ENOENT … \locale`: the Host resolves
|
|
25
|
+
`<pkg>/locale/en.json` through the `exports` wildcard (which Node resolves **without** checking
|
|
26
|
+
the file), then scans that directory. A hand-copied `plugins-local` folder that kept `lib/`,
|
|
27
|
+
`package.json` and the patch but dropped `locale/` therefore reports this — while the plugin
|
|
28
|
+
itself still loads. The entry gives both fixes (install from npm, or copy `locale/` and
|
|
29
|
+
`docs/icon.svg` into the local folder) and says the metadata is read once at startup.
|
|
30
|
+
- **`test/manifest.test.mjs` now asserts the contract**: the `./locale/*.json` export exists and
|
|
31
|
+
`locale` is in `files`. Drop either and the plugins page silently loses its title, description
|
|
32
|
+
and icon — the exact failure that shipped as a user-visible error.
|
|
33
|
+
|
|
1
34
|
## [0.12.2] — 2026-10-21
|
|
2
35
|
|
|
3
36
|
The description reached the last two places it was still thin.
|
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
|
+
所以宿主以为文件在、去扫目录,才发现没有。完整安装不会触发;只有手工拷半份才会。
|
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.4'
|
|
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.4",
|
|
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",
|