From b70c35a97270e2f83fff64fc1d3199138048090a Mon Sep 17 00:00:00 2001 From: argszero Date: Sat, 15 Aug 2026 09:37:27 +0800 Subject: [PATCH] emrg: GUI panel action feedback via global toast + Trigger running-state semantics (rants 2026-08-15T09:20:27, 09:23:10) --- Agent.md | 4 +-- emrg/gui/renderer/css/components.css | 34 ++++++++++++++++++++ emrg/gui/renderer/index.html | 5 +++ emrg/gui/renderer/js/app.js | 7 +++++ emrg/gui/renderer/js/dialogs.js | 29 ++++++++++++++++-- emrg/gui/renderer/js/i18n.js | 4 +++ emrg/gui/renderer/js/utils.js | 20 ++++++++++++ emrg/gui/test/renderer.smoke.test.js | 46 ++++++++++++++++++++++++++++ 8 files changed, 144 insertions(+), 5 deletions(-) diff --git a/Agent.md b/Agent.md index df0657c..9c9343c 100644 --- a/Agent.md +++ b/Agent.md @@ -85,7 +85,7 @@ Usage: say "tool loop" for the whole process, "round N" for a single LLM request - Streaming chat with delta rendering (16ms batching), markdown on done (marked + DOMPurify + local highlight.js subset), tool call status cards (2000-char truncation + expand) - Session list/switch/new/delete + right-click rename (context menu, #423) synced with daemon; own-stream busy lock (G65); broadcast streams from other clients tagged "来自其他客户端" - Disconnect/reconnect: red status dot, auto daemon respawn (stale-port detection), session resume, input bar restored on disconnect (no 30s fake-timeout) - - Unit tests `npm test` (247: 45 daemon_client + 19 conn-manager + 22 app-commands + 121 renderer smoke + 16 i18n + 7 integration + 3 commands + 5 build-config + 7 gui-state + 2 tool-group); RESPONSE_TYPES mirror daemon protocol verified against `daemon.py` + - Unit tests `npm test` (248: 45 daemon_client + 19 conn-manager + 22 app-commands + 122 renderer smoke + 16 i18n + 7 integration + 3 commands + 5 build-config + 7 gui-state + 2 tool-group); RESPONSE_TYPES mirror daemon protocol verified against `daemon.py` - **Scheduled tasks** — Task generalization + CRUD (rant 2026-08-12T18:23:15, #709/#710/#711) - Task handler generalized: `TaskHandler` (renamed from `EvolutionHandler`), repo-configured self-heal for any project, template lookup builtin → `~/.emrg/task-templates/.md` → fallback - Daemon commands: `task_create/update/delete` + `task_template_create/list/update/delete` (tasks stored in `~/.emrg/tasks.yml`, custom type templates in `~/.emrg/task-templates/`) @@ -119,7 +119,7 @@ pkill -f "emrg.server"; rm -f ~/.emrg/emrgd.port; python -m emrg ``` Python: `uv run pytest tests/ -v` (825) — import check: `uv run python -c "from emrg.client.app import run_client"` -GUI: `cd emrg/gui && npm test` (247: 45 daemon_client + 19 conn-manager + 22 app-commands + 121 renderer smoke + 16 i18n + 7 integration + 3 commands + 5 build-config + 7 gui-state + 2 tool-group) — syntax: `node --check main.js preload.js daemon_client.js renderer/js/*.js` +GUI: `cd emrg/gui && npm test` (248: 45 daemon_client + 19 conn-manager + 22 app-commands + 122 renderer smoke + 16 i18n + 7 integration + 3 commands + 5 build-config + 7 gui-state + 2 tool-group) — syntax: `node --check main.js preload.js daemon_client.js renderer/js/*.js` CI: `uv run pytest` (ubuntu + **windows-2025 matrix** — Windows pytest 回归在 PR CI 即失败,v0.2.29 教训 #725) + GUI tests + **actionlint workflow lint** (`rhysd/actionlint@v1.7.12` gate, #444 — workflow 解析错误在 PR CI 即失败,如 `if:` secrets 上下文) Re-trigger: `scripts/re-trigger-ci.sh [branch]` (workflow_dispatch, #527 — 替代空 commit 重触发:Actions outage 会整段丢弃 push 事件,dispatch 走 API 路径不受影响) diff --git a/emrg/gui/renderer/css/components.css b/emrg/gui/renderer/css/components.css index 1c55210..174e18d 100644 --- a/emrg/gui/renderer/css/components.css +++ b/emrg/gui/renderer/css/components.css @@ -954,6 +954,16 @@ dialog::backdrop { font-size: var(--fs-secondary); } +/* rant 09:23:10:任务 running 徽标(常驻运行的任务从源头减少误点) */ +.task-running-badge { + background: var(--bg-soft); + color: var(--text-3); + font-size: 10px; + padding: 1px 6px; + border-radius: 8px; + margin-left: 4px; +} + .theme-options { display: flex; gap: var(--sp-2); @@ -1141,6 +1151,30 @@ dialog::backdrop { color: var(--text-1); } +/* ── 通用 toast(rant 2026-08-15T09:20:27:面板操作反馈全局可见) ── */ +.toast { + position: fixed; + top: 16px; + right: 20px; + z-index: 1100; + max-width: calc(100vw - 40px); + padding: 10px 16px; + border-radius: var(--radius-btn); + background: var(--bg-panel); + border: 1px solid var(--border); + box-shadow: var(--shadow-lg, 0 8px 24px rgba(0,0,0,0.18)); + animation: toast-in 0.22s var(--ease); + pointer-events: none; +} +.toast-msg { + font-size: var(--fs-secondary); + color: var(--text-1); + white-space: pre-wrap; +} +.toast-success { border-left: 4px solid var(--ok, #2e9e5b); } +.toast-error { border-left: 4px solid var(--danger, #d64545); } +.toast-info { border-left: 4px solid var(--accent, #4a7dff); } + /* ── 进化完成 toast(WorkBuddy P3)────────────────── */ .evolution-toast { position: fixed; diff --git a/emrg/gui/renderer/index.html b/emrg/gui/renderer/index.html index 94702db..28b79cd 100644 --- a/emrg/gui/renderer/index.html +++ b/emrg/gui/renderer/index.html @@ -481,6 +481,11 @@

连接 GitHub

+ + +