github qd-today/qd 20261108

47 minutes ago

Features

  1. Feature(push): 🚀 新增 WxPusher 极简模式推送支持, 降低推送配置门槛 (#632)
  2. Feature(update): 🚀 -v 支持指定 tag / commit / 分支切换代码; 网络访问点支持镜像源参数
  3. Feature(update): 🚀 依赖按 libc 形态分流安装, 版本未变时跳过下载与安装, 解释器版本不足时自动补齐; update.sh 在容器外也可自行安装依赖
  4. Feature(tools): 🛠️ 新增离线密钥轮换工具, 支持 SQLite 与 MySQL
  5. Feature(image): 🐳 新增 Dockerfile.ja3-lite 变体, 四条镜像线统一骨架
  6. Feature(compliance): 📄 镜像内随附第三方许可证文书; FOSSA 改用 CLI 上传, 一个项目覆盖 Python 层与随包原生库
  7. Feature(update): 🚀 声明 <服务目录>/.venv 虚拟环境并支持 PATH 优先级提升(默认临时生效, QD_VENV_PERSIST=1 可持久化); 支持 QD_HOME 指定服务目录

Changed

  1. Change(depends): 📦 依赖管理迁移到 pyproject.toml + uv.lock, 依赖安装到 .venv; 移除 Pipfile / Pipfile.lock / requirements.txt
  2. Change(image): 🏗️ 镜像基座改为纯 Alpine + wheelhouse, 去掉构建时 clone, 依赖来源改为显式契约
  3. Change(ci): 🛠️ 多架构构建流程重构, 新增构建计划 / 清单组装 / 标签分配脚本、冒烟闸门与派生 Dockerfile 一致性校验
  4. Change(depends): ⬆️ 前后端依赖升级并清理失效依赖与旧构建工具; 节日致贺文案按法定口径调整
  5. Docs: 📚 补充镜像标签说明、裸 Alpine 部署、密钥轮换用法、GitHub 加速源与许可声明索引; 修正 python-version badge 与 README 许可段

Fixed

  1. Bugfix(db): 🐛 修复公共模板在 MySQL 下因字段存储上限导致的更新失败
  2. Bugfix(ghcr): 🐛 修复多架构发布中标签互相覆盖与清单清理引起的空壳标签 (issue #642), 发布校验同时覆盖清单完整性
  3. Bugfix(update): 🐛 修复容器内热更新失效, 以及 glibc 分支、代码包路径、venv 判定、依赖安装回退等边界问题
  4. Bugfix(ci): 🐛 修复 push 事件的平台判定、构建输出传递、checkout 缺失与标签分配条件
  5. Bugfix(tools): 🐛 修复密钥轮换工具在 SQLite 备份路径与调用方式上的问题
  6. Bugfix(fossa): 🐛 FOSSA CLI 安装位置改为按 PATH 解析
  7. Bugfix(update): 🐛 修复 BSD / macOS 平台兼容(readlink、getopt、sed -i、mktemp), 主流程收进 main() 避免脚本自更新时执行错位, 更新失败不再返回成功退出码

Security

  1. Security(config): 🔒 会话签名密钥改用 COOKIE_SIGN_SECRET 显式配置, 未配置时每次启动随机生成 (COOKIE_SECRET 已弃用); AES_KEY 变更须先通过 tools/rotate_aes_key.py 迁移存量数据, 可用 AES_KEY_STRICT 启用严格校验
  2. Security(safe_eval): 🔒 收紧模板表达式求值的操作码与可用模块白名单, 适配 Python 3.12~3.14 的字节码变更并补充回归测试
  3. Security(web): 🔒 qs 升级至 ^6.16.2(锁定 6.17.1)并同步重新打包随仓库提交的 webpack bundle, 修复该依赖的已知安全问题; 前端依赖补充 pnpm.overrides 约束并清理失效依赖
  4. Security(deploy): 🔒 清理部署链路中不再使用的凭据与镜像内多余组件, 修正容器内热更新失效

Don't miss a new qd release

NewReleases is sending notifications on new releases.