Files
halo-theme-WarmIsland/docs/changelog.md
T
nxxy335 6ab408ca4f docs(v1.2.7): 精简 README 自证式内容并重排章节
移除开发者自证、回归检查清单与重复的「不加载远程脚本」类宣言;按安装 → 功能 → 插件 → 隐私 → 开发 → 声明重排章节(331 → 237 行)。5.1 逐项披露、许可表与原创声明完整保留;changelog 同步记录。
2026-11-11 22:47:15 +08:00

21 KiB
Raw Blame History

更新日志

v1.2.7

文档全面校准(与最新版主题对齐)

  • 🔌 移除「朋友圈」插件的全部使用说明:plugin-friends 已不再提供,原先的 feed / RSS 聚合能力 由官方 「链接管理」(PluginLinks)插件的订阅承担。主题的对应实现是 page_subscriptions.html 自定义模板与 subscriptions 设置分组;新增订阅配置 / 订阅页面文档,删除旧的朋友圈配置与页面文档
  • 📌 主题保留 friends.html 模板与「朋友圈」设置分组仅用于兼容旧站点,pluginFinder 检测不到 该插件时会显示空状态;新站点请勿再依赖,文档已明确标注
  • ⬆️ 全文统一 Halo 版本要求为 2.27.0+(docs/guide/getting-started.md 原写 2.24.0,与 theme.yaml 的 requires: ">=2.27.0" 不一致)
  • 🧹 清理与代码不符的描述:已移除的光感跟随 animation_cursor_glow、主题并不自带的 i18n 国际化、没有对应模板的「足迹页面」;docs/config/style.md 补上实际存在的 click_effect_enabled / click_effect_type
  • 📚 补齐此前完全没有文档的三个设置分组:欢迎弹窗、订阅、微信读书;自定义页面模板清单 同步为 4 个(默认 / 留言板 / 订阅 / 微信读书)
  • 🔢 配置数量统一为 17 组 / 126 项,插件适配表按实际 10 款校准,VitePress 侧边栏同步调整
  • 🔗 所有文档内部相对链接复核为 0 处失效
  • 🧾 README 精简与重排:移除开发者自证、回归检查清单与重复的「不加载远程脚本」类宣言, 按「安装 → 功能 → 插件 → 隐私 → 开发 → 声明」重排章节(331 行 → 237 行); 5.1 逐项披露、许可表与原创声明完整保留

可选 API 设置项文案精简

  • ✂️ 主题设置中「自定义 IP 定位主 API」「自定义 IP 定位备选 API」「自定义一言 API」 三个配置项的 help 移除三段冗长的隐私披露文案,仅保留功能说明(候选接口地址、留空回退规则)
  • 🛡️ 第三方数据流向与隐私披露仍由 README「外部资源与隐私」章节、配置文档与 FAQ 完整承载, 满足 5.1 要求;设置界面文案精简不影响「默认零第三方请求」的结论
  • ↩️ 三个字段恢复按功能开关条件显示(「启用欢迎弹窗」开关 / 「描述文案来源」),与 v1.2.6 的设计一致;同时修正三个配置块的缩进,与 settings.yaml 其余字段对齐
  • 🔒 pnpm audit:external 的 5.1 检查改为:三个字段必须存在、help 不得回潮出现披露文案、 README 必须保留隐私披露章节

正文引用块留白(与上一轮改动合并)

  • 🎨 修复文章 / 单页 / 留言板正文引用块文字下方空白过大:块内元素外边距与 padding 叠加导致 双层留白,现统一收敛,并折叠编辑器生成的空段落;引用块上下外边距同步收紧

v1.2.6

v1.2.5 为审核被拒的未发布版本,从未对外分发;其全部整改内容纳入 v1.2.6 一并发布。 上一个对外发布版本为 v1.1.1(v1.1.2 – v1.2.5 均未发布)。

