Task 8fa0d0bd-4a52-4f09-ba68-41bdbdfda63b. Precache shell/JS/CSS/fonts, NetworkFirst for plan/shopping/dinners/home, CacheFirst for media and fonts, NetworkOnly for auth, settings, jobs, and non-GET. Route matching is a pure module with tests. Workbox packages are the ones already installed by vite-plugin-pwa; no new direct dependency was added.
Task 8fa0d0bd-4a52-4f09-ba68-41bdbdfda63b. Precache shell/JS/CSS/fonts, NetworkFirst for plan/shopping/dinners/home, CacheFirst for media and fonts, NetworkOnly for auth, settings, jobs, and non-GET. Route matching is a pure module with tests. Workbox packages are the ones already installed by vite-plugin-pwa; no new direct dependency was added.
Precache the shell, JS, CSS and self-hosted fonts in
mealquest-precache-v1. Route every other request through the pure
src/sw/routes.ts decision: NetworkFirst (3 s timeout) for plans,
shopping, dinners and home; CacheFirst with expiration for /media/* and
font files; NetworkOnly for /auth/*, settings, jobs and every non-GET.
App navigations fall back to the precached index.html offline. On
activate, delete only stale caches named mealquest-*.
Maestro task: 8fa0d0bd-4a52-4f09-ba68-41bdbdfda63b
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Register the font route ahead of precacheAndRoute so a font fetch uses
CacheFirst with its ExpirationPlugin instead of being answered by the
precache route. Fonts stay in the precache manifest; when the network
fails and the runtime cache has no copy, the font comes from the
precache. Source tests pin the expiration plugin, the precache fallback
and the route order.
Read the injected precache list in the production-build test as JSON
and assert the index.html entry's revision there, so it no longer
depends on matching the minified sw.js with a regex.
Maestro task: 8fa0d0bd-4a52-4f09-ba68-41bdbdfda63b
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Offline navigations to /%61uth/login or /%61pi/v1/settings/household
missed the reserved prefixes and were answered with the precached
index.html. routeFor now percent-decodes the pathname and checks reserved
prefixes before and after dot segments are resolved, as the server does;
a malformed encoding is network-only.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
{"verdict":"APPROVED","reviewed_sha":"9a5d0a79120aa63bcb7c8235cafef20ccabecc7c","summary":"No blocking issue found. Route checks cover encoded auth and settings paths, cache cleanup is limited to mealquest-* caches, and the precache configuration includes fonts. No direct dependency was added, though importing transitive Workbox packages is fragile if vite-plugin-pwa or the install layout changes. lint:colors passed. Typecheck, tests, and build could not be run because web/node_modules is absent; no packages were installed.","findings":[]}
Posted unaltered by review_agent. This is transport, not a second review.
## Independent review — Codex `gpt-6-sol`, reasoning high
Verdict: **APPROVED**
Reviewed SHA: `9a5d0a79120aa63bcb7c8235cafef20ccabecc7c`
```json
{
"verdict": "APPROVED",
"reviewed_sha": "9a5d0a79120aa63bcb7c8235cafef20ccabecc7c",
"summary": "No blocking issue found. Route checks cover encoded auth and settings paths, cache cleanup is limited to mealquest-* caches, and the precache configuration includes fonts. No direct dependency was added, though importing transitive Workbox packages is fragile if vite-plugin-pwa or the install layout changes. lint:colors passed. Typecheck, tests, and build could not be run because web/node_modules is absent; no packages were installed.",
"findings": []
}
```
---
Posted unaltered by `review_agent`. This is transport, not a second review.
approver_agent
merged commit 21b2672d40 into feature/ea4f47b4-6f1e-4735-a33e-6e91bf092564-pwa-shell2026-10-04 16:36:44 -04:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Task 8fa0d0bd-4a52-4f09-ba68-41bdbdfda63b. Precache shell/JS/CSS/fonts, NetworkFirst for plan/shopping/dinners/home, CacheFirst for media and fonts, NetworkOnly for auth, settings, jobs, and non-GET. Route matching is a pure module with tests. Workbox packages are the ones already installed by vite-plugin-pwa; no new direct dependency was added.
Independent review — Codex
gpt-6-sol, reasoning highVerdict: APPROVED
Reviewed SHA:
9a5d0a79120aa63bcb7c8235cafef20ccabecc7cPosted unaltered by
review_agent. This is transport, not a second review.