feat: add dual-layer versioning to WebDAV sync (protocol v2 + db-v6)

Separate protocol version from database compatibility version in WebDAV
sync paths. Upload writes to v2/db-v6/<profile>, download falls back to
legacy v2/<profile> when current path has no data. Extend manifest with
optional dbCompatVersion field and add legacy layout detection to UI.
This commit is contained in:
Jason
2026-03-08 19:33:20 +08:00
parent bf40b0138c
commit c0737f2cfe
8 changed files with 330 additions and 67 deletions
+7 -1
View File
@@ -397,7 +397,7 @@
"saveAndTestSuccess": "Config saved, connection OK",
"saveAndTestFailed": "Config saved, but connection test failed: {{error}}",
"noRemoteData": "No sync data found on the remote server",
"incompatibleVersion": "Remote data version incompatible (v{{version}}), current supports v2",
"incompatibleVersion": "Remote data is incompatible (protocol v{{protocolVersion}}, database {{dbCompatVersion}}). This client supports protocol v2 / db-v6.",
"unsaved": "Unsaved",
"saved": "Saved",
"unsavedChanges": "Please save config first",
@@ -408,7 +408,10 @@
"title": "Restore from Cloud",
"deviceName": "Uploaded by",
"createdAt": "Uploaded at",
"path": "Remote path",
"dbCompat": "DB compatibility",
"artifacts": "Contents",
"legacyNotice": "A legacy remote path was detected. After restoring, the next upload will write to the new v2/db-v6 path.",
"warning": "This will overwrite all local data and skill configurations",
"confirm": "Confirm Restore"
},
@@ -421,7 +424,10 @@
"existingData": "Existing cloud data",
"deviceName": "Uploaded by",
"createdAt": "Uploaded at",
"path": "Remote path",
"dbCompat": "DB compatibility",
"warning": "This will overwrite existing sync data on the remote server",
"legacyNotice": "Legacy remote data was detected. This upload will write to the new v2/db-v6 path and will not overwrite the legacy path.",
"confirm": "Confirm Upload"
}
},
+7 -1
View File
@@ -397,7 +397,7 @@
"saveAndTestSuccess": "設定を保存しました。接続正常です",
"saveAndTestFailed": "設定を保存しましたが、接続テストに失敗しました:{{error}}",
"noRemoteData": "クラウドに同期データが見つかりません",
"incompatibleVersion": "リモートデータのバージョンに互換性がありません(v{{version}})。現在 v2 をサポートしています",
"incompatibleVersion": "リモートデータに互換性がありません(プロトコル v{{protocolVersion}}、データベース {{dbCompatVersion}})。このクライアントは protocol v2 / db-v6 をサポートしています",
"unsaved": "未保存",
"saved": "保存済み",
"unsavedChanges": "先に設定を保存してください",
@@ -408,7 +408,10 @@
"title": "クラウドから復元",
"deviceName": "アップロード元",
"createdAt": "アップロード日時",
"path": "リモートパス",
"dbCompat": "DB 互換レイヤー",
"artifacts": "内容",
"legacyNotice": "旧レイアウトのリモートパスを検出しました。復元後、次回のアップロードは新しい v2/db-v6 パスに書き込まれます。",
"warning": "ローカルのすべてのデータとスキル設定が上書きされます",
"confirm": "復元を実行"
},
@@ -421,7 +424,10 @@
"existingData": "クラウドの既存データ",
"deviceName": "アップロード元",
"createdAt": "アップロード日時",
"path": "リモートパス",
"dbCompat": "DB 互換レイヤー",
"warning": "リモートの既存同期データが上書きされます",
"legacyNotice": "旧レイアウトのリモートデータを検出しました。今回のアップロードは新しい v2/db-v6 パスに書き込み、旧パスは上書きしません。",
"confirm": "アップロードを実行"
}
},
+7 -1
View File
@@ -397,7 +397,7 @@
"saveAndTestSuccess": "配置已保存,连接正常",
"saveAndTestFailed": "配置已保存,但连接测试失败:{{error}}",
"noRemoteData": "云端没有找到同步数据",
"incompatibleVersion": "远端数据版本不兼容(v{{version}}),当前支持 v2",
"incompatibleVersion": "远端数据版本不兼容(协议 v{{protocolVersion}},数据库 {{dbCompatVersion}}),当前支持协议 v2 / db-v6",
"unsaved": "未保存",
"saved": "已保存",
"unsavedChanges": "请先保存配置",
@@ -408,7 +408,10 @@
"title": "从云端恢复",
"deviceName": "上传设备",
"createdAt": "上传时间",
"path": "远端路径",
"dbCompat": "数据库兼容层",
"artifacts": "包含内容",
"legacyNotice": "检测到旧版云端路径。恢复完成后,下次上传将写入新路径 v2/db-v6。",
"warning": "恢复将覆盖本地所有数据和技能配置",
"confirm": "确认恢复"
},
@@ -421,7 +424,10 @@
"existingData": "云端已有数据",
"deviceName": "上传设备",
"createdAt": "上传时间",
"path": "远端路径",
"dbCompat": "数据库兼容层",
"warning": "将覆盖云端已有的同步数据",
"legacyNotice": "检测到旧版云端路径数据。本次上传将写入新路径 v2/db-v6,不会覆盖旧路径。",
"confirm": "确认上传"
}
},