Repository navigation
Releases
Releases · Syngnat/dsh-codex-tools
v2.0.43 — 修复 Windows 自更新后插件消失
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 兜底显示发送会话
Fixed
- 实际客户端上 keyed slot 没有抢过核心 turn-trigger 渲染,标题仍是「收到任务消息」。
- 增加插件客户端 DOM 兜底:只扫描
[data-turn-trigger]的 agent-message 卡片,在正文渲染后把标题改为「收到会话 的消息」;其他触发类型不动。 - 不修改 DSH 源码;129 项离线测试通过。
v2.0.41 — 发送记录立即落库
Fixed
- 发送记录改为在发送成功时立即 append:turn/end 之后追加 user/message 会被会话 surface 校验拒绝,之前因此始终没有气泡。
- send 结果新增
Sent record: appended | skipped: no sender session | rejected: …,可直接判断是没会话、被拒还是 UI 未渲染。 - 发送方会话解析增加
exec.session回退。 - 129 项离线测试通过。
v2.0.40 — 发送记录可靠落库
Fixed
- 发送方「已发送记录」改走插件
session/event总线;旧实现监听exec.agent.ctx在真实 Host 未触发,导致 send 返回 delivered 但 b 会话没有气泡。 - 发送方会话从
exec.agent.session或sessions服务解析,不再依赖窄的执行上下文。 - 增加 5 秒兜底 append:即使没有观察到
turn/end,发送成功后也会在发送方会话落一条【跨会话发送记录】用户消息气泡。 - 目标端投递不变;129 项离线测试通过。
v2.0.39 — 收到消息卡片显示发送会话
Added
- 插件客户端注册高优先级
conversation.chat.node/turn-triggerkeyed slot,不改 DSH 源码。 agent-message触发卡标题改为收到会话 <sender> 的消息,发送方取消息来源里的source.senderSessionId;没有标题时回退为另一个会话。- 其他触发类型保留中文标题:目标消息、子代理已完成、Webhook、定时任务、任务消息。
- 129 项离线测试通过。
v2.0.38 — 去重来源前缀并改中文
Fixed
- 无会话标题时,relay 正文不再重复成
Agent <id> (<id>) sent a message:,改为Agent <id> 发来一条消息:;有标题时保留Agent <标题> (<id>) 发来一条消息:。 sent a message改为中文「发来一条消息」,目标端气泡不再出现英文。- 新增无标题去重与中文前缀用例;125 项离线测试通过。
v2.0.37 — 发送方会话显示已发送气泡
Added
- 发送方可见的已发送记录:
send成功后,等发送回合结束,在发送方会话追加一条【跨会话发送记录】已发送给会话 <id>:<原文>的用户消息气泡。 - 记录在
turn/end之后落库,不进入执行发送的当前回合模型上下文;刷新后仍在,下一回合作为带标记的记录可见。 - 目标端仍收到带
agent-message/relay 来源的消息;发送方不再只有工具卡片。 - 124 项离线测试通过。
v2.0.36 — 更新检查不再被旧重定向卡住
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 — 跨工作区读取会话消息
Added
session_message新增read:读取目标会话最近的用户/助手文本消息,返回{sessionId,title?,messages:[{seq,role,source?,text}]},支持limit1–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 — 跨会话默认只列顶层会话
Fixed
list_sessions默认只列顶层会话,过滤掉裸 UUID 的子代理。子代理和顶层会话混在同一列表里,是第一次send选错 session id 的直接原因;需要子代理时显式传include_subagents: true,行上带origin/parentSessionId。- 保留 v2.0.33 的 ID 兼容:
send同时接受session-<uuid>和裸 UUID,先按规范形式解析,只有 not-found 才回退另一种;所有权或 busy 错误不会换目标重试。 - 119 项离线测试通过。