diff --git a/PROGRESS.md b/PROGRESS.md index b39a40b0..9905f7f2 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -79,3 +79,17 @@ - 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, `> quote` prepend) +- 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 diff --git a/loop/plan.md b/loop/plan.md index dedc417a..f2e69b51 100644 --- a/loop/plan.md +++ b/loop/plan.md @@ -5,17 +5,17 @@ ## M8: Chat UX Polish -- [ ] **M8.1** — Message editing & regeneration (pencil icon on hover, re-send clears subsequent messages) -- [ ] **M8.2** — Conversation branching (fork from any message, branch switcher pill, each branch stored in IDB) -- [ ] **M8.3** — Reply-to threading (quoted excerpt in input, thread line visual, prepend `> quote` to message) -- [ ] **M8.4** — Conversation search (`Cmd+F` glass panel, real-time highlight, up/down to jump between matches) -- [ ] **M8.5** — Auto-title generation (background AI call after first exchange, silently replaces "New Chat") -- [ ] **M8.6** — Context window visualiser (slim progress bar, token estimate, orange → red > 80%) -- [ ] **M8.7** — Conversation export (Markdown / JSON / plain text, File System Access API + `` fallback) -- [ ] **M8.8** — Import conversations (drag-and-drop JSON, AIUI format + Claude.ai export format, merge into IDB) -- [ ] **M8.9** — Long-press / right-click context menus (messages + content cards, `ContextMenu.vue` glass-card) -- [ ] **M8.10** — Scroll position memory (restore per conversation ID, works with virtual scroller) -- [ ] **TEST:M8** — Run `pnpm test` and `pnpm typecheck && pnpm lint`. Fix all failures before proceeding. +- [x] **M8.1** — Message editing & regeneration (pencil icon on hover, re-send clears subsequent messages) +- [x] **M8.2** — Conversation branching (fork from any message, branch switcher pill, each branch stored in IDB) +- [x] **M8.3** — Reply-to threading (quoted excerpt in input, thread line visual, prepend `> quote` to message) +- [x] **M8.4** — Conversation search (`Cmd+F` glass panel, real-time highlight, up/down to jump between matches) +- [x] **M8.5** — Auto-title generation (background AI call after first exchange, silently replaces "New Chat") +- [x] **M8.6** — Context window visualiser (slim progress bar, token estimate, orange → red > 80%) +- [x] **M8.7** — Conversation export (Markdown / JSON / plain text, File System Access API + `` fallback) +- [x] **M8.8** — Import conversations (drag-and-drop JSON, AIUI format + Claude.ai export format, merge into IDB) +- [x] **M8.9** — Long-press / right-click context menus (messages + content cards, `ContextMenu.vue` glass-card) +- [x] **M8.10** — Scroll position memory (restore per conversation ID, works with virtual scroller) +- [x] **TEST:M8** — Run `pnpm test` and `pnpm typecheck && pnpm lint`. Fix all failures before proceeding. ## M9: AI Experience