From 0af5894e7a0ba4134e0ff1a9f6a6c0126d431c6d Mon Sep 17 00:00:00 2001 From: EMRG Evolution Date: Thu, 13 Aug 2026 22:51:33 +0800 Subject: [PATCH 1/2] =?UTF-8?q?emrg:=20evolution=5Fprompt=20quick-ref=20?= =?UTF-8?q?=E2=80=94=20add=20#776=20GUI=20i18n=20orphan/missing-key=20guar?= =?UTF-8?q?d=20entry?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 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 6820b6b9..a76f9704 100644 --- a/emrg/server/evolution_prompt.md +++ b/emrg/server/evolution_prompt.md @@ -473,6 +473,7 @@ When reading rants, follow these rules: > - GUI chat visual optimization (#771 宿主 rant 2026-08-13T21:28:49:对齐/滚动/工具耗时/紧凑行/连续工具分组——.msg.user margin-left:auto 对齐修复(flex auto-margin 胜 align-self)、.session-view 去 scroll-behavior:smooth(JS scrollTop=scrollHeight 即时)、.tool-time 成功耗时(row.dataset.elapsed 供组求和)、行间距 24→12/内边距 4→2/字号 13→12/spinner 14→12、Plan-A 连续工具合并组(last-child 吸收已完成 .tool-row 成 .tool-group + ⌄ N 个工具执行 · Ts 摘要 + 点击展开 user-expanded 持久 + 运行行保持展开 + 文本穿插独立行)+ 独立 tool-group.test.js +2(GUI 239→241);评审过程=❌ 检出 7 个孤儿 i18n keys(rants.title/col* + projects.title)+ 12 个未用 CSS 类(.workspace-view-title/.rant-*/.task-badge.badge-*——并行 rant/projects 面板重构误带死代码,renderRantList 用 .task-row 从未引用)→ 作者修 d84de1e 纯删除(−99 行零新增)→ post-fix 3 周期 ✅(14:03:44Z 起重启链)→ 合并 f60eec0(14:10:25Z);post-merge Test CI PASS(31708754550)) ✅ > - TUI status bar authoritative context message count (#772 宿主 rant 2026-08-13T21:52:18:状态栏 `· N msgs ·` 此前客户端本地 `msg_count += 1` 近似,auto-compact 重建消息后计数漂移;修复=daemon.py 两个最终 done 帧(Case 1 loop-exit + Case 3 max-tokens)均携带 `context_messages: len(messages)`(当前 LLM 上下文权威大小:system+history+user+tool results+assistant replies,auto-compact 重建后正确重导出);app.py done handler `int(context_messages)` 优先、缺失时回退 +1(向后兼容旧 daemon);e2e 单轮工具流断言 == 5(system+user+assistant-tool_calls+tool-result+final assistant);合并 66ab9a0;post-merge Test CI PASS(31709343733)) ✅ > - GUI settings panel title + dead settings-btn removal (#773 宿主 rant 2026-08-13T21:49:51:设置面板缺标题(Rant/项目/任务面板样式对齐)+ 侧边栏底部 settings-btn 与导航 ⚙ 重复入口;修复=index.html panel-settings 加 `

