dsh-tiddlywiki 0.30.55 → 0.30.57
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/docs/CHANGELOG.md +2 -0
- package/package.json +3 -3
package/docs/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
> 最近几个主要版本的一句话记录(完整变更见 [Releases](https://github.com/bbqisbbq/dsh-tiddlywiki/releases) / git log)。
|
|
6
6
|
|
|
7
|
+
- **v0.30.57**(2026-09-30):**给 `AGENTS.md` 的注入预算装上守门** —— 这条纪律的**存在理由就是它自己**。本文件顶部写着:宿主给 workspace instructions 的预算是 **65536 字节**,「过去它长到 ~120KB,**截断正好砍掉最后几节(发布流程 / 维护规则 / 常见坑)**」—— 也就是说**这份文件当初被拆成「规则 + 指针」的原因,就是它撞过预算上限**。而那条教训**只写在正文里,没有任何东西在量它**(`verify-doc-links` 管链接、`verify-wiki-pointers` 管指针,都不管篇幅),失效方式依然是沉默的:文件继续长到超限,宿主从末尾截断,被砍掉的正好是**最该被看到的规则**,**没有人会收到报错**。新增 `scripts/verify-agents-budget.mjs`(进 `verify:static`):**两级硬阈值** —— 硬上限 **65536**(宿主预算=事实边界)与软上限 **45000**(自我警戒线),**两级都红**(本仓库的教训是「只打印 warning 的守门等于没有守门」;要抬 SOFT 必须明确改常量=有意识的决定)。⚠️ 顺带守一件更隐蔽的事:**文件第 5 行对自身体积的自述不得漂移** —— 它当时写着「现在拆完约 **12KB**」,而实测已 **40.7KB**(**偏差 70%**,文件在对自己撒谎而无人被冒犯)。**这正是本守门第一次运行就抓到的**:`顶部自述「约 12KB」,实测 40.7KB`。已改为实测值并把守门写进那句旁边。**反向验证**:填充到 46920 字节(> 软上限)⇒ 红;填充到 66920 字节(> 硬上限)⇒ 红并点名「注入会被从末尾截断」;恢复后哈希逐字一致。当前实况:`41890 字节 / 65536 = 63.9%`。
|
|
8
|
+
- **v0.30.56**(2026-09-30):**`AGENTS.md` 的 wiki 指针现在有守门了** —— §5「开发文档索引」是这套文档体系的**承重墙**(细节搬进 wiki、注入文件只留指针),但指针断掉的后果是**沉默的**:新会话按它去读会读到空气,而 `tsc` / 任何现有守门都不会报错(`verify-doc-links.mjs` 只管仓库内的相对文件链接)。新增 `scripts/verify-wiki-pointers.mjs`(并进 `npm run verify:sync`):**从 `AGENTS.md` 的表格行里**取出 `[[…]]` 指针(**只取表格行** —— 正文里的 `[[标题]]` 是 TW 语法示例、不是指针,这个区分是判据的核心),再从 wiki 数据根解析出**全部条目标题**(meta 的 `title:` 优先、退回文件名),要求每个指针都命中。**多库模式也认**(优先读 `$DSH_HOME/dsh-tiddlywiki/wikis.json` 的 `defaultId`/全部库,退回单库的 `location.json`)—— 实测本机上插件跑在多库模式、`location.json` 根本不存在,只认单库的话这个守门会**永远 SKIP**。⚠️ **找不到 wiki 数据根时 SKIP 而不是 FAIL**(别人的机器 / CI 上 wiki 可能不存在,前提不成立),但 SKIP **必须明说**「本轮未验证」;也正因如此它**不进 `verify:static`**(CI 上必然 SKIP,等于给人「已守」的错觉),而与 `verify:lib-sync` 同挂在 `verify:sync`(本机环境相关、提交/发布前跑)。**反向验证**:把 §5 的一个指针改成不存在的笔记名(=笔记被改名后的真实形状)⇒ **红并点名**;`--self-test` 模式另行证明「不存在的指针名会被判为缺失」。当前实况:**5 个指针全部命中 · 3 个库 · 2041 条条目**。
|
|
7
9
|
- **v0.30.55**(2026-09-30):**把新守门接进 `prepublishOnly` + 修 `verify-all` 的收尾** —— ① `package.json` 的 `prepublishOnly` 此前只跑 `typecheck + build + verify:static + verify:unit`,**不含 `verify:e2e` / `verify:large` / `selftest` / `smoke:client`**,且**不跑 `verify:sync`** ⇒ 发布时构建产物可能**没被校验过与 `src/` 同步**(正是 v0.30.52 那个缺口的发布形态)。现在改为 **`npm run verify:all`**(= `verify:sync` + 8 步 `verify`),发布前的门与 CI 完全一致。② `verify-lock-sync.mjs`(v0.30.54 新增)此前只在 `verify:static` 里;本版确认它在 `prepublishOnly` 路径上也一定会跑(`verify:all` → `verify` → `verify:static` 的第一步就是它)。③ 顺手把交接卡与三篇 wiki 笔记更新到 v0.30.55。**发布前的门 = CI 的门 = 本地的门**,三处同源。
|
|
8
10
|
- **v0.30.54**(2026-09-30):**铁律 #12 终于有了执行者** —— `package-lock.json` 与 `package.json` 的同步,此前**只靠「记得手工跑一下 `npm ci --dry-run`」**(既慢又碰网络,于是没人会在提交前跑)。新增 `scripts/verify-lock-sync.mjs`(进 `verify:static` 的**第一步**,因为它是纯读两个 JSON、最快能给出结论的一道网):**零网络、零磁盘副作用**地查六件事 —— ① 版本**三处一致**(`package.json.version` / `package-lock.json.version` / `packages[""].version`,发版漏改一处 `npm ci` 就报 `lock file does not satisfy`);② `lockfileVersion >= 2`;③ 名字一致;④ 四个依赖字段的**集合**双向一致(漏了 / 已删);⑤ 每个声明的依赖在 lock 里有**实体条目**且 **locked 版本满足声明的 range**(用 semver;非 semver 范围如 `git`/`file:` 跳过并明说);⑥ **范围本身一致**(同一个依赖写出两个范围=手改过 lock)。⚠️ 它**不替代** `npm ci`(真正的「全量可解析性」需要网络,交给 CI),它拦的是「**改了 `package.json` 忘了重生成 lock**」这一类事故的完整形状。**反向验证三种注入**:改 range 不重生成 lock ⇒ 红(范围不一致);改 lock 里实体版本到不满足范围 ⇒ 红;只改 lock 顶层 version ⇒ 红。当前实况:`LOCK SYNC OK(版本三处一致 · lockfileVersion 3 · 14 个依赖全部对得上)`。
|
|
9
11
|
- **v0.30.53**(2026-09-30):**让「本地全绿 = 可以提交」这条等式真正成立** —— `npm run verify` 现在与 CI **覆盖面相同**,并新增 `scripts/verify-ci-parity.mjs` 防止两者**再次**漂移。这一轮发现的缺口比上一轮更大:CI 的 `selftest` job 跑 **`selftest` + `smoke:client`**,而本地 `verify` **两个都不跑**;CI 四步里还各跑 `typecheck` / `build`,本地 `verify` 也到不了(`AGENTS.md` §4 只写了「改核心路径跑 `npm run selftest`」—— 一句**没有执行者**的建议)。⇒ `verify` 改为 `typecheck && build && verify:static && verify:unit && verify:e2e && verify:large && selftest && smoke:client`(**8 步,与 CI 的 9 个 script 一一对应**),并新增 `verify:all` = `verify:sync && verify` 作为「提交前跑完整一遍」的唯一入口。守门 `verify-ci-parity.mjs`(进 `verify:static`):取出 `ci.yml` 里所有 `npm run <x>`,要求**每一个都能从本地 `verify` / `verify:all` 到达**(按**脚本名可达性**判断,而不是逐字比较命令 —— 本地串 34 个 verify-*.mjs、CI 直接调聚合脚本,形式不同而覆盖面相同,逐字比会天天误报);例外表 `CI_ONLY_ALLOWED` **当前为空,且刻意如此**。**反向验证**:往 CI 里加一步本地到不了的 `npm run verify:missing-demo` ⇒ 红并点名;写完本守门的**第一次运行就当场抓出** `typecheck` 与 `build` 两个缺口。
|
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.30.
|
|
4
|
+
"version": "0.30.57",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"dsh",
|
|
@@ -91,8 +91,8 @@
|
|
|
91
91
|
"typecheck": "tsc --noEmit",
|
|
92
92
|
"smoke:client": "node scripts/smoke-client.mjs",
|
|
93
93
|
"selftest": "node scripts/selftest.mjs",
|
|
94
|
-
"verify:sync": "node scripts/verify-lib-sync.mjs",
|
|
95
|
-
"verify:static": "node scripts/verify-lock-sync.mjs && 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-index-barrel.mjs && node scripts/verify-ci-parity.mjs && node scripts/verify-line-endings.mjs && node scripts/verify-doc-links.mjs",
|
|
94
|
+
"verify:sync": "node scripts/verify-lib-sync.mjs && node scripts/verify-wiki-pointers.mjs",
|
|
95
|
+
"verify:static": "node scripts/verify-lock-sync.mjs && node scripts/verify-agents-budget.mjs && 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-index-barrel.mjs && node scripts/verify-ci-parity.mjs && node scripts/verify-line-endings.mjs && node scripts/verify-doc-links.mjs",
|
|
96
96
|
"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-write-call-sites.mjs && node scripts/verify-workspace.mjs && node scripts/verify-wiki-registry.mjs && node scripts/verify-wiki-farm.mjs && node scripts/verify-session-scope.mjs && node scripts/verify-skill-install.mjs && node scripts/verify-repo-keying.mjs && node scripts/verify-restart-drain.mjs && node scripts/verify-desktop-node.mjs && node scripts/verify-language-pin.mjs && node scripts/verify-git-multi-sync.mjs && node scripts/verify-client-i18n.mjs && node scripts/verify-mutation-lock.mjs && node scripts/verify-prompt.mjs && node scripts/verify-conflict-config-guards.mjs && node scripts/verify-config-ranges.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 && npx tsx scripts/verify-wiki-focus.mjs",
|
|
97
97
|
"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 && node scripts/verify-wiki-farm-boot.mjs",
|
|
98
98
|
"verify:large": "node scripts/verify-large-wiki.mjs",
|