Add the web app manifest, icons and service worker via vite-plugin-pwa
CI / ci (push) Successful in 1m34s
Independent review Codex gpt-6-sol high: APPROVED (0 findings)
CI / ci (pull_request) Successful in 1m36s

vite-plugin-pwa runs in injectManifest mode over a minimal src/sw.ts that
caches the injected precache list on install. The manifest lives in
web/manifest.json (MealQuest, standalone at /, Grape theme over the page
background) with 192, 512 and maskable 512 PNG icons and a 180 px
apple-touch-icon, all generated from design/logos/logo_v1_2Oct2026.jpg by
web/scripts/generate-icons.py.

The plugin links the manifest and adds the registerSW.js script only in
production builds. src/pwa.test.ts builds and previews the app to assert
the shipped manifest, sw.js, icon sizes and registration, and checks that
the dev server registers nothing.

Maestro task: 58b74786-937a-45a5-850f-7913273beba2

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-04 16:12:18 -04:00
co-authored by Claude Opus 5.5
parent d80012a821
commit 46cc7500de
14 changed files with 5488 additions and 4 deletions
+3 -2
View File
@@ -5,9 +5,9 @@
"type": "module",
"scripts": {
"dev": "vite",
"build": "npm run lint:colors && tsc --noEmit && vite build && npm run check:dist-fonts",
"build": "npm run lint:colors && npm run typecheck && vite build && npm run check:dist-fonts",
"preview": "vite preview",
"typecheck": "tsc --noEmit",
"typecheck": "tsc --noEmit && tsc --noEmit -p tsconfig.sw.json",
"test": "npm run lint:colors && vitest run",
"lint:colors": "node scripts/lint-colors.mjs",
"check:dist-fonts": "node scripts/check-dist-fonts.mjs"
@@ -29,6 +29,7 @@
"jsdom": "^30.1.1",
"typescript": "^7.0.2",
"vite": "^8.3.2",
"vite-plugin-pwa": "^2.0.0",
"vitest": "^5.0.3"
}
}