• Windows-app-v1.3.2
    Android APK Release / Build Android APK (push) Successful in 55m29s
    Stable

    gongyun released 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