docs: restore completed sections in CLAUDE.md, fix numbering

Keep [x] items as context for future sessions. Added new done items
(text selection, ChatInput capsule, visual refresh). Fixed section
numbering 1-8. Updated media cache to reflect custom disk cache.
This commit is contained in:
Bruno Deanoz 2026-06-23 14:40:47 +02:00
parent dca9cb7593
commit e6fa8ef8a6

View file

@ -370,7 +370,7 @@ All committed on `main`. Compile-verified on Mac (`./gradlew :app:compileDebugKo
### 1. Remaining visual/UX gaps (daily-drive blockers)
These are what separate "prototype" from "daily-driver":
All done:
- [x] **Markdown rendering during streaming** — all regex patterns pre-compiled as top-level constants, `remember(text)` memoization. Verified performant
- [x] **Code block copy button** — tap-to-copy on fenced code blocks (clipboard + haptic feedback)
@ -379,9 +379,15 @@ These are what separate "prototype" from "daily-driver":
- [x] **Link rendering** — clickable via `ClickableText` + `ACTION_VIEW`, opens browser on tap
- [x] **Strikethrough**`~~text~~` rendered with line-through + dimmed alpha
- [x] **Task lists**`- [ ]` / `- [x]` with Check/Square icons in accent color
- [x] **Text selection**`SelectionContainer` on user + assistant messages, long-press to select/copy/share
- [x] **Single-row ChatInput** — Gemini-style capsule (64dp, pill shape), mode pills inside card via tune icon
- [x] **New Chat button** — PenLine icon in top bar
- [x] **Visual refresh** — W300 typography, larger headings, message animations, richer themes/blobs, semantic colors, custom 1.0px icons, glass-lens app icon
### 2. Conversation management from the app
All done:
- [x] **Conversation rename/delete** from the sidebar — 3-dot menu on each chat, `PATCH`/`DELETE /api/v1/conversations/[id]`
- [x] **Conversation pin/unpin** from the sidebar — `PATCH { pinned }`, star icon for pinned items
- [x] **In-app unlock for locked conversations** — BiometricPrompt with CryptoObject (AES key in TEE/StrongBox), hardware-enforced biometric auth → server unlock token via `POST /api/v1/auth/unlock` → fetch messages with `X-Unlock-Token` header. Auto-lock on background. Fallback to direct unlock if biometrics unavailable
@ -443,7 +449,7 @@ The web's call mode (`use-call-mode.ts`, `call-view.tsx`) is the reference imple
- [ ] **Stale-check enforcement** — use `cachedAt` to trigger background refresh when older than N minutes
- [ ] **Offline-queue for sends** — queue messages locally, send when network returns (needs conflict resolution)
- [ ] **Incremental sync** — only fetch changed conversations (needs server-side `since` parameter)
- [ ] **Media cache** — cache images/files locally (Coil or custom disk cache)
- [x] **Media cache**`NetworkImageCache` with file-based disk cache (`cacheDir/img`), 32MB size-based memory LRU, shared `KaizenApi.imageClient`
- [ ] **Full-text search** — FTS4/FTS5 over cached messages (Room supports this natively)
- [ ] **Attachment queries** — "show me all chats with images/PDFs" via Room DB