diff --git a/.agents/skills/release-guide/SKILL.md b/.agents/skills/release-guide/SKILL.md index 561ce08b..faf335af 100644 --- a/.agents/skills/release-guide/SKILL.md +++ b/.agents/skills/release-guide/SKILL.md @@ -38,6 +38,7 @@ description: "Wavelet 项目专用:根据自上一个正式版本 Tag 以来 固定使用以下分类: ```text +### 新增 ### 🛠 修复 ### ⚡️ 优化与改进 ### 💄 其他/体验 @@ -45,15 +46,26 @@ description: "Wavelet 项目专用:根据自上一个正式版本 Tag 以来 分类规则: +- 新功能、新能力、新配置、新任务:放入 ### 新增 - Bug、异常行为、错误逻辑:放入 ### 🛠 修复 - 性能、稳定性、接口、架构、兼容性:放入 ### ⚡️ 优化与改进 - 日志、文案、UI、文档、开发体验:放入 ### 💄 其他/体验 +「修复/优化」与「新增」的判定(关键): + +- **判定标准是“该功能在上一正式版本中是否已存在”**: + - 已存在 → 本次对其 bug 的修正可计入「🛠 修复」,对其行为/性能的改进可计入「⚡️ 优化与改进」; + - 不存在(本版本新增)→ 该功能的一切内容——包括开发过程中修的 bug、做的性能优化、补的索引——都只属于新功能开发的一部分,不应该在发布说明中提及。 +- 禁止把新功能的开发期修复/优化写进「修复」或「优化」:新功能此前版本没有,谈不上“修复/优化了旧行为”。 + 示例: ``` chore(release): v3.3.0 +### ✨ 新功能 +- 新增笔记库快照备份功能,支持定时备份与手动一键恢复(仅说明新增的功能, 禁止提及新功能开发时期的优化修复等内容)。 + ### 🛠 修复 - 修复了通过 MCP 接口操作时笔记库范围限制未正确生效的问题。 - 修复了 MCP 接口返回数据格式不一致的问题。 diff --git a/docs/changelog/index.md b/docs/changelog/index.md index cb9a7766..b4e6fb6b 100644 --- a/docs/changelog/index.md +++ b/docs/changelog/index.md @@ -18,30 +18,38 @@ sidebar: false ## [Unreleased] +## [v3.5.1] - 2026-08-09 + ### 新增 +- 日志存储解耦:ClickHouse 变为可选项,不启用时由 PostgreSQL/SQLite 承担全部日志功能;新增「切换日志数据库」任务支持 PostgreSQL/SQLite 与 ClickHouse 间数据迁移(迁移期间冻结日志写入,成功后自动切换主库并保留源数据);`log_database` / `log_db_migration` 设为受保护配置;ClickHouse 改为默认关闭。 +- 新增 PostgreSQL/SQLite 日志存储实现:节点访问日志按月分区,统计查询合并为单次扫描、IP 汇总归属地取查询窗口内最新记录、WAF 按 IP 聚合减少扫描次数,并新增 `logged_at` 前导索引与主机名小写表达式索引;过期清理直接删除完全过期的整月分区,启动时兜底预建当月及未来 2 个月分区。 +- 性能指标与访问日志的保留时长解耦:新增三库共用的 `metric_retention_days` 配置(默认 3 天),每日垃圾清理按独立短留存清理指标快照。 -- 日志存储解耦:ClickHouse 变为可选项,不启用时由 PostgreSQL/SQLite 承担全部日志功能;新增「切换日志数据库」任务支持 PostgreSQL/SQLite 与 ClickHouse 间数据迁移(迁移期间冻结日志写入,成功后自动切换主库并保留源数据);日志保留时间改为按存储库在业务配置中设置(`log_retention_days_*`),过期清理并入系统垃圾清理每日任务。 - -### 变更 - -- 系统定期垃圾清理由每 2 小时改为每日执行一次(凌晨 3 点,Asia/Shanghai),降低非必要高频扫描。 -- 服务工作者(SW)注入挑战页改为前台无感知:不再显示「加载中…」文案,页面空白,仅通过浏览器控制台输出 `[sw-challenge]` 调试信息(注册成功/失败/回退重定向),注入过程不打扰访客。 -- 性能指标(CPU/内存/磁盘/网络)与访问日志的保留时长解耦:新增三库共用的 `metric_retention_days` 配置(默认 3 天),系统垃圾清理每日任务按独立短留存清理指标快照;访问日志仍按 `log_retention_days_*` 清理。 -- ClickHouse 改为默认关闭:`clickhouse.enabled` 缺省或为 `false` 时不启用(此前会被强制置为 `true`),日志/指标由 PostgreSQL/SQLite 主库承担;显式 `true` 或设置 `CLICKHOUSE_HOST` / `CLICKHOUSE_ENABLED=true` 时启用。 -- 系统垃圾清理任务在删除过期日志后,会同时清理旧月份空分区表:PostgreSQL 按月分区的访问日志表(节点/用户)在数据删除后若该月分区已无数据,则自动删除对应分区表,避免历史分区表无限累积;仅删除「当前月之前」且为空的月份分区,当月/未来月及仍有数据的分区保留。 -- 日志存储(PostgreSQL/SQLite 实现)性能优化:节点访问日志统计查询合并为单次扫描;IP 汇总的归属地改为取查询窗口内最新记录(与 ClickHouse 口径一致)并避免跨全部分区扫描;WAF 按 IP 聚合由三次扫描合并为两次;新增 `logged_at` 前导索引与主机名小写表达式索引,加速日志列表排序与主机过滤;过期日志清理改为按数据校验后直接删除完全过期的整月分区(比逐行删除快,且不会误删保留期内数据),并新增启动时分区兜底,跨月停机重启后首次写入不再报「no partition of relation found」。 -- 用户访问日志(`w_user_access_logs`)记录禁用:不再采集与写入新的用户访问日志,已存历史数据与管理端访问日志统计页面保留;日志库迁移任务不再排空用户访问日志队列,状态接口不再展示其缓冲队列统计。 - -### 修复 - -- 修复 PoW 挑战页潜在 XSS:错误提示与状态文案改用纯文本渲染,挑战通过后的 `redir` 跳转参数仅允许 http/https 协议,防止异常文本被当作 HTML 执行或跳转到危险协议。 -- 修复邮件发送的邮件头注入风险:标题、发件人、收件人在写入邮件头前清除 CR/LF 换行符,防止注入额外邮件头(CWE-93)。 +### 🛠 修复 - 修复 UptimeKuma 同步调试日志泄露凭据:Socket.IO 事件日志不再打印 payload 内容(仅记录长度),避免凭据进入日志。 -- 日志保留天数配置(`log_retention_days_*`)不再继承旧键 `database_auto_cleanup_retention_days` 的值,统一默认 30 天;此前若旧键残留异常小值(如 2 天)会被静默带入,导致升级后首次垃圾清理把大部分日志直接删掉。 -- 「切换日志数据库」迁移任务修复冻结期目标库用户访问日志写入被误拦:`BuildForMigration` 未将跳过冻结标记传播到用户访问日志存储,导致迁移任务在清空目标库阶段以「log database is migrating」失败;现在目标库的清空与复制全程放行,任务可正常完成切换。 -- 「切换日志数据库」迁移任务补齐第 6 张表(用户访问日志)的复制与清空;目标为 PostgreSQL 时按源库时间范围预建分区,历史日志可正常迁移;冻结前先排空批写入队列,避免在途日志丢失。 -- 节点监控最新指标读取仅在 ClickHouse 为当前日志库时走 ClickHouse 快速路径,日志库切换后仪表盘不再读到旧库数据。 -- `log_database` / `log_db_migration` 为受保护配置,管理端创建/修改接口均拒绝手动写入。 +- 修复日志保留天数配置继承旧键导致的误删风险:`log_retention_days_*` 不再继承 `database_auto_cleanup_retention_days`,统一默认 30 天。 + +### ⚡️ 优化与改进 +- 系统定期垃圾清理由每 2 小时改为每日执行一次(凌晨 3 点,Asia/Shanghai),降低非必要高频扫描。 + +### 💄 其他/体验 +- 服务工作者(SW)注入挑战页改为前台无感知:不再显示「加载中…」文案,页面空白,仅通过浏览器控制台输出 `[sw-challenge]` 调试信息,注入过程不打扰访客。 +- 用户访问日志(`w_user_access_logs`)记录禁用:不再采集与写入新的用户访问日志,存量数据与管理端访问日志统计页面保留。 + + +## [v3.5.0] - 2026-08-08 + +### 🛠 修复 +- 修复 PoW 挑战页潜在 XSS 风险,状态与错误文案改用纯文本渲染,并限制跳转 URL 仅允许 http/https 协议。 +- 修复邮件发送的邮件头注入风险,写入邮件头前自动清除 CR/LF 换行符(CWE-93)。 +- 修复 UptimeKuma 同步调试日志泄露凭据问题,输出日志前对密码和 Token 等敏感字段打码。 + +### ⚡️ 优化与改进 +- 新增 Service Worker 离线兜底功能,为启用 HTTPS 的网站自动下发 Service Worker 并缓存离线页,域名不可达时展示离线兜底页面。 +- 重构响应页面设置,将源站错误页与 Service Worker 离线页整合至统一的「响应页面」(/responses)标签页,并增加 URL 查询参数 tab 状态同步。 + +### 💄 其他/体验 +- 新增离线页内置预制模板套件(「极简白底」、「线框拓扑」、「包豪斯」),与源站错误页模板风格保持一致,支持编辑界面一键加载与预览。 ## [v3.4.5] - 2026-08-08