dsh-tiddlywiki 0.30.50 → 0.30.51

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,7 @@
4
4
 
5
5
  > 最近几个主要版本的一句话记录(完整变更见 [Releases](https://github.com/bbqisbbq/dsh-tiddlywiki/releases) / git log)。
6
6
 
7
+ - **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` 必须在「快照存在性检查」**之前**处理,否则首次生成会被自己拦住(本版实测并修掉)。
7
8
  - **v0.30.50**(2026-09-30):`src/index.ts` **724 → 674** —— 新模块 `index-startup.ts`(202):**自举阶段整片**(装拆库 skill → 读控制文件 → 读会话作用域 → 建 farm → `startAll` → `applyPrompt` → 绑剪藏桥,收进 `createStartupStage(deps)`)。`index.ts` 拆分第三轮:剩下的是 `apply()` 的其余装配(farm/锁/工具接线 + 拆卸 effect),读入口现在基本能一眼看完生命周期。**三条刻意不动**:① `disposed` 仍归入口(它是**拆卸 effect 与这个任务共同的主人**——任务每次 await 后检查它、发现卸载就自己停子进程,v0.19.1),以 `isDisposed` 传入;② `farm` 由这个阶段**创建**、但**全插件所有**(路由/工具/视图都读)⇒ 经 `setFarm` 交回入口,入口仍是可变状态的唯一主人;③ **顺序即语义**(尤其是「拆库 skill 必须在 wiki 之前装」,那是真实事故的产物)——已在模块头逐条写明。⚠️ 其中一个**必须留在 `index.ts` 的导入绑定**(`readLocationState` / `readRegistry` 这两个名字只被 barrel 再导出使用)暴露成一个模式,本版顺手改掉了根因:`export { X } from '…'` **不消费** import 绑定 ⇒ `noUnusedLocals` 报「声明未读」、而删掉 import 就让 `lib/index.js` **静默少一个导出**(v0.30.48 / v0.30.50 各踩一次,只有 e2e 能发现)。修法:这类名字改用**无 `from` 的 `export { X }`** —— 真的读一次绑定,导出照样存在,两个要求同时满足。⚠️ 守门同步:`verify-ready-policy` 那条「`base: config` 必须交给实例」的断言改读 **`src/index` 族**(阶段搬走后 `base: deps.config` 落在新模块里)—— 判据不变,只是不再钉文件名;`verify-index-barrel`(v0.30.49 新增)本轮**当场**抓出了被漏掉的两个导出。
8
9
  - **v0.30.49**(2026-09-30):**修 v0.30.48 引入的真缺陷 + 补上「barrel 公共面」的守门**。① v0.30.48 用 `noUnusedLocals` 清理 import 时删掉了 `writeLocationState` 的 **import 行**,而同一文件里 `export { … } from './host/wiki-location.ts'` 是**独立语句**、不消费那个绑定 —— 于是 `lib/index.js` 不再导出它,`scripts/verify-wiki-switch.mjs` 在 **e2e** 阶段才崩(`does not provide an export named 'writeLocationState'`),而 `typecheck` / `verify:unit` / `verify:static` **全绿**。这正是 v0.30.42(误删 `MARKDOWN_PLUGIN`)那一类「**barrel 丢失对编译器和多数守门不可见**」的第二次事故。② 新增 `scripts/verify-index-barrel.mjs`(进 `verify:static`):**凡是本仓库脚本从 `../lib/index.js` 具名导入的符号,`src/index.ts` 必须真的导出它**(解析的是 `export { … }` 与 `export <decl>`,**不是**「出现过这个名字」—— 后者挡不住「barrel 行被降级成 import」这种形态)。带两条反空转保险(导出数 ≥100、需求数 ≥50),并**反向验证**过两种注入(删掉导出 / 降级成 import,都稳定变红)。③ 写这条守门时自己踩了同一个坑的**第三种方向**:解析 `export { … }` 列表时按 `,` 切分,而列表里恰好有一段解释性注释 —— 注释里的逗号把名字切碎、注释里的右花括号提前终止列表,**症状是「源码明明导出了,守门却报缺」**。修法同 v0.30.45/48:**先剥注释再解析**(顺序照旧先剥行注释)。⇒ 「对源码文本做结构断言先剥注释」这条纪律,本仓库已经交了**四次**学费(v0.28.12 假红、v0.30.45 假绿、v0.30.48 假红、v0.30.49 解析器自己出错)。
9
10
  - **v0.30.48**(2026-09-30):`src/index.ts` **955 → 724** —— 新模块 `index-routes.ts`(381):**路由 / admin 装配阶段整片**(`RouteDeps` + `AdminDeps` 两个对象与两张路由表的注册,收进 `createRouteStage(deps)`)。**这是 `index.ts` 拆分第二轮**:v0.30.42 先切走了「纯」的配置面,这一轮切走的是**装配阶段里唯一自成一段**的部分 —— 读入口现在能一眼看到生命周期(farm → prompt/tools → 启动任务 → 路由 → 拆卸),而不再被 120 行 accessor 接线打断。三条刻意不动的东西:① **`disposed` 仍归入口**(它的主人是拆卸 effect 与启动任务),唯一需要它的那处守卫改为**传入谓词** `isDisposed()`;② **变更锁仍由入口建、并把同一个实例传进 stage**(v0.30.12:整插件一把锁)—— 顺手删掉一个**从未被读的依赖** `GitLayerDeps.isDisposed`,README 式的「按行删 import」交给 `noUnusedLocals`(一次点名 23 处,零猜);③ **注册时机一字未改**(`ctx.inject(['webServer'])` 仍在 wikiViews 之后、拆卸 effect 之前 —— 顺序没有重排)。⚠️ 守门同步一处:`verify-mutation-lock` 的「只建一把锁」计数改成**按模块族**统计,并给该判据**剥注释** —— 新模块的说明文字里写了一句 `createMutationLock()`,未剥注释时会被当成**第二个调用点**(v0.30.45 那种「断言被自己的文档满足」的镜像:这次是假红)。
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.50",
4
+ "version": "0.30.51",
5
5
  "type": "module",
6
6
  "keywords": [
7
7
  "dsh",