feature: add manifest and icons to enable app install on android

This commit is contained in:
Jan committed 2026-05-02 19:06:39 +02:00
1 parent 4e0dce9a03
commit 8e2fea6f5d
7 files changed
+32 -1

No files matched your search

+2
View File
@@ -21,6 +21,8 @@ logger = logging.getLogger(__name__)
PUBLIC_PATHS = frozenset({
'/login', '/health', '/favicon.ico',
'/api/auth/login', '/api/auth/status',
'/manifest.json', '/manifest.webmanifest',
'/sw.js',
})
COOKIE_NAME = 'hermes_session'
Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

+18
View File
@@ -0,0 +1,18 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<rect width="512" height="512" rx="96" fill="#1a1a1a"/>
<defs>
<linearGradient id="g" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" style="stop-color:#F5C542;stop-opacity:1"/>
<stop offset="100%" style="stop-color:#D4961C;stop-opacity:1"/>
</linearGradient>
</defs>
<rect x="240" y="80" width="32" height="368" rx="16" fill="url(#g)"/>
<path d="M240 144 C192 112, 112 112, 80 144 C112 128, 176 128, 224 160" fill="#F5C542" opacity="0.9"/>
<path d="M240 176 C208 152, 144 152, 112 176 C144 160, 192 160, 224 192" fill="#D4961C" opacity="0.8"/>
<path d="M272 144 C320 112, 400 112, 432 144 C400 128, 336 128, 288 160" fill="#F5C542" opacity="0.9"/>
<path d="M272 176 C304 152, 368 152, 400 176 C368 160, 320 160, 288 192" fill="#D4961C" opacity="0.8"/>
<path d="M256 384 C176 352, 160 304, 208 272 C160 288, 144 336, 192 368 C144 320, 176 240, 240 224 C192 256, 176 304, 224 336" fill="none" stroke="#F5C542" stroke-width="20" stroke-linecap="round"/>
<path d="M256 384 C336 352, 352 304, 304 272 C352 288, 368 336, 320 368 C368 320, 336 240, 272 224 C320 256, 336 304, 288 336" fill="none" stroke="#D4961C" stroke-width="20" stroke-linecap="round"/>
<circle cx="256" cy="80" r="32" fill="#F5C542"/>
<circle cx="256" cy="80" r="16" fill="#FFF8E1" opacity="0.7"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

+1 -1
View File
@@ -12,7 +12,7 @@
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="apple-mobile-web-app-title" content="Hermes">
<link rel="apple-touch-icon" href="static/favicon.svg">
<link rel="apple-touch-icon" sizes="512x512" href="static/apple-touch-icon.png">
<!-- base href enables subpath mount support; all static paths must stay relative (no leading slash) -->
<script>(function(){var path=location.pathname,marker='/session/',i=path.indexOf(marker),p;i>=0?p=(path.slice(0,i+1)||'/'):p=(path.endsWith('/')?path:(path.replace(/\/[^\/]*$/,'/')||'/'));document.write('<base href="'+location.origin+p+'">');})()</script>
<script>(function(){var themes={light:1,dark:1,system:1},skins={default:1,ares:1,mono:1,slate:1,poseidon:1,sisyphus:1,charizard:1,sienna:1},legacy={slate:['dark','slate'],solarized:['dark','poseidon'],monokai:['dark','sisyphus'],nord:['dark','slate'],oled:['dark','default']},t=(localStorage.getItem('hermes-theme')||'dark').toLowerCase(),s=(localStorage.getItem('hermes-skin')||'').toLowerCase(),m=legacy[t],theme=m?m[0]:(themes[t]?t:'dark'),skin=skins[s]?s:(m?m[1]:'default');localStorage.setItem('hermes-theme',theme);localStorage.setItem('hermes-skin',skin);if(theme==='system')theme=window.matchMedia('(prefers-color-scheme:dark)').matches?'dark':'light';if(theme==='dark')document.documentElement.classList.add('dark');if(skin!=='default')document.documentElement.dataset.skin=skin;})()</script>
+11
View File
@@ -18,6 +18,17 @@
"src": "static/favicon-32.png",
"sizes": "32x32",
"type": "image/png"
},
{
"src": "static/favicon-192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "static/favicon-512.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "any maskable"
}
]
}