PhotoCraft v0.15.1 更新:文件解析、打印和插件的一轮安全加固
PhotoCraft v0.15.1 给 PSD、Affinity、ICC、JPEG、WebP 和 RAW 的解析以及打印机回复和插件加上限制,按字节比较 ICC 配置文件,修正链接文件的路径解析。没有 v0.15.0。
v0.15.1 于 2026 年 10 月 23 日发布,距 v0.14.0 二十二小时。它就是 v0.14.0 之后的下一版:并没有 v0.15.0 这个发布或标签。版本号曾经设为 0.15.0(e6d6fb4),各平台也都构建成功了,但 macOS 任务在苹果已经通过公证之后连续失败两次:苹果的公证票据查询断开了连接,第一次发生在给 DMG 装订票据时,第二次发生在校验时,因此没有生成发布(构建记录)。大约七小时后,加上“装订失败时重试”的修复,这一版以 0.15.1 发布(#8995、60c87b9)。官方更新日志列出了 28 个合并的 PR,来自 5 位贡献者,没有新贡献者;其中约三分之一是构建和测试工具方面的改动,其余大多延续 v0.14.0 的安全加固。README 里的工具数仍是 67 个,记分卡没有变化。PhotoCraft 仍处于早期 alpha 阶段,使用中难免遇到问题。
这些安全修复对你意味着什么
这些修复大多来自一次针对 PhotoCraft 代码的自动审查,专门寻找“文件、打印机回复或插件能左右 PhotoCraft 工作量”的地方。损坏或被故意构造的文件可以声称离谱的尺寸和数量,让应用卡住、耗尽内存或崩溃。这一版之后,PhotoCraft 在更多地方用固定的预算来计算这些工作,超出预算的部分会被拒绝或简化处理。正常文件的打开和显示与以前相同。如果你会打开来自陌生人或陌生网站的文件,建议升级。
主要变化
- 文件解析加上限制:
- PSD:解析出错的图案数据块占用的内存仍会计入预算,后面的数据块无法“借用”;文字段落和样式、通道缓冲区以及重复的 EXIF 文字都有了上限(#8767、#8768、#8959、#8771)。
- Affinity:会被反复展开的共享对象、曲线记录和元数据都计入整个文档的预算(#8938)。
- JPEG、WebP 和 RAW:截断的 JPEG 不能再声称远多于其数据所能容纳的像素;动画 WebP 每一帧携带的 ICC 配置文件也会计入;RAW 中的无损 JPEG 和 TIFF 预览缓冲区有了上限(#8947、#8959)。完整的文件不受影响。
- 字体、矢量和颜色:字体集合、变形网格、轮廓、渐变色标和 ICC 曲线也都有了上限(#8768、#8769、#8959)。
- 打印与插件:打印机的 IPP 回复现在有总的时间上限,响应缓慢或恶意的打印服务器无法让 PhotoCraft 一直等下去(#8956)。插件不能占用宿主程序自己的路由键,分块数量和启动时的工作量受到限制,打开插件文件时也不会被特殊文件卡住(#8958)。
- 按字节比较 ICC 配置文件:以前 PhotoCraft 把 64 位哈希值相同的两个配置文件视为同一个。构造过的配置文件可以与另一个配置文件哈希相同,结果被套用错误的颜色转换,或者干脆跳过了需要的转换。现在会比较配置文件的实际字节(#8863)。
- 链接文件的路径解析更可靠:所有存储在文档里的路径,包括链接的智能对象、置换贴图、颜色查找文件、打印、视频和数据组图像,都经过同一个解析器。在 macOS 和 Linux 上,存储的
C:\…这类 Windows 路径会被判为无效,不再被当成相对于文档的路径(#8032)。
新工具与新功能
- 选择并遮住:引擎部分。
select.refineEdge新增edits列表:工作区里的快速选择、画笔、套索、对象选择、选择主体、清除和反相,会在细化边缘之前依次应用,并合成一个历史记录步骤。这是两部分中的第一部分:“选择并遮住”工作区本身既不在这一版,也不在 v0.16.0 中,所以目前只有自动化能用到它。带edits的步骤在严格模式下导出.atn时会被拒绝,因为 Photoshop 的格式里没有对应字段(#8783)。详见 MCP 与 CLI 指南。
网页版
本站的在线编辑器运行的不是这一版,而是更新的版本。v0.15.1 的网页版压缩包为 12,058,467 字节(11.5 MiB),v0.14.0 是 12,011,648 字节;其中 gzip 压缩的应用本体分块为 11,958,452 字节。网页版仍然无法显示中文:文字图层和界面中的中日韩文字都会显示成空白方框(#1615,仍未解决)。需要处理中文文字时,请使用桌面版。自行部署的方法见网页版页面。
问题修复与稳定性
- 大块的中间数据有了上限:对很大的区域做内容识别填充时,会跳过旋转和缩放后的取样变体,而不是分配一张几乎全空的巨大图像;液化在精细网格过大时改用较粗的网格;变形和重新取样也限制了各自的辅助数据(#8946)。新的“选择并遮住”编辑同样受到限制:画笔有总面积上限,反相只处理选区覆盖的图块(#8783)。
- 合成:稀疏的滤镜蒙版和形状描边按图块混合,过大的效果构建会被跳过(#8949);GPU 规划剪贴组时不再出现指数级的工作量,图案色板只读取它显示的像素(#8960);图块数量和共享图块都有了上限(#8953)。
- 快捷批处理(Droplet)生成的辅助脚本只有你自己的账户能读取和运行(#8870)。
更多已知问题和解决办法见故障排查指南。
升级前需要知道的变化
- 没有 v0.15.0。 版本号从 0.14.0 直接跳到了 0.15.1。
- 多层嵌套的混合颜色带(Blend If)组:嵌套在其他此类组里超过两层的带混合颜色带的组,现在会像调整图层那样按合成后的结果来判断,不再在每一层都重新合成其子图层。这样工作量不会随层数翻倍,但这类文件的显示效果可能会有细微变化(#8949)。
- 没有 FreeBSD aarch64 版本,与 v0.13.0 和 v0.14.0 相同(craft-common-actions#39)。
如何升级
前往下载页获取 v0.15.1:Windows、macOS、Linux 或网页版。这次发布的 28 个文件与 v0.14.0 相同,可以用 SHA256SUMS.txt 校验。请只从官方 GitHub Release 下载,不要使用第三方镜像或转载的安装包。如果你是从 v0.13.0 或更早的版本升级,也请看看 v0.14.0 的更新说明。下一版 v0.16.0 带来了区域文字、.asl 样式库和更新检查。
完整更新日志(含全部合并的 PR):GitHub 上的 PhotoCraft v0.15.1。