Installable as an app #72

Merged
jcoffey-dev merged 1 commits from feature/pwa into main 2026-09-30 17:23:07 +00:00
6 changed files with 41 additions and 0 deletions

No files matched your search

+9
View File
@@ -10,6 +10,15 @@
keeps its name, and a favicon is held longer than anything else. Bump it
(date + letter, never a counter) whenever public/favicon.ico changes. -->
<link rel="icon" type="image/x-icon" href="favicon.ico?v=2026-09-27a" />
<link rel="apple-touch-icon" href="img/apple-touch-icon.png?v=2026-09-27a" />
<!-- Installable: relative to <base>, which the server rewrites per mount, so
/admin and /account each install as their own app. No service worker on
purpose: installing no longer needs one, and an admin console has nothing
to do offline -- a cached shell would only pin a stale build. -->
<link rel="manifest" href="manifest.json" />
<meta name="theme-color" content="#0d8a82" />
<meta name="mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-title" content="inbuxa Admin" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>inbuxa Admin</title>
</head>
Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

+32
View File
@@ -0,0 +1,32 @@
{
"name": "inbuxa Admin",
"short_name": "inbuxa Admin",
"description": "Administration for the inbuxa mail server",
"_comment": "JSON has no comments, so: every URL below is relative on purpose. The server mounts this one bundle at /admin and at /account, and manifest members resolve against the manifest's own address, so each mount installs as its own app with nothing substituted at build time. It is .json rather than .webmanifest because the server's bundle loader types files by extension and knows json but not webmanifest.",
"_comment_id": "There is deliberately no `id`. The spec resolves it against the origin of start_url rather than this file, so it cannot name a mount; the default id is start_url, which already can. Adding one later gives every installed copy a new identity and orphans it.",
"start_url": "./",
"scope": "./",
"display": "standalone",
"orientation": "any",
"categories": ["productivity", "utilities"],
"background_color": "#fbfaf7",
"theme_color": "#0d8a82",
"icons": [
{
"src": "img/icon-192.png?v=2026-09-27a",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "img/icon-512.png?v=2026-09-27a",
"sizes": "512x512",
"type": "image/png"
},
{
"src": "img/icon-maskable.png?v=2026-09-27a",
"sizes": "192x192",
"type": "image/png",
"purpose": "maskable"
}
]
}