Fix #572: ThreadIndex heading renders just Comments, no counts #576

Merged
crueber merged 1 commit from fix/issue-572 into main 2026-09-15 14:41:05 +00:00
Owner

Removes the comment counts from the Comments index heading (ThreadIndex, web/src/pages/Pull.jsx): heading renders exactly Comments in every state. Display-only — pills/jump/flash unchanged, visibility gate byte-identical, staged entries stay discoverable via staged pills. Tests: new thread-index-heading-572.test.js + #572-scoped update to the staged-inline-567 count pin; law-12 doc amendment in docs/go/12_web_ui.md.

Removes the comment counts from the Comments index heading (ThreadIndex, web/src/pages/Pull.jsx): heading renders exactly Comments in every state. Display-only — pills/jump/flash unchanged, visibility gate byte-identical, staged entries stay discoverable via staged pills. Tests: new thread-index-heading-572.test.js + #572-scoped update to the staged-inline-567 count pin; law-12 doc amendment in docs/go/12_web_ui.md.
ThreadIndex panel heading (web/src/pages/Pull.jsx) rendered
Comments ({threads.length}{+ N staged}); now renders exactly Comments
in every state. Display-only: pills/jump/flash unchanged, visibility
gate (threads or pending non-empty) byte-identical, staged entries
stay discoverable via staged pills. Doc amendment in docs/go/12_web_ui.md
(law 12); no new deps (law 1); Tailwind untouched; style-guideline
composition only.
Author
Owner

Independent review — APPROVED (Forgejo #572).

Checked diff origin/main..origin/fix/issue-572 (f6db076) in /tmp/walhub-572 + full non-smoke web suite:

  • Heading is exactly the static text: Pull.jsx ThreadIndex h2 is now <h2 class="card-header"> Comments </h2> with no interpolation; no length}, no Comments (, no + ${ remains in the ThreadIndex section. Renders "Comments" in all four states (threads-only / threads+staged / staged-only / gone-marked — content paths for each still present, heading static so state-independent).
  • Gate byte-identical: <Show when={(props.threads ?? []).length > 0 || (props.pending ?? []).length > 0}> present identically on main and branch; not count-dependent. Pills/jump/flash unchanged — the only Pull.jsx hunk is the heading; jumpToThread/jumpToStaged, staged-/flashStaged, staged/resolved/outdated/gone pill markers and page wiring all pinned by tests and untouched.
  • staged-inline-567 pin update is a justified expectation change, not a weakening: old test asserted the header counts staged (+ N staged); new test asserts the same panel-open gate + page wiring but asserts the count string is ABSENT per #572. Still fails if the gate regresses or wiring drops.
  • Law 12: docs/go/12_web_ui.md gains a FIXED (#572) decision entry in the same change; new test pins it.
  • Law 1: no new deps — package.json runtime deps remain exactly solid-js + @solidjs/router + marked + dompurify; no inline styles / new CSS surface in ThreadIndex (test-pinned).
  • Tests fail pre-fix: new thread-index-heading-572.test.js fails against origin/main Pull.jsx (count interpolation present); passes on branch (6/6). Full non-smoke suite: 1393/1393 pass on branch; the single excluded failure is smoke.test.js (needs live server, 403 vs 200 — unrelated, pre-existing).

No defects found; no fix commits needed.

Independent review — APPROVED (Forgejo #572). Checked diff origin/main..origin/fix/issue-572 (f6db076) in /tmp/walhub-572 + full non-smoke web suite: - Heading is exactly the static text: Pull.jsx ThreadIndex h2 is now `<h2 class="card-header"> Comments </h2>` with no interpolation; no `length}`, no `Comments (`, no `+ ${` remains in the ThreadIndex section. Renders "Comments" in all four states (threads-only / threads+staged / staged-only / gone-marked — content paths for each still present, heading static so state-independent). - Gate byte-identical: `<Show when={(props.threads ?? []).length > 0 || (props.pending ?? []).length > 0}>` present identically on main and branch; not count-dependent. Pills/jump/flash unchanged — the only Pull.jsx hunk is the heading; jumpToThread/jumpToStaged, staged-<i>/flashStaged, staged/resolved/outdated/gone pill markers and page wiring all pinned by tests and untouched. - staged-inline-567 pin update is a justified expectation change, not a weakening: old test asserted the header counts staged (`+ N staged`); new test asserts the same panel-open gate + page wiring but asserts the count string is ABSENT per #572. Still fails if the gate regresses or wiring drops. - Law 12: docs/go/12_web_ui.md gains a FIXED (#572) decision entry in the same change; new test pins it. - Law 1: no new deps — package.json runtime deps remain exactly solid-js + @solidjs/router + marked + dompurify; no inline styles / new CSS surface in ThreadIndex (test-pinned). - Tests fail pre-fix: new thread-index-heading-572.test.js fails against origin/main Pull.jsx (count interpolation present); passes on branch (6/6). Full non-smoke suite: 1393/1393 pass on branch; the single excluded failure is smoke.test.js (needs live server, 403 vs 200 — unrelated, pre-existing). No defects found; no fix commits needed.
Sign in to join this conversation.
No description provided.