Skip to content

Releases

v2.0.43 — 修复 Windows 自更新后插件消失

Choose a tag to compare

@Syngnat Syngnat released this 27 Oct 12:18

v2.0.43 — 修复 Windows 自更新后插件消失

根因:Windows 版 helper 编译到包内 �in/dsh-uia.exe。运行中的 exe 被系统锁住映像,在线更新先移除 bundle、再删目录时删不掉(pnpm 报 ERR_PNPM_EPERM,_tmp_* 重命名失败),插件就此消失;之后每次重装都因同一个被锁文件失败。

  • helper 改为编译到 ~/.dsh/dsh-codex-tools/helper/dsh-uia-<源码哈希>.exe,文件名带 native/dsh-uia.cs 的哈希,重建不会覆盖运行中的旧文件。
  • UpdateService.install() 在任何改动前执行 prepare:结束自己的 helper、等待进程退出(2 秒后 SIGKILL),再探测旧包内 bin/dsh-uia.exe 是否仍被占用。仍被占用则以 helper-in-use 在 removeBundle 之前失败,工作安装保持完好;恢复路径同样先释放。
  • AxClient.dispose() 现在等待 helper 退出,而不是发完 SIGTERM 就返回。

从 2.0.42 及更早升级:旧版本的替换逻辑没有这层保护,首次跨越无法自救。若更新失败且插件消失,先执行 taskkill /IM dsh-uia.exe /F,删除残留的 node_modules/@local/dsh-codex-tools,再重新安装;此后 helper 在包外,不会再复发。

离线套件 131 项通过;Windows 上实测 helper 在数据目录编译成功并能应答 list_windows。

v2.0.42 — DOM 兜底显示发送会话

Choose a tag to compare

@Syngnat Syngnat released this 27 Oct 10:14

Fixed

  • 实际客户端上 keyed slot 没有抢过核心 turn-trigger 渲染,标题仍是「收到任务消息」。
  • 增加插件客户端 DOM 兜底:只扫描 [data-turn-trigger] 的 agent-message 卡片,在正文渲染后把标题改为「收到会话 的消息」;其他触发类型不动。
  • 不修改 DSH 源码;129 项离线测试通过。

v2.0.41 — 发送记录立即落库

Choose a tag to compare

@Syngnat Syngnat released this 27 Oct 10:09

Fixed

  • 发送记录改为在发送成功时立即 append:turn/end 之后追加 user/message 会被会话 surface 校验拒绝,之前因此始终没有气泡。
  • send 结果新增 Sent record: appended | skipped: no sender session | rejected: …,可直接判断是没会话、被拒还是 UI 未渲染。
  • 发送方会话解析增加 exec.session 回退。
  • 129 项离线测试通过。

v2.0.40 — 发送记录可靠落库

Choose a tag to compare

@Syngnat Syngnat released this 27 Oct 10:05

Fixed

  • 发送方「已发送记录」改走插件 session/event 总线;旧实现监听 exec.agent.ctx 在真实 Host 未触发,导致 send 返回 delivered 但 b 会话没有气泡。
  • 发送方会话从 exec.agent.session 或 sessions 服务解析,不再依赖窄的执行上下文。
  • 增加 5 秒兜底 append:即使没有观察到 turn/end,发送成功后也会在发送方会话落一条 【跨会话发送记录】 用户消息气泡。
  • 目标端投递不变;129 项离线测试通过。

v2.0.39 — 收到消息卡片显示发送会话

Choose a tag to compare

@Syngnat Syngnat released this 27 Oct 09:47

Added

  • 插件客户端注册高优先级 conversation.chat.node / turn-trigger keyed slot,不改 DSH 源码。
  • agent-message 触发卡标题改为 收到会话 <sender> 的消息,发送方取消息来源里的 source.senderSessionId;没有标题时回退为 另一个会话。
  • 其他触发类型保留中文标题:目标消息、子代理已完成、Webhook、定时任务、任务消息。
  • 129 项离线测试通过。

v2.0.38 — 去重来源前缀并改中文

Choose a tag to compare

@Syngnat Syngnat released this 27 Oct 09:40

Fixed

  • 无会话标题时,relay 正文不再重复成 Agent <id> (<id>) sent a message:,改为 Agent <id> 发来一条消息:;有标题时保留 Agent <标题> (<id>) 发来一条消息:。
  • sent a message 改为中文「发来一条消息」,目标端气泡不再出现英文。
  • 新增无标题去重与中文前缀用例;125 项离线测试通过。

v2.0.37 — 发送方会话显示已发送气泡

Choose a tag to compare

@Syngnat Syngnat released this 27 Oct 09:37

Added

  • 发送方可见的已发送记录:send 成功后,等发送回合结束,在发送方会话追加一条 【跨会话发送记录】已发送给会话 <id>:<原文> 的用户消息气泡。
  • 记录在 turn/end 之后落库,不进入执行发送的当前回合模型上下文;刷新后仍在,下一回合作为带标记的记录可见。
  • 目标端仍收到带 agent-message/relay 来源的消息;发送方不再只有工具卡片。
  • 124 项离线测试通过。

v2.0.36 — 更新检查不再被旧重定向卡住

Choose a tag to compare

@Syngnat Syngnat released this 27 Oct 09:28

Fixed

  • 显式 check(页面「检查更新」与 codex_tools_update 工具)现在绕过 30 秒冷却,并优先查 GitHub REST API。刚发版后网页重定向可能仍指向旧 tag,导致页面显示 latest 2.0.32 而运行 2.0.33;现在会立即读到真实最新稳定版。
  • 重定向结果不高于当前运行版本时,再用 REST API 复核一次,取真正更新的版本;API 限流或不可用时保留重定向结果,本地领先版本仍显示 ahead。
  • 新增过期重定向 API 回退与强制检查绕过冷却用例;123 项离线测试通过。

v2.0.35 — 跨工作区读取会话消息

Choose a tag to compare

@Syngnat Syngnat released this 27 Oct 09:22

Added

  • session_message 新增 read:读取目标会话最近的用户/助手文本消息,返回 {sessionId,title?,messages:[{seq,role,source?,text}]},支持 limit 1–100(默认 20)。
  • 跨工作区可读:直接走宿主 sessionQuery 的当前 model surface,绕过 session_event_search/session_trace 的 session target is outside the caller workspace 限制;这正是 a 在 GoNavi、b 在 GoNavi-Plugin-Market 时看不到对方回复的根因。
  • read 与 send 共用 session-<uuid>/裸 UUID 归一化;未消费的 inbox 消息不在当前 surface 中。
  • 121 项离线测试通过。

v2.0.34 — 跨会话默认只列顶层会话

Choose a tag to compare

@Syngnat Syngnat released this 27 Oct 09:16

Fixed

  • list_sessions 默认只列顶层会话,过滤掉裸 UUID 的子代理。子代理和顶层会话混在同一列表里,是第一次 send 选错 session id 的直接原因;需要子代理时显式传 include_subagents: true,行上带 origin/parentSessionId。
  • 保留 v2.0.33 的 ID 兼容:send 同时接受 session-<uuid> 和裸 UUID,先按规范形式解析,只有 not-found 才回退另一种;所有权或 busy 错误不会换目标重试。
  • 119 项离线测试通过。