From 24e822645cdf3de56f8a1d3c91dbe888320e31de Mon Sep 17 00:00:00 2001 From: Egor Date: Wed, 21 Jan 2026 12:04:45 -0800 Subject: [PATCH] adding manifest, app theme color is now 8159b8 from favicon --- server/index.ts | 6 ++++++ server/public/admin.css | 4 ++-- server/public/admin.html | 9 +++++++-- server/public/icon-512.webp | Bin 0 -> 24712 bytes server/public/manifest.json | 23 +++++++++++++++++++++++ server/routes/admin.ts | 5 ++++- 6 files changed, 42 insertions(+), 5 deletions(-) create mode 100644 server/public/icon-512.webp create mode 100644 server/public/manifest.json diff --git a/server/index.ts b/server/index.ts index ef2d971..086ab02 100644 --- a/server/index.ts +++ b/server/index.ts @@ -42,6 +42,12 @@ const server = Bun.serve({ '/favicon.webp': { GET: () => new Response(Bun.file(`${PUBLIC_DIR}/favicon.webp`)), }, + '/icon-512.webp': { + GET: () => new Response(Bun.file(`${PUBLIC_DIR}/icon-512.webp`)), + }, + '/manifest.json': { + GET: () => new Response(Bun.file(`${PUBLIC_DIR}/manifest.json`)), + }, '/htmx.js': { GET: async (req) => maybeCompress(req, await Bun.file(`${PUBLIC_DIR}/htmx.min.js`).text(), 'text/javascript'), diff --git a/server/public/admin.css b/server/public/admin.css index b7cb953..50bbac9 100644 --- a/server/public/admin.css +++ b/server/public/admin.css @@ -164,7 +164,7 @@ h2 { .link-button { display: inline-block; padding: 0.625rem 1.25rem; - background: #007bff; + background: #8159b8; color: white; text-decoration: none; border-radius: 0.25rem; @@ -174,7 +174,7 @@ h2 { } .link-button:hover { - background: #0056b3; + background: #6b4a99; } .loading { diff --git a/server/public/admin.html b/server/public/admin.html index 1fa3159..8a4681e 100644 --- a/server/public/admin.html +++ b/server/public/admin.html @@ -4,7 +4,9 @@ SUP Admin + + @@ -22,10 +24,13 @@

Signal

+ hx-trigger="load, accountLinked from:body"> Loading...
-
+
diff --git a/server/public/icon-512.webp b/server/public/icon-512.webp new file mode 100644 index 0000000000000000000000000000000000000000..c6be5f355b092c56335dfdd82542dd13f6432bf0 GIT binary patch literal 24712 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 bXw%LE+5i9m03W5(#Q*>R0000000000pSz9P literal 0 HcmV?d00001 diff --git a/server/public/manifest.json b/server/public/manifest.json new file mode 100644 index 0000000..4672719 --- /dev/null +++ b/server/public/manifest.json @@ -0,0 +1,23 @@ +{ + "name": "SUP Admin", + "short_name": "SUP", + "description": "Signal Unified Push Admin Panel", + "start_url": "/", + "display": "standalone", + "background_color": "#1a1a1a", + "theme_color": "#8159b8", + "icons": [ + { + "src": "/favicon.webp", + "sizes": "32x32", + "type": "image/webp", + "purpose": "any" + }, + { + "src": "/icon-512.webp", + "sizes": "512x512", + "type": "image/webp", + "purpose": "any maskable" + } + ] +} diff --git a/server/routes/admin.ts b/server/routes/admin.ts index 5484949..b0198a2 100644 --- a/server/routes/admin.ts +++ b/server/routes/admin.ts @@ -35,7 +35,10 @@ export const handleHealthFragment = async () => { `; return new Response(html, { - headers: { 'content-type': 'text/html' }, + headers: { + 'content-type': 'text/html', + 'HX-Trigger': linked ? 'accountLinked' : '', + }, }); };