Fix #481: comment-bubble icon #483

Merged
crueber merged 1 commit from fix/issue-481 into main 2026-09-13 19:28:32 +00:00
Owner

Fixes #481: replaces the leftover speech-bubble emoji (U+1F4AC) on the issue-list comment-count indicator (Issues.jsx:356) with the issue-provided comment-bubble SVG, embedded through the shared #465 icons.jsx mechanism.

Change

  • web/src/lib/icons.jsx: new issue-comment entry — viewBox 0 0 16 16 preserved, d path transcribed verbatim, fill=currentColor, no color literals, no fetch/innerHTML. Header comment updated (12 bodies, eight surfaces, #481 attribution).
  • web/src/pages/Issues.jsx: emoji span + count becomes Icon name=issue-comment + count; accessible title/aria-label unchanged; no per-call-site CSS (.icon utility handles sizing).
  • web/src/pages/Issue.jsx:406: reconciled as keep-bare-text — the byline is a mid-sentence count, not a badge, so the icon would break reading flow; rationale noted in a call-site comment.
  • Grep for the emoji over web/src returns zero hits (verified).

Law-12 note: no docs/go/12_web_ui.md change — the #465 entry is a historical record of what #465 shipped, and the #466 plus icon set the precedent (added with no doc entry). Decision recorded in the icons.jsx header comment in the same change.

Verification

  • New web/test/unit/issue-comment-481.test.js (7 tests: verbatim path, 12 entries/one svg/no-fetch, header comment, Issues.jsx swap, emoji grep-zero over web/src, Issue.jsx reconciliation, no new deps).
  • #481-scoped updates to three stale source pins: icons-465 (11 to 12), issues-row-milestone (emoji span to Icon), create-menu-466 (fixed-width slice bounded at the entry close so the new neighbor never leaks in).
  • node --test web/test/unit/*.test.js: 916 total / 901 pass / 15 fail — the 15 failures are byte-identical on pristine origin/main (13 files incl. live-server smoke subtests; verified head-to-head in a clean worktree), zero PR-caused.
  • vite build green; issue-comment d path verified present in dist/assets output.
  • No new dependencies (package.json runtime set unchanged); no docker/compose changes; browser proof open (shared-daemon loopback guard — no private daemon per workspace rules).
Fixes #481: replaces the leftover speech-bubble emoji (U+1F4AC) on the issue-list comment-count indicator (Issues.jsx:356) with the issue-provided comment-bubble SVG, embedded through the shared #465 icons.jsx mechanism. **Change** - web/src/lib/icons.jsx: new issue-comment entry — viewBox 0 0 16 16 preserved, d path transcribed verbatim, fill=currentColor, no color literals, no fetch/innerHTML. Header comment updated (12 bodies, eight surfaces, #481 attribution). - web/src/pages/Issues.jsx: emoji span + count becomes Icon name=issue-comment + count; accessible title/aria-label unchanged; no per-call-site CSS (.icon utility handles sizing). - web/src/pages/Issue.jsx:406: reconciled as keep-bare-text — the byline is a mid-sentence count, not a badge, so the icon would break reading flow; rationale noted in a call-site comment. - Grep for the emoji over web/src returns zero hits (verified). **Law-12 note**: no docs/go/12_web_ui.md change — the #465 entry is a historical record of what #465 shipped, and the #466 plus icon set the precedent (added with no doc entry). Decision recorded in the icons.jsx header comment in the same change. **Verification** - New web/test/unit/issue-comment-481.test.js (7 tests: verbatim path, 12 entries/one svg/no-fetch, header comment, Issues.jsx swap, emoji grep-zero over web/src, Issue.jsx reconciliation, no new deps). - #481-scoped updates to three stale source pins: icons-465 (11 to 12), issues-row-milestone (emoji span to Icon), create-menu-466 (fixed-width slice bounded at the entry close so the new neighbor never leaks in). - node --test web/test/unit/*.test.js: 916 total / 901 pass / 15 fail — the 15 failures are byte-identical on pristine origin/main (13 files incl. live-server smoke subtests; verified head-to-head in a clean worktree), zero PR-caused. - vite build green; issue-comment d path verified present in dist/assets output. - No new dependencies (package.json runtime set unchanged); no docker/compose changes; browser proof open (shared-daemon loopback guard — no private daemon per workspace rules).
docs/go/12_web_ui.md pattern (Forgejo #465, as extended by #466):
add the issue-provided comment-bubble SVG as the twelfth ICONS entry
(issue-comment, viewBox 0 0 16 16, verbatim d path, currentColor) and
consume it at Issues.jsx:356, replacing the leftover speech-bubble emoji.
The Issue.jsx:406 thread byline keeps its bare mid-sentence count on
purpose (icon would break reading flow) with the rationale noted at the
call site. No new deps; no fetch/innerHTML.

Headless cover: new web/test/unit/issue-comment-481.test.js (7 tests);
#481-scoped updates to three stale source pins (icons-465 count 11->12,
issues-row-milestone emoji->Icon, create-menu-466 fixed-width slice).
node --test 916 total / 901 pass / 15 fail, the 15 identical on pristine
origin/main (pre-existing); vite build green with the path in the bundle.
Sign in to join this conversation.
No description provided.