Skip to content

v0.21.2 — 修复画廊连不上与 img2img 附件失败

Latest

Choose a tag to compare

@leeguooooo leeguooooo released this 28 Jul 09:10

两个都是「本来能用、突然全挂」的故障,建议所有用户升级。累计 v0.21.0 之后的 0.21.1 与 0.21.2 两次修复。

修复

画廊在 Python 3.13+ 上全线连不上(#20

style search / pull / update / publish,以及 --style-online SLUG--style NAME 的自动拉取,在 Python 3.13 及以上全部报错:

error: cannot reach https://drawstyle.leeguoo.com
([SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed:
Basic Constraints of CA cert not marked critical)

由于 0.18.0 起风格全部来自画廊,3.13+ 的新装用户等于开箱一个风格都用不了。Homebrew 当前默认 Python 已是 3.14,影响面很广。

证书本身没有问题——curl 与浏览器一直正常。原因是 Python 3.13 起默认开启 VERIFY_X509_STRICT,而画廊走 Cloudflare,其默认 Compatible 打包策略会额外下发交叉签名的根证书,该链最终走到 1998 年的 GlobalSign 根证书,其 basicConstraints 未标记为 critical,被严格模式拒绝。

服务端无法解决:Universal SSL 由 Cloudflare 选择 CA 且可随时变更而不通知,bundle_method 仅对上传的自定义证书生效。因此改在客户端处理,仅清除 VERIFY_X509_STRICT 这一个标志。主机名、有效期与完整信任链照常强制校验,已用 badssl.com 的 expired / self-signed / wrong.host / untrusted-root 四例确认仍全部被拒。

web 后端 img2img 附件失败(#19

带参考图生成时卡在附件步骤:

attaching 1 reference image(s)
chrome-use upload failed (exit 1):
✗ file input is still empty after upload — the page did not accept the file(s)

纯文生图不受影响。ChatGPT 改了输入框结构:真正的 composer 输入框是表单内的 #upload-files,而旧选择器 input[accept="image/*"] 现在只命中表单的 sr-only 假输入框,文件投进去就没了。

改为按 #upload-filesform input[type=file]input[accept="image/*"] 顺序尝试,旧版面仍可工作。

感谢 @htheanh2000 提供了完整的 DOM 排查过程。

升级

chatgpt-imagegen update

兼容性

无破坏性变更,无需改动任何调用方式。CLI 依旧零依赖(仅标准库),CI 覆盖 Python 3.10–3.13。