0.17.0-rc.1
Pre-release
Pre-release
·
14 commits
to master
since this release
预发布版本,用于 iOS 实机验证。请勿在唯一的真实 Vault 上使用。
这个 RC 的唯一目的,是跑掉 v0.14 stable 仅剩的两条发布门槛中属于 iOS 的那部分。
装好之后要做的一件事
打开命令面板,执行 「LiteSync: 平台兼容性自检」。
它会在 Vault 里生成一篇 LiteSync 平台自检 <时间戳>.md。把那篇笔记的内容贴回来即可。
自检做什么:在 iOS 的真实文件系统上跑一遍计划书 §8.4 的路径用例矩阵——大小写、
Unicode NFC/NFD、尾随点与空格、CON/AUX/NUL、超长文件名,以及能否原子替换。
报告的每一行同时列出本机实测与规则预言并标出是否一致。只输出「规则怎么说」
等于什么也没验证——要的恰恰是发现某条跨平台假设在 iOS 上是错的。
自检全程只在插件自己的 .probe/ 目录里操作,不碰你的任何笔记,跑完自动清理。
为什么需要真机
tests/realfs.test.ts 会在真实文件系统上验证这些行为,但它依赖 Node——
iOS 上没有任何办法执行它。于是移动端那一格长期只能靠推理填。
而推理错的方向恰好是最危险的那种:我们以为两个名字不同,文件系统认为相同,
后写的静默覆盖先写的。
本版包含的内容(v0.15.1 → v0.17.0-rc.1)
隐私增强(计划书 §11,全部默认关闭)
- 大小混淆:新增 LSE4 信封,把密文填充到桶边界。精确文件大小本身就是内容:
已知文档的字节数命中即确认,同一文件的大小序列画出的是编辑节奏。
最坏开销 12.5%,小于 4KB 的对象按 4KB 计。可按路径前缀只对高敏目录开启。 - 时间混淆:上传对齐到时间窗口网格并加抖动,
mtime按粒度量化。
请求节奏本身就是一份打字记录——作息、时区、工作日与假期都能从中推断。
代价是同步延迟最多一个窗口,跨设备可见延迟与冲突窗口都会变长。
「立即同步」不受影响。
修复
- 不可原子替换的平台上,远端更新根本收不到。 覆盖被拒后走的是
「本地变了 → 合并 → keep-both」,而 keep-both 的最后一步仍是覆盖,同样被拒。
净结果:远端版本哪儿都没写,本地原地不动,却多出一个存着本地内容的副本。
现在改为:远端版本另存为新文件,本地保持原样,两份都在盘上由用户核对。 - 没有 rename 的平台连新文件都收不到。 新建的目标路径上什么都没有,
直接写毁不掉任何东西,但代码一律走 staging→rename。已修。 - 原子性探测改为校验改名后的内容而非仅「目标存在」,且不再跳过桌面端
(网络盘、同步盘挂载的 Vault 就在桌面上)。
其他
- 每个请求上报
X-Client-Version,服务端obsync migration preflight据此
确认「所有设备都升级了吗」——这是不可逆迁移的前置条件,此前只能靠人挨个问。 - 新增「平台兼容性自检」命令(见上)。
已知限制
- macOS 与 Android 未经实机验证。 本 RC 只用于跑 iOS 那一格。
- 大小混淆不覆盖元数据信封(LSM1)与分享名信封(LSN1)。
- 时间混淆不隐藏「你在某个窗口里到底有没有编辑」——那需要持续的掩护流量,
本插件不做,也不暗示自己做了。 - LSE4 需要 v0.17+ 的客户端才能读。开启大小混淆前请确认所有设备都已升级。
安装
用 BRAT 添加 KJoner/litesync
并勾选包含预发布版本。服务端需要同步升级到对应版本。