Hi everyone! ![]()
As part of my GSoC project, I am working on building Interactive Sync Conflict Resolution for Joplin. The goal of this project is to make resolving sync conflicts much more easier by allowing users to review, compare, and resolve conflicts directly within the application, instead of manually comparing separate notes.
I have some UI mockups for both desktop and mobile, and I'd really appreciate your feedback before moving on to the implementation
The proposed workflow includes:
-
Automatic conflict resolution: for non-overlapping changes [ any additions or deletions] they will be merged automatically, so the users only need to review genuine conflicts
-
Interactive Diff View : This clearly highlights conflicting changes between the local copy and the latest synced version.
Red: Your copy
Green: The current working version, which starts as the latest synced version and updates as you resolve conflicts
Darker highlights: The exact words that changed -
Resolve conflicts one by one: If you prefer your local change, simply select "Use this version". Otherwise, keep the current version.
-
Conflict navigation (Previous / Next): to quickly move through conflicts in long notes
-
Editor mode: allowing users to manually edit the final resolved note [ your latest synced version] whenever neither version is exactly what they want.
-
Title conflict support: note title conflicts resolution is also included in the project
-
Consistent experience across desktop and mobile: Similar UI layout across the platforms and will be reusing Joplin's existing components wherever possible to keep the experience familiar
-
Undo / Redo support: throughout the resolution process, you can undo and redo from both the tabs. For example, the change made in diff view can be undo in editor mode as the functionality is shared
-
Live diff updates while editing: If you make changes in the Editor and switch back to Diff View, the diff is automatically recomputed against your latest edits. This makes sure that the diff always updates with the current state of the resolved note
-
Synchronized scrolling: When switching between Diff View and Editor, the editor automatically scrolls to the corresponding section you were reviewing, making it easier to continue editing without losing where you were reviewing before [ for long notes ]
Note: Automatic conflict resolution requires a common base version to safely merge non-overlapping changes. Some older conflict notes (or any conflict note without a common base) does not contain this information, so in that case automatic resolution cannot be performed. In these cases, all detected differences including non-overlapping additions and deletions will be displayed in the Diff View and can resolve them via Diff view or Editor
The attached mockups below shows:
-
Desktop and mobile layouts
-
Diff View and Editor mode
-
Title conflict
-
Small word-level conflict
-
Larger paragraph replacement
Any feedback is greatly appreciated. Thank you!




