Repository navigation
Releases
Releases · whybebabo/dsh-file-review-tab
v0.7.1 — @whybebabo/dsh-file-review-tab
发布 @whybebabo/dsh-file-review-tab@0.7.1 — 撤销/重做与跨通道排序的正确性修复。
安装
dsh plugin --profile web add @whybebabo/dsh-file-review-tab刚发布的版本首次安装可能被 pnpm 的
minimumReleaseAge(默认 24 小时)挡下,用精确版本可绕过:@whybebabo/dsh-file-review-tab@0.7.1。
修复内容
对审查 Tab 做了一轮复查,发现「同一轮内被多次改动的文件无法可靠回滚」,以及改动列表里出现若干虚假条目。每项修复都配了在修复前代码上会失败的回归套件。
多次结算的撤销/重做(静默损坏 + 重做失败)
diffsFromBeforeAfter用一个共享下标裁剪 hunk 的尾部上下文,两侧长度不等的 hunk 会违反oldLines - newLines == net delta—— 撤销写入了损坏内容却报告成功。现在每一侧按自己的长度裁剪。- 不同结算的 hunk 锚定在不同文本上。它们现在带
mutation坐标戳,transformFile应用同一结算的 hunk 时从后往前,遍历结算时撤销反向、重做正向。此前重做会在完全可逆的文件上误报冲突。
跨通道排序(run_code 与模型直编)
- 两个通道(对话快照、Host 录制器)是异步合并的,数组顺序只是合并产物。结算现在带事件
seq并按它交错;transformFile对乱序到达的载荷做防御性重排。此前「run_code插入 + 同文件结尾的模型直编」会同时破坏撤销与重做。 - 删除是事件而非长期标记:
deletedSeq让后续的跨通道写入能证明它重建了该路径,因此被重建的文件不再被误标「已删除」(那会隐藏它的 diff 与撤销/重做控件)。顺序无法证明时保留删除,而不是猜测。
录制突变重新拉取
rootsKey只看 call-id,长时间运行的run_code永不重取,只显示第一批。roots 现在报告有多少嵌套派发已结算,该计数驱动重取。节流从一个固定锚点(上次拉取,或武装时刻)起算,快速结算的 root 既不会推迟也不会饿死自己的拉取。
删除路径提取
- 分词丢弃了引号边界,
accept()按逗号切分每个 token,把rm 'a,b.txt'报成两个路径。现在只有未加引号的逗号才是 PowerShell 列表分隔符。 del /q file.txt与shred -n 3 file.txt不再把开关或选项值泄漏为删除路径;按命令的开关集合让rd /tmp仍是路径,并处理--、内联-Path:x与紧贴的/a:h。
归档深链
- 深链解析只搜索当前挂载的行,折叠归档中的目标永远找不到,待处理的滚动会被清除且不重试。
planDeepLink现在对所有可渲染轮次解析,并报告需要展开的归档页数。
验证
pnpm typecheck干净;pnpm build逐字节可重现pnpm test14/14 套件通过(9 → 14,新增undo-redo、interleaved-mutations、mutation-order、deep-link、deleted-paths)- 新增回归套件在修复前代码上确实失败(
deleted-paths实测 10 条 FAIL),证明测试非空转 test现在通过pretest先重建,src/改动不会再对着过期lib/通过- 发布 tarball SHA-256 与本地构建一致:
6827412F…C6D - 版本号未编入产物:
lib/client.js与 0.7.0 的哈希完全相同
v0.7.0 — @whybebabo/dsh-file-review-tab
发布 @whybebabo/dsh-file-review-tab@0.7.0 — 本 fork 的 DSH 0.2.0 版本。
安装
dsh plugin --profile web add @whybebabo/dsh-file-review-tab为什么是 scoped 包名
npm 上的裸名 dsh-file-review-tab 由上游作者持有(维护者 phynez_1103,最高 0.5.0,面向 DSH 0.1.5),本仓库无权发布到该名下,因此改以 @whybebabo/dsh-file-review-tab 发布。装裸名拿到的是上游 0.5.0,不是本版本。
相对上游 main(1de22fc)的差异
| 项 | 上游 0.5.0 | 本版本 0.7.0 |
|---|---|---|
| 目标 DSH | 0.1.5 | 0.2.0-rc.2 |
| Typert 编解码 | 旧 schema: 形状 |
严格 TypertCodec.create() |
| turnTail 槽位 | 链式(首声明者胜) | 加法列表(id + order) |
| 尾部卡片 | 自定义 | 原生 ui-deliverables 同款 + 撤销/审查按钮 |
| 侧边栏表头 | 自定义 | 原生 38px 对照条 + 分栏/换行/刷新 |
| 自动归档 | 无 | 最近 5 轮内联,更早分页(每页 10 轮) |
| 删除文件可见 | 无 | 解析 rm 族命令 |
| Code Mode (PTC) | 无 | run_code 子调用入所属轮次 |
验证
typert.host.js的package、bundle 注册 id、cordis 行name三者均为@whybebabo/dsh-file-review-tabpnpm test9 个套件全过;pnpm build逐字节可重现- 发布 tarball SHA-256 与本地构建一致:
911C545D…3990D5F