Repository navigation
v1.3.7 — 草稿保全、队列诚实与保存回滚
来自独立 v1.3.6 审查的全部 5 项修复(2 个 P2 + 3 个 P3),主题是**「失败时的诚实」**:打开失败不吞草稿、离线队列不丢用户输入、保存失败不假装成功。
修复
P2-1 被拒绝的打开不再吃掉输入框草稿
- 输入框内容只在「不可回退点」(tab id 在线上确认)之后才清空——以前是先清空再等打开结果,打开被服务器拒绝时草稿就没了。
open-denied帧现在会拒绝挂起的打开 Promise(reject 函数通过state._openReject让 WS 处理器可达,另有 21 秒兜底防丢帧),submitPrompt捕获后在状态行提示「会话打开失败:…——输入框内容已保留」,草稿与待发附件原样保留。
P2-2 离线队列停止丢弃用户回合
- 200 帧上限只丢「刷新类」RPC(
get_state/get_entries/get_available_models/get_available_thinking_levels)——它们的答案在冲刷那一刻就过时了。 - 队列里没有可丢帧时,新发送被显式拒绝,状态行指明是哪种操作(「『prompt』未能入队,连接恢复后请重试」),不再静默丢弃 open/prompt/close/set_model/adopt。
P3-3 设默认模型检查后端应答
- 两处 set-default 都先检查
/api/config的 ack 再更新 cfg/chip——以前服务器 500 时乐观 UI 照样更新。
P3-4 Provider 保存的部分提交回滚
- 保存改在
modelsDoc的克隆上进行(POST 前的就地修改不再在保存被拒后残留在内存里); - models→routing→config 序列中途失败时,通过新增的
reloadConfigState()从磁盘重拉三份文档,内存与磁盘对齐。
P3-5 collectProc 上限变严格
- 每个 stdout/stderr chunk 在接收时就按剩余上限切片,close 路径再截断一次——以前单个超大 chunk(5000 字符 vs 200 上限)会整块漏过。
契约测试
scripts/verify-audit-fixes.mjs新增 5 条 wave-26 断言(composer 清空时序、open-denied 拒绝接线、队列策略、ack 检查 + 克隆/重载、chunk 级上限)。
校验
- 提交
ae72326;CI 8/8(run 39041566547);全部 7 个版本文件 = 1.3.7。