Currently Obsidian leverages diff-match-patch for conflict resolution on the Sync service. While it works a majority of the time, there have been instances in the past where it overwrote newer data for old, or sometimes duplicates both old and new data within the same note. While history is still available to back out of these changes, it is not a great user experience.
Proposed solution
Adjust the diff-match-patch algorithm to put preference on newer changes to the file when resolving conflicts. I have examples of the algorithm using older data instead of newer.
Provide an option for the the end user to allow the user to manually resolve merge conflicts - provide a diff similar to how git gives users options for resolving merge conflicts. By default this would be disabled, but for those experienced with merge conflicts, it would be helpful to be able to have an option to resolve manually.
Workarounds
Currently I just leverage version history to manually pull information, or restore, when a merge conflict causes issues.
Thanks for the quick response, and on a weekend! I’ve had a few instance where the conflict resolution functionally either overwrote newer data with old, or generated a duplicate of the data. History has always worked. While I desired some more sophisticated conflict resolution configuration, I can understand that it would be probably not-trivial amounts of work with only helping a minority of users.
IMO it would be much better to have an option for the user to keep all sync conflicts files and let them decide what to keep.
This way its way harder to not notice data getting lost.
Constantly checking the sync log so u can be sure nothing was overwritten is bad UX and unreliable.
A bonus would be to have a side by side view of the conficting note versions, but thats not even needed for a start.
Not having this functionality is a deal breaker for me about using Obsidian sync. The basic functionality would be easy to implement.
Honestly idk why this isn’t an option already…
I don’t think you need to constantly check if you get a notification. And those events are not common, they happen only if two devices have diverged from a common point in history.
Anyway, you opened a FR about improving this. I am going to close this thread.