Settings → Notifications: "Per campaign" is an h2 (#1360) #1362

Merged
claude-bot merged 1 commit from fix/1360-heading-order into main 2026-11-07 01:50:52 +00:00
Collaborator

Closes #1360. axe reported heading-order (moderate) on /profile/notifications: the page went from its h1 ("Notifications") straight to an h3 ("Per campaign").

  • Notifications.jsx: <h3>Per campaign</h3> becomes <h2>.
  • It looks the same:
    • ui/Doc/Doc.css's .sec > h2 already sets font-size: var(--step-2) (the h3 size) and margin-bottom: var(--sp-3) (as You.css gave the h3);
    • You.css now gives .nbox + h2 the same top space as .nbox + h3.
  • Changelog: changelog.d/1360-notifications-heading.fixed.md.

Checks (docker-test, committed code):

  • eslint is clean, and Notifications.test.jsx plus ui/NotifyGrid pass (24).
  • Not done yet: a render check, to confirm the look is unchanged and axe is clean. I'll do it after the Pathbuilder frontend's render run, so the two don't share the journeys stack.

Profile also has h3s (Away, Other accounts, Download your data first), but axe didn't flag those pages in the earlier runs, and they may sit under section headings that render as h2. The render check will look there too.

🤖 Generated with Claude Code

Closes #1360. axe reported `heading-order` (moderate) on `/profile/notifications`: the page went from its `h1` ("Notifications") straight to an `h3` ("Per campaign"). - `Notifications.jsx`: `<h3>Per campaign</h3>` becomes `<h2>`. - **It looks the same:** - `ui/Doc/Doc.css`'s `.sec > h2` already sets `font-size: var(--step-2)` (the h3 size) and `margin-bottom: var(--sp-3)` (as `You.css` gave the h3); - `You.css` now gives `.nbox + h2` the same top space as `.nbox + h3`. - **Changelog:** `changelog.d/1360-notifications-heading.fixed.md`. **Checks (docker-test, committed code):** - eslint is clean, and `Notifications.test.jsx` plus `ui/NotifyGrid` pass (24). - **Not done yet:** a render check, to confirm the look is unchanged and axe is clean. I'll do it after the Pathbuilder frontend's render run, so the two don't share the journeys stack. Profile also has `h3`s (Away, Other accounts, Download your data first), but axe didn't flag those pages in the earlier runs, and they may sit under section headings that render as `h2`. The render check will look there too. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
fix(webapp): Notifications' "Per campaign" is an h2, not an h3 under the h1 (#1360)
All checks were successful
CI / Summarisation accuracy eval harness (stub provider) (pull_request) Successful in 52s
CI / Bot/backend version sync (pull_request) Successful in 47s
CI / Which journeys does this change need? (pull_request) Successful in 20s
CI / Does this change touch the recording path? (pull_request) Successful in 20s
CI / Synthetic session harness (no GPU, no LLM) (pull_request) Has been skipped
CI / Backend lint (ruff) (pull_request) Successful in 58s
CI / Feedback site tests (pull_request) Successful in 3m45s
CI / Bot tests and audit (pull_request) Successful in 4m38s
CI / Frontend (shard 2/2) (pull_request) Successful in 8m9s
CI / Docker image build (pull_request) Successful in 7m48s
CI / Frontend (shard 1/2) (pull_request) Successful in 11m30s
CI / End-to-end journeys (desktop) (pull_request) Successful in 11m28s
CI / Backend migration, tests, and audit (pull_request) Successful in 36m43s
b4fc2736ee
axe heading-order (moderate) on /profile/notifications: the page went
from its h1 straight to an h3. `.sec > h2` already gives an h2 the same
size as the h3 had, and You.css now gives it the same space above.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Author
Collaborator

Render check (journeys stack, Priya, 2026-11-07):

  • axe: no violations on /profile/notifications (390 light and dark, 1280 light) or /profile (390, 1280). heading-order is gone.
  • Outline: notifications is now h1 Notifications → h2 Per campaign. Profile was already in order (h1 Profile → h2 sections → h3 Away, Other accounts, Download your data first). The other h3s are closed dialogs.
  • Looks the same: "Per campaign" (h2) computes to 22 px Unbounded 600, 32 px above and 12 px below, the same as the h3 "Away".
  • No sideways overflow and 0 console errors.

"Download your data first" has 12 px above it on purpose: it opens its section straight under the h2 ("a section that opens on a sub-heading has the section's own air above it already", in You.css). Ready to merge.

**Render check (journeys stack, Priya, 2026-11-07):** - **axe:** no violations on `/profile/notifications` (390 light and dark, 1280 light) or `/profile` (390, 1280). `heading-order` is gone. - **Outline:** notifications is now h1 Notifications → h2 Per campaign. Profile was already in order (h1 Profile → h2 sections → h3 Away, Other accounts, Download your data first). The other h3s are closed dialogs. - **Looks the same:** "Per campaign" (h2) computes to 22 px Unbounded 600, 32 px above and 12 px below, the same as the h3 "Away". - **No sideways overflow** and **0 console errors**. "Download your data first" has 12 px above it on purpose: it opens its section straight under the h2 ("a section that opens on a sub-heading has the section's own air above it already", in `You.css`). Ready to merge.
Sign in to join this conversation.
No description provided.