На прошлой неделе я ещё раз изучил эту проблему и смог воспроизвести баг следующими шагами:
-
Настройте вашу ОС на использование тёмной темы (в Windows 11 это делается в разделе Параметры → Персонализация → Цвета → Выбор режима).
-
В ваших настройках Discourse выберите разные цветовые схемы для обычного и тёмного режимов, затем перезагрузите страницу.
-
Теперь вы должны увидеть, что выбранная для тёмного режима цветовая схема применилась в интерфейсе (как и ожидалось), однако мета-тег
theme-colorбудет содержать значениеheader_backgroundиз цветовой схемы, выбранной для светлого режима, хотя должно быть значение из тёмной схемы.
Исправить это немного сложно, поскольку на стороне сервера — где и рендерятся все мета-теги — у нас нет контекста относительно того, какую цветовую схему (светлую или тёмную) будет использовать клиент/браузер. Мы просто включаем определения цветов для обеих схем, а затем клиент/браузер выбирает ту, которая соответствует предпочтениям пользователя в соответствии с медиа-запросом prefers-color-scheme.
Однако, похоже, что мета-тег theme-color поддерживает атрибут media, поэтому мы должны иметь возможность добавить ещё один мета-тег theme-color для тёмной схемы с атрибутом media, установленным в (prefers-color-scheme: dark). Я постараюсь реализовать это на этой неделе.