Settings page heading goes sr-only so nav and content start at top (Fix #631) #632

Merged
crueber merged 1 commit from fix/issue-631 into main 2026-09-18 20:30:17 +00:00
Owner

Fixes #631. The doc-style h2 (text-lg + mb-3) pushed nav + content a row below the tab bar; tab bar already reads Settings and sidebar has its own micro-heading, so the h2 is now sr-only (outline kept for screen readers). No other layout change. Verified: new test 3/3, full-minus-smoke 1625/1625, vite+esbuild green, go vet clean.

Fixes #631. The doc-style h2 (text-lg + mb-3) pushed nav + content a row below the tab bar; tab bar already reads Settings and sidebar has its own micro-heading, so the h2 is now sr-only (outline kept for screen readers). No other layout change. Verified: new test 3/3, full-minus-smoke 1625/1625, vite+esbuild green, go vet clean.
Author
Owner

Independent review — APPROVED (no fix commit needed; branch left at 174115d).

Issue #631 acceptance, all verified:

  • Exact class string is <h2 class="sr-only">Settings</h2> (Settings.jsx:1840); mb-3/text-lg/font-semibold gone from the page head.
  • Word-diff origin/main..fix/issue-631 on Settings.jsx shows ONLY the h2 line swap + the 4-line Forgejo #631 comment — no other layout change; the flex flex-col gap-4 lg:flex-row lg:gap-6 row and nav.min-w-0.shrink-0.lg:w-56 are byte-identical, so sidebar-nav-top/content-top alignment holds at desktop and 390px by construction (no responsive class touched; sr-only is position:absolute/1px/clipped at all widths, zero in-flow box — the old band was purely the h2's line box + mb-3). The JSX {/* */} comment compiles to no DOM node, so it cannot reintroduce spacing.
  • sr-only survives the shipped build: web/dist/assets/index-*.css contains .sr-only{clip-path:inset(50%);...position:absolute...}; it is a Tailwind v4 core utility already used in Repos/Release/Org/Commit, so no purge/config risk.
  • Document outline kept: h2 with text "Settings" still present.
  • No test pinned the old visual heading: sweep of web/test for mb-3 text-lg / Settings-h2 assertions finds only the new test (other h2 pins are unrelated card-header idioms).
  • Mobile unaffected per above (width-independent utility, flex row untouched).
  • Law 12: docs/go/12_web_ui.md amendment appended in the same change. Law 1: ui.css and package.json untouched (no settings-page selectors, no new deps).
  • New test fails pre-fix: checked out origin/main Settings.jsx under the new test → test 1 fails ERR_ASSERTION as expected; restored fix → 3/3 pass (node --test web/test/unit/settings-heading-631.test.js green).

No defects found — nothing fixed, nothing to rework.

Independent review — APPROVED (no fix commit needed; branch left at 174115d). Issue #631 acceptance, all verified: - Exact class string is `<h2 class="sr-only">Settings</h2>` (Settings.jsx:1840); `mb-3`/`text-lg`/`font-semibold` gone from the page head. - Word-diff origin/main..fix/issue-631 on Settings.jsx shows ONLY the h2 line swap + the 4-line Forgejo #631 comment — no other layout change; the `flex flex-col gap-4 lg:flex-row lg:gap-6` row and `nav.min-w-0.shrink-0.lg:w-56` are byte-identical, so sidebar-nav-top/content-top alignment holds at desktop and 390px by construction (no responsive class touched; `sr-only` is position:absolute/1px/clipped at all widths, zero in-flow box — the old band was purely the h2's line box + mb-3). The JSX `{/* */}` comment compiles to no DOM node, so it cannot reintroduce spacing. - `sr-only` survives the shipped build: `web/dist/assets/index-*.css` contains `.sr-only{clip-path:inset(50%);...position:absolute...}`; it is a Tailwind v4 core utility already used in Repos/Release/Org/Commit, so no purge/config risk. - Document outline kept: h2 with text "Settings" still present. - No test pinned the old visual heading: sweep of web/test for `mb-3 text-lg` / Settings-h2 assertions finds only the new test (other h2 pins are unrelated card-header idioms). - Mobile unaffected per above (width-independent utility, flex row untouched). - Law 12: docs/go/12_web_ui.md amendment appended in the same change. Law 1: ui.css and package.json untouched (no settings-page selectors, no new deps). - New test fails pre-fix: checked out origin/main Settings.jsx under the new test → test 1 fails ERR_ASSERTION as expected; restored fix → 3/3 pass (node --test web/test/unit/settings-heading-631.test.js green). No defects found — nothing fixed, nothing to rework.
Sign in to join this conversation.
No description provided.