How sync works

Foliato Sync keeps the local folder and the server aligned in both directions. It uses SSE for live updates and a native file watcher for local changes.

Download sync

When the server registers a change (e.g. another member uploads a file), it emits an SSE event that the client listens to and applies immediately.

If the client was offline, on reconnect it requests a delta from its last version and downloads only what changed.

Upload sync

The app watches the local folder with a native file watcher (FSEvents on macOS, ReadDirectoryChanges on Windows).

Changes are debounced by 3 seconds to avoid unnecessary uploads during active edits.

πŸ’‘ Hidden files (.DS_Store, Thumbs.db) and temporary files (.tmp, ~$) are automatically ignored.

Conflict resolution

If two devices edit the same file simultaneously, the server detects the conflict by version and returns 409.

  1. 1The app creates a local copy with suffix "(conflict β€” your team)".
  2. 2Your version stays in the folder with that alternate name.
  3. 3The server version downloads with the original name.
  4. 4Compare, edit, and re-upload the one you want to keep.
Conflict resolution

History and status

From the app you can see recent sync history: files downloaded, uploaded, errors, and conflicts.

History and status