Skip to content

Releases: domitor-syh/dsh-rollback

v0.5.1

Choose a tag to compare

@domitor-syh domitor-syh released this 19 Oct 05:25
  • 修复切换工作目录后的相对路径捕获:文件工具的前镜像与宿主使用同一会话有效目录,派发前重新获取目录与目标;已记录的绝对路径不随后续目录切换变化。父子目录同名文件不会混用恢复依据;仅切换工作目录不新增文件修改归属。

  • 目标不一致改为逐操作持久恢复缺口:工具派发结果或最终结果回报的规范路径与捕获目标不同时,排除该操作的不可信恢复收据,不拼接不同文件的前后态,也不覆盖原工具结果。独立持久记录调用 id、原始轮次、工具及预期/回报的规范路径,不保存文件正文;后处理失败前已发现的不一致也保留为缺口。

  • 只阻断跨越存活缺口轮次的回退:后续正常轮次继续记录检查点,满足其余恢复条件时可回退;已知缺口在预览与执行时、文件或对话表层发生变更前阻止 fromTurn <= 缺口原始轮次 的整个回退后缀,并报告缺口及之后可用的起始轮次。轮次列表只提供缺口之后的起点。重启后限制不变;同轮后续成功、no-op、净变化为零及检查点裁剪均不清除缺口。不提供跳过缺口的部分回退或仅撤回对话模式。恢复记录写入、读取等原有失败仍保守拒绝,可能阻止更大范围的回退,不承诺后续每次回退必然成功。

  • 恢复事务重查晚到缺口:旧预览不能绕过新增缺口;恢复事务在文件操作前与对话标记提交前重查。如果文件恢复途中才发现缺口,停止继续恢复、保留事务与对话,允许 /rollback abort 补偿已执行的文件操作,不将中途失败误报为完全没有修改文件。

  • 新版宿主回归:覆盖目录切换后的创建、编辑、重启恢复、绝对路径、旧宿主目录回退分支、目标不一致,以及真实宿主的版本放行和旧入口加载;上下文分类统计验证更新为新版相邻 prune 定价协议。

  • 当前适配目标更新为 DSH 0.2.1-rc.2:开发用 DSH API 包精确锁定到 0.2.1-rc.2,Cordis 更新为 4.0.5;新增 dsh-working-directory 的开发依赖与纯类型增强,支持宿主可选读取会话有效工作目录。旧宿主保留目录回退路径,原兼容范围未收窄;旧版本在本次适配中未重新验证。

  • 兼容闸门使用当前字段:将无效的嵌套 dsh.engines.dsh 移至顶层 engines.dsh,与保留的宿主 peer 范围保持一致;版本放行不等于功能验证。

  • 移除退役 invariant 服务依赖:删除 dsh-invariants 的 peer、开发依赖和类型导入;公开 ./invariant 入口保留为已弃用的空操作,无必需服务注入,避免旧配置因入口消失而加载失败;主插件不依赖 companion。

  • 文档与检查入口同步:中英文 README 说明当前目标、旧版验证边界及遗留入口;宿主类型检查说明更新到当前 API 版本,继续保留全部诊断。36 个测试文件、728 项测试以及类型检查、双语文档检查与构建全部通过;尚未进行 profile 安装、宿主重启或 GUI 端到端验收。

npm:@domitor-syh/dsh-rollback@0.5.1

完整变更:v0.5.0...v0.5.1

v0.5.0

Choose a tag to compare

@domitor-syh domitor-syh released this 09 Oct 07:43

0.5.0

0.4.0 之后累积的全部工作:架构与存储加固、回退执行边界、Web 客户端与文档。

界面决策:消息照常隐藏,刻度条不处理

  • 撤销「隐藏右侧轮次刻度条」:刻度是等距绝对定位的,隐藏只会留下一格空槽;要合上必须从外部重排组件布局,而组件每次重渲染都会写回自己的位置 —— 结论是刻度条原样不动。
  • 被回退的对话消息照常隐藏,改由宿主给出「回退边界」这一个数字驱动(/rollback state),不再依赖回退标记是否到达客户端切片。

