Repository navigation
v0.2.17
OpenCompare v0.2.17 release notes
English | 简体中文
v0.2.17 converges two user-visible template-placement and safety changes already merged into main: each row now shows its action and copies unless a move is explicitly checked, and case-insensitive collisions fold to one slot while escaping paths are refused. The diff and merge algorithms, directory scanning, the snapshot format and the release channel are unchanged.
What changed
Template placement rows show and choose their action
- Actions column: every source-bearing row now carries an
Actionscolumn and copies by default; a row moves only when its move box is explicitly checked, so a dry-run never turns a check into a silent move. - Verified move: after the write and before the source is deleted, the target must match the source
sha256and whole-secondmtimeSec. A failed check keeps both the source and the target and runs no rollback, while the remaining rows still finish.
Case-insensitive collisions and path containment
- Case-fold collisions fold to one slot: on case-insensitive volumes
Logo.pngandlogo.pngresolve to the same slot; several case variants with different content stay a conflict instead of overwriting silently. - Path escape refused: absolute slot paths, drive letters and
..segments are rejected before any write, so a crafted template cannot write outside the output root.
Windows installer and portable zip
Windows portable download
Windows ships both the NSIS installer and a portable .zip that runs right after extraction with no installation step. Auto-update keeps resolving to the NSIS installer, so the portable zip is a download only.
macOS signing and notarization
The macOS build is Developer ID signed and Apple-notarized, and CI fails closed when the signing credentials are missing. This release does not change the signing or notarization configuration.
Not in this release
- No changes to the diff and merge algorithms: the four-state semantics, line diff results and three-way merge behavior are unchanged.
- No changes to directory scanning, the snapshot format or the release channel.
- The gate matrix, end-to-end fixtures and baseline documents stay on the verification side and are not new user features.
Risk and verification scope
The changes are limited to the template placement action column and explicit move, and to the case-fold collision and path containment guards; the diff / merge / scanning algorithms, the four-state counts and the snapshot format are untouched. This release states no performance or memory numbers.
Upgrade
Upgrade from v0.2.16. Replace the app with the v0.2.17 package for your platform (macOS .dmg / .zip, Windows installer, Linux .AppImage / .deb). On Windows you can either install with the NSIS .exe or download OpenCompare-0.2.17-win-x64.zip and run it right after extracting; auto-update still only uses the NSIS .exe. No data migration is needed; existing sessions and settings keep working. The signing posture is unchanged: the macOS build is Developer ID signed and Apple-notarized, and CI fails closed when credentials are missing.
简体中文
OpenCompare v0.2.17 发布说明
English | 简体中文
v0.2.17 收敛两项已合入主干、用户可见的模板归位与安全改动:逐条动作列且默认复制、显式勾选才移动,大小写不敏感碰撞折叠并拒绝路径越界。对比与合并算法、目录扫描口径、快照格式与发布通道都没有改动。
本次变化
模板归位逐条动作列与显式移动
- 动作列:每个带源的行新增
Actions列并默认复制;只有显式勾选移动的行才移动,Dry-run 不会把一次勾选变成静默移动。 - 移动校验:写入之后、删除源之前,目标必须与源的
sha256和整秒mtimeSec一致;任一校验失败即保留源与目标、不执行回滚,其余行继续完成。
大小写不敏感碰撞与路径越界防护
- 碰撞折叠:大小写不敏感卷上
Logo.png与logo.png折叠到同一槽位;多个大小写变体且内容不同时保持冲突,不静默覆盖。 - 路径越界拒绝:绝对路径、盘符与
..段在任何写入前即被拒绝,构造出的模板无法写出输出根。
Windows 安装包与免安装 zip
Windows 免安装包
Windows 同时提供 NSIS 安装包与免安装 .zip,解压即用、无安装步骤。自动更新仍指向 NSIS 安装包,免安装 zip 只作为下载。
macOS 签名与公证
macOS 包经 Developer ID 签名 + Apple 公证;签名凭据缺失时 CI fail-closed。本版未改动签名与公证配置。
不做的事
- 不改对比与合并算法:四态语义、行级差异结果与三向合并行为保持原状。
- 不改目录扫描口径、快照格式与发布通道。
- 门禁矩阵、e2e 夹具与基线文档属于验证面,不写成新的用户功能。
风险与验证规模
本版改动集中在模板归位的动作列与显式移动,以及大小写折叠与路径包含防护:对比 / 合并 / 扫描算法、四态计数与快照格式均未改动。本文件不写任何性能或内存数字。
升级方式
建议从 v0.2.16 升级:下载 v0.2.17 对应平台的新安装包覆盖安装(macOS .dmg / .zip,Windows 安装包,Linux .AppImage / .deb)。Windows 可选 NSIS 安装包,或下载 OpenCompare-0.2.17-win-x64.zip 解压即用;自动更新仍只走 NSIS exe。本次不需要迁移数据,已有的会话与设置照常可用。签名与公证口径不变:macOS 包经 Developer ID 签名 + Apple 公证,凭据缺失时 fail-closed。
Full Changelog: v0.2.16...v0.2.17