From 3ba69bf986f3c984cd1e0f6a8f5220761cd5de83 Mon Sep 17 00:00:00 2001
From: oliver <54379826+ok@users.noreply.github.com>
Date: Sun, 20 Sep 2026 21:50:13 +0200
Subject: [PATCH 1/2] [feat] Give the operator pages a favicon
Both pages declared an empty data: icon, so browser tabs showed
nothing. Use the Mirall M and its orange square from the repo's logo,
inlined as an SVG data URI so it works under any proxy prefix and with
the status page's routes turned off.
---
src/operator/html.js | 13 +++++++++++++
src/operator/members/page.js | 4 ++--
src/operator/status/page.js | 4 ++--
test/unit/admin-ui.test.js | 14 ++++++++++++++
4 files changed, 31 insertions(+), 4 deletions(-)
diff --git a/src/operator/html.js b/src/operator/html.js
index d97597b..3bc5f3a 100644
--- a/src/operator/html.js
+++ b/src/operator/html.js
@@ -11,3 +11,16 @@ export function escapeHtml (value) {
export function plain (value, fallback = '—') {
return value === null || value === undefined || value === '' ? fallback : escapeHtml(value)
}
+
+// The Mirall "M" and its orange square, from docs/media/logo-*.svg, on a dark tile
+// so it reads on light and dark tab strips alike. Inlined as a data: URI rather
+// than served: both pages live under different prefixes behind platform proxies,
+// MIRALL_RELAY_ADMIN_UI=false removes the status page's routes, and the CSP
+// already allows data: images.
+const FAVICON_SVG = "'
+
+export const FAVICON_LINK = ``
diff --git a/src/operator/members/page.js b/src/operator/members/page.js
index 4beb928..f555c62 100644
--- a/src/operator/members/page.js
+++ b/src/operator/members/page.js
@@ -15,7 +15,7 @@
// without one — a and a