Phos 3.1.0
品牌改名后的首个发布版本:RawForge 正式以 Phos 之名发布,并修复蒙版控制点拖动时参考线漂移的问题。
安装:下载 Phos-macOS-apple-silicon.zip,用 SHA256.txt 校验后解压,把 Phos.app 拖到 /Applications。
首次启动会被 macOS 拦截(应用未公证)——到「系统设置 → 隐私与安全性」底部点「仍要打开」,或执行:
xattr -dr com.apple.quarantine /Applications/Phos.app从旧版 RawForge 升级:旧的 .rawforge.json 旁档、Application Support/RawForge/presets.json 预设和导出目录设置都会被继续读取,已有编辑不丢失。
蒙版控制点拖动修复 / Mask handle drag fix
拖动渐变蒙版的控制点时,三条参考线会整体「飘走」。
根因是控制点上报 position + v.translation:而 translation 是从按下那一刻算起的累计位移,
position 又随蒙版更新每帧重算,edit() 再把增量加在当前蒙版上——同一段位移被反复累加。
实测拖 120px 时控制点跑出 240px,鼠标事件越密偏得越多(细粒度下可达 30 倍)。
改为以「按下点 + 按下那一刻的蒙版」为基准(新增 MaskDragSession),每次移动用绝对坐标重算。
线性起/终点、中心移动、旋转柄、径向三手柄一并受益。
蒙版交互 / Mask interaction
- 选中线性或径向渐变蒙版时自动切到位置调整模式,控制点、参考线与旋转柄立即可见。
- 清理蒙版叠加层的调试输出,发布版本不再向 stdout 打印诊断信息。
品牌改名 / Rebrand
- RawForge → Phos:源码目录、应用标识
com.zeno.phos、显示名、可执行文件名、打包产物统一改名。 - 兼容读取旧
com.zeno.rawforge设置、.rawforge.json旁档与旧预设目录。 - 历史标签与 v3.0.1 及更早的发布记录保持不变,从本版本起使用 Phos 名称发布。
构建与测试 / Build & test
build.sh默认安装到/Applications/Phos.app;先在暂存目录组装签名再整体替换,
避免覆盖正在运行的二进制(ETXTBSY);并同步刷新项目内副本。- 新增
Tools/MaskDragTest.swift与Scripts/test_mask_drag.sh:纯几何回归测试,不需要照片素材。
判据是「结果不随鼠标事件数漂移」——5 / 61 / 1200 次鼠标事件必须给出同一结果。 - 修复 CI 构建失败:蒙版参数(
Double)与CGPoint/CGSize(CGFloat)混算时
cos/sin/atan2会同时匹配CoreGraphics与_math两个版本,
在完整 Xcode SDK 上报ambiguous use of 'cos'。几何模块内部已统一按Double计算,语义不变。
已知限制 / Known limitations
- 1:1 像素视图未挂载蒙版叠加层,该模式下看不到渐变参考线。
- 线性蒙版参考线沿法线只延伸画面高度,极宽幅照片下可能画不到边缘。
- 应用为 ad-hoc 签名,未经 Apple 公证。