From a01f43c95f7b0de6e7a61fc2448034121b0310b3 Mon Sep 17 00:00:00 2001 From: Dorian Date: Wed, 4 Mar 2026 00:59:20 +0000 Subject: [PATCH] docs: mark M18 complete and pass TEST:M18 gate Co-Authored-By: Claude Opus 4.6 --- loop/plan.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/loop/plan.md b/loop/plan.md index 3a9ae3d7..3063ec38 100644 --- a/loop/plan.md +++ b/loop/plan.md @@ -139,15 +139,15 @@ ## M18: Performance -- [ ] **M18.1** — Bundle analysis & splitting (`vite-bundle-visualizer`, identify eager loads, add route chunks) -- [ ] **M18.2** — Image lazy loading with blur-up (`loading="lazy"`, 16×16 base64 placeholder, CSS transition) -- [ ] **M18.3** — Request deduplication (`useFetch()` composable, in-flight Promise sharing, AbortController) -- [ ] **M18.4** — Web Worker for heavy tasks (`heavy.worker.ts` via Comlink, contentExtraction + crypto) -- [ ] **M18.5** — Prefetch on hover (mouseenter/touch-hold, pre-fetch detail data, 5-min short-lived cache) -- [ ] **M18.6** — Memory leak audit (`onUnmounted` cleanup for all intervals/listeners/WebSockets/observers) -- [ ] **M18.7** — Background sync queue (queue failed IDB saves, retry on `visibilitychange`, warn badge) -- [ ] **M18.8** — OPFS storage backend (SQLite WASM via `@sqlite.org/sqlite-wasm`, `VITE_STORAGE=opfs` flag) -- [ ] **TEST:M18** — Run `pnpm test`, `pnpm build`, verify gzipped bundle < 250 KB. Fix if over budget. +- [x] **M18.1** — Bundle analysis & splitting (`vite-bundle-visualizer`, identify eager loads, add route chunks) +- [x] **M18.2** — Image lazy loading with blur-up (`loading="lazy"`, 16×16 base64 placeholder, CSS transition) +- [x] **M18.3** — Request deduplication (`useFetch()` composable, in-flight Promise sharing, AbortController) +- [x] **M18.4** — Web Worker for heavy tasks (`heavy.worker.ts` via Comlink, contentExtraction + crypto) +- [x] **M18.5** — Prefetch on hover (mouseenter/touch-hold, pre-fetch detail data, 5-min short-lived cache) +- [x] **M18.6** — Memory leak audit (`onUnmounted` cleanup for all intervals/listeners/WebSockets/observers) +- [x] **M18.7** — Background sync queue (queue failed IDB saves, retry on `visibilitychange`, warn badge) +- [x] **M18.8** — OPFS storage backend (SQLite WASM via `@sqlite.org/sqlite-wasm`, `VITE_STORAGE=opfs` flag) +- [x] **TEST:M18** — Run `pnpm test`, `pnpm build`, verify gzipped bundle < 250 KB. Fix if over budget. ## M19: Developer Experience & Quality