Skip to main content

v2.10.104(最新)

防恶意刷流量:公开只读接口此前完全没有限流,可能被脚本狂刷打爆自己的 Cloudflare 配额。

🛡️ 安全加固

  • 公开只读接口全局频控(兜底层):“/api/posts、/api/search、/api/popular、/api/comments、/api/stats等现在统一在业务路由之前过一道计数器——搜索 60 次/分、普通读 240 次/分、全量总闸 600 次/分,超限返回429并带Retry-After`
    • 风险不是数据泄露,而是打自己的配额:Workers 免费版 10 万次/天、D1 500 万行读取/天,刷满了当天全站打不开
    • fail-open:KV 未绑定或抖动时一律放行,绝不让计数器故障挡住正常访客
    • 只信任 CDN 注入的 CF-Connecting-IP,不读客户端可控的 X-Forwarded-For(否则改一个头就能绕过所有按 IP 的限流)
    • 只拦读接口,写接口豁免(写有各自的业务级限流,避免误伤正常用户)
  • 深翻页封顶:GET /api/posts 的 page 参数上限 200 页,避免持续付出 OFFSET 代价去打 D1 配额
这层是兜底,不是主力。主力是 Cloudflare 平台层(WAF Rate Limiting Rules + Bot Fight Mode)——那层在 Worker 之前拦截,连 Workers 配额都不消耗。

📝 文档与测试

  • smoke-test.js 181 → 182 例(新增:真实连打 700 次请求验证 429、按 IP 隔离、fail-open、写接口豁免)

v2.10.101 ~ v2.10.103

汇总 v2.10.101 ~ v2.10.103 的变更。

✨ 新功能

  • v2.10.102(2026-10-12)— 后台「设置 → 功能开关」新增音乐播放器:关闭后前台不再初始化播放器界面与音频请求;开关保存到 D1 site_settings.features.musicPlayer,默认开启

🔧 修复与优化

  • v2.10.101(2026-10-12)— 修复早期从 WordPress 导入的老文章正文里混着原始 HTML(&nbsp; 实体、<!--more--> 注释、<embed> Flash 播放器)的问题:客户端接管重绘时这些标记不再被当成字面文字直接显示,服务端与客户端渲染结果一致
  • v2.10.103(2026-10-13)— 背景动画默认关闭:不再自动开启,用户可在顶栏一键开启且选择会被记住;?bg=1、prefers-reduced-motion 等原有行为不变
v2.10.87 是空号:该版本号从未落到代码里(app.js 的版本号长期停留在 2.10.83,直到 v2.10.98 才修正),也没有对应提交,因此没有变更记录。

📝 文档与测试

  • smoke-test.js 178 → 181 例(新增:老文章原始 HTML 渲染、音乐播放器后台开关、背景动画默认关闭)
  • 主仓库 docs/ 与本站同步到 v2.10.103(中英双语)

v2.10.66 ~ v2.10.100

本节补齐 v2.10.63 → v2.10.100 的变更(v2.10.64 / v2.10.65 为导航交互打磨,无独立条目)。

🔧 变更

  • v2.10.66(2026-10-07)— 统一下拉箭头风格
  • v2.10.67(2026-10-07)— 顶栏「发现」选中样式对齐优化:箭头改为绝对定位收进右侧内边距,按钮不再比同级菜单宽出一截,选中下划线只覆盖文字宽度,不再显得偏右
  • v2.10.68(2026-10-07)— 修正「发现」下拉菜单项的选中样式:下拉项不再继承顶栏下划线,改为左对齐列表,选中项使用左侧强调条 + 浅色高亮
  • v2.10.69(2026-10-07)— 后台导航编辑器支持自定义二级下拉:任意一级项都能挂子菜单,子菜单可用层级按钮标记为「发现」二级;导航支持拖拽自由排序
  • v2.10.70(2026-10-07)— 下拉风格全局统一:内置「发现」与后台自定义的一级下拉共用同一套箭头定位、大小、颜色与展开态规则,以后在后台新增任何带二级的导航都会自动与「发现」保持一致
  • v2.10.71(2026-10-07)— 展开态配色统一:自定义下拉展开时主链接文字与箭头一起变为强调色(此前只有箭头变色),桌面顶栏与手机侧栏同步生效
  • v2.10.72(2026-10-07)— 紧急修复:修正 index.html 中 app.min.js 脚本地址多出的反斜杠,导致线上主脚本 404、页面永久停在「加载中」;同时首屏渲染抛错时不再卡死加载动画(改为显示错误与返回首页),「发现」下拉无内容时不再渲染空菜单
  • v2.10.73(2026-10-07)— 修正「发现」字号偏小:下拉触发按钮上的 font 简写会把字号重置为 16px(其他导航 18.5px),改为只继承字体族;侧栏导航同步继承字体族
  • v2.10.74(2026-10-07)— 后台导航支持取消「发现」二级:内置标签 / 分类 / 历史 / 系列 / 热门可一键移出一级导航,支持放入 / 移出 / 默认三态切换
  • v2.10.75(2026-10-07)— 后台导航新增「取消发现二级」:内置的标签 / 分类 / 历史 / 系列 / 热门也能一键移出「发现」下拉、回到一级导航,再点一次可放回;支持放入 / 移出 / 默认三态
  • v2.10.76(2026-10-07)— 后台导航编辑器输入框宽度统一:一级行与二级子行改用固定列网格对齐,徽标不再挤占输入框宽度,子级不再左缩进
  • v2.10.77(2026-10-07)— 自定义分类:分类导航下可自由添加二级分类(软件 / 系统 / 服务器…),文章可从下拉选择分类,点击分类按 ?category= 过滤出与首页一致的文章列表;「发现」下拉内支持嵌套展开子分类
  • v2.10.78(2026-10-07)— 后台导航编辑器强化层级感:父级与二级子级成组显示,加竖向连接线 / 折角 / 节点点与父级色条,从属关系一目了然,且不影响一级二级输入框宽度一致性
  • v2.10.79(2026-10-07)— 后台导航父子成组支持整体拖拽:拖动一级导航时父级与全部二级子级一起移动、一起高亮,落点插入线覆盖整组;并修正父级被拖到自己子级下会误变成子级的问题
  • v2.10.80(2026-10-07)— 统一二级菜单交互与风格:分类等带下拉的导航点击标题即可展开(与「发现」一致,不再必须点小箭头),下拉顶部新增「全部」入口返回父页面;电脑端与手机端行为完全一致
  • v2.10.81(2026-10-07)— 移除下拉里的「全部」入口:父级导航只作为二级菜单的标题提示,点击仅展开下拉、不再跳转父页面,光标统一为手型
  • v2.10.82(2026-10-07)— 修复二级菜单无法收起:再次点击同一导航即可关闭(桌面 / 手机 / 嵌套子级统一);手机端二级箭头横向位置、点击区域与旋转方向与「发现」完全对齐
  • v2.10.83(2026-10-07)— 分类 / 标签二级菜单下的空列表不再显示「去写一篇」按钮,避免向访客暴露后台写作入口;仅站点确实一篇文未发时才显示,筛选后为空改为中性文案
  • v2.10.84(2026-10-10)— 相关文章移到上下篇导航之下;上下篇切换由「翻书」改为交叉淡入淡出,滚动位置不再跳动
  • v2.10.85(2026-10-10)— 修复点击上一篇 / 下一篇后新文章不从开头开始:阅读位置记忆只在刷新时生效,跳转一律回到文章顶部;并补全缺失的 toast 实现
  • v2.10.86(2026-10-10)— 「导出静态站」先在用户手势内弹出另存为对话框,让用户自己选保存位置,不再直接下载到浏览器默认目录
  • v2.10.88(2026-10-10)— 后台功能开关新增「首页显示的标签」,可自选哪些标签出现在首页,避免标签堆积
  • v2.10.89(2026-10-10)— 分类独立为一级导航,不再收纳在「发现」下拉中
  • v2.10.90(2026-10-10)— 补齐 zh-CN 语言包缺失的 8 个键(v2.10.86 / v2.10.88 漏加),并更新导航断言适配分类独立
  • v2.10.91(2026-10-10)— 博客设置记住上次停留的标签页,刷新不再跳回站点基础信息
  • v2.10.92(2026-10-10)— 修复后台导航菜单编辑器不显示二级菜单与自定义项(过期草稿遮蔽服务端数据)
  • v2.10.93(2026-10-10)— 首屏弱网兜底:预加载关键资源 + 8 秒慢网提示可重试 + 30 秒明确失败文案
  • v2.10.94(2026-10-10)— 评论区切换最热 / 最新:即时按下反馈 + 骨架占位过渡,不再闪空白或先空后出
  • v2.10.95(2026-10-10)— AI 摘要「重新生成」仅管理员可见;清理页面各处间隔圆点(页脚导航、文章信息行、标签、精选卡片)
  • v2.10.96(2026-10-10)— 后台功能开关新增「阅读字号」:可隐藏 / 显示正文字号调节按钮
  • v2.10.97(2026-10-10)— 首屏云端快照兜底(内容先出,不再等接口);尝试让静态资源长缓存真正生效(run_worker_first)
  • v2.10.98(2026-10-10)— 修复关于页 / 后台显示的版本号停在 v2.10.83,统一同步为当前版本,并加「版本号三处一致」守卫测试
  • v2.10.99(2026-10-10)— 功能开关补齐漏项:新增「划线高亮工具」(含高亮汇总 / 清除 / 导出 / 导入)与「收藏(稍后读)」开关;关闭只隐藏界面,已保存记录不删除
  • v2.10.100(2026-10-10)— AI 摘要「重新生成」改为服务端会话校验(新增 GET /api/admin/session):本地残留的过期 token 不再让游客看到管理员按钮;评论区与页脚导航之间增加间距
  • v2.10.100(2026-10-10)— 文档同步到当前版本:补齐 v2.10.84~v2.10.100 变更日志、更新功能开关与测试例数清单、新增会话自检接口说明;并加「文档不过期」守卫测试,文档版本号或测试例数与代码不一致即阻断部署

📝 文档与测试

  • 主仓库 docs/ 全部文档同步到 v2.10.100(中英双语):功能清单、变更日志、接口表
  • 新增两条守卫测试:「版本号三处一致」(BLOG_VERSION / index.html ?v= / sw.js CACHE_VERSION)与 「文档不过期」(文档标注的版本号与测试例数必须与代码一致,否则阻断部署)
  • smoke-test.js 78 → 178 例

⚡ 首屏与弱网

  • v2.10.93:关键资源显式 preload、云端接口 8 秒超时截止、正文 10 秒保护、失败渲染可重试的失败页(不再死循环拉取)
  • v2.10.97:云端快照兜底(本地快照最长用于 12 小时首屏,先出内容、后台并行刷新真实数据)
  • v2.10.98:修复关于页 / 后台显示的版本号停在 v2.10.83
关于「网站打开慢」:实测排查结论是线路丢包,不是项目代码。直连博客真实 IP 抽样 10 次失败 24 次,同网络下 cloudflare.com 10 次全通(212858ms)。首屏兜底是为了在丢包时优雅降级,而非掩盖性能问题。

  • v2.10.101(2026-10-12)— 修复老文章(WordPress 导入)原始 HTML 被当字面文字显示:实体解码 / <!--more--> 注释清除 / Flash <embed> 移除 / 老排版标签归一,代码块与 <script> 转义行为不变
  • v2.10.102(2026-10-11)— 后台功能开关新增「音乐播放器」,前台按开关决定是否初始化
  • v2.10.103(2026-10-13)— 背景动画默认关闭(顶栏可一键开启并记忆),不再自动播放
  • v2.10.104(2026-10-13)— 安全加固:公开只读接口全局频控(搜索 60/分、读 240/分、总闸 600/分,429 + Retry-After,fail-open,只信 CF-Connecting-IP)+ page 参数封顶 200

v2.10.63(2026-10-05 · 最新)

🔧 后台显示修复

  • 功能开关里的图表 / 公式提示改为自然语言,不再直接显示 ```mermaid、`$…--- title: “更新日志” description: “版本更新记录”

等原始代码语法
  • AI 写作助手 / 评论工具的结果改为普通文本排版,不再使用代码块样式
  • 加深后台组件测试,防止原始代码语法和代码块样式回归

v2.10.62

✨ 导航开关

  • 后台「设置 → 功能开关」新增显示新增导航项
  • 关闭后隐藏分类 / 历史 / 系列 / 热门等新增默认导航项
  • 不影响首页、标签、归档、留言板、关于等基础导航,也不会删除后台自定义链接
  • 开关保存到 D1 site_settings.features.navExtras,默认开启

v2.10.61

🔧 导航修复

  • 后台保存过的 nav_menu 现在会在首次升级时自动补齐新增默认项:分类、历史、系列、热门等,同时保留用户已有的自定义链接
  • 补齐完成后保存 nav_defaults_version;此后用户主动删除的导航项不会被反复加回
  • 后台「顶部导航」的默认列表、重置按钮与前台默认导航保持同一顺序
  • 如果浏览器仍显示旧导航,强制刷新一次或清除 PWA 旧缓存即可加载 v2.10.61

v2.10.60

汇总 2026-10-03 ~ 2026-10-04 的功能、稳定性与文档更新。

✨ 内容与分发

  • 文章级 SEO:每篇文章可覆盖 SEO 标题 / 描述 / canonical / noindex,应用到 title、meta、Open Graph、Twitter Card 与 JSON-LD
  • 草稿预览分享链接:HMAC-SHA256 签名,默认 7 天(可设 1–30 天),预览页 noindex / 不统计 / 不加载评论;修改站点密码会立即失效
  • 一键导出静态站:预渲染首页、每篇文章、归档、标签、关于与 404 页面,每个路由独立 index.html,附 RSS / Sitemap 与部署说明
  • 打印 / 导出 PDF:文章页一键打印,隐藏导航 / 评论 / 广告 / 播放器 / 目录浮层,表格、图片、公式与代码避免分页断裂
  • Webmention:接收外站通知,抓取来源页并校验确实链接到本站文章后收录,后台可管理
  • 多作者:文章作者字段、/authors 列表与 /authors/:name 作者主页;作者字段随备份与版本恢复保留

✨ 编辑与阅读

  • 分类体系恢复:分类页、首页筛选、编辑器分类选择与默认导航
  • 阅读历史 / 稍后读:/history 页面 + 文章收藏
  • 正文划线高亮:选中即高亮、备注、汇总浮层、JSON 导入 / 导出与本机保存
  • 阅读位置记忆:再次打开文章自动回到上次阅读位置
  • 正文字号调节与移动浮动目录:桌面 A− / A / A+,移动端抽屉式目录
  • 评论与留言板增强:服务端分页、最新 / 最热排序、评论点赞 / 精选 / 置顶、反机器人蜜罐 + 时间戳、敏感词过滤、后台多选批量审核
  • 编辑器:表格 / 任务列表 / 分割线 / 代码块、字数统计、快捷键提示、草稿自动保存与崩溃恢复

✨ 后台、数据与可观测

  • 功能开关:首页分页、广告位、前端错误上报、评论反机器人、Mermaid / KaTeX 均可后台开关
  • 文章数据:浏览 / 点赞 / 评论 / 综合得分、趋势图与 CSV 导出
  • 来源 / 国家 / 设备统计:来源域名、两位国家码、设备类型、系统、品牌按天聚合;不记录原始 IP
  • 站点健康检查:D1 表可读性、KV、R2 媒体 / 备份桶、AI 与 Resend 绑定状态
  • 操作审计日志:类型 / 日期筛选、分页、CSV 导出与清空
  • 前端错误日志:未处理异常 / Promise 拒绝匿名上报,按指纹聚合,最多保留 300 条
  • 订阅分组与群发:订阅者搜索 / 筛选 / 分页 / 导出,按分组群发邮件
  • 备份增强:R2 私有备份列表分页、内容摘要、下载 / 删除 / 恢复与恢复前快照
  • 媒体 / 音乐增强:搜索、分页、大图预览、批量删除、复制 Markdown、Pages / Workers 双形态可用
  • 仪表盘:统一骨架屏、渐变面积趋势图、7 项统计卡与存储 / 订阅概览

🛡️ 安全与稳定性

  • 强制改密:must_change=1 时,除改密 / 登出外的后台 API 统一返回 403 PASSWORD_CHANGE_REQUIRED
  • 密码长度:云端最少 8 位;静态模式仍为本地门禁
  • 预览密钥:新增 BLOG_PREVIEW_SECRET,不填时由管理员密码哈希派生
  • 评论词库与通知:新增 COMMENT_BLOCKLIST、BLOG_ADMIN_EMAIL
  • AI 开关:新增 BLOG_AI_ENABLED / BLOG_AI_PUBLIC,部署工作流非空时自动写入
  • 修复来源 / 设备统计未生效、后台全部评论加载、后台全部文章分页 serverTotal、i18n 缺失导致 t is not defined 等问题

🧪 测试与文档

  • smoke-test.js 158 例、gb-verify.js 18 例、search-verify.js 25 例 全部通过
  • 数据库迁移推进到 0032_post_author.sql
  • 主仓库文档统一迁入 docs/,新增中英双语开发文档、环境变量总表与部署指南同步
  • 文档站同步当前版本、API、D1、配置、安全、后台与功能参考

v2.7.2

🛡️ 安全加固

  • 登录限流重做为三层短冷却:单 IP 5 次失败 → 15 分钟;同一子网(IPv4 /24、IPv6 前 4 段)15 次失败 → 60 秒冷却;全站 30 次失败 → 仅 10 秒冷却 + 告警日志。不再使用全局长锁定——对只有一个管理员的系统,全局长锁定防不住攻击者(换个 IP 即可继续),却能被攻击者用来把站长挡在门外
  • 新增应急通道:登录请求携带正确的 X-Setup-Key(即 BLOG_ADMIN_SETUP_KEY)可跳过全部限流,但不跳过密码校验;后台登录页在触发限流时自动展开「被限流?用安装密钥登录」入口
  • 锁定期与冷却期内直接返回 429 早退,不读也不写数据库:分布式爆破最多每 10 秒消耗一次 D1 写入,避免被失败登录刷爆免费写额度;计数 1 小时老化,冷却结束后保留计数,防止「等冷却归零再重试」
  • 修复了「全局限流三个常量从未声明」导致防 IP 轮换逻辑实际从未生效的问题

✨ 新功能

  • 可选边缘限流绑定:配置 GitHub Secret BLOG_RATE_LIMIT_BINDING(正整数,如 1001)后,部署工作流会自动改用 wrangler@^4.36.0 并注入 [[ratelimits]] 绑定(绑定名 LOGIN_LIMITER,10 次/分钟/位置);未配置时行为与旧版完全一致,代码检测不到绑定即回退 D1 计数
  • 可复现的截图工具 scripts/screenshots/:本地演示服务器(真实 public/ 代码 + mock API 示例数据)+ 无头 Chrome 截图脚本,不需要管理员密码、不接触线上数据,可随时重跑;共生成 23 张截图

🔧 变更

  • BLOG_VERSION → 2.7.2,public/index.html 的静态资源 ?v= → 2.7.2,语言包缓存版本 I18N_VER → 9
  • smoke-test.js 77 → 78 例(新增「登录限流」整套回归:锁定期间正确凭据、错误密钥不可绕过、计数不写库、计数老化、子网隔离、全局冷却不锁死、限流器异常降级)

📝 文档

  • 主仓库文档全面中英双语化:README、CLOUDFLARE_SETUP_GUIDE、DEPLOYMENT_SECRETS_GUIDE、SECURITY、ABOUT、CODE_OF_CONDUCT 均提供 X.md + X_EN.md 成对文件;CONTRIBUTING、PR / Issue 模板、FUNDING.yml、public/llms.txt 改为单文件内中英对照;每个文件首行加入语言切换入口
  • 新增 Cloudflare 配置完全指南(新手版)(中英双语,891 行):账号注册 / D1 / KV / API Token 权限勾选 / R2 桶与 CORS / Workers AI / 自定义域名与 Zone ID / Secrets 全表 / 部署 / 首次初始化 / 12 项自检 / 故障排查 / 免费额度,并含第 9 节「加固后台登录入口」(Cloudflare Access / WAF 限流规则 / Workers 边缘限流绑定三种方案)
  • 修正主仓库 README 中的过时描述:强调色 4 种(非 6 种)、冒烟测试 78 例、KV 真实键表、SITE_URL 未配置时 CORS fail-closed、迁移补到 0015

v2.7.1

🔧 修复

  • R2 上传签名修复:预签名 PUT 的签名头改为 content-type;host——Content-Type 参与签名,浏览器必须原样发送,R2 桶 CORS 的 AllowedHeaders 必须包含 Content-Type;签名路径按 RFC 3986 逐段编码,最终 URL 与签名路径完全一致;不签 Content-Length(浏览器差异会导致 403 且响应不带 CORS 头)
  • 音乐上传写回音乐桶:R2_BUCKET 与 R2_PUBLIC_BASE 都配置时音乐写入音乐桶,仅当音乐桶配置不完整时才回退 R2_MEDIA_BUCKET(此前会误写媒体桶);上传失败会暴露真实失败阶段,便于定位预检失败
  • 音频白名单补充 oga

🛡️ 安全加固

  • 静态资源响应也统一注入安全响应头;未知 /api/* 一律返回 JSON 404,绝不回退 HTML(functions/api/[[path]].js 为 Pages 侧兜底)
  • 新增迁移 0015 热点索引:idx_comments_post_id / idx_comments_status_date / idx_music_sort / idx_media_created_id / idx_admin_sessions_exp
  • robots.txt 移除了不被支持的非标准指令

✨ 新功能

  • 资源发现清单:新增 /.well-known/ard.json(ARD v0.91)与 /.well-known/ai-catalog.json,并在首页通过 <link rel="ard"> / <link rel="ai-catalog"> 声明;public/llms.txt 提供面向 LLM / 代理的站点说明

🚀 体验优化

  • 静态资源缓存分层:带 ?v= 版本号与字体 / 图标等不可变资源缓存一年;其余带扩展名资源 1 小时 + stale-while-revalidate;无扩展名 HTML 入口 no-cache
  • 音乐播放器样式与脚本改为按需加载(不在首屏关键路径)
  • 浅色主题文字对比度提升

📝 文档

  • 新增 DEPLOYMENT_SECRETS_GUIDE.md(GitHub Secrets 与 R2 令牌详解,中英双语)

v2.6.6

🚀 域名与 SEO

  • 切换自定义域名:全线改用 https://www.2024921.xyz(替换原 Cloudflare Workers 子域名入口),导航、管理后台入口、站点配置示例与文档同步更新
  • Sitemap / RSS 云端动态生成:删除静态 public/sitemap.xml / public/feed.xml,新增根路径 /sitemap.xml、/feed.xml 动态端点;文章增删改查后自动生成最新站点地图与 RSS,无需手工维护
  • 兼容旧 API:/api/sitemap.xml、/api/feed.xml 继续可用,方便已有调用方平滑迁移

📝 文档

更新快速开始、Cloudflare Workers 部署、配置参考、API 总览、项目架构、本地静态部署、GitHub Secrets 与 docs.json 导航链接。

v2.4

✨ 新功能

  • 媒体图片 R2 直传:后台媒体库图片上传从「base64 存 D1」迁移为浏览器直传 R2(预签名 PUT URL,图片不经过 Worker,规避请求体上限与带宽计费);媒体使用独立 R2 桶(R2_MEDIA_BUCKET),与音乐桶分开
  • 移除图片存 D1 的全部兼容:POST /api/media 仅接受 http/https 链接(不再接受 data:image base64 内嵌);历史 base64 记录由迁移 0014 一次性清除——媒体库现在只存 R2/外链记录,图片本体一律在 R2
  • 删除文章级联清理:删除文章时原子清理其评论(含回复)、点赞/浏览量计数与每日聚合(stats_daily)——同 ID 重建不会复活旧数据,后台趋势图不再计入已删文章流量

🔧 变更

  • BLOG_ADMIN_SETUP_KEY 改为可选:配置后 /api/admin/setup 首次初始化需携带 X-Setup-Key(防抢注,推荐生产配置);未配置时回退旧行为——首次部署自动生成随机默认密码(xxxx-xxxx),登录后强制修改。CI 不再把它列为必填 Secret

🛡️ 安全加固

  • 安全响应头(CSP / X-Content-Type-Options 等)全量响应
  • 回复标签存储型 XSS 修复、评论控制字符清洗
  • 迁移改为三层幂等策略(schema_migrations 记账表 + pragma_table_info 列预检 + 报错兜底),重复部署不再因 duplicate column 中断
  • 统计点赞/阅读改原子自增(并发不丢数)
  • CI 部署前前置运行三套测试(smoke / gb / search),失败即中止不部署
  • AI 功能文档补充隐私提示:摘要/写作助手/评论汇总会把文章或评论明文发送给 Workers AI,敏感内容请勿启用

📝 文档

本开发文档站同步更新:媒体(R2 直传)、管理员认证(密钥可选 / 随机密码流 / 改密接口)、站点设置接口、统计响应、迁移幂等、架构(media.js)、部署(CI 步骤 / R2 媒体桶)

v2.3

✨ 新功能

  • 全站音乐播放器:右下角悬浮音符按钮,平时缩进窗口外露出一点圆弧、悬停 / 点击即滑出;点击弹出面板:曲目信息 · 可拖动进度条 · 上一首 / 播放暂停 / 下一首 · 音量 · 播放列表(点击切换、当前高亮 + 均衡动画)
  • 音乐记忆:自动连播;记忆上次曲目与进度、音量持久化,刷新后恢复但不自动出声
  • 后台音乐管理:音频上传(浏览器直传 R2 预签名 URL + 上传进度);文件名自动识别「歌曲名-歌手」预填;行内试听 / 删除(删除与 R2 对象同步);曲目多时列表卡片内滚动、表头吸顶

🚀 体验优化

  • 播放器悬浮按钮与一键置顶解重合:置顶按钮上移至播放器上方(桌面 bottom: 92px / 移动端 bottom: 80px)
  • 无音乐或接口失败时播放器完全隐藏;后台路由自动收起

📝 文档

  • 新增音乐文档页;API 总览 / 表结构 / 迁移 / 部署(R2)/ 架构 / README 同步更新

v2.2

✨ 新功能

  • AI 写作助手:编辑器一键生成标题建议 / 润色 / 翻译(目标语言可选),结果可应用或复制
  • AI 文章摘要:文章页一键生成内容摘要,单篇 30 天缓存
  • AI 评论汇总:评论管理页一键汇总近期评论要点(1 小时缓存)+ 单条评论垃圾检测
  • 主题色切换:强调色可切换(当前为 4 种:赭橙 terra / 黛蓝 indigo / 竹青 bamboo / 凝夜紫 dusk),桌面图标按钮 + 弹层 / 手机端原生下拉
  • 后台品牌区:左上角 Logo 渐变方块(站点头像或站点名首字 + 流动动画),左下角显示个人资料头像

🗑️ 移除

  • 分类功能:编辑器分类字段、文章列表分类筛选与「分类」列、分类管理页均已移除(posts.category 数据列保留兼容,不影响存量数据与 API 字段)
  • AI 写作助手的**「标签」动作**移除(保留标题建议 / 润色 / 翻译)

🚀 体验优化

  • 后台顶栏:右上角 🌐 语言弹层(同前台风格、SVG 国旗),移除新评论铃铛,待审核数移至侧栏「待审核评论」角标
  • 侧栏可折叠,折叠后页脚仅剩头像、水平垂直居中
  • 编辑器输入框自动增高,与预览同样完全展开(无内部滚动条)
  • 手机端仪表盘内容卡片统一单列布局

📝 文档

  • README / README_EN / 本开发文档站同步更新(AI、主题色、后台 UI 新增;分类相关描述移除)

v2.1

✨ 新功能

  • 留言板:导航直达 /guestbook,「留言 / 优化方案」双分区,云端存储;通过合成 post ID 复用评论安全管道,零新增接口
  • 重复发送拦截:同一分区下相同昵称 + 相同内容的评论 / 留言返回 409,防误触双击与脚本刷同文
  • 搜索升级:结果展示关键字所在完整句子上下文,并高亮关键字;悬停无下划线

🚀 体验优化

  • 管理后台评论删除 / 审核无感刷新:行级淡出移除 + 状态徽章就地更新,不再整表重载
  • 管理后台文章删除无感刷新:行级淡出 + 静默校准列表;管理端请求时间戳穿透 s-maxage 边缘缓存
  • 前台删除即时生效:管理后台删除文章后,前台文章列表 / 详情 / 缓存同步更新,无需刷新网页
  • 失败原因透传:评论 / 留言提交失败时,表单状态行直接显示后端具体原因(重复 / 频控 / 来源校验)

📝 文档


v2.0

✨ 新功能

  • 评论支持嵌套回复(parent_id 字段)
  • 媒体资源库(图片上传,base64 存 D1)
  • 站点设置持久化
  • 每日统计聚合(30 天趋势图表)
  • 管理员强制改密标记
  • 清理遗留 nav 配置

📝 文档

  • 新增开发文档站

v1.0

✨ 核心功能

  • 零框架、零构建、零依赖的博客系统
  • 双通道架构:静态模式 + 云端模式
  • Cloudflare Workers + D1 部署
  • Markdown 编辑器
  • 文章加密(PBKDF2 + AES-GCM)
  • 评论系统(嵌套回复 + 审核)
  • 阅读/点赞统计
  • 站内搜索 + TOC
  • RSS / Sitemap 自动生成
  • 精选文章推荐

🎨 界面

  • 深色/浅色主题切换
  • 响应式设计(手机/平板/桌面)
  • 四级衬线字体栈

🌐 国际化

  • 内置 5 种语言
  • 自动识别 + 手动切换

🔒 安全

  • PBKDF2-SHA256 密码哈希
  • 会话 Token 鉴权
  • 登录限流
  • CORS / XSS / SQL 注入防护