Skip to content

v0.31.0 — R25 收尾闭合轮:Lightroom 差距全量清账

Choose a tag to compare

@skymanbp skymanbp released this 18 Aug 12:07
· 151 commits to main since this release

⚠ 升级前请先读:三类互不相同的前向不兼容

本轮 EditRecipe 数据模型有三处变化,旧版 exe 的反应各不相同,不能混为一谈:

变化 结构 v0.30.0 及更早的 exe 会怎样
EditRecipe 顶层 +29 字段(Texture、裁剪后暗角六、胶片噪点三、Detail 八轴、手动 CA 两、Auto CA、Defringe 六、passthroughschema_era deny_unknown_fields 硬拒整个 recipe.json——v0.31.0 存的任何显影,旧版都打不开(与 v0.29→v0.30 的 coord_era 同类)
LocalAdjustment +4 条局部点曲线 deny_unknown_fields 带蒙版的 recipe 被硬拒;无蒙版的照片字节不变(与 v0.29 的 LocalHue/Sharpness 同类)
MaskGeometry::Radial +2midpoint / mask_version 内部标签枚举, deny_unknown_fields 静默丢弃再写回=旧版会不声不响地把这两个值从你的文件里抹掉。这是本轮首次出现的第三类,最隐蔽

连带recipe.json 的结构指纹随之改变,R21 的「已删版本登记簿」会把历史上已删的版本一次性以新号重新保档(高水位臂不动=同一个号永不复活)。

建议:升级后不要再用旧版 exe 打开新版存过的照片。


本轮做了什么

R25=收尾闭合轮:把 Lightroom 差距一次清账。 八个包(P0-P6 七个实现提交 + 一个轮末对抗复审修复批)。

真正的头等大事不是「补齐 Lightroom 滑杆」,而是一个缺陷

你 Lightroom 库里的每一个蒙版,此前在导入时都被整条丢弃。

两道门,任一命中即丢整条 Correction:crs:Angle 存在(Lightroom 给每个径向都写,未旋转时写 "0")、crs:MaskBlendMode 不是我方文件写的(160 份取证 sidecar 里 1048 个蒙版组件全部带)。这和「INERT_LOCAL 非零硬拒」「未知 crs:Local* 硬拒」等共六道门是同一个根因:导入侧「不认识就整条丢、只给一个整数计数」,而导出侧从 R22 起早就是具名的 MaskLoss{name, reason}——这个不对称本身就是根因

修完之后,在参考库上实测:导入 0 个 → 导入 31 个 / 拒收 11 个(7 份 sidecar、42 条 Correction,导入+拒收==总数 每份成立)。仍然拒收的是画笔 / AI / 深度蒙版(Mask/PaintMask/ImageMask/AggregateMask/Ellipse)——Lightroom 靠 digest 自行重算,第三方拿不到像素,界面上会照实这么说。

新增控件

  • 纹理 Texture(全局,渲染)——与蒙版里的纹理是同一个算子、同一个半径式(位级孪生测试钉死:全覆盖蒙版的 texture ≡ 全局 texture)。
  • 效果新分区:裁剪后暗角六键 + 胶片噪点三键(携带不渲染)。
  • 细节扩充:锐化半径 / 细节 / 边缘蒙版,降噪细节 / 对比,彩色降噪三键(携带不渲染)。
  • 镜头扩充:手动色差 红/青 · 蓝/黄(渲染)、自动色差校正开关、去边 Defringe 六键(携带不渲染)。
  • 变换 / 校准只读段:透视 Upright 八键 + 相机配置文件 + 相机校准七键,原样带进带出、Autoshop 从不解读——所以只显示值,故意不给滑杆
  • 蒙版:每个蒙版有了自己的四条点曲线(主 / 红 / 绿 / 蓝);径向的 crs:Midpoint / crs:Version 读写往返。

「携带不渲染」不是偷懒,是一条明写的裁决:这些算子(Adobe 的胶片颗粒生成器、三种暗角 Style、锐化的 halo 抑制曲线、色度降噪、去边的色相刻度……)都未公开。近似它们=把我们编的算子塞在你和你的照片之间。所以每一条这样的控件自己身上就写着「本机不渲染,仅随 XMP 带出」,保存时也会列出当前生效的整份清单。24 条全局成员逐条带着理由钉在代码里。


可感行为变更(会改变你已有照片的观感/文件)

  1. 带 Lightroom 蒙版的老照片重开,会突然多出蒙版并改变渲染。 这是上面那个缺陷修好的直接结果(与 v0.28.0「蒙版三项上引擎」同类)。
  2. crs:Texture 的照片渲染改变(参考库 160 份里 7 份,最大 +26 那张最明显)——此前该值被静默丢弃。
  3. 带局部点曲线的照片渲染改变(参考库 19/160,共 43 条曲线)。
  4. 每份写出的 sidecar 现在恒含 crs:Texture,即使为 0 → 与旧版相比字节必然不同。
  5. 导入横幅换了说法:从「N unsupported Lightroom correction(s) not applied」改成「已导入 N 个 Lightroom 蒙版,其中 M 项未建模」并点名是哪几项(旋转角度 / 混合模式 / 未建模的滑杆 / 局部点曲线 …)。
  6. 旋转损失现在报角度:「旋转 37° 未写入 XMP(crs:Angle 的符号与旋转基准未经实测)」,而不是含糊地说「有旋转」。crs:Angle 仍然不写出——在读不懂的刻度上断言方向,不如让 Lightroom 用它自己的默认值。
  7. 「暗角」改名「镜头暗角」(与新的「裁剪后暗角」消歧)。
  8. i18n 里在案的承诺「De-fringe in a later batch / 去紫边留待后续批次」已删除——这一批就是它。
  9. Settings 多一条只读披露:当前解析到的 segmentation sidecar 脚本路径 + 为什么它只能用环境变量设置(它会被当作程序执行)。这把 v0.28.0 的「留 R23」正式结案为一次安全裁决,而不是欠账。

接受成本(轮末对抗复审后的裁决,明写在此)

轮末 Opus 5 独立对抗复审判定 BLOCK,抓到一个根因、两处 HIGH(都在真实 sidecar 上对 v0.30.0 做了前后实证):「配方没见过的键,被读成了用户主动清空」

  • 无损导入 + 旧版形状的无蒙版 recipe,存盘会静默删光整个 Lightroom 蒙版块(2/7 份参考文件的 12/42 条被毁,且注记为空——「导入修得越好,文件越没保护」)。
  • v0.30.0 的 recipe 一存盘,会剥掉 Grain / 裁剪后暗角 / 锐化半径,把 crs:Texture="-20" 归零(3/7 份真实照片中招,零披露)。

已在 464008a 一次修完(守门判据换成「底片本来就有蒙版块」;新增 schema_era 时代戳 + 27 键的按键豁免门——旧照片上你真拖过的值仍然会写出,因为那才是声明)。随之而来的两项成本已裁决并登记:

  • 在 Autoshop 里删光蒙版,不再把删除传播到 sidecar。 要删请在 Lightroom 侧删。本轮的主题就是数据保全高于删除手势。
  • 重新发布一个你已经编辑过的蒙版块,会按我方 writer 确定性重铸 MaskName / MaskSyncID

台账口径更正

  • 「803 字形子集」是历史标签。实测 NotoSansSC-autoshop.ttf751 字形 / 739 码点,五字体 cmap 并集 2396 码点;本版字体门 801/801。
  • v0.28.0 登记的「BYTES_PER_PIXEL=24 既往偏低 ~17%」以第一手算账关闭:三时刻并列核算=恰 24 B/px,当年那是复审者的主张而非实测。常数不动、零行为变更,算账写进了测试。

AI 评测重新基线

147 张 RAW+xmp 对照集全量重跑,147/147 零失败,总分歧 14.2%。最大系统性偏差:whites +22.55、blacks −14.18、noise_reduction +11.71(AI 恒加降噪、用户不加)、highlights +11.69、vibrance +10.80、contrast −7.61;主曲线 RMSE 6.1/255。有意思的是一个补偿模式——AI 在曲线里打对比(S 强度 13.7 vs 用户 3.7),同时在 contrast 滑杆上收着打。色温平均偏冷 163K。分数自 v0.29.0 提示词全档重写后已不可跨版本比较,这一份就是新的正式基线

评测里还有一行是上面那个缺陷的独立实证:用户侧蒙版「0.00(+2.35 被我方导入器拒收)」——平均每张照片 2.35 个你的蒙版进不来,正是本版修掉的那个数字。


门线

603 lib + 8 CLI + 129 GUI + 2 + 2 合约测试全绿(双配置);clippy --all-targets --bins --features gui 0 警告;audit_i18n 0;字体覆盖 801/801。

仍然开着的(诚实边界)

  • crs:Angle符号与旋转基准未经实测——库内实测值域已取到 −43.945287 … +44.792686(43/160 非零),但角度写回臂要等一次 Lightroom 已知角度实验。
  • 蒙版 Hue / Sharpness 的 Lightroom 数值尺度未实测;Sharpness 0..100 的假设需要一份 >100 的真实样本才能闭。
  • Defringe 的渲染近似(乙案)留档备用,本版是携带终态
  • 90° 手动旋转推到 v0.32 首项,完整设计骨架已入库(docs/ROADMAP.md)。