本轮变更

  • 🆙 版本号升至 1.2.6,与上次被拒的审核快照明确区分
  • ✍️ 新增「原创声明(4.2.1)」:本主题完全原创,未基于任何已有主题 / 插件派生,4.2.1 / 4.2.2 不适用
  • 🔇 Hero「描述文案来源」默认值由 hitokoto 改为 none —— 默认不渲染一言元素、不显示描述文案,零外部请求
  • 🔗 选择「一言」时自动填入官方接口 https://v1.hitokoto.cn/;选择「一言」或「自定义」后若 API 留空, 则使用主题内置的本地句子库(零外部请求)。只有填写后才会向该地址发起请求,需自行在站点隐私说明中披露, 详见 README「外部资源与隐私」
  • 🌐 文档列出两个可选 IP 定位接口:https://myip.ipip.net/json 与 https://r.inews.qq.com/api/ip2city?otype=json(主 / 备选 API 均可选用)。 填写后会把访客 IP 发送给该第三方服务换取地理位置,需自行在站点隐私说明中披露, 详见 README「外部资源与隐私」
  • 📄 README「外部资源与隐私」新增可选接口清单与逐项披露;docs 的 Hero 配置、FAQ、快速开始与首页页同步更新

上架审核整改(原 v1.2.5 修订,并入 1.2.6)

  • 🔒 默认零第三方自动请求:移除全部 21 个模板对 cdn.jsdelivr.net 的 preconnect / dns-prefetch
  • 🔒 移除文章页 PrismJS 1.29.0、autoloader(会按代码语言从 CDN 动态拉取并执行组件)与 qrcode-generator;代码高亮改由应用市场代码高亮插件 / API 扩展包提供,主题只保留自托管的 Warm / Cold token 配色(微信分享改为「复制链接」)
  • 🔒 一言默认改用内置本地句子库 assets/data/hitokoto.json,不再默认请求 v1.hitokoto.cn
  • 🔒 欢迎弹窗默认显示本地静态欢迎语,移除内置的 IP 定位主 / 备选第三方接口;IP 定位改为 管理员显式配置的可选能力(开启时会向该服务发送访客 IP,需自行披露)
  • 📄 README 新增「外部资源与隐私」章节(服务名称 / 用途 / 数据类型 / 默认状态 / 关闭方法 / 遥测声明)与「验证与回归测试」清单;补充 LXGW WenKai 的 OFL 来源与 LightGallery GPLv3 说明
  • 🔗 修正上架说明中的无效链接:文档与预览图改为有效绝对地址并随包分发;朋友圈插件链接改为应用市场地址
  • 🐛 全部 #strings.substring(..., 0, 1) 增加空值保护,修复 friends.html 作者为空时的字符串越界
  • 🖼️ logo.png 由两份 1024×1024(各约 1.5MB)压缩去重为单份 256×256(约 146KB)
  • ✅ LightGallery 去掉占位 licenseKey,按 GPLv3 开源许可使用,控制台不再出现授权提示
  • 🧪 新增 pnpm audit:external 与打包前置校验:拦截第三方远程加载、预连接、动态加载、 README 死链、重复大图;docs/*.md 与预览图一并打进安装包

按 v2026.09.07 审核指南全文补充自查(并入 1.2.6)

  • 🔒 内容渲染安全(4.4.2):文章页 JSON-LD 不再用 th:utext 把标题 / 摘要 / 作者 / 封面 拼进 <script> 原始文本(可被脚本闭合标签截断并注入);改为「Thymeleaf 转义写入 <meta> → JSON.stringify → textContent」,并新增 <meta name="author">。瞬间正文 content.raw 兜底从 th:utext 改为 th:text 转义输出(首页区块、瞬间页列表 / 瀑布流、详情页共 4 处)
  • 📜 许可证传递(5.2):public/assets/fonts/LXGWWenKai/OFL.txt 随包携带上游版权声明、 保留字体名附加许可与 SIL OFL 1.1 全文;pnpm build / pnpm package 均校验其存在与内容
  • 🔢 上架信息校准(2.2 / 4.6):README 设置项按 settings.yaml 实测改为 17 组 / 126 项、 点击特效改为 8 种效果(可关闭);新增「内容渲染安全」章节与搜索页 / 空结果状态人工回归项
  • 🧪 合规审计扩展:拦截任意 <script> 上的 th:utext、缺失字体许可证、README 数字漂移; pnpm smoke 新增 JSON-LD 合法性与注入防护的桩 DOM 验证

兼容性与元数据

  • ⬆️ Halo 版本要求提升至 2.27.0+(页面布局契约、微信读书页面依赖 2.27 的能力)
  • 🔗 源码仓库与问题反馈地址统一为 https://git.nxxy335.top/nxxy335/halo-theme-WarmIsland
  • 📚 完善安装、开发、FAQ 文档,修正过时的技术栈与构建打包说明

性能优化

  • 🚀 首页滚动顺滑性:移除逐帧改写全屏 backdrop-filter 模糊半径的逻辑。 旧实现让 Chromium 每个滚动帧都重做一次全屏背景采样 + 高斯模糊,是首页掉帧主因; 现改为固定模糊半径 + 只调整 opacity(合成层操作),并缓存进度值避免重复写 DOM
  • 🚀 首屏离屏即停:滚过首屏后 Hero 已被不透明内容区完全盖住,此时隐藏 Hero 并暂停光球动画,长页面后半段不再有额外绘制
  • 🚀 首屏整屏吸附回归(顺滑版):v1.2.5 初版改用 CSS scroll-snap: y proximity 后吸附 实际失效——内容区顶部是唯一吸附点、页面顶部 0 没有吸附点,proximity 几乎不触发; 换成 mandatory 又会把长内容反复拉回内容区顶部。现改为边界吸附:只在 0 ↔ 内容区顶部 接管一次滚轮 / 触摸,进入内容区后完全交给原生滚动惯性;解锁用 scrollend + 600ms 兜底(原为固定 800ms 输入锁),已在目标位置时不再接管
  • 🚀 导航栏滚动状态去重:只在状态真正变化时写 class,不再每帧触发样式重算
  • ♿ 补充 prefers-reduced-motion 支持:减少动态效果时关闭平滑滚动与光球 / 指示箭头动画, 吸附改为即时定位(不再关闭吸附)
  • 🖼️ 首页文章列表继续使用 content-visibility: auto 跳过视口外渲染,图片保持懒加载

v1.2.4

问题修复

  • 🐛 彻底修复首页页脚被 Hero 盖住(v1.2.3 的修复不完整):仅取消 main 的 层叠上下文(z-index: auto)不足以让固定 Hero 稳定落在页脚之下。现改为 双保险:
    1. .hero 由 z-index: 0 改为 z-index: -1,作为固定全屏背景沉到根层叠 上下文的负 z 层,绘制在一切正常内容(含页脚)之下——这是固定背景的规范做法;
    2. 保留首页 main z-index: auto(仍是必须项:否则 main 若保持 z-index: 1 会成为层叠上下文,把负 z 的 Hero 困在自己内部、整块仍压在页脚之上)。 页脚因此始终保持无 z-index 的状态,既不会被 Hero 盖住,也不会回退到早期 「页脚盖住评论区翻页下拉」的问题。经无头浏览器在真实构建产物上验证: 滚到页底时 elementFromPoint 命中 footer-inner,页脚完整可见。

v1.2.3

问题修复

  • 🐛 初步修复首页页脚被 Hero 盖住(不完整,已被 v1.2.4 取代):取消首页 main 的层叠上下文(z-index: auto)。这一项单独作用时仍不够稳健, 请直接参考 v1.2.4 的完整修复。

v1.2.2

问题修复

  • 🐛 修复移动端抽屉菜单不显示二级菜单:子菜单的 th:block 写在了 th:each 循环外, 循环变量出了循环即失效,二级菜单从未渲染过;现在子菜单与父项一起循环输出
  • 🐛 修复页脚遮挡内容弹层:页脚的 z-index: 1 与内容区同级且靠后, 会盖住评论区翻页下拉等浮层;同时把 .wi-main / .wi-content-wrap 的 overflow-x: hidden 改为 clip,不再产生会纵向裁掉弹层的滚动容器
  • 🐛 修复深浅色切换不同步:页脚背景是渐变(background-image), 无法参与过渡动画,切换时页脚瞬变而内容区还在 300ms 渐变; 改为可过渡的 background-color + 遮罩渐隐色层,全站同步过渡
  • 🐛 修复玻璃卡片悬浮时顶部边框消失:Chromium 下带 backdrop-filter 的元素 一旦发生位移(悬浮上移),合成层会吃掉顶部 1px 边框。已移除瞬间、友链页、 友链圈、订阅页卡片的 backdrop-filter(卡片背后是纯页面背景,模糊无可见效果), 并给瞬间卡片悬浮时加描边高亮

功能与优化

  • 🎨 新增瞬间详情页主题化模板(moment.html):覆盖插件默认模板, 复用瞬间列表页的卡片视觉(头像 + 昵称 + 时间 + 正文 + 九宫格 + 点赞), 评论区默认展开,附返回列表入口与空态兜底;支持灯箱看图
  • 🎨 Steam 游戏库页:统计数据加载失败时不再整块隐藏,改为显示 - 并给出 原因提示(Steam 接口超时 / 游戏库隐私 / 插件配置);「最近游玩」卡片成就进度 移到右侧并增加奖杯标识

v1.2.1

问题修复

  • 🐛 修复升级后整站没有样式:Astro 会给 CSS/JS 加内容哈希,升级后旧文件被删除,被缓存的 HTML 仍请求旧文件名, Halo 直接抛 FileNotFoundException 返回 500,样式全部丢失。主题现在会把各版本的哈希资源一并保留 (compat/assets 在构建时合并进 templates/assets,已覆盖 v1.1.7 起的所有版本)
  • 🐛 避免页面出现 500:新增构建期静态资源引用校验,模板引用的任一缺失资源都会让构建失败
  • 🐛 修复鼠标点击效果开启后没有任何作用:旧实现用 th:if 判断开关、且直接读取配置值, 一旦配置项未随版本写入(或被 Thymeleaf 整体移除属性)就读取为空,脚本直接跳过; 同时修复了多种特效在插入节点后随即改写 transform / opacity,导致浏览器把初态与终态合并、 transition 完全不触发的问题(表现为点了没反应)
  • 🐛 次要修复:点击特效节点统一挂载到 body 下的独立图层(z-index: 12050),不再被导航栏、页脚遮挡

其他

  • 🧰 新增构建脚本:pnpm snapshot(历史资源快照)、pnpm package(打安装包)、pnpm smoke(点击特效冒烟测试)

补充排查记录:升级后部分页面配色/新样式不生效

上线后收到反馈:更换主题配色后,首页与瞬间页不跟随,其他页面正常。经排查 (对比浏览器实际加载的资源、CDP 读取计算样式、比对响应头)确认:

  • 浏览器拿到的首页/瞬间 HTML 是 v1.1.11 / v1.1.12 时期的旧页面(引用旧哈希 CSS、 <html> 上没有 v1.2.0 新增的 data-palette 属性)
  • 响应头 X-Halo-Cache-At 与 Cache-Control: max-age=3, s-maxage=120 表明这些页面 被 「页面静态缓存」插件 缓存,而该插件只随文章变更自动刷新, 主题升级 / 主题设置变更不会刷新缓存
  • 裸 curl(无浏览器请求头)会绕过该缓存拿到新 HTML,因此服务端"看起来"一切正常

这是缓存层行为、不是主题缺陷,在 Halo 后台点一次「刷新页面缓存」即可; 排查步骤已写入 FAQ。

v1.2.0

主题配色系统

  • ✨ 新增「主题配色」设置(总体样式 → 主题配色),内置 11 套官方预调配色:暖屿·赤陶(默认)、抹茶、黛蓝、樱粉、暮紫、海盐、琥珀、梅酒、石墨、可拿铁、天青
  • 🎨 每套配色包含浅色 / 深色两套完整色板,玻璃拟态、遮罩、阴影色调自动跟随当前配色
  • 🎨 自定义「强调色」改为留空跟随所选配色;填写后仍可单独覆盖
  • 📱 浏览器地址栏 theme-color 随配色与明暗模式联动(含切换按钮)

Hero 首屏

  • ✨ 一言文字新增独立颜色配置(浅色 / 深色模式各一项,此前只能跟随副标题颜色)
  • ✨ 新增「文字显示效果」设置:阴影 / 光晕 / 半透明遮罩层 / 渐变遮罩 / 容器(半透明边框圆角矩形 + 加大留白)
  • 🐛 默认改为无任何效果:移除标题、副标题与一言自带的白色散光投影

问题修复

  • 🐛 修复 /douban 页面 500:适配豆瓣插件 v1.2.6 的 SQLite 数据结构(字段由 item.spec.* / item.faves.* 扁平化为 item.* / item.faves*)
  • 🐛 修复友情链接卡片悬浮光圈被裁切的问题(卡片容器不再裁切悬浮阴影与上移位移)
  • 🐛 修复瞬间页面顶图与最新一条瞬间卡片的边框贴合的问题,顶图下方增加间距
  • 🐛 友情链接卡片徽章简化为仅展示站点可达性(绿点 = 可访问,红点 = 异常),不再联合反链检测结果判断

其他

  • ⬆️ Halo 版本要求提升至 2.26+

v1.1.1

瞬间页面

  • 🗑️ 移除时间轴(Timeline)布局,简化为卡片(Cards)和瀑布流(Masonry)两种样式
  • 🎨 卡片样式成为新的默认展示样式,采用一栏式居中布局
  • 🧹 清理时间轴相关的 HTML、CSS 和 JS 代码

移动端阅读体验优化

  • 📱 全面增大移动端字体尺寸,提升文章阅读舒适度
  • 📱 优化文章正文行高(1.75 → 1.8),段落间距更宽松
  • 📱 移动端标题字号适配(h2/h3/h4 在 768px 以下适当放大)
  • 📱 优化全局排版变量(text-xs ~ text-5xl 基准值上调)
  • 📱 优化引用块、代码块、表格在移动端的显示
  • 📱 优化文章卡片在移动端的标题和摘要字号
  • 📱 优化瞬间页面卡片在移动端的文字和间距

导航修复

  • 🐛 修复导航菜单 target 属性渲染错误,导致部分链接在新标签页打开的问题
  • 🐛 修复 Halo 菜单项 spec.target 枚举对象解析为 target="null" 的问题

错误处理增强

  • 🛡️ 添加全局 unhandledrejection 捕获,抑制浏览器扩展产生的控制台错误
  • 🛡️ 复制链接按钮添加 clipboard API 失败回退逻辑
  • 🛡️ Logo 图片加载失败时自动隐藏并显示站点标题

v1.1.0

分享功能增强

  • ✨ 新增 QQ 分享按钮(Font Awesome 图标)
  • ✨ 新增微信扫码分享(二维码弹窗)
  • ✨ 新增分享渠道配置项,可自由选择显示哪些分享按钮
  • 📋 复制链接按钮始终显示,不可关闭
  • 🎨 各分享按钮独立品牌色 hover 效果(QQ 蓝、微信绿、微博红等)
  • 🌐 i18n 国际化支持新增 QQ、微信、微信扫码相关翻译

移动端优化

  • 📱 修复文章上下篇导航在移动端分成两行的问题,改为单行省略截断
  • 📱 修复目录悬浮球按钮位置偏上,调整到右下角更合理位置
  • 📱 优化移动端灯箱体验:增大导航按钮触摸区域、小屏隐藏 EXIF 信息
  • 📱 优化移动端分享按钮触摸目标大小

灯箱优化

  • 🖼️ 修复关闭画廊后 lg-sub-html 不跟随到底部的问题
  • 🖼️ 修复打开画廊时 lg-sub-html 和 lg-inner 直接跳位而非平滑过渡的问题
  • 🖼️ 优化移动端灯箱导航按钮和缩略图栏布局
  • 🖼️ 小屏幕下隐藏 EXIF 参数信息,简化界面

分享修复

  • 🐛 修复微信扫码分享 QR 码生成相对路径而非完整 URL 的问题
  • 🐛 修复复制链接按钮复制相对路径而非完整 URL 的问题
  • 🐛 修复 QQ 分享链接不可用,改为弹窗分享方式并正确编码 URL

性能优化

  • ⚡ 添加 content-visibility 优化(首页、文章、归档、瞬间等区域)
  • ⚡ Prism.js 脚本延迟加载
  • ⚡ LightGallery 初始化改用 requestIdleCallback
  • ⚡ 封面图优先加载(loading="eager")
  • ⚡ 正文图片自动添加 lazy loading
  • ⚡ 微信二维码 QR 码库按需加载(仅微信分享启用时加载)

全局优化

  • 🎨 添加 theme-color meta 标签,适配移动端浏览器地址栏颜色
  • 🎨 主题切换时动态更新 theme-color
  • 🛡️ 多层 overflow-x: hidden 防止横向滚动条
  • 📱 移动端搜索按钮不再隐藏

布局修复

  • 📐 恢复文章详情页为 800px 全宽布局(不使用 wide 模式)
  • 📐 封面图在 800px 容器内显示

v1.0.0

首次发布 🎉

核心功能

  • 🎨 暖色调设计语言,呼吸动效光球、毛玻璃导航栏
  • 🌙 深色模式支持(跟随系统 / 浅色 / 深色三种方案)
  • 📱 响应式布局,移动端专属菜单与交互体验
  • ✨ 滚动渐入动画、光感跟随效果

SEO 与结构化数据

  • 🔍 Open Graph 元标签,优化社交媒体分享预览
  • 📋 JSON-LD 结构化数据,提升搜索引擎理解与展示

国际化

  • 🌐 i18n 国际化支持(简体中文、繁体中文、英语)
  • 🔄 跟随浏览器语言自动匹配,也可手动指定
  • 🍪 支持通过后台设置强制指定语言,自动管理 language cookie

文章页增强

  • 📑 目录展开模式选项(仅展开当前分组 / 全部展开)
  • 📰 相关文章推荐,帮助读者发现更多内容
  • 🔗 分享功能(微博 / X / Facebook / Telegram / 复制链接)
  • 🖼️ 图片懒加载 blur-up 效果,优化加载体验

页面模板

  • 🏠 Hero 首屏(一言 API / 自定义描述 / 背景图片)
  • 📝 文章详情页(侧边目录 / 阅读进度条 / 代码高亮 / 图片灯箱 / 点赞)
  • 📂 归档页面(时间线布局)
  • 🏷️ 分类和标签页面
  • 💡 瞬间页面(Timeline / Cards / Masonry 三种样式)
  • 📷 图库页面(Masonry / Grid / Carousel 三种样式)
  • 🔗 友情链接页面(Cards / Grid / List 三种样式)
  • 👥 朋友圈页面
  • 💬 留言板自定义模板
  • 📦 扩展页面支持(豆瓣 / 装备 / Steam)

导航与交互

  • 🔍 搜索集成(支持 Ctrl+K 快捷键)
  • 🎯 三种导航栏样式(Glass / Minimal / Float)
  • 🌓 主题切换按钮

性能与体验

  • ⚡ preconnect / dns-prefetch 资源提示,优化外部资源加载
  • 🖼️ 图片懒加载 blur-up 渐显效果
  • 🔤 使用系统默认字体栈,提升加载速度

错误页面

  • 🐘 404 / 500 错误页增强(导航栏 + 页脚 + 多语言支持)

配置与自定义

  • ⚙️ 丰富的主题设置面板(13 个配置分组)
  • 🎨 可自定义强调色、圆角风格、容器宽度
  • 📝 自定义 CSS 支持
  • 🔧 页脚社交链接和自定义 HTML