Skip to content

Conflict & Health

How memrynote handles conflicting edits across devices, and where to see sync health.

Conflict Resolution

DomainStrategy
Notes & journal entriesCRDT (Yjs) — concurrent edits merge automatically
Tasks & projectsField-level vector clocks — non-overlapping edits merge cleanly; same-field collisions resolve last-writer-wins by tick-sum
Inbox items, templates, settingsDoc-level vector clocks — last writer wins on conflict

CRDT Merging (Notes / Journals)

Yjs is commutative — two devices typing different paragraphs in the same note merge without losing either side. Even concurrent edits to the same paragraph merge into a sensible result.

You don't see conflict UI for notes because there's nothing to resolve.

Field-Level Merge (Tasks / Projects)

Each field on a task or project carries its own vector clock. Examples:

  • Device A changes due date; Device B changes priority. Both apply.
  • Both devices change status. The higher tick-sum wins; ties favor the remote write deterministically.

This is much friendlier than naive last-writer-wins on the whole record.

Doc-Level Conflicts

For inbox items, templates, and other lower-frequency types, a same-record concurrent change resolves with a single doc-level vector clock. memrynote surfaces a banner if a true unresolvable case occurs (rare).

Conflict Indicators

When a conflict requires your attention (very rare given the strategies above), memrynote:

  • Shows a yellow banner on the affected item
  • Adds an entry to Sync History
  • Lets you choose to keep your version, the remote version, or merge manually

Sync History

A panel that lists recent sync events:

  • Pushes (succeeded / failed)
  • Pulls (counts of new items)
  • Conflicts (with links to the items)
  • Auth events (sign-in, key rotation, device link)

Open from the sync status indicator menu.

Health View

The Inbox → Health tab shows:

  • Failed sync jobs with retry buttons
  • Items with broken source URLs
  • Items missing required fields
  • Low-storage warnings (if approaching the vault quota)

This is the actionable punch list — fix everything here and sync should be clean.

Common Sync Errors

ErrorLikely causeFix
"Authentication expired"Refresh token expiredSign in again
"Quota exceeded"Vault size hit storage limitUpgrade plan or clean attachments
"Network unreachable"OfflineReconnect; sync auto-resumes
"Server temporarily unavailable"Cloudflare hiccupWait; backoff retries automatically
"Blob hash mismatch"Corruption (rare)Push the affected item again from the source device
"Crypto version mismatch"Sync server behind a desktop releaseWait for server to update or downgrade desktop

Resolving a Conflict Manually

If the rare manual-conflict banner appears on a non-CRDT item:

  1. Click the banner
  2. Compare the two versions side-by-side
  3. Pick Keep mine, Keep remote, or copy text between them and save
  4. The conflict marker clears

For CRDT items (notes / journals), there's no manual conflict step — the merge always succeeds.

What memrynote Won't Do

memrynote doesn't auto-merge across record types — e.g. it won't combine two competing project structures. The vector clock comparison stays within a single record.

It also doesn't store a permanent "conflict log" — once resolved, the conflict is gone. Sync History keeps the metadata for a few weeks for debugging.

See Also

Released under the GNU GPL v3.0.