diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index f3255d9..3264d4c 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -59,7 +59,10 @@ pub fn run() { } // 顶层双写复位(批2 桥接:IPC ai_is_generating 等仍读顶层,须同步)。 session.generating = false; - session.pending_approvals.clear(); + // BUG-260619-06 修复: clear 致冷启动 restore 重建审批丢失(restore 填充后 clear 无条件清空, + // 重启后待审批工具全丢)。改 retain 仅清非 recovered(本次会话/HMR 死 pending), + // 保留 restore 重建(recovered=true,audit.rs:331),对齐 switchConversation retain 保护意图。 + session.pending_approvals.retain(|_, a| !a.recovered); // active_conversation_id 兜底入 dirty_convs:批2 双写期顶层 generating=true 但 // per_conv 为空(理论上不会发生,防御性保证 active conv 至少收一个 AiCompleted // 复位前端 streaming/generatingConvId)。