emrg: GUI tasks panel shows last-run + saturation meta (rant 2026-08-18T10:45:52) - #842
Conversation
…18T10:45:52)
The tasks panel only showed name/type/running/next-run/interval/enabled —
no last-execution dimension. Users couldn't see when a task last ran, what
it did, or whether it was throttled (saturation heartbeat).
- scheduler.py TaskHandler.status(): add last_run_at (latest evolution log
timestamp), last_cycle_summary (impact summary, e.g. tools-executed=24,
cycle-complete), saturation {empty_cycles, threshold, heartbeat_interval,
heartbeat_active} — all in-memory, no extra I/O.
- daemon list_tasks passthrough unchanged (status() already flows through).
- dialogs.js renderTaskList: each row gets a .task-meta second line —
last run (relative time via new formatRelativeTime), summary, and a
saturation badge when throttled.
- i18n.js: zh/en keys (taskLastRun/taskLastRunSummary/taskNoRunYet/taskSaturation).
- components.css: .task-meta / .task-meta-summary / .task-saturation-badge.
- Tests: scheduler status() last-run fields; GUI smoke test for meta row +
saturation badge. Agent.md counts 938→939 pytest, 258→259 GUI.
argszero
left a comment
There was a problem hiding this comment.
✅ LGTM — cycle 711 (1/3). CI test + test-windows PASS (32107728083). Local: pytest 938+1 (939 collected), GUI 259/259, import + CLI green. status() last-run fields verified in test_scheduler; smoke test covers meta row + saturation badge.
argszero
left a comment
There was a problem hiding this comment.
✅ LGTM — cycle 712 (2/3). Head 0b55697 unchanged from cycle 711, CI test + test-windows PASS (32107728083), MERGEABLE/CLEAN. Re-verified status() last-run/saturation fields + GUI meta row (scheduler + dialogs + i18n + css + tests).
argszero
left a comment
There was a problem hiding this comment.
✅ LGTM — cycle 713 (3rd). Head 0b55697 unchanged, CI test + test-windows PASS (32107728083), MERGEABLE/CLEAN. Three consecutive LGTMs (cycles 711/712/713), no ❌ — merging. Completes rant 2026-08-18T10:45:52 (last pending).
v0.2.47 -> v0.2.48 across 8 files / 9 refs (standard release bump): - emrg/__init__.py, pyproject.toml, uv.lock (emrg entry) - emrg/gui/package.json + package-lock.json (x2) - packaging/build-runtime.sh, make-installer.sh, make-run-installer.sh Covers 4 commits since v0.2.47: #839 (TUI exit clear-screen), #840 (GUI countdown refresh), #841 (daemon single-instance admission), #842 (GUI task last-run meta). Rant 2026-08-18T14:46:47. Co-authored-by: EMRG Evolution <emrg@argszero.dev>
The tasks panel only showed name/type/running badge/next-run countdown/interval/enabled — no last-execution dimension. Users couldn't tell when a task last ran, what it did, or whether it was being throttled (saturation heartbeat).
Backend (
emrg/server/scheduler.py)TaskHandler.status()now returns:last_run_at— timestamp of the latest evolution log (in-memory)last_cycle_summary— brief impact summary (e.g.tools-executed=24, cycle-complete)saturation— {empty_cycles, threshold, heartbeat_interval, heartbeat_active}list_taskspassthrough is unchanged.GUI (
emrg/gui/renderer/js/dialogs.js).task-meta: relative last-run time (5m ago, newformatRelativeTimehelper), summary, and a saturation badge when throttled.app.taskLastRun,app.taskLastRunSummary,app.taskNoRunYet,app.taskSaturation..task-meta,.task-meta-summary,.task-saturation-badge.Tests: scheduler
status()last-run/saturation fields; GUI smoke test for the meta row + saturation badge. Agent.md counts 938→939 pytest, 258→259 GUI.