emrg: GUI workspace panel titles + Rant 5-column list + markdown detail + i18n.apply control-preserving fix - #778
Conversation
…etail + i18n.apply control-preserving fix (rants 21:36:01/21:38:25/21:46:53) - Rant panel: workspace-view-title header + 5-column head (time/project/status/progress/content) with matching row layout; status badges get tri-state colors (done/warn/muted); detail expands with meta row + markdown-rendered message body (window.emrgMarkdown, DOMPurify same-source) + progress - Projects panel: workspace-view-title header; remove top hint row (projects.hint key deleted, actions self-explanatory + delete confirm keeps disk-data note) - Tasks panel: workspace-view-title header (tasks.title re-added after #776 removed it) - i18n.apply(): replace only the first text node instead of textContent assignment that wiped child controls (task/template/rant forms became unclickable); rants.detail + projects.hint orphans removed - renderer.smoke: P4 rant test rewritten (5-col + tri-state + real-marked detail assertion) + new source-level panel-title/i18n.apply regression test; GUI 243→244
argszero
left a comment
There was a problem hiding this comment.
✅ LGTM — cycle (1/3). Verified locally: pytest 801 passed, GUI 244 passed (renderer.smoke 119 incl. rewritten P4 rant test + new panel-title/i18n.apply regression), doc-count 3/3, import+CLI green. CI test + test-windows both pass. Confirmed the three rants' acceptance items are covered: titles on all three panels, 5-column rant list with tri-state badges, markdown detail rendering, projects.hint removed, i18n.apply preserves child controls (first-node-only), orphans rants.detail/projects.hint removed, #776 bidirectional guard satisfied.
argszero
left a comment
There was a problem hiding this comment.
✅ LGTM — cycle (2/3). Re-reviewed the full diff this cycle: 5-column rant rows with tri-state badges (badge-done/warn/muted) aligned to the .rant-head column header widths; content column strips markdown title markers for the summary; detail expansion renders the full message via window.emrgMarkdown.renderMarkdown with plain-text fallback; three panel titles (rants/projects/tasks) with zh+en keys; orphan keys rants.detail + projects.hint removed consistent with the #776 bidirectional i18n guard; and the i18n.apply control-preserving fix — first-text-node replacement instead of wholesale textContent assignment that wiped form controls inside data-i18n labels (root cause of the '添加任务/自定义类型' no-response). CI test + test-windows both PASS (31734607199).
argszero
left a comment
There was a problem hiding this comment.
✅ LGTM — cycle (3/3). Fresh re-review this cycle (head unchanged since 2/3): 5-column rant rows + tri-state badges aligned with .rant-head column widths (CSS flex basis verified), content column strips markdown markers for summary, detail renders via window.emrgMarkdown.renderMarkdown with plain-text fallback, three panel titles with zh+en keys, orphans rants.detail/projects.hint removed (grep 0 refs in renderer), and the i18n.apply control-preserving fix — first-text-node-only replacement (first.nodeValue = text) so form controls inside data-i18n labels survive (root cause of the '添加任务/自定义类型' no-response). Local: GUI 244/244 (incl. rewritten P4 + new regression), doc-count 3/3, orphan-key source assertions pass. CI test + test-windows both PASS (31734607199). MERGEABLE. Merging.
…-column + i18n.apply entry (#779) Co-authored-by: EMRG Evolution <emrg@argszero.dev>
Implements three host rants (2026-08-13T21:36:01 / 21:38:25 / 21:46:53) that had been in_progress without a PR for ~5.5h.
Rant 21:36:01 — Rant management workspace: title + columns + markdown
#panel-rantsgets.workspace-view-titleheader (Rant 管理 / Rant Management).rant-headwith 5 columns (time / project / status / progress / content), data rows match the same width classes.badge-donegreen /.badge-warnamber /.badge-mutedgray)window.emrgMarkdown.renderMarkdown(DOMPurify same-source, same as chat/viewer; fallback to plain text) + progress rowRant 21:38:25 — Projects panel: title + remove top hint
#panel-projectsgets.workspace-view-titleheader (项目管理 / Project Management)projects.hintkey deleted); delete-confirm dialog still documents "disk data kept"Rant 21:46:53 — Tasks panel title + i18n.apply clearing form controls
i18n.apply()usednode.textContent = t(key), wiping child elements ofdata-i18nlabels that wrap controls (e.g.<label data-i18n>任务名 <input id="task-form-name"/></label>) →openTaskForm()hittask-form-name === null→ 添加任务/自定义类型 unresponsivefirst.nodeValue = text), preserving child controls; plain-text/empty nodes fall back totextContenttasks.titlere-added (removed from i18n.js by emrg: GUI i18n orphan/missing-key guard test + remove 12 dead keys #776) with new value 任务管理 / Task Managementrants.detail+projects.hintremovedTests: renderer.smoke P4 rant test rewritten (5-column, tri-state badges, real-marked markdown detail) + new source-level regression test for the three titles, hint removal, i18n.apply fix, and orphan cleanup. GUI 243→244 (119 renderer smoke); pytest 801 + doc-count 3/3 green locally.