Conversation branching or forking is supported
Why it matters
When a conversation takes a wrong turn twenty messages deep — a bad file upload, a misread instruction, a hallucination that the model now treats as ground truth — users need a way to rewind and try a different path without losing the useful context that came before. A strictly linear conversation forces "delete the last ten messages or start a new chat" as the only exits, both of which throw away work. Branching preserves that work.
Severity rationale
High because linear-only conversations force users to discard useful context whenever a thread derails.
Remediation
Start with edit-and-regenerate as the minimum viable branch. When a user edits a prior message, truncate state to that point and call reload() to regenerate from the edited turn. Full tree branching requires a parent_message_id column on the messages table and a tree-rendering sidebar; ship the minimum first. Implement in src/components/chat/message-actions.tsx.
setMessages(messages.slice(0, editIndex).concat({ ...messages[editIndex], content: newContent }))
reload()
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the AI UX Patterns Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
Taxons
History
- 2026-04-18·v1.0.0·Initial import from ai-ux-patterns·automated