feat(client): chat conversation management — rename, delete, search, auto-scroll (#364) #369
No reviewers
Labels
No labels
area:auth
area:ci
area:db
area:infra
area:native
area:pwa
area:service
epic
feature
foundation
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
james/carol!369
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "364-chat-conversation-ui"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Completes #364 — the chat switcher UI, built on the endpoints + hooks shipped in #366. (Deferred until the in-flight
chat.tsxPRs merged, to avoid a three-way pileup; they're in now, so this builds on the settled file.)What's in it (
chat.tsx+ i18n)Pencil→ input + save/cancel), viauseUpdateConversation; an empty title clears it back to the "untitled" label.Trash2→ "Delete this conversation? This can't be undone."), viauseDeleteConversation. Deleting the active conversation falls back to the next most-recent without a flash of 404.KeyboardAwareScrollView(its ref type extendsScrollView, soscrollToEndexists) follows new content as messages arrive and tokens stream.chat.search.*,chat.rename.placeholder,chat.delete.confirm; reusescommon.{rename,delete,save,cancel,removing}.Verification (local)
typecheck✓ ·lint✓ ·test✓ 172 · semgrep ✓ 0 findingssearch.placeholder→ "Search conversations…",delete.confirm→ "Delete this conversation? This can't be undone.", etc.⚠️ Needs maintainer verification (headless limit)
Client tests are
node-env — the visual + interactive bits need a real PWA/device check: the rename inline-edit, the delete confirm + active-fallback, the search filter, and especially auto-scroll behavior as tokens stream (watch for jank or fighting a manual scroll-up; refining "don't auto-scroll when the user scrolled away" is a possible follow-up).Closes #364
🤖 Generated with Claude Code
📊 Test coverage
Patch coverage: no testable lines changed.
Overall (
app/,lib/,db/, excluding UI per ADR-0019):Soft thresholds per ADR-0019. Coverage is informational and does not block merge.