Skip to content

emrg: GUI workspace panel titles + Rant 5-column list + markdown detail + i18n.apply control-preserving fix - #778

Merged
argszero merged 1 commit into
masterfrom
feature/gui-panel-titles-rant-columns
Aug 13, 2026
Merged

emrg: GUI workspace panel titles + Rant 5-column list + markdown detail + i18n.apply control-preserving fix#778
argszero merged 1 commit into
masterfrom
feature/gui-panel-titles-rant-columns

Conversation

@argszero

Copy link
Copy Markdown
Owner

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-rants gets .workspace-view-title header (Rant 管理 / Rant Management)
  • Column header row .rant-head with 5 columns (time / project / status / progress / content), data rows match the same width classes
  • Status badges get tri-state colors (.badge-done green / .badge-warn amber / .badge-muted gray)
  • Detail expansion: meta row + full message rendered as markdown via window.emrgMarkdown.renderMarkdown (DOMPurify same-source, same as chat/viewer; fallback to plain text) + progress row

Rant 21:38:25 — Projects panel: title + remove top hint

  • #panel-projects gets .workspace-view-title header (项目管理 / Project Management)
  • Top hint row removed (projects.hint key deleted); delete-confirm dialog still documents "disk data kept"

Rant 21:46:53 — Tasks panel title + i18n.apply clearing form controls

  • Root cause: i18n.apply() used node.textContent = t(key), wiping child elements of data-i18n labels that wrap controls (e.g. <label data-i18n>任务名 <input id="task-form-name"/></label>) → openTaskForm() hit task-form-name === null → 添加任务/自定义类型 unresponsive
  • Fix: replace only the first text node (first.nodeValue = text), preserving child controls; plain-text/empty nodes fall back to textContent
  • tasks.title re-added (removed from i18n.js by emrg: GUI i18n orphan/missing-key guard test + remove 12 dead keys #776) with new value 任务管理 / Task Management
  • Orphans rants.detail + projects.hint removed

Tests: 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.

…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 argszero left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ 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 argszero left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ 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 argszero left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ LGTM — cycle (3/3). Head 8153c00 unchanged since prior approvals; CI test + test-windows still PASS (31734607199); mergeStateStatus CLEAN. Three consecutive approvals from independent cycles — merging.

@argszero argszero left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ 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.

@argszero
argszero merged commit b970031 into master Aug 13, 2026
2 checks passed
@argszero
argszero deleted the feature/gui-panel-titles-rant-columns branch August 13, 2026 19:20
argszero added a commit that referenced this pull request Aug 13, 2026
…-column + i18n.apply entry (#779)

Co-authored-by: EMRG Evolution <emrg@argszero.dev>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant