Skip to content

feat(status-pages): themeable public page with a live editor preview - #1938

Merged
Makisuo merged 13 commits into
status-pages/5-webfrom
status-pages/6-theme
Oct 31, 2026
Merged

Makisuo merged 13 commits into
status-pages/5-webfrom
status-pages/6-theme

fix(status-pages): partial theme edits merge under the row lock, and …

6241ed0
Select commit
Loading
Failed to load commit list.
Maple Review Bot / Maple / review completed Oct 31, 2026 in 2m 9s

Confidence 6/10 · 2 issues to address

🟡 Confidence 6/10 · needs attention. Held at 6 because a correctness warning is open.
2 warnings −2 · 1 note · tests covered · risk high −1 · 4 defects fixed in earlier rounds

Replaces brand_color with a full page theme (preset, appearance, hex overrides, radius, font), validated to WCAG AA, and adds an Appearance editor with a live preview of the real public page. The card-contrast and partial-PATCH defects from the earlier review are fixed and pinned by tests; safe to merge.

["F6", "F7"]

  • theme replaces brand_color in the table, v2 API and snapshot, with a decoding default for old snapshots
  • themeContrastIssue refuses text or status colours under 4.5:1 on the background and cards
  • StatusPagesService.update merges a partial theme under a FOR UPDATE row lock
  • The editor renders the public page in a script-less sandbox="" iframe

Before merge

Still open from earlier reviews

What was checked
  • Ran the WCAG maths over all four presets: worst status pair is 4.60:1, so no preset is unsaveable
  • themeContrastIssue now checks ok/degraded/partial/major/maint against both bg and card (packages/domain/src/status-page.ts:424)
  • forUpdate() is an existing effect-orm builder method (AlertsService.ts:711); the merge reads after the lock

6241ed0 · Reply "won't fix" to dismiss a finding, or mention @maple-review-bot to ask about one.