dsh-tiddlywiki 0.27.1 → 0.27.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/README.md CHANGED
@@ -29,7 +29,7 @@ dsh plugin --profile web add dsh-tiddlywiki
29
29
 
30
30
  **适合**:想要一个**本地、纯文本、能随时带走**的长期笔记库,并且愿意让 Agent 读写同一批文件的人;已经在用 Obsidian / Logseq、但缺"Agent 也能进"这一层的人。
31
31
 
32
- **不适合**:想要"装完就自动记住我说过的一切"的人(那是另一类插件,见 [docs/features.md](docs/features.md) 末尾的说明);完全不想碰 TiddlyWiki 心智模型的人——它需要一次五分钟的理解。
32
+ **不适合**:想要"装完就自动记住我说过的一切"的人(那是另一类插件:自动抽取 + 向量召回 + 后台注入;本插件不做后台抓取);完全不想碰 TiddlyWiki 心智模型的人——它需要一次五分钟的理解。
33
33
 
34
34
  ## ✨ 它好在哪
35
35
 
@@ -66,6 +66,8 @@ dsh plugin --profile web add dsh-tiddlywiki
66
66
 
67
67
  ## 🕘 版本记录
68
68
 
69
+ - **v0.27.3**(2026-09-28):**修 v0.27.1 拆文档时打断的 6 个相对链接**(`docs/` 内的链接仍按仓库根写成 `docs/xxx.md`,从 `docs/` 内部点击打不开);新增守门 `scripts/verify-doc-links.mjs`(校验 README + `docs/**` 的全部相对链接,已挂进 `verify:static`,让这类错误下次发不出来);**修 CI 偶发假红**:`verify-wiki-switch` 的回滚断言会抢在 TW 载入 store 之前读取,改为 15s 有界轮询后再断言。**无运行时行为改动。**
70
+ - **v0.27.2**(2026-09-28):修本页一处**指向不存在内容的死链**("不适合"那段曾让人去看 `docs/features.md` 末尾的说明,那里并没有)。纯文案,无代码改动。
69
71
  - **v0.27.1**(2026-09-28):**README 从 175KB 精简成本页**——原来 68% 的篇幅是变更历史。能力清单 / 使用指南 / 开发发布 / 完整变更历史拆到 `docs/`(内容未删),首页只留"是什么、怎么装、好在哪、适不适合你"。**无代码改动。**
70
72
 
71
73
  更早版本 → [docs/CHANGELOG.md](docs/CHANGELOG.md)
package/docs/CHANGELOG.md CHANGED
@@ -28,7 +28,7 @@
28
28
 
29
29
  - **v0.23.0**(2026-09-17):**新增「发布到微信公众号」+ 发布元数据**(`tools/wechat/`,**可选功能,默认关闭,需额外安装**,不动 host 代码)。把 wiki 笔记一键发到公众号**草稿箱**,可选点发表。
30
30
 
31
- **⚠️ 可选功能,默认关**:真正干活的是仓库 `tools/wechat/` 下的 opencli adapter + Browser Bridge 浏览器扩展——**插件本体不含它,也不会替你装**。开关 `wechat.enabled` 默认 `false`:**关闭时**不注入任何发布相关提示词、也不往 wiki 写「发布元数据规范」文档;**打开后**仅多这两项,不会安装任何东西、不启用任何后台服务。不装/不开它,插件其他功能完全不受影响。开启方式:设置 →「TiddlyWiki 知识库」→「可选功能:微信公众号发布」→ 勾选 → 保存配置。完整安装步骤(opencli、浏览器扩展、扫码登录)与排错见 [docs/wechat-publish-setup.md](docs/wechat-publish-setup.md)。
31
+ **⚠️ 可选功能,默认关**:真正干活的是仓库 `tools/wechat/` 下的 opencli adapter + Browser Bridge 浏览器扩展——**插件本体不含它,也不会替你装**。开关 `wechat.enabled` 默认 `false`:**关闭时**不注入任何发布相关提示词、也不往 wiki 写「发布元数据规范」文档;**打开后**仅多这两项,不会安装任何东西、不启用任何后台服务。不装/不开它,插件其他功能完全不受影响。开启方式:设置 →「TiddlyWiki 知识库」→「可选功能:微信公众号发布」→ 勾选 → 保存配置。完整安装步骤(opencli、浏览器扩展、扫码登录)与排错见 [docs/wechat-publish-setup.md](wechat-publish-setup.md)。
32
32
 
