Skip to content

Releases: Kim-Huang-JunKai/obsidian-secure-webdav-images

v2.0.8

09 May 17:16

Choose a tag to compare

Bug 修复

  • 修复卸载时崩溃:移除对未初始化的 priorityNoteSyncTimeouts / priorityRenameSyncTimeouts 的引用
  • 移除永不触发的 vault 事件处理器:三层双层函数包裹导致 handleVaultModify/Delete/Rename 永不触发,三向对比已正确覆盖

死代码清理(-269 行)

移除 22 个从未调用的死方法、空壳 reconcileRemoteImages、3 个未使用属性及传递性死代码。保留测试引用的方法。

测试

全部 24 个回归测试 + 9 个多客户端模拟测试通过

v2.0.7

09 May 16:30

Choose a tag to compare

Bug 修复

  • 修复远端删除的空目录同步后本地被重建:v2.0.6 只修复了 remoteOnly 方向,遗漏了 localOnly 方向。修复后两个方向对称:之前同步过的空目录仅存于一侧时,从另一侧删除而非重建。
  • 修复新本地目录仅创建父目录不创建自身:ensureRemoteDirectories 设计为文件创建父目录(总是去掉路径最后一段),导致 reconcileDirectories 中新建目录时目录本身未创建。

测试

  • 新增 3 个多客户端目录同步测试(创建传播、A 删 B 随、B 删 A 随),全部通过
  • 全部 24 个回归测试 + 9 个多客户端模拟测试通过

v2.0.6

09 May 11:41

Choose a tag to compare

Bug 修复

  • 修复本地删除的空目录同步后被远端重建:reconcileDirectories 原来只会创建目录从不删除。修复后,之前同步过的目录若仅在远端存在,视为本地有意删除,执行远端删除而非本地重建。
  • 同步状态消息合并目录删除统计:deletedRemoteDirectories 和 deletedLocalDirectories 现在纳入同步完成消息的删除计数。

v2.0.5

08 May 17:06

Choose a tag to compare

2.0.5 — 精简非核心功能,保留纯三向对比同步 + 图片转存

重大精简

  • 删除 ~3210 行代码(main.js: 6880 → 3670 行,减少 47%),移除所有与核心同步和图片转存无关的功能
  • 移除本地版本快照系统captureLocalVersionSnapshotrestoreLocalVersionEntryVersionHistoryModal、版本索引文件等
  • 移除冲突中心 UISyncConflictCenterModal 及相关命令,保留 createLocalConflictCopy 供三向对比产生冲突副本
  • 移除本地同步日志appendLocalSyncLogrevealLocalSyncLogFilesync-events.log 文件
  • 移除 handleFileOpen 事件注册:不再跟踪文件打开/最近变更
  • 移除设置 UI 中「版本与冲突」区域:4 个控件(版本开关、保留版本数、保留天数、日志条数)
  • 移除 5 个命令:冲突中心、版本历史、版本回退、清理冲突备份、定位日志文件
  • 删除第一份重复代码拷贝(~2361 行死代码,JS last-definition-wins)

保持不变

  • 三向对比核心同步collectEntitiescomputeDecisionexecuteDecisionspersistPrevSyncRecords
  • syncVaultContent 作为唯一同步入口,runAutoSyncTick 定时自动同步
  • createLocalConflictCopy:三向对比 LOCAL_MODIFIED + REMOTE_MODIFIED 时产生 .sync-conflict-* 副本
  • 图片转码转存uploadImagesInNote、上传队列、SecureWebdavUploadQueueSupport

测试

  • 全部 22 个回归测试通过
  • 全部 6 个多客户端模拟测试通过

v2.0.3

08 May 11:48

Choose a tag to compare

重点修复

  • 删除同步改为完全按 Remotely Save 的三方比较执行,移除自定义的删除宽限判断,统一使用“本地当前状态 + 远端当前状态 + 上次成功同步记录”的决策方式处理删除、重命名和移动。
  • 修复本地删除后误删远端已修改文件的问题:当本地已删除、但远端在上次同步后又发生修改时,现在会按 Remotely Save 方案拉回远端版本,而不是继续删除远端。
  • 修复旧同步索引升级后导致旧路径被错误恢复的问题:旧 syncIndex 迁移到三方同步基线时,若历史签名不是标准 mtime:size / mtime:size:hash,现在会回退到当前本地/远端状态补齐基线,避免创建、重命名、移动后的旧路径被误判并重新下载回来。

