Skip to content

Releases

0.2.2-rc.1-v1.3.6

Choose a tag to compare

Adapt the plugin to the DSH 0.2.2-rc.1 harness line.

  • No behavior changes: `src/` and `client.js` are identical to v1.3.5.
  • package.json now declares `engines.dsh: >=0.2.2-rc.1` (the 0.2.2 plugin manager checks it).
  • Verified: 314 offline tests pass; plugin loads on 0.2.2-rc.1 with all three component probes 200;
    hot restart works on 0.2.2; the turn-deletion transaction passes the 0.2.2 load checker;
    session deletion leaves no residue on disk; delete records survive a restart.
  • See docs/VERIFY-0.2.2-rc.1-v1.3.6.md for details and remaining unverified items.

0.2.1-rc.5-v1.3.5

Choose a tag to compare

0.2.1-rc.5-v1.3.5

改动

  • 只改文档与版本号,插件代码与 v1.3.4 完全相同。
  • AGENTS.md 第 6 节的版本号示例更新到当前版本线。

验证

  • 代码零变更,沿用 v1.3.4 的验证结论:离线 314 项全过,独立临时实例上的破坏性验证见 docs/VERIFY-0.2.1-rc.5-v1.3.4.md。
  • 本版没有重跑测试与真机验证(纯文档)。

0.2.1-rc.5-v1.3.4

Choose a tag to compare

0.2.1-rc.5-v1.3.4

改动

  • 版本线切到 harness 0.2.1-rc.5;插件代码与 v1.3.3 完全相同,只改版本号。
  • 对 rc.5 做了公开 API 面侦察:插件依赖的 host 服务包代码逐字节相同,注册的五个槽位不变,客户端加载器只有内嵌 commit 字符串变化。结论是不需要改代码。

验证

  • 在一个独立 DSH_HOME 的临时实例上跑完破坏性验证:删中间一轮、删最后一轮、删整个活会话、重复删的幂等、重启后删除记录持久、界面就地刷新、关闭实例,全部通过(证据见 docs/VERIFY-0.2.1-rc.5-v1.3.4.md)。
  • DELETE_FAILED 的真实渲染、幽灵会话、子代理会话、裸 UUID 拼写与行开关仍未验证。

升级提示

  • profile 的安装 ref 要改成 #release/0.2.1-rc.5-v1.3.4 才会用上这一版。

0.2.1-rc.2-v1.3.3

Choose a tag to compare

0.2.1-rc.2-v1.3.3

改动

  • 只改文档与版本号,插件代码与 v1.3.2 完全相同,发布包内容不变。
  • 编码约定新增两条红线:删除一律归档到仓库根目录的 trash/(用 fs.renameSync,不在 shell 里拼递归删除命令);删除 trash/ 内内容仅当用户明确要求时按安全删除执行。
  • .gitignore 忽略 trash/。

验证

  • 离线测试 314 项全过。
  • 本轮没有重新装包:发布包内容与 v1.3.2 相同、代码零变更;同一份代码的 v1.3.2 包运行在 0.2.1-rc.5 实例上,三条组件探针 200(证据见 docs/VERIFY-0.2.1-rc.2-v1.3.3.md)。
  • 真实删除会话 / 轮次、关闭实例仍未验证。

0.2.1-rc.2-v1.3.2

Choose a tag to compare

0.2.1-rc.2-v1.3.2

改动

  • 版本线切到 0.2.1-rc.2;代码与 v1.3.1 相同。
  • 组件行依赖主行提供的 agentControlCore 服务,插件列表四行都有本地化说明文字。

验证

  • 离线测试 314 项全过。
  • 在 0.2.1-rc.2 实例上完成一次热重启:插件加载、三条探针、会话列表与续作均正常(证据见 docs/VERIFY-0.2.1-rc.2-v1.3.2.md)。
  • 真实删除会话/轮次与关闭实例尚未在该版本上验证。

0.2.1-alpha.2-v1.3.1

Choose a tag to compare

0.2.1-alpha.2-v1.3.1

改动

  • 组件行改为依赖主行提供的 agentControlCore 服务:关掉主行时三个组件行停在 pending,不再各自注册路由。
  • 插件列表四行都有本地化说明文字(locale/,经 exports 与 files 暴露)。
  • AGENTS.md 拆成入口 + 三份专题文档;补记主行关闭时宿主那条 warning 的含义。

验证

  • 离线测试 314 项全过。
  • 本版未附新的真机验证记录;真机证据见上一版的组件开关实测与 docs/PITFALLS.md §3。

0.2.1-alpha.2-v1.3.0

Choose a tag to compare

