diff --git a/emrg/server/evolution_prompt.md b/emrg/server/evolution_prompt.md index d8cd938..a52383c 100644 --- a/emrg/server/evolution_prompt.md +++ b/emrg/server/evolution_prompt.md @@ -438,6 +438,7 @@ When reading rants, follow these rules: > - TUI queue-injection client side (#655 P3 follow-up,自发现:daemon P1 排队注入已 e2e 验证但 TUI 不可达——busy 时 ENTER 被静默吞掉(app.py:1837),4 个广播帧无人处理;修复=①`send_task` 增可选 `id` 参数并返回最终请求 id(重发复用原 id);②ENTER busy 不再拦截(was_busy 捕获),发送后若当时 busy 记入 `_queued_sends`;③read_server 新增 4 帧处理——task_queued 显示 '⏳ Queued (position N)'、steer_committed 从队列移除、queued_requeue 以原 id 静默重发(**不重加 user 行/不重复 msg_count**,busy 置 True + need_new_assistant 保证响应进新 md 行 + 重启耗时计时)、queued_cancelled 清队列+提示;④断线重连清 `_queued_sends`(daemon 断连即 drop 队列);**review ❌ 同 #696**:queued_requeue 重发循环 was_busy 循环前捕获 → 单客户端回合刚结束 was_busy=false,M2+ 重发到达时 daemon busy 被再排队但未跟踪 → 下个 queued_requeue 找不到 → 静默丢失;修复=每条重发 `if (was_busy or i > 0)` 重新跟踪(9cb4194,steer_committed 移除已注入,下个 queued_requeue 重发其余,收敛);+2 测试 703→705(send_task 显式 id 透传 / 返回生成 id),GUI 212 不变) ✅ > - Release v0.2.27 (#698 宿主 rant 2026-08-12T09:50:56:master 自 v0.2.26 (f2ba4be) 以来 12 commits / 11 PRs(#687-#697),宿主确认发布下一版本;版本号 0.2.26→0.2.27 同步 7 files / 8 refs(emrg/__init__.py、pyproject.toml、uv.lock、gui/package.json、gui/package-lock.json×2、build-runtime.sh、make-installer.sh),grep 0.2.26 仅历史;pytest 705 + GUI 218 绿;Build Release v0.2.27 成功(31556996537),7 assets(含 Windows zip #649),latest=v0.2.27;合并 45d0cd7(并行周期 3 LGTM);What's new=stop-git.ps1 连坐强杀 #692 + TUI 光标/状态栏 #693 + README 吸引力 #692 + 图标定稿 #688 + queue-injection 客户端 #695/#696 + quick-ref ×4) ✅ > - Release v0.2.28 (#703 宿主 rant 2026-08-12T15:49:45:master 自 v0.2.27 (45d0cd7) 以来 4 commits / 4 PRs(#699-#702),宿主指示发布 v0.2.28;版本号 0.2.27→0.2.28 同步 7 files / 8 refs(emrg/__init__.py、pyproject.toml、uv.lock、gui/package.json、gui/package-lock.json×2、build-runtime.sh、make-installer.sh),grep 0.2.27 仅历史;pytest 730 + GUI 221 绿;Build Release v0.2.28 成功(31577111800),7 assets(含 Windows zip),latest=v0.2.28;合并 32d2947(3 周期 LGTM);What's new=自动下载更新 + GUI 一键安装 #700 + 单文件 stop-emrg.cmd(CRLF 修复三弹窗根因)#701/#702 + quick-ref #699) ✅ +> - Release v0.2.29 (#721 宿主 rant 2026-08-12:master 自 v0.2.28 (32d2947) 以来 18 commits / 18 PRs(#704-#721),宿主指示发布 v0.2.29;版本号 0.2.28→0.2.29 同步 7 files / 8 refs(emrg/__init__.py、pyproject.toml、uv.lock、gui/package.json、gui/package-lock.json×2、build-runtime.sh、make-installer.sh),grep 0.2.28 仅历史;pytest 748(#723 后 +10 pngutil → 758)+ GUI 229 绿;Build Release v0.2.29 成功(31608141280,3 次尝试——#722 renderer 回退 + #723 filter-aware PNG 解码(pngutil.py)/Windows git.EXE 大小写根因修复后 4 平台全过 + release job),7 assets(含 Windows zip),latest=v0.2.29,发布 14:48:05Z;合并 b3a668d(3 周期 LGTM),tag 最终 re-point 6907b14;What's new=任务泛化 + GUI 任务管理 #709/#710/#711 + GUI 文件树 VS Code 对齐 #707 + Windows 图标透明修复 #705/#722/#723 + 演化记录入 memory #708 + git 解析/打包修复 #712/#714/#716/#717/#719/#720 + README 文档 #715 + quick-ref #704) ✅ > - Task handler generalization P1 (#709 宿主 rant 2026-08-12T18:14:46,被 18:23:15 全面设计取代:EvolutionHandler→TaskHandler 类改名(40 refs)+ workspace 自愈特判泛化(`_repo_configured` = 有 repo 配置即自愈 clone/对齐,不再特判 emrg 项目)+ `_resolve_task_template` 模板查找 helper(内置 TASK_TEMPLATES → ~/.emrg/task-templates/.md → evolution_prompt.md 兜底 + 告警);纯重构行为不变,pytest 730→736;合并 f7e8671) ✅ > - Task/template CRUD + hot reload P2 (#710 宿主 rant 2026-08-12T18:23:15:daemon 任务管理能力——`task_create/update/delete` + `task_template_create/list/update/delete` 命令(task_result/templates_list/template_result 帧);存储 `~/.emrg/tasks.yml`(扩展 description/config.repo)+ `~/.emrg/task-templates/.md`(原子 tmp+replace 写);校验=name `^[a-z0-9][a-z0-9-]*$` ≤32、type 内置或已存在自定义、project 必须在 projects.yml、interval ≥60、内置类型/模板只读拒绝、删除被任务引用的自定义类型拒绝(错误带任务数);`TaskScheduler.apply_tasks()` 热重载(原子写 → 与运行 handler 签名 diff → 增删重启,幂等);未知/自定义类型不再静默跳过——以用户模板 → evolution_prompt.md 兜底启动为 TaskHandler;+8 测试 736→744;合并 be574d5) ✅ > - GUI task/template management P3 (#711 宿主 rant 2026-08-12T18:23:15 收官:设置对话框「定时任务」区——任务列表(名称/类型/项目/间隔/启用 + 触发/编辑/删除)、行内新建/编辑表单(类型下拉含自定义、项目下拉仅注册项目、间隔 ≥60 客户端+daemon 双校验、名称编辑只读)、自定义类型管理(内置只读无操作按钮、自定义编辑/删除/新增带提示词模板 textarea);IPC 7 个 handler(main.js+preload.js)+ RESPONSE_TYPES +7(task_result/templates_list/template_result——缺失则 sendCommandAndWait 回退命令名 → 8s 超时假失败);i18n 26 键 zh/en;6 个宿主拍板点全部落地;renderer.smoke +3 + daemon_client +1 → GUI 225→229;合并 b8d4817) ✅