dsh-tiddlywiki 0.30.53 → 0.30.55

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 CHANGED
@@ -4,6 +4,8 @@
4
4
 
5
5
  > 最近几个主要版本的一句话记录(完整变更见 [Releases](https://github.com/bbqisbbq/dsh-tiddlywiki/releases) / git log)。
6
6
 
7
+ - **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
+ - **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 个依赖全部对得上)`。
7
9
  - **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` 两个缺口。
8
10
  - **v0.30.52**(2026-09-30):**补上唯一一个「本地全绿、CI 才红」的类别** —— `lib/` 与 `src/` 的同步,此前**只由 CI** 的 `git diff --exit-code -- lib/` 把关,本地四档 `npm run verify` **一次都不查它**。新增 `scripts/verify-lib-sync.mjs` + `npm run verify:sync`(**故意不进 `verify`/`verify:static`** —— 它是唯一会**写 `lib/`** 的守门,只应在「准备提交」时跑,只读的那两处必须保持只读)。判据之所以可以这么硬:构建**逐字节可复现**(实测两次 `npm run build` 的 `lib/index.js` SHA256 相同)⇒ 直接「重建 → `git status --porcelain -- lib/` 必须为空」,不需要时间戳或哈希清单这类花招。顺手把 CI 里那条**同样只存在于 CI** 的检查(铁律 #8:`lib/*.js` 不得含真实的 `@deepseek-ai` 运行时 import,用 `from`/`require(` 前缀正则避免命中文案)搬到本地。**反向验证**:改一行 `src/index.ts` 而不 build ⇒ 红并点名 `lib/index.js.map`(=当年那次「差点带过期 lib 提交」的完整形状);给 `lib/index.js` 注入 `@deepseek-ai/sdk` ⇒ 命中数 0→1。
9
11
  - **v0.30.51**(2026-09-30):**把「barrel 公共面」从人肉纪律变成机器棘轮** —— 补上 `verify-index-barrel` 之外的最后一道缺口。v0.30.49 新加的守门只覆盖「本仓库脚本用得到的」175 个导出;而 `src/index.ts` 一共导出 **294** 个,剩下 ~119 个**在仓库内零消费者**(它们的存在意义是 npm 下游/未来调用方)—— v0.30.42 丢掉 `MARKDOWN_PLUGIN` 就是这一类:**零消费者 ⇒ 零报错 ⇒ 只有人肉 `git diff` 能发现**。本版加**只增不减的棘轮**:把完整公共面快照进 `scripts/index-barrel-surface.json`(294 个名字),**少一个** ⇒ 红并点名(要拦的事故),**多一个** ⇒ 也红并提示更新快照(`公共面变大应当是一次有意识的决定`)。**反向验证**:删掉 `export { MARKDOWN_PLUGIN }` —— `tsc` 报 **0 个错误**,而棘轮精确点名它 ⇒ 这正是 v0.30.42 的真实事故形状;把快照人为缩小一项 ⇒ 「新增了 MARKDOWN_PLUGIN」也红。⚠️ 生成入口 `--update-surface` 必须在「快照存在性检查」**之前**处理,否则首次生成会被自己拦住(本版实测并修掉)。
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.53",
4
+ "version": "0.30.55",
5
5
  "type": "module",
6
6
  "keywords": [
7
7
  "dsh",
@@ -92,12 +92,12 @@
92
92
  "smoke:client": "node scripts/smoke-client.mjs",
93
93
  "selftest": "node scripts/selftest.mjs",
94
94
  "verify:sync": "node scripts/verify-lib-sync.mjs",
95
- "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-index-barrel.mjs && node scripts/verify-ci-parity.mjs && node scripts/verify-line-endings.mjs && node scripts/verify-doc-links.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",
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",
99
99
  "verify": "npm run typecheck && npm run build && npm run verify:static && npm run verify:unit && npm run verify:e2e && npm run verify:large && npm run selftest && npm run smoke:client",
100
100
  "verify:all": "npm run verify:sync && npm run verify",
101
- "prepublishOnly": "npm run typecheck && npm run build && npm run verify:static && npm run verify:unit"
101
+ "prepublishOnly": "npm run verify:all"
102
102
  }
103
103
  }