Current state
The web app cannot be installed as a PWA (no standalone window). It has zero PWA support — no manifest.json, no <link rel="manifest">, no theme-color/apple-touch-icon (the marketing site has some; the app doesn't).
Build facts
expo export --platform web with Metro; apps/ui/public/ is copied verbatim to the dist root.
apps/ui/sources/app/+html.tsx is the only <head> injection point.
- nginx serving needs no changes.
Proposed shape
apps/ui/public/manifest.json — name, short_name, icons, display: standalone, start_url, theme/background colors matching the existing dark-canvas handling in +html.tsx.
- Icon PNGs (192/512 + maskable) derived from
sources/assets/images/icon.png.
<link rel="manifest">, <meta name="theme-color">, <link rel="apple-touch-icon"> in +html.tsx.
Out of scope
Service worker / offline support.
Acceptance
- Exported dist contains the manifest + head tags.
- Installability check passes in Chrome devtools/Lighthouse; installed app opens in a standalone window.
Reported by @hubikj; investigation and this write-up produced with Claude (AI). Code references checked against the dev tip as of 2026-08-11.
Current state
The web app cannot be installed as a PWA (no standalone window). It has zero PWA support — no
manifest.json, no<link rel="manifest">, notheme-color/apple-touch-icon(the marketing site has some; the app doesn't).Build facts
expo export --platform webwith Metro;apps/ui/public/is copied verbatim to the dist root.apps/ui/sources/app/+html.tsxis the only<head>injection point.Proposed shape
apps/ui/public/manifest.json— name, short_name, icons,display: standalone,start_url, theme/background colors matching the existing dark-canvas handling in+html.tsx.sources/assets/images/icon.png.<link rel="manifest">,<meta name="theme-color">,<link rel="apple-touch-icon">in+html.tsx.Out of scope
Service worker / offline support.
Acceptance
Reported by @hubikj; investigation and this write-up produced with Claude (AI). Code references checked against the
devtip as of 2026-08-11.