feat(phase3): PWA, auto-discovery, bookmarklet, multi-tab sync

- PWA: manifest, service worker (cache-first static, network-first API),
  offline page, install prompt banner
- Auto-discovery: Docker socket + Traefik API scanning, approval UI
- Quick-add bookmarklet: popup-based add page, favicon auto-detect
- Multi-tab sync: BroadcastChannel for theme + data changes
- i18n translations for all new strings (EN/RU)
This commit is contained in:
2026-03-25 00:59:19 +03:00
parent c6a7de895d
commit dd6958b4d6
28 changed files with 1712 additions and 266 deletions
+7
View File
@@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<rect width="512" height="512" rx="64" fill="#6366f1"/>
<rect x="64" y="64" width="160" height="160" rx="16" fill="white"/>
<rect x="288" y="64" width="160" height="160" rx="16" fill="white"/>
<rect x="64" y="288" width="160" height="160" rx="16" fill="white"/>
<rect x="288" y="288" width="160" height="160" rx="16" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 412 B

+25
View File
@@ -0,0 +1,25 @@
{
"name": "Web App Launcher",
"short_name": "Launcher",
"start_url": "/",
"display": "standalone",
"theme_color": "#6366f1",
"background_color": "#0a0a0a",
"icons": [
{
"src": "/icon.svg",
"sizes": "any",
"type": "image/svg+xml"
},
{
"src": "/icon-192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/icon-512.png",
"sizes": "512x512",
"type": "image/png"
}
]
}