Add installable PWA (Option A — iPhone-first, no service worker)

Make the app installable to the iOS home screen and launch standalone
(full-screen, no browser chrome, dark status bar). Add manifest.webmanifest,
square app icons (ten31-app-icon.svg -> 192/512/apple-touch-icon), the
apple-mobile-web-app + manifest <head> tags, viewport-fit=cover, and a
pre-auth /manifest.webmanifest route. No service worker by design.
This commit is contained in:
Keysat
2026-06-20 08:42:29 -05:00
parent 81ed6cbbab
commit 0490910687
10 changed files with 78 additions and 5 deletions
+14 -1
View File
@@ -2,10 +2,23 @@
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- viewport-fit=cover lets env(safe-area-inset-*) return real values on notched
iPhones, so the bottom tab bar's existing safe-area padding actually clears the
home indicator when launched as a standalone PWA. -->
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
<title>Ten31 database</title>
<link rel="icon" type="image/png" href="/assets/ten31-inverted-square.png">
<link rel="shortcut icon" href="/assets/ten31-inverted-square.png">
<!-- PWA: home-screen install + standalone (full-screen, no browser chrome). iOS-first,
no service worker (see ROADMAP "Mobile PWA"). theme_color = the brand base #0b1118
reserved in design/tokens.tokens.json. iOS status bar is solid black (not
translucent) so content never slides under the notch. -->
<link rel="manifest" href="/manifest.webmanifest">
<meta name="theme-color" content="#0b1118">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-title" content="Ten31">
<link rel="apple-touch-icon" href="/assets/apple-touch-icon.png">
<!-- Vendored + SRI-pinned (v0.1.0:82). These ship inside the s9pk and are served
same-origin from /assets/vendor/, so a CDN can never swap our prod deps (the
v78/v79 blank-screen class) and the box needs no outbound internet to render.