新功能(次版本):插件拆成四行,插件列表里可以逐个组件单独开关——关掉一个组件 = 它在本进程里根本不存在,路由与界面入口一起消失。

改了什么

  • 四行结构:主行 dsh-agent-control(core:客户端 bundle 交付、启动清理、按行构建)+ 三个组件行 /session(会话列表与删除)、/turn(轮次删除)、/restart(热重启与关闭实例)。主行的 id / name 没有改,旧配置照旧有效。
  • 开关是真的:插件列表的开关写行级 disabled,而被禁用的行 loader 不会调用它的 apply(读宿主实现确认)。所以主入口只在「某个组件没有自己那一行」时才代装它——既让开关生效,又保证「只有一行主行」的老配置行为与从前完全一致。重复注册由进程内的认领表挡住。
  • 客户端跟随:挂载时对三个组件各做一次只读探针(GET /api/agent-control/session/status、.../turn/status,热重启复用 /restart/status),只给探到的组件注册槽位。判据方向是少显示:宁可少一个按钮,也不留一个点了报错的按钮。排障抓手 window.__dshAgentControl.features()。
  • 配置回归修复:approval 历史上写在主行,拆行后热重启行会读不到 → 改为按优先级取一份(自己那一行 > 回退 > 主行);agent-control-restart 行也带上 approval。不这么做的话,主行写 approval: auto 的用户会在升级后静默变回每次都要审批。

实测(详见 docs/VERIFY-0.2.1-alpha.2-v1.3.0.md)

  • 离线:七个测试文件 307 项全过、0 失败(上一版 291)。
  • 真机(一次性实例,开关全部界面点击):关掉「会话」组件后 /session/status 与 /sessions 不再是 200,而 /turn/status、/restart/status 仍 200;界面 features() 报 {session:false,turn:true,restart:true},会话菜单里的删除项消失、垃圾桶仍在;开回来一切复原。
  • 兼容:只 insert 主行的老 profile 九条路由全部注册,approvalMode 与主行配置一致。
  • 回归:组件全开时,界面删一轮、界面删会话、热重启(两条入口)都正常,重启后九条路由仍在。

仍然未验证

关组件那一步的重启是冷启动(沙箱里 detached 辅助进程会被拉起它的作业一起收走,热重启在那种形态下起不来);设置页按钮那次重启后没有全刷一遍路由;删除取证没有做「用会话 id 全盘 grep」;关闭实例没有真跑;更细的粒度(删除按钮各自一个开关)做不到——槽位在同一份客户端 bundle 里。

0.2.1-alpha.2-v1.2.0

Choose a tag to compare

新功能(次版本):「本次启动后打开过」的会话也能删了;删的正是正在看的那个会话时,界面会切到同一工作区里的另一个会话。

改了什么

  • 活会话可以删:不再拒绝活会话(SESSION_LIVE 闸门退场)。先停 agent,再删磁盘目录、工作区记账与投影缓存;响应里如实标注 wasLive / liveDescendants。依据是实测:活会话的日志写句柄带共享删除位,删目录能成功,也不会被写回来。
  • 投影缓存竞态修复:活会话的收尾写入会在删除之后把缓存写回一份,现在清缓存会复检(最多 3 次,哪一轮没删到就收手),没打开过的会话不加延迟。
  • 删完列表就地刷新、不掉进「未分组」:删除前用宿主公开的归档能力临时遮盖这一行,删除后发宿主的公开事件 api-session/removed;启动时 pruneOrphanArchives() 收掉孤儿标记。
  • 删当前会话时的「让开」:切走方案在删除之前算好,删完照做,不再落到空白页或新开的未分组会话。
  • 删除路由的可信校验:会话与轮次删除路由都要求同源可信请求与 JSON content-type;宿主的 401 / 403 照抄。
  • 幽灵会话清理:只剩工作区记账、磁盘上已没有目录的会话,现在能把记账清掉。
  • 热重启的几处修复:取消重启时清掉 spec.json 并停掉辅助进程;耗时只采用同一次重启的测量;界面不再因为缺少重启前的采样而干等到超时。
  • 其它界面与测试修复见提交历史。

实测(详见 docs/VERIFY-0.2.1-alpha.2-v1.2.0.md)

  • 离线测试:六个文件 291 项全过、0 失败。
  • 在一次性备用实例上用真实模型对话走了完整闭环:界面点击删中间一轮与最后一轮,模型确认看不到被删内容;重启后重新打开会话无「日志损坏」;用真实 v4 加载校验器复核(原日志 OK,旧写法对照组仍 FAIL);界面菜单删整个会话,目录 / 缓存两种拼写 / 记账零残留;派生过子代理的会话,父子一起删净;重复删返回 404 TARGET_NOT_FOUND。
  • 发布前隐私检查已过。

