SEVENTEEN26 downloadsCloud WebDAV Sync is an experimental WebDAV sync plugin with content-addressed storage, commit snapshots, capability checks, guarded updates, sync history, diagnostics, and local/remote conflict resol
Cloud WebDAV Sync is an experimental sync plugin that stores notes and attachments in a WebDAV-backed repository. It uses content-addressed objects, validated commit snapshots, server capability checks, conflict detection, and a conflict resolution workspace to reduce accidental overwrites.
Version 0.9.9 still defaults to planning-only mode. Real sync must be explicitly enabled in settings. When enabled, the plugin does not overwrite a plain remote folder file by file. Instead, it writes immutable SHA-256 blobs, verified commits, complete file trees, and a remote HEAD update strategy selected from the WebDAV server's detected capabilities.
data.json.Real sync is disabled by default. In planning-only mode, the connection test creates a randomly named temporary collection inside the configured remote folder and removes it in a finally cleanup path.
When real sync is enabled, remote data is stored as immutable repository objects. Remote deletes are applied locally by moving files to .trash. Markdown conflicts stop the current commit and keep both sides in the repository until the user chooses a version. Binary conflicts preserve the local file and save the remote side as a deterministic .conflict-<device>-<commit> copy.
Remote HEAD updates are guarded by server capability checks. Servers with correct conditional ETag behavior can use compare-and-swap updates. Servers that do not support that pattern can use an actively probed atomic MOVE/no-overwrite lease strategy.
npm install
npm run check
npm run build
After building, copy or link main.js, manifest.json, and styles.css into a plugin folder named cloud-webdav-sync inside your test vault.
The Build release package GitHub Actions workflow can be triggered manually or by pushing a tag that exactly matches manifest.json's version. For version 0.9.9, use tag 0.9.9, not v0.9.9.
The workflow runs npm ci and npm run build, then uploads main.js, manifest.json, and styles.css directly as GitHub Release assets.
src/core/ Sync state machine
src/sync/ Scheduling and local change queue
src/logging/ Bounded redacted diagnostics
src/webdav/ Transport and capability probing
src/settings/ Settings model and settings tab
src/ui/ Sync center and conflict UI
src/main.ts Plugin lifecycle integration
tests/ Unit and integration tests
AbortSignal.MIT License. See LICENSE.