Components
Merge conversation decision
Choose a source thread and preview the consequence before combining it into a canonical thread.
On this page
Purpose and composition
Choose a source thread and preview the consequence before combining it into a canonical thread.
Use for related thread context; production must validate authorization and compatible contacts/routing.
Anatomy
| Part | Responsibility |
|---|---|
| Canonical context | Target title, person and message count |
| Options | Other non-junk threads; same person first |
| Selection | Check marker and summary |
| Footer | Disabled/enabled merge |
Configuration and variants
| Input / variant | Contract |
|---|---|
| conversation | Canonical thread |
| conversations | Possible source threads |
| onMerge | Source ID callback |
| onClose | Resets selection when initiated internally |
States and feedback
| State | Visible / behavioral result |
|---|---|
| Unselected | Merge disabled |
| Selected | Warning names source and count |
| No eligible | Empty list; no dedicated recovery component |
Interaction and responsive behavior
- Source excludes current ID and junk.
- Local merge removes the source conversation and combines messages.
- Same-person ranking is preference, not mandatory restriction.
Accessibility contract
- Option buttons expose text but not aria-pressed or radio selection semantics.
- Dialog naming follows the shared wrapper gap.
Known implementation limits
Local merge sorts sentAt display strings, which is not reliable chronological order. No undo or durable reconciliation is verified.
Composition example
<MergeDialog open={open} conversation={target} conversations={records} onClose={close} onMerge={mergeLocal} />Source references
| File | Responsibility |
|---|---|
| components/inbox/merge-dialog.tsx | MergeDialog |
| components/helpdesk-app.tsx | Local merge behavior |
Examples from the app
Actual Sonarist components with fictional conversations, people, example.com addresses and simulated operational states. Captured at 2× resolution or higher. Select an image to inspect it full size.
Related topics
Source audit: 2026-10-08 · Revision 10f45d1377b5 · Documentation v1.0.0