回归测试

  • 新增并通过“本地删除但远端已修改时应拉回远端”的 Remotely Save 对齐回归测试。
  • 修正重命名与双端修改场景的历史同步基线测试数据,确保回归测试使用真实可比较的签名。
  • npm testnode tests/multi-client-sim.cjs 全部通过。

v2.0.2

08 May 10:30

Choose a tag to compare

修复内容:

  • 修复首次成功同步后再次编辑被误判为冲突的问题,避免新建、重命名、移动后的笔记错误生成冲突副本。
  • 修复 .sync-conflict-* 本地冲突备份在后续同步中被上传到 WebDAV 的问题。
  • 补充对应回归测试,确认快速同步与后续同步行为正确。

v2.0.1 — 修复改名冲突文件

08 May 07:58

Choose a tag to compare

修复改名冲突文件

  • 核心修复processPendingVaultRenames 不再预上传改名文件到新远端路径,改为完全由三向对比决策矩阵处理
    • 旧路径:LOCAL_DELETED + REMOTE_UNCHANGED → deleteRemote
    • 新路径:LOCAL_NEW + REMOTE_DELETED → push
  • 移除按需加载笔记模式(lazy-notes),~200 行
  • 移除远端回收站(trash),~155 行
  • 修复定时同步中的错误重抛
  • 设置页 UI 文案更新

验证

  • 19 个回归测试通过
  • 6 个多客户端模拟测试通过
  • 语法检查通过

v2.0.0 — Git 式增量版本同步

08 May 02:55

Choose a tag to compare

2.0.0 — Git 式增量版本同步

架构重构

  • 统一同步路径:移除快速同步(远端事件流)与完整对账的双路径架构,所有同步入口改为调用单一 syncVaultContent 方法。
  • 三向对比决策矩阵:参照 remotely-save V3 算法,引入 IndexedDB 存储 prevSyncRecords,实现本地/远端/上次同步的三向对比,4×4 决策矩阵覆盖 16 种状态组合。
  • 内容哈希身份:文件身份由 SHA-256 内容哈希确定,签名格式升级为 mtime:size:contentHash16
  • 纯三向对比删除检测:完全移除墓碑机制,删除检测依赖纯粹的三向对比,与 remotely-save V3 完全对齐。

删除的功能

  • 移除远端事件流系统(~1000 行)
  • 移除墓碑机制(~170 行)
  • 移除快速同步 ribbon 图标、命令、设置项

新增

  • localdb.js:IndexedDB 封装
  • 6 个多客户端模拟测试
  • 20 个回归测试全部通过

Breaking changes

  • 旧远端 __secure-webdav-sync-events/.__secure-webdav-deletions__/ 目录不再使用(需手动清理)
  • 首次启动 v2.0.0 时自动迁移旧 syncIndex → prevSyncRecords

🤖 Generated with Claude Code

v1.1.5

07 May 09:26

Choose a tag to compare

远端残留旧文件清理修复

  • 修复全量同步时远端残留的旧路径文件不会被清理、反而被重新下载回本地的 bug。
  • reconcileRemoteAndLocalreconcileRemoteOnlyFiles 中增加陈旧副本检测:若远端文件的最后修改时间在上次同步之前、且本地已无对应文件,则判定为残留并删除,而不是恢复下载。
  • 修复后,笔记从扁平目录迁移到子目录时,远端旧路径的残留文件会被自动清理,不再出现新旧路径各有一份副本的问题。

v1.1.4

07 May 08:19

Choose a tag to compare

1.1.4 更新说明

本次版本通过 TDD 回归测试全面验证了文件创建、更名、移动、目录迁移场景下的同步一致性。插件核心代码无变动。

同步一致性验证

通过新增回归测试(含快速同步、全量同步、自动同步三条路径),确认以下场景不会出现远端与本地不一致:

  • 创建文件:新文件在全量/快速/自动同步后正确上传,syncIndex 准确记录
  • 更名文件:旧远端路径正确删除(含 tombstone),新路径正确上传,连续更名的 rename chain 正确折叠
  • 移动文件到新目录:全量/快速同步均正确删除旧远端、上传到新远端路径
  • 移动目录(批量更名):多文件同时迁移时所有文件均正确到位
  • 积压多操作:创建→更名→删除→再创建后全量同步,远端最终状态与本地一致
  • 快慢同步一致性:快速同步后再全量同步不会重复上传,syncIndex 保持一致
  • 自动同步:正确执行全量同步并发现新文件