Skip to content

v1.3.3 — 陈旧进程身份、cron 失闭与导入隔离修复

Choose a tag to compare

@cullysu cullysu released this 12 Oct 01:24
· 4 commits to main since this release

v1.3.3 — 陈旧进程身份、cron 失闭与导入隔离修复

针对 v1.3.2 独立审计(42 项,commit 760bd41)中核实为真的缺陷逐项修复;不实主张以源码行为反驳。

进程与会话身份

  • 陈旧 pi 进程不能再替被替换的 tab 说话:stdout/stderr 泵按进程身份(而非仅 tabId)校验,旧 spawn 的迟到事件不会再落进新 owner 的时间线。
  • 确认成功的模型切换会重绑 tab 的路由身份:此后 401 冷却的是 tab 实际使用的 provider/key,而不是它启动时的。
  • Failover 武装快照移到 await 之前:等待故障上报期间用户切走 tab,重发瞄准的是被武装的那个 tab,不再"认领当前碰巧活跃的会话"。
  • 点击项目标题即分离 live tab:切项目不再让输入框继续绑着上一个项目的 tab/会话。
  • 重连恢复忙碌态:get_state 回 isStreaming:false 会清掉卡住的 streaming 指示;fork 报 cancelled 保持视图不动,完成的 fork 重读会话身份。

Cron 可靠性

  • 失效项目 fail-closed:任务报"project missing",不再静默降级到 HOME 让无人值守 agent 在错误目录里读写。
  • spawn 前失败释放并发预算(两次 throw 曾让 cron 整个进程生命周期停摆);daily 任务优先调度,热 interval 任务无法永远占满两个槽把它饿出窗口;无人值守任务遵循交互侧密钥轮换(已冷却的 key 不再武装无人值守运行)。

数据与安全

  • 改 baseUrl 不再带走旧端点的密钥:URL 变更且密钥为掩码哨兵时清除存储 key,而不是把它发给新地址。
  • 备份脱敏覆盖凭据头(Authorization/x-api-key/token 类),恢复时脱敏 models.json 与本机已存密钥合并而不是丢弃;$KEY/${KEY} 两种环境变量引用在 failover 中同等解析。
  • JSON null WS 帧在属性访问前被拒;collectProc 超时强杀后 5 秒自解(孤儿孙进程握住管道也不再挂死调用方)。
  • MCP 桥:陈旧子进程的退出不再拆掉较新的客户端;stdin EPIPE 吞掉;缓冲区末行先于 pending 拒绝刷新;lazy 工具重名数字后缀去重。
  • 导入历史保持惰性:导入视图下 regenerate/edit 按钮被拦截并给出状态行;导入的工具结果按 callId ?? id 配对而不是永远贴最后一张卡。
  • Usage:Gemini 导入读 m.parts;会话树父链环防护;合并层保留 cacheWrite/costEst,明细与总计不再互相矛盾。CHANGELOG 1.3.0/1.3.1 粘连标题修复。

验证:lint 0、测试 40-40、路由扫描 47 PASS、探针(ws / failover / ui / chat / contract / audit-fixes 5 项)全 PASS;CI 8 job 全绿(打包 job 由 lint+test+e2e 门入)。

代码签名仍等证书账号(唯一用户侧门控)。