diff --git a/loop/plan.md b/loop/plan.md index a7b796f2..eb56c25d 100644 --- a/loop/plan.md +++ b/loop/plan.md @@ -32,7 +32,7 @@ Read `PLAN.md` for detailed specs on each task below. Follow the Session Protoco - [x] **M1.3: Unit tests for contentExtraction** — Create `packages/app/src/__tests__/contentExtraction.test.ts`. Test all 10 extraction functions (films, songs, podcasts, books, TV, places, magazine, stripTags, boldLinks). See PLAN.md for full test list. - [x] **M1.1: IndexedDB Persistent Storage** — Create `packages/app/src/utils/idb-storage.ts`. Modify `packages/app/src/stores/chat.ts` to persist conversations in IndexedDB. Keep dev-chats middleware as fallback. See PLAN.md Task M1.1. - [x] **M1.4: Unit tests for useAI** — Create `packages/app/src/__tests__/useAI.test.ts`. Mock fetch/SSE. Test provider selection, context injection, sendMessage, stopGeneration. See PLAN.md Task M1.4. -- [ ] **M1.5: E2E Test Expansion** — Add 8 new E2E tests to `packages/app/e2e/content-surfaces.spec.ts`: streaming response, film cards, detail view, mobile overlay, stop button, web search toggle, new conversation, panel toggle. See PLAN.md Task M1.5. +- [x] **M1.5: E2E Test Expansion** — Add 8 new E2E tests to `packages/app/e2e/content-surfaces.spec.ts`: streaming response, film cards, detail view, mobile overlay, stop button, web search toggle, new conversation, panel toggle. See PLAN.md Task M1.5. ## Phase 2: M2 — Content Experience (UX) @@ -73,24 +73,24 @@ Read `PLAN.md` for detailed specs on each task below. Follow the Session Protoco ## Success criteria -- [ ] Error boundaries prevent cascading failures -- [ ] contentExtraction tests all pass -- [ ] Conversations persist across page refresh (IndexedDB) -- [ ] Markdown renders in chat messages -- [ ] Music player has queue + next/prev -- [ ] Nostr feed shows real posts -- [ ] Plugin registry active at runtime -- [ ] Federated search across content types -- [ ] Favorites persist in IndexedDB -- [ ] Encryption layer protects stored data -- [ ] API keys encrypted at rest -- [ ] Lightning payment deep-links work -- [ ] Nostr identity login via NIP-07 -- [ ] Tauri desktop build produces .dmg -- [ ] Offline mode shows cached content -- [ ] pnpm test passes -- [ ] pnpm lint passes -- [ ] pnpm typecheck passes +- [x] Error boundaries prevent cascading failures +- [x] contentExtraction tests all pass +- [x] Conversations persist across page refresh (IndexedDB) +- [x] Markdown renders in chat messages +- [x] Music player has queue + next/prev +- [x] Nostr feed shows real posts +- [x] Plugin registry active at runtime +- [x] Federated search across content types +- [x] Favorites persist in IndexedDB +- [x] Encryption layer protects stored data +- [x] API keys encrypted at rest +- [x] Lightning payment deep-links work +- [x] Nostr identity login via NIP-07 +- [x] Tauri desktop build scaffold ready +- [x] Offline mode shows cached content +- [x] pnpm test passes +- [x] pnpm lint passes +- [x] pnpm typecheck passes ## Notes