From 305add4f53b5b9668f9e3ed908ae455e6b865af0 Mon Sep 17 00:00:00 2001 From: EMRG Evolution Date: Mon, 10 Aug 2026 22:28:37 +0800 Subject: [PATCH] emrg: evolution_prompt quick-ref for #656 (GUI multi-session deviations B1-B3) --- emrg/server/evolution_prompt.md | 1 + 1 file changed, 1 insertion(+) diff --git a/emrg/server/evolution_prompt.md b/emrg/server/evolution_prompt.md index 99cc78f..9cda9d1 100644 --- a/emrg/server/evolution_prompt.md +++ b/emrg/server/evolution_prompt.md @@ -403,6 +403,7 @@ When reading rants, follow these rules: > - Windows release zip asset (#649 宿主 rant 2026-08-10T20:10:41:Windows 发布资产除 exe 安装包外再提供 zip 压缩版——`build-release.yml` Windows job 在 Make installer 后新增 "Zip installer (Windows only)" 步骤(find `EMRG-*-windows-x64.exe` → PowerShell `Compress-Archive -Force` → bash `test -s` 校验非空)+ upload-artifact glob 加 `dist/artifacts/*.zip`(release job `files: artifacts/*` 自动带上);actionlint 1.7.12 全工作流验证通过;**tag-push 构建教训**:tag 触发的工作流读 tag ref 上的 workflow 文件——v0.2.21 tag 早于 #649 合并 → 该版本 release 无 zip(6 资产符合原始 release rant 验收),zip 自 v0.2.22 起随 CI 产出;验证=CI Windows job 全绿 + actionlint clean;workflow-only 改动,测试计数不变) ✅ > - GUI packaged local-module whitelist guard (#651 宿主 rant 2026-08-10T20:37:08:v0.2.21 Windows 打包版启动崩溃 `Cannot find module './conn-manager'`——main.js:15/16 require 的 **conn-manager.js 和 gui-state.js 都不在 electron-builder `files` 白名单**(多会话 P2/P4 新增模块忘更新,与 #612 vendor 同根因类);修复=①package.json build.files 加 `conn-manager.js` + `gui-state.js`;②test/build-config.test.js 新增**通用守卫**:扫描 main.js/preload.js 每个本地 `require("./x")` 断言被 files 白名单覆盖(支持 `x.js` 与 `dir/**` 形态;正反两态验证——删白名单项即红并命名缺失模块)——**#612/#651 整个"新增模块忘加白名单"类闭合**;GUI 178→179(build-config 3→4)三文档同步;验证=GUI 179/179 ✓ pytest 681 ✓ doc guard 3/3 ✓;打包版自 v0.2.22 起修复) ✅ > - Mid-turn queue injection P1 (#655 宿主 rant 2026-08-10T21:55:37:tool loop 进行中发新消息 → **daemon 排队注入**(对齐 codex steer_input)——busy 时新消息入 per-session FIFO 队列(`_session_pending`),当前 round(LLM 请求+全部工具执行)结束后、下一轮 LLM 请求前注入;**不打断工具执行、不丢消息**;busy 分支不再回 "session busy" error → `task_queued`(含 position);注入走 `_inject_pending_messages`(原子 pop 防并发 append 丢失 + `append_message` 持久化保 auto-compact + `steer_committed` 广播);round 预算=注入轮不消耗(stop/Case3/循环用尽均先重查 pending 再 return);wrapper finally:正常结束 → `queued_requeue`(request_ids,客户端自动重发)、cancel/异常/clear/delete → `queued_cancelled`(cancel_event 判定防误重发);Ask mode 注入轮空工具集;clear/delete_session 清队列;协议帧 4 个 daemon→client 广播(P2 GUI / P3 TUI 客户端侧后续 rant);pytest 681→687(+7 e2e)、GUI 179 不变;合并 535efd2) ✅ +> - GUI multi-session deviations B1-B3 (#656 宿主 rant 2026-08-10T21:59:11:v0.2.22 实测三偏差——①B1 侧边栏"+ 新对话"按钮 + ⌘N 直接新建不弹项目列表(无法选项目/新建项目)→ 改绑 `Dialogs.showNewSessionDialog()`(既有 P5 slice 2 弹窗:项目活跃排序点选新建 / 新建项目按钮);②B2 侧边栏无"打开会话"入口(仅 /open 命令可达两步弹窗)→ 新增 `#open-chat-btn` ghost 按钮 → `Dialogs.showOpenSessionDialog()`(项目→会话)+ i18n zh/en `sidebar.openChat`/`openChatTitle` + CSS `.open-chat-btn`;③B3 切换会话草稿丢失(容器 per-session 但输入框全局单例)→ `state.drafts: Map` + saveDraft/restoreDraft:switchSession 离开前存旧 sid、切后恢复新 sid;newSession 存旧+新会话空草稿;sendMessage 发送成功 delete 该 sid 草稿;restore 重置 auto-resize 高度;回归安全(打开弹窗内"+ 新建会话…"入口与无 projectPath 兜底路径 deleteSession/closeOpenSession→newSession 不动);GUI 179→183(+4 renderer.smoke:B1 按钮弹窗不直建 / B2 入口弹窗 / B3 草稿保存恢复 / B3 发送清除+新建空草稿)三文档同步;合并 9e907aa) ✅ #### 2.2 Latest GitHub code changes