Skip to content

v0.1.2

@JayYuen666 JayYuen666 tagged this 13 Oct 01:33
一、事件流水的裁剪不再覆盖并发追加(数据损坏级)
- 裁剪是"读整份 → 按行裁尾 → 写回",另一进程在读完与写回之间追加的那一行会被整段覆盖:
  事件静默消失,而 report() 仍回 ok。lib/jsonl-fuse.ts 现在把裁剪与追加放进**同一把**跨进程
  排他锁:.lock 兄弟文件以 wx(O_CREAT|O_EXCL)原子占位,mtime 超龄即视为持有者已死、可接管;
  拿不到锁仍追加、只跳过裁剪(宁可这轮不裁,绝不丢事件)。整文件重写改走 .tmp + 原子 rename,
  读者要么见旧全文、要么见新全文,不再有写了一半的中间态。
- 取舍有实测:追加 26µs → 88µs(差值就是锁的建/删两次同步 fs 调用),裁剪一循环 308µs →
  396µs;相对 report() 本来就要做的"落盘一条流水 + 一次 settings CAS 写"可忽略。崩溃时最多
  留下 .lock(超龄自动回收)与 .tmp(覆盖写,下一轮裁剪复用)两个兄弟文件。

二、locale 偏好未注册时,回显文案跟着请求语言走
- 四条路由里只有 rule-action 产人读文案:它现在按请求的 Accept-Language 协商(新增
  lib/messages.ts 的 localeFromAcceptLanguage:q 值降序 + 主语言子标签;通配/表外语言/坏 q
  值/空串判不出 → 中文缺省)。官方 locale 条目在场时设置优先、请求头不参与;注入段与起草
  正文没有请求可依,仍只由设置偏好决定。
- 用例分两层:host.test.ts 钉协商口径与"设置优先",http-routes.test.ts 用真 webServer 加真
  node:http 请求钉住这枚头确实能落到回执文案上。夹具的连接改为用完即关——默认 keep-alive 池
  里的空闲连接会在用例结束 dispose 服务器时被对端 reset,冒成 unhandled ECONNRESET 把整轮
  测试判脏。

三、卡片懒渲染(大规则库不再一次渲染上千张卡)
- 每组默认只画一页(20 条)+「加载更多」,每组各记已展开条数、组间互不影响;标题与副标题的
  计数仍按全量走,分页只改渲染、不改数据口径。不做完整虚拟化:折叠面板不是长列表,滚动容器/
  测量/回收那套复杂度换不来对应收益。

四、卡片与构建面的口径修正
- 规则卡补渲染 signature:规则库里的命令原文/路径是判"这条规则管的是什么"的那枚数据,投影
  一直带着它,卡面此前只显示正文。
- 所有按钮补 type="button":将来被套进 <form> 时不会默认成为 submit。
- lessonsCount 与规则字段改走同一数值容忍度(数字或**非空**数字字符串);numericOf 不再把
  空白串读成 0——Number("  ") 是 0,收下等于把"字段缺失"虚报成"计数为 0"。
- build-client.mjs 的 external 从硬编码 ["react"] 改为官方 client bundle 的隐式基座
  (PLATFORM_MODULES 九枚)∪ 本包 dsh.client.external(现无声明),并在测试里逐条钉住:
  基座里的模块必须保持外部引用,内联一份副本就是同一个模块两份身份(宿主只认模块表那一条)。

五、复核暂存批次时发现并修掉一处迁移漏筛
- migrateFragmentRules 原按 looksLikePathSignature 筛碎片,而 dangerous-bash 的命令原文多数
  既无斜杠也无扩展名(git commit --no-verify),存量碎片一张都不会被收拢——写入侧早已不再
  增长它们,它们也永远命中不了度量,只会一直占着列表。判据改为按类别(lib/rule-signature.ts
  的 isFragmentSignatureOf):路径型类别照旧看路径形态,dangerous-bash 非稳定签名即碎片;
  补迁移用例钉住(两条命令碎片归并成一张稳定卡,各条命令的证据随并保留)。

六、注释口径
- 注释里反复出现的「0.1.7」统一改成现装版本 0.2.1-alpha.2:它是 harness 的旧版本号,留着容易
  被读成本包的版本线;「0.1.7 起」一类措辞改为「… 里」,不替历史做版本起点主张。

门禁:371 项测试全绿、四维覆盖率 100%、typecheck / oxlint / oxfmt 全清;host.js、client.js 与
types/ 三份产物随源重建(产物不进版本库,由 prepack 与 check 重建)。
Assets 2
Loading