正确性修复

  • 重复回退同一轮:目标已被回退过时明确拒绝且不写入任何事件(此前会写入零宽区间、替换掉上一条标记,连带销毁其隐藏窗口)。
  • 标记的 sourceEventSeqs 写法改为非升序:存储层会压缩严格升序的连续序号,而运行时字段只接受扁平整数 —— 压缩落盘的会话再也打不开。

其它

  • 版本 0.5.0;package.json 顺带修掉一个 UTF-8 BOM。
  • 门:683/683 测试(35 文件)· typecheck 无可静默项 · 中英 README 一致性校验通过。

npm: @domitor-syh/dsh-rollback@0.5.0 · shasum 9cdb097b1ceb4816ac82c9265caa2f74ffb48fc6

v0.4.0

Choose a tag to compare

@domitor-syh domitor-syh released this 02 Oct 05:42

0.4.0 - 对齐官方桌面端 UI,并修掉三处实测暴露的正确性问题

正确性修复

  • 「新建文件」曾被记成 update:0.2.0 的 write 不发 create 标记,而 before:"" 无法区分「新建」与「写入一个原本为空的文件」。现在由插件在工具运行前用 ctx.fs.stat 自己判定,回退到建之前时该文件被删除,而不是被恢复成空文件。
  • 欢迎页之上的过程行不再残留:syncHides 原先只遍历聊天切片里的节点,表层替换留下的孤儿 DOM 座位从未被考虑,所以 contentLeft: 0 时屏幕上仍有一行。新增 Pass 4 直接移除——幽灵行不再能活过下一条消息。
  • 边界扫描的归属修正:扫描发现的变化一律记在「发现它的那次边界」,不再记到确认过该文件的下一轮。此前会把删除记到前一轮,于是回退真正删除它的那一轮时,窗口把该记录排除,「找回」条目从预览里静默消失。

界面与交互(对齐官方)

  • 回退弹窗的文件列表改为只读回执(要打开文件走右侧文件树)。
  • 按钮圆角改为 --dsw-radius-sm(8px,与官方动作条按钮同值),图标 15→17px、描边 1.4→1(17px/1px 取自官方 end-of-turn 变体);弹窗圆角改为 --dsw-radius-panel(28px,与官方 Modal / 输入框同值)。

命令

  • /rollback 弹出官方 popupSelect 轮次选择,选中后打开与「回退」按钮完全相同的确认弹窗,因此继承受影响文件预览与图片回填。

适配与验证

  • 适配 DSH 0.2.0-rc.2;engines.dsh = >=0.1.5-rc.2 <0.2.0-0 || >=0.2.0-rc.2 <0.3.0-0。
  • typecheck 零静音 · 206 用例 / 14 文件 · check:readmes · 宿主探针 18/18 · 中运行守卫 3/3 · 兼容闸门 6/6 · 指令菜单 10/10 · 双座位表 OK · 截断 6/6 · 标记准入 6/6。
  • npm:@domitor-syh/dsh-rollback@0.4.0

已知限制:没有任何官方接口能把「文件」送回输入框(图片可以);@路径 参考芯片回退后不回来,回来的只有那段文字。

v0.3.1

Choose a tag to compare

@domitor-syh domitor-syh released this 24 Sep 07:31

0.3.1 - 修正 DSH 兼容性声明

  • 去掉虚构的上界:dsh.engines.dsh 由 >=0.1.5-rc.2 <0.2.0 改为 >=0.1.5-rc.2。npm 上从未发布过任何 0.2.0 构建——已发布的 DSH 构建止于 0.1.7 的预发布版——写死上界等于声明一条并不存在的约束;开区间下界也是生态里的通行写法(如同类插件 dsh-claude-style 的 >=0.1.5-rc.2)。
  • README(中英):引用该字段的句子同步改写,逐版本兼容矩阵仍是权威说明(0.1.5-rc.2 已实测、0.1.1-rc.2 按设计支持、其余未验证)。
  • 本次发布只改声明与文档:代码、行为、依赖与 bundle 内容均与 0.3.0 一致。

