Features
- Feature(push): 🚀 新增 WxPusher 极简模式推送支持, 降低推送配置门槛 (#632)
- Feature(update): 🚀
-v支持指定 tag / commit / 分支切换代码; 网络访问点支持镜像源参数 - Feature(update): 🚀 依赖按 libc 形态分流安装, 版本未变时跳过下载与安装, 解释器版本不足时自动补齐;
update.sh在容器外也可自行安装依赖 - Feature(tools): 🛠️ 新增离线密钥轮换工具, 支持 SQLite 与 MySQL
- Feature(image): 🐳 新增
Dockerfile.ja3-lite变体, 四条镜像线统一骨架 - Feature(compliance): 📄 镜像内随附第三方许可证文书; FOSSA 改用 CLI 上传, 一个项目覆盖 Python 层与随包原生库
- Feature(update): 🚀 声明
<服务目录>/.venv虚拟环境并支持 PATH 优先级提升(默认临时生效,QD_VENV_PERSIST=1可持久化); 支持QD_HOME指定服务目录
Changed
- Change(depends): 📦 依赖管理迁移到
pyproject.toml+uv.lock, 依赖安装到.venv; 移除 Pipfile / Pipfile.lock / requirements.txt - Change(image): 🏗️ 镜像基座改为纯 Alpine + wheelhouse, 去掉构建时 clone, 依赖来源改为显式契约
- Change(ci): 🛠️ 多架构构建流程重构, 新增构建计划 / 清单组装 / 标签分配脚本、冒烟闸门与派生 Dockerfile 一致性校验
- Change(depends): ⬆️ 前后端依赖升级并清理失效依赖与旧构建工具; 节日致贺文案按法定口径调整
- Docs: 📚 补充镜像标签说明、裸 Alpine 部署、密钥轮换用法、GitHub 加速源与许可声明索引; 修正 python-version badge 与 README 许可段
Fixed
- Bugfix(db): 🐛 修复公共模板在 MySQL 下因字段存储上限导致的更新失败
- Bugfix(ghcr): 🐛 修复多架构发布中标签互相覆盖与清单清理引起的空壳标签 (issue #642), 发布校验同时覆盖清单完整性
- Bugfix(update): 🐛 修复容器内热更新失效, 以及 glibc 分支、代码包路径、venv 判定、依赖安装回退等边界问题
- Bugfix(ci): 🐛 修复 push 事件的平台判定、构建输出传递、checkout 缺失与标签分配条件
- Bugfix(tools): 🐛 修复密钥轮换工具在 SQLite 备份路径与调用方式上的问题
- Bugfix(fossa): 🐛 FOSSA CLI 安装位置改为按 PATH 解析
- Bugfix(update): 🐛 修复 BSD / macOS 平台兼容(readlink、getopt、sed -i、mktemp), 主流程收进
main()避免脚本自更新时执行错位, 更新失败不再返回成功退出码
Security
- Security(config): 🔒 会话签名密钥改用
COOKIE_SIGN_SECRET显式配置, 未配置时每次启动随机生成 (COOKIE_SECRET已弃用);AES_KEY变更须先通过tools/rotate_aes_key.py迁移存量数据, 可用AES_KEY_STRICT启用严格校验 - Security(safe_eval): 🔒 收紧模板表达式求值的操作码与可用模块白名单, 适配 Python 3.12~3.14 的字节码变更并补充回归测试
- Security(web): 🔒
qs升级至^6.16.2(锁定 6.17.1)并同步重新打包随仓库提交的 webpack bundle, 修复该依赖的已知安全问题; 前端依赖补充pnpm.overrides约束并清理失效依赖 - Security(deploy): 🔒 清理部署链路中不再使用的凭据与镜像内多余组件, 修正容器内热更新失效