33
33
  **为什么不用官方 API**:2025-07 起官方回收了「发布能力」接口对个人主体/未认证账号的调用权限(`freepublish/submit` 不可用、`draft/add` 常回 48001);即便可用还要配 API IP 白名单、封面永久素材、正文图片必须走 `media/uploadimg`。**本方案改走浏览器自动化**,复用你**已登录**的公众号后台会话(opencli + Browser Bridge 扩展),个人号可用、零凭据落盘。数据流:笔记标题 → DSH `POST /render`(TW 自己渲染成语义 HTML,**代码高亮白蹭**)→ `wechat-html.js` 补**内联样式**(实测微信会剥 `<style>` 并删 class,**只认内联 style**;而 TW 输出零内联样式,所以必须有这一步)→ `weixin-flow.js` 驱动后台填表/写正文/传图/设封面/存草稿。
34
34
 
package/docs/features.md CHANGED
@@ -21,7 +21,7 @@
21
21
  | 🧯 **路由不会拖垮进程** | 所有路由经 `guardHandler` 包装:任何 rejection(含代理里 try 之外的 `new URL()`)都变成 413/500 响应,而不是宿主未处理的 promise rejection(那会**直接结束 dsh web 进程**并挂死请求);剪藏桥 listen 后保留常驻 `error` 监听(v0.19.3) |
22
22
  | 📊 **回复流卡片** | 工具结果显示原生 TW 卡片(**按笔记自己的内容类型渲染**:Markdown 笔记就是 Markdown,v0.18.0),检索/最近列表带**命中处摘要**(v0.22.8);`[标题](/dsh-tiddlywiki/tw/#标题)` 点击直达 TW 面板 |
23
23
  | 📤 **发送给 Agent** | TW 笔记工具栏一键把当前笔记注入所选 dsh 会话(可选工作模式/权限/附加说明);成功/失败会弹出提示(v0.20.0 修复:此前提示把自由文本当 tiddler 标题传给 TW notifier,全部静默) |
24
- | 📮 **发布到微信公众号**(**可选,默认关**) | 把笔记一键发到公众号**草稿箱**(可选点发表):TW 渲染 → 补内联样式 → 浏览器自动化复用你已登录的后台会话。**绕开官方 API 权限封锁**(2025-07 起个人主体账号的发布接口被回收),个人号可用;发表需管理员扫一次码。**需额外安装**(opencli + 浏览器扩展),插件不替你装;**关闭时完全不打扰**(不注入提示词、不写文档)。**带发布元数据**(`pub-state`/`pub-platform`/`pub-wechat-*` + `no-publish` 标签)避免重发或误发。**v0.23.3 起 TW 工具栏有「发布到公众号」按钮**(预检 + 进度轮询,只到草稿箱),也可继续用 CLI。见 [docs/wechat-publish-setup.md](docs/wechat-publish-setup.md) |
24
+ | 📮 **发布到微信公众号**(**可选,默认关**) | 把笔记一键发到公众号**草稿箱**(可选点发表):TW 渲染 → 补内联样式 → 浏览器自动化复用你已登录的后台会话。**绕开官方 API 权限封锁**(2025-07 起个人主体账号的发布接口被回收),个人号可用;发表需管理员扫一次码。**需额外安装**(opencli + 浏览器扩展),插件不替你装;**关闭时完全不打扰**(不注入提示词、不写文档)。**带发布元数据**(`pub-state`/`pub-platform`/`pub-wechat-*` + `no-publish` 标签)避免重发或误发。**v0.23.3 起 TW 工具栏有「发布到公众号」按钮**(预检 + 进度轮询,只到草稿箱),也可继续用 CLI。见 [docs/wechat-publish-setup.md](wechat-publish-setup.md) |
25
25
  | 🧭 **内嵌编辑器** | 中央列内嵌完整 TW 5 编辑器(同源代理,Tailscale/内网/域名/HTTPS 均可) |
