先週、この問題を再度調査し、以下の手順でこのバグを再現することができました。
-
OSをダークモードで使用するように設定します(Windows 11では、設定 → 個人用設定 → 色 → モードを選択 で行います)。
-
Discourseの設定で、通常モードとダークモードで異なる配色を選択し、ページを再読み込みします。
-
これで、UIにはダークモード用に選択した配色が適用されているのが見えるはずですが(予想通り)、
theme-colorメタタグには、本来ダークモードのものになるべきところ、ライトモード用に選択した配色のheader_background色の値が含まれてしまいます。
これは修正が少し難しいです。なぜなら、サーバーサイド(メタタグがすべてレンダリングされる場所)では、クライアント/ブラウザがライトモードまたはダークモードの配色を使用するかどうかのコンテキストがないからです。私たちは単にライトモードとダークモードの両方の配色定義を含めるだけで、クライアント/ブラウザはprefers-color-schemeメディアクエリに従ってユーザーの設定に一致するものを選びます。
しかし、theme-colorメタタグはmedia属性を受け付けるようなので(https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta/name/theme-color)、ダークモード用の別のtheme-colorメタタグをmediaを(prefers-color-scheme: dark)に設定して含めることができるはずです。今週中にこれを完了するようにします。