Repository navigation
Releases: Virace/QingYan
Release list
QingYan v0.2.5
新增
- 评论审核列表在时间后显示紧凑的邮件投递状态,覆盖服务商已接受、失败、处理中、未发送和未知五种状态。
- 点击状态可查看站点人员提醒与评论者回复提醒的脱敏投递详情。
- 可从详情进入按当前评论过滤的任务记录,并按失败原因跳转到对应恢复设置。
可靠性与安全
- 邮件任务、投递记录和初始事件使用同一事务创建,投递结果、任务状态和事件日志也在同一事务完成。
- 对关闭通知、无接收人、退订、信誉抑制等未发送原因建立幂等决定记录。
- 任务中心和评论详情只返回安全投影,不暴露完整邮箱、provider message ID、内部 payload 或原始服务商错误。
- 修正非邮件通道规划失败误污染邮件状态的边界。
- 补齐安全应用日志、重试与终止失败事件。
从 v0.2.4 升级
在 QingYan 仓库根目录运行:
./scripts/update.sh --yes v0.2.5升级会应用 0003_comment_email_delivery_observability.sql,为评论关联的通知任务创建组合查询索引。该迁移不重写评论、任务或投递数据。更新脚本会先创建整站备份,并在写入前显示脱敏 UpgradePlan;请勿跳过备份。
“邮件服务商已接受”仅表示发送请求已被接受,不代表邮件最终进入收件箱。
验证
- 149 个 Vitest 文件通过、1 个真实 Redis 环境用例跳过。
- 883 项 Vitest 通过、1 项跳过。
- Playwright 29/29 通过。
- Smoke、类型检查、Biome、生产构建、配置检查和 updater 真实 Git transaction 测试通过。
- Admin 界面人工 Review 通过。
QingYan v0.2.4
新增
- 站点通知改为按评论事件配置接收人和其他发送目标。
- 新待审评论、直接发布评论固定显示,并可分别多选站点人员。
- 没有接收人时不再视为链路损坏,而是明确显示该事件不会发送。
修复与体验
- 修复通知接收设置只在前端假保存、刷新后丢失的问题。
- 保存站点设置和事件接收人使用同一事务,失败时不会留下半套配置。
- 移除 route、内部标识和后端原始错误等工程化前端提示,并约束长文本布局。
- 同步迁移、导入导出、诊断、每日摘要和任务失败通知。
从 v0.2.3 升级
在 QingYan 仓库根目录运行:./scripts/update.sh --yes v0.2.4
升级会应用 0002_site_notification_events.sql。更新脚本会先创建整站备份;请勿跳过备份。升级完成后,在 Admin Console 的站点设置中分别为两类评论事件选择接收人并应用设置。
验证
- 146 个测试文件通过、1 个跳过。
- 851 项测试通过、1 项跳过。
- 类型检查、Biome、Admin 生产构建和配置检查通过。
- 真实本地 HTTP PATCH/GET 验证通知配置可跨请求保存。
- 本版本不包含 README 改动。
QingYan v0.2.3
修复
- 更新脚本不再把生产侧修改过的
compose.yml和未跟踪运维文件一律当作源码污染。 - 更新前自动安全暂存部署文件,切换到目标 release 后原样恢复,并使用实际生产
compose.yml构建。 - 仍会在整站备份前阻断
compose.yml之外的已跟踪源码改动。 - tag 切换或镜像构建失败时,自动恢复旧 Git revision、原部署文件与未跟踪文件;旧容器不会被替换。
Docker Compose 更新
在 QingYan 仓库根目录运行:
curl -fsSL https://raw.githubusercontent.com/Virace/QingYan/v0.2.3/scripts/update.sh | bash -s --脚本会依次完成环境预检、整站备份、Release 切换、镜像构建、UpgradePlan 确认、数据升级、重启和健康验收。
验证
- Vitest:145 个文件通过、1 个跳过;843 个测试通过、1 个跳过。
- Bash syntax、ShellCheck、受控外部边界测试通过。
- 真实 Git transaction 覆盖成功升级与构建失败回滚,
compose.yml/up.sh均原样保留。 - 完整 Docker Compose 构建通过,镜像内
qyctl --version为QingYan 0.2.3。
QingYan v0.2.2
重要修复
- 修复 v0.2.1 在 node:24-bookworm-slim 中因缺少 CA 证书而无法访问 TUNA HTTPS、最终 APT exit 100 的问题
- TUNA 主仓库改用 HTTP,Debian Release 元数据继续由镜像内 keyring 验签;Debian security 源保持基础镜像默认配置
- 已通过无缓存 deps build 和完整 Docker Compose production build
一键更新
- 新增 ./scripts/update.sh,统一执行环境预检、Release 选择、整站备份、镜像构建、UpgradePlan、数据升级、重启和健康验收
- 新容器激活前失败会恢复原 Git revision;激活后失败不会自动覆盖数据,会输出备份位置和最近容器日志
- Admin/CLI 更新计划同步指向 ./scripts/update.sh
从旧版本首次更新
在 QingYan 仓库根目录只需执行:
bash <(curl -fsSL https://raw.githubusercontent.com/Virace/QingYan/v0.2.2/scripts/update.sh)
脚本默认交互确认;明确接受全部确认可追加 --yes v0.2.2。
验证
- Vitest: 843 passed, 1 skipped
- 根项目与 Admin TypeScript typecheck 通过
- Biome format/lint、配置检查通过
- Bash 受控场景测试、bash -n、ShellCheck 通过
- 最终镜像内 qyctl --version 输出 QingYan 0.2.2
QingYan v0.2.1
修复
- qyctl update check 在发现新版时同时显示当前版本和最新版本
- Docker deps 阶段将 Debian 主仓库固定为 TUNA,保留 Debian 官方 security 源
- APT 增加 3 次重试、30 秒 HTTP/HTTPS 超时并强制 IPv4,避免下载索引无期限停滞
升级说明
- 本版本仍未提供 QingYan 自动更新 manifest,需要按部署文档备份后手动切换 release tag 并重建容器
- 可从 v0.1.0 或 v0.2.0 直接升级到 v0.2.1
验证
- Vitest: 842 passed, 1 skipped
- 根项目和 Admin TypeScript typecheck 通过
- Biome format/lint 与配置检查通过
- 按本轮要求未执行本地 build 或 Docker build;生产环境重建是本次镜像源调整的最终验收
QingYan v0.2.0
QingYan 0.2.0 聚焦评论邮件通知的可诊断性与真实链路验证,并首次实际使用 v0.1.0 之后的 Upgrade lifecycle。
主要变化
- 修复评论创建后站点人员/全局管理员通知的运行时接线、收件人与缓存问题。
- 增加评论框“回复提醒”默认勾选设置,并贯通公开 bootstrap 与站点配置。
- 在站点通知设置中增加三条链路静态诊断,明确指出阻挡收信的具体配置与原因。
- 增加 QingYan 内置真实双链路测试:评论者 A 发评论后站点人员收信;回复该评论后 A 收信。
- 增加 Admin Console 的通知诊断和真实链路测试界面。
- 增加
0001_notification_reliability.sql,为v0.1.0实例补齐通知可靠性字段。 - 修复 Web Upgrade Mode 未输出可用一次性升级 token 的问题。
从 v0.1.0 更新
本版本不附带自动替换程序的二进制资产。qyctl update check 可以发现本 Release,但生产程序仍按 Git release tag 与 Docker Compose 手动更新:
- 使用旧容器执行
qyctl backup ... --yes创建整站备份。 git fetch --tags origin后切换到v0.2.0。- 重建并启动 QingYan 容器。
- 在 Web Upgrade Mode 确认 UpgradePlan,或使用
qyctl upgrade --yes执行升级。 - 重启容器,确认
qyctl --version为0.2.0,再次运行qyctl update check应显示当前已是最新版本。
完整命令见 docs/deployment.md。
发布验证
- 145 个测试文件通过、1 个跳过。
- 841 个测试通过、1 个跳过。
- Biome format/lint、Root/Admin typecheck、Admin/后端 build、示例配置校验和 diff check 均通过。
- 构建产物版本:
QingYan 0.2.0。
发布来源
- PR: #4
- Commit:
af14e9e42af947a7b8e2a1e07a1c18728adc0a36
QingYan v0.1.0
QingYan 0.1.0 首个正式版本。\n\n## 发布前验证\n- pnpm run check:通过。\n\n## 说明\n- 本版本作为首版 release 发布。\n- 程序更新检测和升级预检入口不会影响首版正常运行。\n- 本次 release 暂不附带自动更新资产;后续在实机更新链路验证后再补齐 qingyan-update-manifest.json、linux-x64 tar.gz 与 sha256。\n\n## 源码\n- Tag: v0.1.0\n- Commit: 3eb90ac