`(layout.css 补 .workspace-view-title 定义——此前并行面板标题引用但全库无此 CSS)、sidebar-footer 删 settings-btn(保留 status-dot)、app.js settings-btn 绑定删除(导航 switchView("settings") 路径已含 loadEvolutionSummary+showSettings,功能保留)、i18n.js 删 sidebar.settings 孤儿键(zh+en,settings.title 两语言已存在);+1 renderer.smoke 判别测试(title 存在/footer 无 btn 有 dot/app.js 无绑定/i18n 无孤儿键,GUI 241→242);合并 2d9d7d6;post-merge Test CI PASS(31709827480)) ✅ +> - GUI i18n orphan/missing-key guard (#776 自发现:#771 review ❌ 检出 7 个孤儿 i18n keys——#755 清理类无防回归护栏;修复=i18n.test.js 双向守卫——(A) 无孤儿字典键(字典每个 key 被 JS 代码/index.html data-i18n 引用)、(B) 无缺失引用键(代码引用的 key 在字典中);处理形态=字面 t 调用(_t/I18N.t/EMRG_I18N.t/t)、三元 span(_t(cond ? "A" : "B"))、模板 glob(按 base 段归一 tool.*.doing 匹配)、registry 属性值(hint/title/key/label/placeholder/text/msg)、camelCase 段(projects.autoEvolve);同时删 12 个死键(result.title/settings.groupTasks/settings.githubTokenEmpty/tasks.title/tasks.desc/panel.* ×2/app.* ×4/sidebar.noOpenSessions,zh+en 各 12 = i18n.js −30 行);+1 测试 GUI 242→243、Agent.md 同步;合并 c54280e) ✅ #### 2.2 Latest GitHub code changes From bf7df28bf34ecef10c7af1f8fb07d2a4f0a4d950 Mon Sep 17 00:00:00 2001 From: EMRG Evolution Date: Thu, 13 Aug 2026 22:59:19 +0800 Subject: [PATCH 2/2] =?UTF-8?q?emrg:=20fix=20quick-ref=20#776=20entry=20?= =?UTF-8?q?=E2=80=94=2015=20dead=20keys=20removed=20(reviewer=20correction?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- emrg/server/evolution_prompt.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/emrg/server/evolution_prompt.md b/emrg/server/evolution_prompt.md index a76f9704..5751ddb7 100644 --- a/emrg/server/evolution_prompt.md +++ b/emrg/server/evolution_prompt.md @@ -473,7 +473,7 @@ When reading rants, follow these rules: > - GUI chat visual optimization (#771 宿主 rant 2026-08-13T21:28:49:对齐/滚动/工具耗时/紧凑行/连续工具分组——.msg.user margin-left:auto 对齐修复(flex auto-margin 胜 align-self)、.session-view 去 scroll-behavior:smooth(JS scrollTop=scrollHeight 即时)、.tool-time 成功耗时(row.dataset.elapsed 供组求和)、行间距 24→12/内边距 4→2/字号 13→12/spinner 14→12、Plan-A 连续工具合并组(last-child 吸收已完成 .tool-row 成 .tool-group + ⌄ N 个工具执行 · Ts 摘要 + 点击展开 user-expanded 持久 + 运行行保持展开 + 文本穿插独立行)+ 独立 tool-group.test.js +2(GUI 239→241);评审过程=❌ 检出 7 个孤儿 i18n keys(rants.title/col* + projects.title)+ 12 个未用 CSS 类(.workspace-view-title/.rant-*/.task-badge.badge-*——并行 rant/projects 面板重构误带死代码,renderRantList 用 .task-row 从未引用)→ 作者修 d84de1e 纯删除(−99 行零新增)→ post-fix 3 周期 ✅(14:03:44Z 起重启链)→ 合并 f60eec0(14:10:25Z);post-merge Test CI PASS(31708754550)) ✅ > - TUI status bar authoritative context message count (#772 宿主 rant 2026-08-13T21:52:18:状态栏 `· N msgs ·` 此前客户端本地 `msg_count += 1` 近似,auto-compact 重建消息后计数漂移;修复=daemon.py 两个最终 done 帧(Case 1 loop-exit + Case 3 max-tokens)均携带 `context_messages: len(messages)`(当前 LLM 上下文权威大小:system+history+user+tool results+assistant replies,auto-compact 重建后正确重导出);app.py done handler `int(context_messages)` 优先、缺失时回退 +1(向后兼容旧 daemon);e2e 单轮工具流断言 == 5(system+user+assistant-tool_calls+tool-result+final assistant);合并 66ab9a0;post-merge Test CI PASS(31709343733)) ✅ > - GUI settings panel title + dead settings-btn removal (#773 宿主 rant 2026-08-13T21:49:51:设置面板缺标题(Rant/项目/任务面板样式对齐)+ 侧边栏底部 settings-btn 与导航 ⚙ 重复入口;修复=index.html panel-settings 加 `

`(layout.css 补 .workspace-view-title 定义——此前并行面板标题引用但全库无此 CSS)、sidebar-footer 删 settings-btn(保留 status-dot)、app.js settings-btn 绑定删除(导航 switchView("settings") 路径已含 loadEvolutionSummary+showSettings,功能保留)、i18n.js 删 sidebar.settings 孤儿键(zh+en,settings.title 两语言已存在);+1 renderer.smoke 判别测试(title 存在/footer 无 btn 有 dot/app.js 无绑定/i18n 无孤儿键,GUI 241→242);合并 2d9d7d6;post-merge Test CI PASS(31709827480)) ✅ -> - GUI i18n orphan/missing-key guard (#776 自发现:#771 review ❌ 检出 7 个孤儿 i18n keys——#755 清理类无防回归护栏;修复=i18n.test.js 双向守卫——(A) 无孤儿字典键(字典每个 key 被 JS 代码/index.html data-i18n 引用)、(B) 无缺失引用键(代码引用的 key 在字典中);处理形态=字面 t 调用(_t/I18N.t/EMRG_I18N.t/t)、三元 span(_t(cond ? "A" : "B"))、模板 glob(按 base 段归一 tool.*.doing 匹配)、registry 属性值(hint/title/key/label/placeholder/text/msg)、camelCase 段(projects.autoEvolve);同时删 12 个死键(result.title/settings.groupTasks/settings.githubTokenEmpty/tasks.title/tasks.desc/panel.* ×2/app.* ×4/sidebar.noOpenSessions,zh+en 各 12 = i18n.js −30 行);+1 测试 GUI 242→243、Agent.md 同步;合并 c54280e) ✅ +> - GUI i18n orphan/missing-key guard (#776 自发现:#771 review ❌ 检出 7 个孤儿 i18n keys——#755 清理类无防回归护栏;修复=i18n.test.js 双向守卫——(A) 无孤儿字典键(字典每个 key 被 JS 代码/index.html data-i18n 引用)、(B) 无缺失引用键(代码引用的 key 在字典中);处理形态=字面 t 调用(_t/I18N.t/EMRG_I18N.t/t)、三元 span(_t(cond ? "A" : "B"))、模板 glob(按 base 段归一 tool.*.doing 匹配)、registry 属性值(hint/title/key/label/placeholder/text/msg)、camelCase 段(projects.autoEvolve);同时删 15 个死键(result.title/settings.groupTasks/settings.githubTokenEmpty/tasks.title/tasks.desc/panel.openFailed/panel.copied/app.helpNoSessions/app.historyLoading/app.globalAll/app.noTasks/sidebar.noOpenSessions/projects.sessions/composer.modeAsk/composer.modeAuto,zh+en 各 15 = i18n.js −30 行);+1 测试 GUI 242→243、Agent.md 同步;合并 c54280e) ✅ #### 2.2 Latest GitHub code changes