仍然未验证

  • 受限沙箱里没能跑真正的 dsh plugin add(备用实例用手工联接代替);备用实例的工作区是手工预写的;消息是用与界面同形的 RPC 发的,不是输入框。
  • 内核 /compact 之后再删轮次、TURN_NOT_CLOSED、AGENT_BUSY、DELETE_FAILED 的真实渲染、带工具调用记录的轮次、其它模型 provider。

提醒

删除是硬删除、不可撤销;轮次删除只影响模型可见上下文,内容仍在日志与附件里,不是安全删除。

0.2.1-alpha.2-v1.1.2

Choose a tag to compare

本版没有行为改动:相对 0.2.1-alpha.1-v1.1.1,唯一的改动是把版本号前缀切到 0.2.1-alpha.2,
并把这一轮在 0.2.1-alpha.2 上的兼容性复验写成 docs/VERIFY-0.2.1-alpha.2-v1.1.2.md。

为什么值得单独发一版

按仓库约定(AGENTS.md 第 11 节):换 harness 版本 = 新开一条版本线,插件版本继续累加,
package.json 的 version 是唯一真源。已发布的 0.2.1-alpha.1-v1.1.1 在 0.2.1-alpha.2 上确实能跑(见下面实测),
但它的版本前缀与实际运行环境对不上;这一版让「声明」与「实测」一致。

这一轮在 0.2.1-alpha.2 上实测到什么

  • 装载与路由:会话列表与热重启状态两条 GET 都返回 200;canRestart / canShutdown 均为 true。
  • 错误语义不变:活会话 409 SESSION_LIVE、目标不存在 404、参数非法 400(含路径穿越)、错误方法 405;
    未注册路由仍落到宿主鉴权,没有被插件误接管。
  • 删除事务的格式仍然合法:用 0.2.1-alpha.2 自带的 v4 加载校验器复核——原日志 OK、对照组(v1.0.0 旧墓碑)照旧 FAIL、
    逐轮模拟删除 OK。
  • 真机删掉一个会话:磁盘目录、投影缓存(裸 UUID 拼写)、工作区记账引用零残留;
    记账里本来就没有它时,插件如实回报 warning 而不是假装成功。
  • 宿主 API 无破坏性漂移:runMaintenance(签名与上一版逐字一致)等八个依赖面逐一核对,全部仍在。
  • 客户端耦合静态核对:四个槽位、assistant-actions 仍只传 messageId、三个 DOM 属性与四个原生原语都在。
  • 离线测试:六个文件 225 项全过、0 失败。

仍然未验证(详见 VERIFY 文档第 4 节)

真机删轮次的成功路径(需要「活动且空闲」的会话)、界面点击、热重启与关闭实例的真跑——都还没做;
上一版 VERIFY 里已经收口的项目本轮没有重复跑。

0.2.1-alpha.1-v1.1.1

Choose a tag to compare

修订版(Z+1):两处修复,都来自真机反馈;另有一批文档修正。

修复

  • 关闭实例后界面「没反应」 — fix(ui):点「关闭 DSH」之后,shutdown-requested / closing / closed 三个阶段曾落回普通确认框的样子(勾选框、取消、可点的「关闭 DSH」都还在),而进程随即退出,页面看起来就是「点了没反应,然后死了」。现在这三个阶段改用信息型模态(原生 Modal、portal 到 body,稳定盖在设置面板之上),一个可点控件都没有;closed 只留一颗「知道了」,收掉不丢信息。
  • 退出延迟 300 ms → 1000 ms — fix(restart):原来的 300 ms 只够把 202 响应刷出去,不够浏览器把「正在关闭」画给人看清。这一秒买的是人眼看得见的反馈,代价是实例晚 0.7 秒停。

文档

  • 修正 README 里几处会直接误导用户的地方:安装命令写了一个从未存在的版本号、排障用的回环地址写成 117.0.0.1、接口状态码写成 101(实际是 202)、离线测试项数过时。
  • 离线测试项数同步为 225(AGENTS.md 里三处)。
  • 发布流程新增「发布前隐私检查」这一步(第 10 节第三步)。
  • 改掉若干对第三方桌面启动器的表述:只保留可观察行为与结论,不再交代观察手段。

验证

真机复验(一次性实例,跑的就是这一版代码):确认弹窗变成信息型、设置页那一行同时给出同一句话、约 1 秒后进程干净退出(启动它的作业收到退出码 0)。完整记录与仍未验证项见仓库内 docs/VERIFY-0.2.1-alpha.1-v1.1.1.md。

离线测试:六个文件 225 项全过、0 失败。