Skip to content

🚀 Release: 1.10.0#525

Merged
jbourdin merged 7 commits intomainfrom
release/1.10.0
May 6, 2026
Merged

🚀 Release: 1.10.0#525
jbourdin merged 7 commits intomainfrom
release/1.10.0

Conversation

@jbourdin
Copy link
Copy Markdown
Owner

@jbourdin jbourdin commented May 6, 2026

Summary

Minor release — OS-preference dark theme.

  • F20.1 — auto dark mode following prefers-color-scheme on both the default and expandedtalks channel themes. Bootstrap 5.3 + Mantine 8 native dark mode wired up via an inline <head> bridge script; all 17 React island entry points now share a single <AppMantineProvider defaultColorScheme="auto">.
  • Bootstrap component dark fix — explicit [data-bs-theme="dark"] overrides on .card, .dropdown-menu, .modal-content, .popover, .list-group, .table, .alert, .form-control, .form-select so surfaces flip with the OS instead of staying white.
  • Docs — drop milestone-based planning guidance from CLAUDE.md and docs/roadmap.md.

Closes #521.

Test plan

  • CI green on this PR.
  • Toggle macOS dark/light with https://expandeddecks.wip and https://expandedtalks.wip open — body, cards, dropdowns, modals, forms, tables, and Mantine popovers all flip without a refresh and without a flash.
  • AA contrast spot-check on a dark page per theme.

jbourdin and others added 7 commits May 3, 2026 23:38
Phase milestones exist in the repo but are not used as a planning
structure. Drop the milestone instructions from CLAUDE.md (issue
creation + board ordering) and remove the Milestones (Phases) section
from docs/roadmap.md. The kanban project board remains the source of
truth for prioritization.
📝 Docs: drop milestone-based planning guidance
Add a dark theme variant that auto-follows the OS prefers-color-scheme
setting on both the default and expandedtalks channel themes. Strictly
auto: no manual override, no user toggle, no persistence.

- Inline <head> bridge script in base.html.twig mirrors prefers-color-scheme
  onto data-bs-theme and data-mantine-color-scheme before first paint and
  reacts to live OS toggles. Bootstrap 5.3 and Mantine 8 read these
  attributes natively.
- Custom palette ($ed-navy/$ed-blue/$ed-gold/$ed-red/$ed-bg) mirrored as
  --ed-* CSS custom properties with [data-bs-theme="dark"] overrides so
  selectors that should react to the scheme can use var(--ed-*).
- Dark-mode rules for the few custom surfaces whose light recipe (rgba navy
  on white) doesn't translate: hero-pokemon, card-header-themed, table-themed
  thead, cms-content blockquote, rich-text tables, badges.
- Same dark-mode override block in themes/expandedtalks/_overrides.scss for
  the channel theme.
- Centralized Mantine provider via assets/components/AppMantineProvider.tsx
  with defaultColorScheme="auto" so all 17 React island entry points share
  one config and switch with the OS.
- Document F20 — Theming family and F20.1 in docs/features.md.
The compile-time SCSS overrides at the top of app.scss ($card-bg: #fff,
$card-border-color: #ddd, $card-cap-bg: #f7f7f7, $table-striped-bg)
get burned into Bootstrap's component selectors as
`.card { --bs-card-bg: #fff }`, which has higher specificity than
`:root[data-bs-theme="dark"]`. Bootstrap's native dark mode for those
surfaces never fires, so cards stay white in dark mode while body text
adapts to light gray — light text on a white card is invisible.

Re-declare the affected CSS custom properties on the component selectors
(.card, .dropdown-menu, .modal-content, .popover, .list-group, .table,
.alert, .form-control, .form-select) under [data-bs-theme="dark"] so the
dark variant takes priority. Also point the themed card header active tab
to var(--bs-card-bg) instead of var(--bs-body-bg) so the active tab sits
flush with the (now-dark) card body.
…ference

✨ Feat: F20.1 — dark theme following OS preference
@jbourdin jbourdin merged commit 3e5923e into main May 6, 2026
5 checks passed
@jbourdin jbourdin deleted the release/1.10.0 branch May 6, 2026 07:30
@sentry
Copy link
Copy Markdown

sentry Bot commented May 6, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

F20.1 — Dark theme following OS preference

1 participant