Skip to content

feat: add WebDAV cloud sync (pull from Clash Verge backups)#790

Open
muzi-xiaoren wants to merge 1 commit into
MetaCubeX:mainfrom
muzi-xiaoren:feat/webdav-sync
Open

feat: add WebDAV cloud sync (pull from Clash Verge backups)#790
muzi-xiaoren wants to merge 1 commit into
MetaCubeX:mainfrom
muzi-xiaoren:feat/webdav-sync

Conversation

@muzi-xiaoren

Copy link
Copy Markdown

Add a "WebDAV Sync" settings screen that connects to the same WebDAV server Clash Verge backs up to, downloads the latest backup zip, and imports its subscription profiles into CMFA — for seamless one-way sync from a Clash Verge desktop install.

  • WebDavClient: PROPFIND list + GET download (OkHttp, Basic auth) against the fixed clash-verge-rev-backup/ directory Clash Verge uses
  • VergeBackup: unzip + parse profiles.yaml (SnakeYAML), extract remote (subscription) profiles; local/enhancement profiles are skipped
  • Idempotent import through the existing ProfileManager create+commit pipeline (dedup by source URL), validated by the mihomo core
  • New WebDAV settings entry/screen, credential storage in UiStore, EN/zh strings, SnakeYAML R8 keep rules

Pull-only for now (no upload), so it can never overwrite desktop state.

Add a "WebDAV Sync" settings screen that connects to the same WebDAV
server Clash Verge backs up to, downloads the latest backup zip, and
imports its subscription profiles into CMFA — for seamless one-way
sync from a Clash Verge desktop install.

- WebDavClient: PROPFIND list + GET download (OkHttp, Basic auth) against
  the fixed `clash-verge-rev-backup/` directory Clash Verge uses
- VergeBackup: unzip + parse profiles.yaml (SnakeYAML), extract remote
  (subscription) profiles; local/enhancement profiles are skipped
- Idempotent import through the existing ProfileManager create+commit
  pipeline (dedup by source URL), validated by the mihomo core
- New WebDAV settings entry/screen, credential storage in UiStore, EN/zh
  strings, SnakeYAML R8 keep rules

Pull-only for now (no upload), so it can never overwrite desktop state.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants