All 10 M8 tasks done + TEST:M8 gate passed. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
4.7 KiB
4.7 KiB
AIUI Progress
Current Status
Active Milestone: M8 — Chat UX Polish (PLAN2.md) Overall: M0–M7 complete. 116 tasks planned across M8–M20 in PLAN2.md
Roadmap
M0: Foundation ✅
- Chat interface with streaming (Claude/OpenRouter/Mock)
- 11 content type renderers (film, song, podcast, book, TV, image, place, article, magazine, nostr, code)
- Responsive layout (mobile three-column + desktop overlays)
- Glass morphism design system (Tailwind CSS)
- Claude proxy + web search (SearXNG/DDG)
- PWA support (auto-update, installable)
- Music player (Plyr-based PlayerBar)
- Dev chat persistence (Vite middleware)
- ESLint flat config (packages/app + packages/core)
- CI baseline (pnpm test, lint, typecheck passing)
- Progress tracking automation
M1: Stability & Polish ✅
- ErrorBoundary.vue component created
- Error boundaries wrapping all major sections
- Unit tests — contentExtraction composable (10 extraction functions, 49 tests)
- IndexedDB persistent storage (conversations survive refresh)
- Unit tests — useAI composable (16 tests, mocked fetch/SSE)
- E2E test expansion (8 new tests: streaming, content cards, mobile, etc.)
M2: Content Experience ✅
- Markdown rendering in chat (markdown-it, XSS safe)
- Music source resolution + queue management (next/prev, queue panel)
- Virtual scrolling for chat (@tanstack/vue-virtual)
- Nostr feed integration (relay WebSocket, kind:1 notes)
M3: Plugin System ✅
- Activate plugin registry at runtime (claude-provider adapter)
- Renderer plugin registration (film/song as plugins)
M4: Social & Discovery ✅
- Social embeds (Nostr notes inline via nostr: URI)
- Federated search across content types (/search command)
- Bookmarks/favorites (Pinia + IndexedDB, heart toggle)
M5: Security & Privacy ✅
- E2E encryption (Web Crypto API, AES-256-GCM, PBKDF2)
- Encrypted storage layer (PassphraseDialog, all stores encrypted)
- API key vault (encrypted at rest, masked UI)
M6: Payments & Identity ✅
- Lightning wallet deep-links (LNURL-pay, BIP21, QR code)
- Cashu token support (parse + display inline, never a wallet)
- Nostr identity NIP-07 (browser extension login, event signing)
M7: Platform ✅
- MCP server integration (content surfaces as MCP tools)
- Multi-provider AI normalization (Claude/OpenRouter/Ollama adapters)
- Tauri desktop build (transparent window, system tray, global shortcut)
- Offline mode (cache strategies, offline banner, cached content browsing)
Session Log
2026-03-03 — overnight/2026-03-03
Completed M3–M7 (15 tasks):
- M3.1: Plugin registry + Claude provider adapter
- M3.2: Film/song renderer plugins with lazy loading
- M4.1: Nostr social embeds (bech32 NIP-19 decoder, NostrEmbed.vue)
- M4.2: Federated search (/search command, SearchResults overlay)
- M4.3: Bookmarks/favorites (Pinia + IDB, FavoriteButton, FavoritesGrid)
- M5.1: E2E encryption (AES-256-GCM, PBKDF2 100K iterations)
- M5.2: Encrypted storage layer (PassphraseDialog, transparent encrypt/decrypt)
- M5.3: API key vault (encrypted IDB, ApiKeyManager.vue, vault integration in useAI)
- M6.1: Lightning wallet deep-links (BOLT11 parser, PaymentButton, LightningInvoice)
- M6.2: Cashu token support (cashu.ts parser, CashuToken.vue inline in chat)
- M6.3: Nostr identity NIP-07 (useNostrIdentity.ts, NostrLogin.vue, bech32 encode)
- M7.1: MCP server integration (tool definitions + handlers for library search)
- M7.2: Multi-provider AI normalization (adapter pattern: Claude/OpenRouter/Ollama)
- M7.3: Tauri desktop build scaffold (frameless window, tray, global shortcut)
- M7.4: Offline mode (useOffline.ts, enhanced PWA image/API caching)
2026-03-03 (cont.) — overnight/2026-03-03
Completed M8 Chat UX Polish (10 tasks):
- M8.1: Message editing & regeneration (pencil icon, re-send clears subsequent)
- M8.2: Conversation branching (BranchSwitcher.vue, fork from any assistant msg)
- M8.3: Reply-to threading (quoted excerpt in input,
> quoteprepend) - M8.4: Conversation search (Cmd+F glass panel, match nav, jump to message)
- M8.5: Auto-title generation (background Haiku call after first exchange)
- M8.6: Context window visualiser (ContextBar.vue, token estimate, orange→red)
- M8.7: Conversation export (Markdown/JSON/text, File System Access API)
- M8.8: Import conversations (AIUI JSON + Claude.ai format parser)
- M8.9: Context menus (ContextMenu.vue + ContextMenuItem.vue, right-click)
- M8.10: Scroll position memory (Map per conversation, restore on switch)
- TEST:M8: All 74 tests pass, typecheck + lint clean