1a95a5f2cb
CI / changes (pull_request) Successful in 2s
CI / unit (pull_request) Successful in 10s
CI / integration (pull_request) Successful in 18s
CI / ui (pull_request) Successful in 1m11s
CI / conformance (pull_request) Successful in 9s
CI / gate (pull_request) Successful in 0s
CI / deploy (pull_request) Successful in 1m43s
Migrate the former install-only public/sw.js to a custom (injectManifest)
service worker built from ui/src/sw.ts by vite-plugin-pwa. It precaches the
app shell + hashed assets (Workbox) so an installed web PWA cold-launches with
no network, and falls in-scope navigations back to the precached shell (the
hash router resolves the route client-side). This is the C1 prerequisite for a
usable offline mode: without it a cold offline launch cannot load the bundle.
- ui/src/sw.ts: skipWaiting + clientsClaim + cleanupOutdatedCaches +
precacheAndRoute(__WB_MANIFEST) + a NavigationRoute fallback to index.html,
deny-listing the RPC path and /_gm. The Connect stream and API POSTs are
never precached nor intercepted.
- vite.config.ts: VitePWA(injectManifest); manifest:false (we ship our own),
injectRegister:false (registration stays manual + web-only in pwa.svelte.ts),
disabled in the mock build (Playwright unperturbed); landing + polyfills
excluded from the precache.
- Removed public/sw.js; the registration path (dist/sw.js at /app/) is unchanged.
- New dev deps: vite-plugin-pwa + workbox-{core,precaching,routing}.
Docs: ARCHITECTURE + gateway/README. Offline cold-launch is contour-verified
(the mock e2e harness disables the SW).
42 lines
1.3 KiB
JSON
42 lines
1.3 KiB
JSON
{
|
|
"name": "scrabble-ui",
|
|
"private": true,
|
|
"version": "0.0.0",
|
|
"type": "module",
|
|
"description": "Scrabble game client (plain Svelte 5 + Vite). Talks to the gateway over Connect-RPC + FlatBuffers.",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"start": "vite --mode mock",
|
|
"build": "vite build",
|
|
"preview": "vite preview",
|
|
"check": "svelte-check --tsconfig ./tsconfig.json",
|
|
"codegen": "rm -rf src/gen && flatc --ts -o src/gen/fbs ../pkg/fbs/scrabble.fbs && buf generate ../gateway --template buf.gen.yaml",
|
|
"test:unit": "vitest run",
|
|
"test:watch": "vitest",
|
|
"test:e2e": "playwright test"
|
|
},
|
|
"dependencies": {
|
|
"@bufbuild/protobuf": "^2.12.0",
|
|
"@connectrpc/connect": "^2.1.0",
|
|
"@connectrpc/connect-web": "^2.1.0",
|
|
"@vkontakte/vk-bridge": "^3.0.2",
|
|
"flatbuffers": "^25.9.23"
|
|
},
|
|
"devDependencies": {
|
|
"@bufbuild/protoc-gen-es": "^2.12.0",
|
|
"@playwright/test": "^1.49.0",
|
|
"@sveltejs/vite-plugin-svelte": "^5.0.0",
|
|
"@types/node": "^22.10.0",
|
|
"core-js-bundle": "^3.49.0",
|
|
"svelte": "^5.15.0",
|
|
"svelte-check": "^4.1.0",
|
|
"typescript": "^5.7.0",
|
|
"vite": "^6.0.0",
|
|
"vite-plugin-pwa": "^0.21.2",
|
|
"vitest": "^3.0.0",
|
|
"workbox-core": "^7.4.1",
|
|
"workbox-precaching": "^7.4.1",
|
|
"workbox-routing": "^7.4.1"
|
|
}
|
|
}
|