26
26
  | 🗂️ **右侧边栏 Tab** | DSH 新右侧栏(rightbar):首页「TiddlyWiki 知识库」入口一键打开,与聊天并排;链接点击可直达(v0.16.21) |
27
27
  | 🧪 **审计守门** | 第四轮审计(v0.20.0)把 CI 与 `npm run verify:*` 合成一份清单,并补上 `verify-constants`(filter 长度预算)、`/render` 403、auth 打码、notify 与草稿避让回归。**v0.25.0 再加两道**:`verify-config-patch`(设置页补丁必须过 `normalizeConfigPatch`:范围夹取 / 类型错误 400 / `__proto__` 等危险键拒绝 / 未知键透传)与 `verify-tool-views`(源码级断言**客户端 `TOOL_VIEW_KEYS` 与 host 注册的工具名完全一致**、`TOOL_LABELS` 全覆盖、工作区前缀与 host 常量相同——此前只靠 AGENTS.md 一句「记得同步」,新增工具时卡片会静默退化成纯文本) |
package/docs/usage.md CHANGED
@@ -87,7 +87,7 @@
87
87
  > **这是可选功能**:需要额外安装 opencli + Browser Bridge 浏览器扩展,**插件不替你装**。
88
88
  > 开关 `wechat.enabled` **默认 `false`**——关闭时不注入任何发布相关提示词、也不往 wiki 写
89
89
  > 「发布元数据规范」。开启:DSH 设置 →「TiddlyWiki 知识库」→「可选功能:微信公众号发布」。
90
- > 完整安装步骤与排错见 [docs/wechat-publish-setup.md](docs/wechat-publish-setup.md)。
90
+ > 完整安装步骤与排错见 [docs/wechat-publish-setup.md](wechat-publish-setup.md)。
91
91
 
92
92
  把 wiki 里的任意笔记**一键发到微信公众号草稿箱**(可选直接发表)。整套能力放在 `tools/wechat/`,**不依赖公众号服务端 API**——因为 2025-07 起官方已回收个人主体账号的「发布能力」接口权限;本方案改用**浏览器自动化复用你已登录的后台会话**,所以个人号也能用。
93
93
 
@@ -120,11 +120,11 @@ node tools/wechat/backfill-publish-state.mjs --write # 写
120
120
  2. **发表必须管理员扫码**——后台点「发表」后微信要求管理员微信扫码确认,无法自动化。「一键」的真实含义是「脚本做到填表/排版/上传,你只需扫一次码」。默认走**发表**(不推送粉丝、不占群发额度),群发请自行在后台操作。
121
121
  3. **图片上传用 DataTransfer 注入**,不用 `page.setFileInput`——后者依赖 CDP `Page.fileChooserOpened`,本机扩展版本组合下稳定失败;改用页面上下文直接塞 `input.files`,实测图片真进 `mmbiz.qpic.cn`。代价是单图 **8MB** 上限(字节要以 base64 穿过 evaluate)。
122
122
 
123
- **换机器还原**见 [docs/wechat-publish-setup.md](docs/wechat-publish-setup.md)(含 opencli / Browser Bridge 扩展安装、扫码登录、排错表)。设计依据与全部实测细节见 [docs/plans/2026-09-17-wechat-publish-design.md](docs/plans/2026-09-17-wechat-publish-design.md)。
123
+ **换机器还原**见 [docs/wechat-publish-setup.md](wechat-publish-setup.md)(含 opencli / Browser Bridge 扩展安装、扫码登录、排错表)。设计依据与全部实测细节见 [docs/plans/2026-09-17-wechat-publish-design.md](plans/2026-09-17-wechat-publish-design.md)。
124
124
 
125
125
  ### 🧩 初始化(一次性预置 seed):哪些「必备」,哪些「可有可无」
126
126
 
