-
Windows-app-v1.3.2
StableAndroid APK Release / Build Android APK (push) Successful in 55m29sreleased this
2026-05-26 17:00:01 +08:00 | 28 commits to main since this release实现同步功能
平台 镜像同步 全量同步 仅上传 仅下载 相册同步 Android x x x x √ Windows √(WcfApi) √ √ √ x Linux x(fuse) √ √ √ x
日志:
- UI 日志级别选择器,立即生效无需重启
重置同步
- 停止任务 → 清空 DB → 清空本地目录 → 回到初始状态
Bug 修复
- SSE 事件流 6 个 bug(跨 chunk 行缓冲/token 刷新/URI 硬编码/多行 data/move 事件/零日志)
- SSE 事件回环(Rust API 请求附加 X-Cr-Client-Client 抑制自触发)
- 远程操作自触发抑制(suppress_paths 30s 过期)
- 同步引擎死锁(OnceCell 替代 Mutex)+ 无日志(tracing 初始化)+ 无进度(后台 spawn + 状态轮询)
- CMake 自动构建 Rust 引擎修复
- API 文件列表字段名 objects→files + URI 从 path 推导
- 冲突判断逻辑(mtime 不可靠 → 有 hash 比 hash,无 hash 比 size)
- 删除文件夹时递归清理数据库映射
- stop 后 UI 自动恢复同步(stop 未设置 SyncState::Stopped)
- 并发 force_sync 导致混乱(sync_lock 互斥保护)
- force_sync 触发 WCF 重新水合(适配器只初始化一次 + stop 不再 cleanup WCF)
- MirrorWcf 下 quick_hash 导致 os error 426(CFApi 拦截文件读取超时)
- 本地扫描 38 秒优化(MirrorWcf 跳过 hash 计算,扫描 <1 秒)
- _startSync 未传递 wcfDeleteMode 导致始终使用默认值
- Linux 下无 XDG_DOWNLOAD_DIR 环境变量异常
代码重构
- sync_engine.rs (1698 行) → sync_engine/ 目录 7 个文件
- worker.rs (1668 行) → worker/ 目录 3 个文件
- event_handler.rs (378 行) → event_handler/ 目录 2 个文件
- platform_wcf.rs → platform/ 目录
- Worker::run 拆分为 12 个 step 方法 + 编排器
- transfer_semaphore 共享(冲突/上传/下载三步骤共用)
- 跨平台 crate 增加 #![cfg(target_os = xxx)] 编译守卫
Test plan
- 全量同步:双向文件同步,冲突按策略处理
- 仅上传/仅下载模式:事件源过滤正确
- 镜像同步(WCF):占位符创建、按需水合、脱水
- WCF 删除模式切换:local_only 不删远程,sync_remote 删远程
- 强制重新同步:不触发重新水合,持续同步正常恢复
- 停止/暂停/恢复:状态正确,UI 不自动恢复
- 重置同步:DB 清空、本地目录清空
- 相册同步(Android):DCIM/Pictures 自动备份
- 日志级别热修改
- Linux 编译通过(无 sync-windows 依赖报错)
Downloads