v0.3.0

Choose a tag to compare

@domitor-syh domitor-syh released this 23 Sep 18:45

0.3.0 - ?? DSH 0.1.5-rc.2

  • ???:?? uiConversation ?????(???????);?????? useChat kit ??(?? session.chat ??);???????????? + ????????????????
  • ??:session.events ? snapshotEvents();SessionView ????;????????,??????????????
  • ????:?? 0.1.5 ? startSeq/endSeq ??(??????);???????????????
  • 0.1.5 ????:sidebarRight.openResource?addAttachments/pruneAttachments????????????????
  • ????(??????)? append ????????,hero ??
  • 178 ???

v0.2.2

Choose a tag to compare

@domitor-syh domitor-syh released this 20 Sep 15:13

0.2.2

  • ???????????????(????????????????,??? id ??;?? /rollback ????)
  • ?????????????,??????:???? 500 ????????

v0.2.1

Choose a tag to compare

@domitor-syh domitor-syh released this 20 Sep 11:23

0.2.1

  • ????????????????(????????)
  • ??????????????
  • ??????? 331 ? 136 ??(? 83 ? 34 token)
  • README ??:???? + ???? + ?????? + ??

0.2.0

Choose a tag to compare

@domitor-syh domitor-syh released this 19 Sep 16:12

0.2.0

回退入口

  • 每轮结束后都有回退按钮:正常轮次在回复的动作条上(位置不变),被中断的轮次在轮次页脚——被中断的轮次没有收尾回复,动作条上不可能有按钮
  • 运行中一律禁止回退:任何一轮处于进行中都整体拒绝并给出可操作的提示,等它结束或暂停后再回退
  • 移除模型工具:模型调用回退必然发生在"某一轮进行中",与上一条冲突;回退始终由人发起

文件回退

  • 标签分四类:恢复(文件还在、写回旧内容 · 绿)、找回(已被删除的文件放回来 · 蓝)、删除(撤销该区间新建的文件 · 红)、跳过(无法恢复)
  • 边界重扫 + 最后已知内容:每轮结束时复查文件工具碰过的路径,把被 shell 改写或删除的变化记到该轮 → 「模型用 write 建、之后被 pwsh 删掉」的文件也能回退了
  • 空目录清理:回退删掉它创建的文件后,把已清空且创建时间落在被回退时间段内的祖先目录一并删除(更早创建的目录会保留)
  • 盘根写入兜底:Windows 上 write/edit 无法操作盘符根目录正下方的文件(文件系统层写前会 mkdir 父目录,而盘根 E:\ 会 EPERM);插件包装 ctx.fs.writeText / editText 让这两个工具可用,并保留原文件的字面匹配语义、行尾风格与权限位
  • 跳过并继续:某个文件恢复不了不再中止整次回退——能恢复的照做、对话照样截断、结果里列出跳过项,且保留其记录以便下次回退重试(文件锁释放后即可成功)

正确性修复

  • 超出保留范围的回退目标改为拒绝并告知范围(此前会静默按最旧的保留记录恢复,得到错误状态且无提示)
  • 不再重放已被回退的轮次:日志只追加,回退只是追加一条标记;重启后从日志重建会把早已回退的轮次带回来(表现为文件列表出现旧文件,甚至可能删掉你后来重建的文件)
  • 预读捕获的占位空串不再被当作"文件已清空"(此前可能让回退把文件写空)
  • 空列表不再声称"无文件变更":插件看不见 shell 直接写出的文件,这种话它保证不了

界面

  • 欢迎页:把整段对话回退掉之后正常显示,不会残留在对话中间或被带到别的会话
  • 回退弹窗:逐条列出受影响文件及其动作,点击文件可在编辑器打开
  • 回退按钮的注册带自检与故障上报,"按钮静默消失"不再可能无声发生