P3.3 · Conflict resolution UI
What
Modal shown when a conflict is queued. Three-pane diff: local body, remote body, merged preview.
Buttons
- Keep local → push local to remote
- Keep remote → overwrite local with remote
- Merge manually → opens both versions in an Obsidian split view, sets the note state to "manual-merge-pending" until user marks it resolved via a command
- Snooze 24h → don't show the conflict again for 24h, leaves local + remote as-is
Technical requirements
- Use
jsdiffor similar for line-level diff highlighting. - Modal is dismissible only via explicit choice (no accidental Esc-cancel that loses state).
Acceptance criteria
- A user can resolve a conflict in <30 seconds in user testing.
- Snoozed conflicts re-surface after exactly 24h.
- Updated
- 2026-04-22