两个都是「本来能用、突然全挂」的故障,建议所有用户升级。累计 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-files → form input[type=file] → input[accept="image/*"] 顺序尝试,旧版面仍可工作。
感谢 @htheanh2000 提供了完整的 DOM 排查过程。
升级
chatgpt-imagegen update
兼容性
无破坏性变更,无需改动任何调用方式。CLI 依旧零依赖(仅标准库),CI 覆盖 Python 3.10–3.13。