feat(pwa): installable web app + landing web entry #184
Reference in New Issue
Block a user
Delete Branch "feature/pwa-install-cta"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Makes the web SPA an installable PWA and surfaces it to users.
What
ui/public/manifest.webmanifest, an install-only service worker (ui/public/sw.js), and 192/512/maskable icons generated from the brand tile; PWA head tags inindex.html; the.webmanifestMIME type registered in the gateway (distroless has no/etc/mime.types).components/InstallApp.svelte+lib/pwa): one-tap on Chromium, manual Add-to-Home-Screen instructions on iOS Safari, hidden elsewhere / once installed / inside a Mini App. Shown under the logged-out login card and at the bottom of Settings./app/(the brand tile), with a caption under all three (Telegram / VK / Веб-версия).Feasibility note
One-tap install (
beforeinstallprompt) is Chromium-only. iOS Safari has no programmatic install (manual Share → Add to Home Screen only); Firefox has none on desktop. The CTA adapts per platform accordingly.Safety
The service worker is navigation-only (network-first, cached-shell fallback); hashed assets and the Connect stream are untouched. Registered web-only (skipped in Mini Apps and the mock build). It is the single growth point for a future opt-in offline mode (documented in ARCHITECTURE §13).
Tests
pwa.tsunit tests; awebuiprobe (manifest/sw.js content-type + the SPA-fallback-to-HTML trap); e2e for the one-tap CTA, the iOS instructions modal and the landing web entry. Local:pnpm check+test:unit+buildgreen;go build/vet/test ./gateway/...+gofmtclean.Review on the contour
/app/.990cb4a68dto51147a1429