127
- seed 是把「wiki 里预置内容」随插件分发的机制:**ONE-SHOT(只写缺失)+ 安全跳过(同名 tiddler 已存在绝不覆盖你的数据)**,需要时可「重新初始化」恢复、可「反初始化」移除。详细见 [docs/seed-initialization.md](docs/seed-initialization.md)。
127
+ seed 是把「wiki 里预置内容」随插件分发的机制:**ONE-SHOT(只写缺失)+ 安全跳过(同名 tiddler 已存在绝不覆盖你的数据)**,需要时可「重新初始化」恢复、可「反初始化」移除。详细见 [docs/seed-initialization.md](seed-initialization.md)。
128
128
 
129
129
  | 层级 | seed | 说明 | 首次安装 |
130
130
  |---|---|---|---|
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dsh-tiddlywiki",
3
3
  "description": "把 TiddlyWiki 5 变成你和 Agent 共用的本地文档中心(纯文本 + git):你在 DSH 界面里阅读、写作、记日记,Agent 用 15 个 tiddlywiki_* 工具读写同一批笔记;每条笔记都是你能读、能改、能审计、能随时带走的文件——不是自动记忆插件,不做后台抓取。可选一键发布到微信公众号草稿箱。 Turn TiddlyWiki 5 into a document center you and your agent share, in plain text under git — a knowledge base you can read, edit, audit and take with you, not an auto-memory plugin. Mounts via the official dsh plugin system; no DSH source changes.",
4
- "version": "0.27.1",
4
+ "version": "0.27.3",
5
5
  "type": "module",
6
6
  "keywords": [
7
7
  "dsh",
@@ -90,7 +90,7 @@
90
90
  "typecheck": "tsc --noEmit",
91
91
  "smoke:client": "node scripts/smoke-client.mjs",
92
92
  "selftest": "node scripts/selftest.mjs",
93
- "verify:static": "node scripts/verify-send-to-agent-bundle.mjs && node scripts/verify-render-bundle.mjs && node scripts/verify-wechat-publish-bundle.mjs && node scripts/verify-package-contents.mjs && node scripts/verify-version-consistency.mjs && node scripts/verify-constants.mjs",
93
+ "verify:static": "node scripts/verify-send-to-agent-bundle.mjs && node scripts/verify-render-bundle.mjs && node scripts/verify-wechat-publish-bundle.mjs && node scripts/verify-package-contents.mjs && node scripts/verify-version-consistency.mjs && node scripts/verify-constants.mjs && node scripts/verify-doc-links.mjs",
94
94
  "verify:unit": "node scripts/verify-clip-bridge.mjs && node scripts/verify-seed-error-policy.mjs && node scripts/verify-render-sanitizer.mjs && node scripts/verify-secret-masking.mjs && node scripts/verify-write-policy.mjs && node scripts/verify-workspace.mjs && node scripts/verify-restart-drain.mjs && node scripts/verify-language-pin.mjs && node scripts/verify-prompt.mjs && node scripts/verify-conflict-config-guards.mjs && node scripts/verify-config-patch.mjs && node scripts/verify-tool-views.mjs && npx tsx scripts/verify-plugin-runtime.mjs && node scripts/verify-wechat-adapters.mjs && node scripts/verify-wechat-docs-seed.mjs && node scripts/verify-wechat-publish.mjs && npx tsx scripts/verify-tw-origin.mjs && node scripts/verify-frame-guards.mjs && npx tsx scripts/verify-ready-policy.mjs && npx tsx scripts/verify-frame-surface.mjs && npx tsx scripts/verify-editor-popup.mjs && npx tsx scripts/verify-status-cache.mjs",
95
95
  "verify:e2e": "node scripts/verify-auth.mjs && node scripts/verify-anon-username.mjs && node scripts/verify-tools.mjs && node scripts/verify-audit-fixes.mjs && node scripts/verify-git-resolve.mjs && node scripts/verify-resilience.mjs && node scripts/verify-seed-send-to-agent.mjs && node scripts/verify-seeds-admin.mjs && node scripts/verify-wiki-switch.mjs",
96
96
  "verify:large": "node scripts/verify-large-wiki.mjs",