Conflicts
A conflict happens when the same note has been edited in two places since the last successful sync. Engram’s job here is not to guess — it’s to detect the conflict reliably and hand you the choice.
How conflicts are detected
Section titled “How conflicts are detected”Engram tracks the parent version of every edit (a version vector under the hood). When you push a change, the backend checks whether your parent version is still the current version. If it isn’t, your push lands as a conflict instead of overwriting.
This means conflicts only happen when two devices edit the same note while at least one is offline. Real-time concurrent edits on the same device, or one-after-the-other edits across devices with a live connection, never conflict — they apply in order.
Resolving a conflict
Section titled “Resolving a conflict”Open the Sync Center. Conflicted notes show up in the Conflicts queue. Click one to open the resolution UI. Five options:
| Option | What it does |
|---|---|
| Keep both | Save the remote version as a new sibling note (e.g. note (conflicted copy 2026-05-20).md). Default safest choice. |
| Merge | Open a 3-way merge view. You see local, remote, and base — pick or hand-edit. |
| Keep local | Local version wins. Remote version is discarded. |
| Keep remote | Remote version wins. Local version is discarded. |
| Skip | Leave both versions alone for now. Conflict stays in queue. |
When to use Merge
Section titled “When to use Merge”Use Merge for notes where you want to combine intent from both edits — e.g. you added a paragraph at the top on one device while another device added a paragraph at the bottom. The 3-way view shows the base (common ancestor), local, and remote side by side, and you pick or hand-edit a final version.
For binary attachments or canvas files, Merge isn’t available — only Keep both / Keep local / Keep remote / Skip.
Next: Mobile.