FIT2CLOUD

新增与优化,建议升级

  • 新增世界频道首屏聚合,减少首屏多接口并发请求。
  • 友链管理页改用聚合接口加载核心数据,移除分散请求链路,提高加载速度。
  • 星链资讯页面优化数据加载链路,减少重复请求,修复部分 RSS 来源列表重复展示和加载不稳定问题。
  • 世界频道新增历史阅读位置提示,可快速回到上次阅读位置;同时优化未读提示、@ 提醒、自定义表情包、成员列表、右键 @TA、引用消息等交互。
发布于查看详情

halo-theme-cosolar v1.0.2

✨ 新功能

侧边栏新增模块:

  • 公告栏 — 在博主信息下方展示公告内容,支持 HTML 富文本,可插入链接和图片
  • 热门标签(词云) — 替代旧列表模式,标签字体大小随文章数自动变化,带浮动起伏动画和悬停放大效果
  • 公众号二维码 — 在侧边栏展示微信公众号二维码图片,可自定义图片和下方文字

博主信息卡片增强:

  • 背景图模式下,遮罩层颜色透明度现可在后台独立配置
  • 博主栏文字颜色可自定义(浅色/深色模式分别配置)
  • 深色模式遮罩默认透明度提升至 0.45,阅读体验更佳

社交图标更新:

  • 掘金、CSDN、知乎图标更新为官方新版 logo,更清晰现代

🐛 修复

  • 修复博主名字右上角创作者角标的显示逻辑

📖 文档

  • 重写 README,分步骤讲解每一组配置的使用场景
  • 侧边栏各模块说明同步更新

⚡ 升级提醒

升级后建议进入 主题设置 > 侧边栏设置,查看新增的公告栏、标签云和公众号二维码配置项,默认均为关闭状态,按需开启即可。

Snipaste_2026-07-10_15-12-09

发布于查看详情

v1.0.3

新增

  • 同步完成后自动反向清理:删除 Halo 中图床已不存在的失效附件

优化

  • 同步 API 增加显式登录鉴权,未登录返回 401
  • 同步异常时直接输出精确错误原因,不再显示"正向同步完成 — 成功 0 张…"等无意义汇总
  • 前端样式改用 CSS 自定义属性,支持 Halo 主题变量
发布于查看详情

功能优化

  • 优化后台瞬间列表「跳转到前台」按钮样式

问题修复

  • 修复超过 200 条瞬间时搜索索引只同步第一页的问题 by @ruibaby in #188
  • 修复关闭附件库后再次打开状态未重置的问题 by @ruibaby in #189
  • 修复没有发布瞬间权限的用户仍看到瞬间通知设置项的问题
  • 修复瞬间作者不存在时 RSS 输出与主题渲染报错的问题 by @Tim0x0 in #191

Full Changelog: v1.16.0...v1.16.1


Generated from v1.16.1

发布于查看详情

What's Changed

新功能

  • 新增访客配色选择器. 可在 全局样式 -> 启用访客配色切换 开启

修复

  • 修复默认模式为 "跟随系统" 时覆盖访客已保存主题模式的问题
  • 修复错误页面的 "返回首页" 按钮无法正确跳转的问题

样式

  • 新增纯黑白 paper 配色
  • 优化 ink 配色的文字对比度
  • 更新内置像素字体

杂项

  • 调整主题设置顺序及帮助说明
  • 修正 Makefile 构建依赖与清理逻辑
  • 升级构建依赖
  • 优化配色样式结构, 减少重复定义

Full Changelog: 2.4.0...2.5.0


Generated from 2.5.0

发布于查看详情

优化

  • 图谱只展示一个 Article Insight Graph,不再做多个摘要视图、TL 列表、DL 卡片页或摘要 Tab。
  • 用户互动不再作为图谱节点生成,改为节点浮层里的操作按钮,图谱结构更干净。
  • 前台支持图谱后台生成轮询,生成完成后自动刷新展示,无需用户手动刷新页面。
  • 节点标题做短标题展示,完整标题进入详情浮层,减少长标题导致的重叠和拥挤。
  • 优化洞察图谱 UI:透明画板、自适应布局、折叠态、移动端适配、深色模式适配。
  • 后台预览样式与前台图谱渲染逻辑保持一致,减少前后台视觉偏差。

Full Changelog: 4.0.3...4.0.4


Generated from 4.0.4

发布于查看详情

v1.0.2

  • 重构:包路径从 run.halo.oneimg 迁移至 io.github.alonenannan.oneimg
  • 优化:附件上传 RestTemplate → WebClient,支持响应式非阻塞
  • 文档:更新 README 目录结构与技术架构说明
发布于查看详情

功能优化

  • RAG 知识库表单新增常用 Embedding 维度预设,并支持搜索选择和自定义输入。

问题修复

  • 修复 RAG 检索来源中空元数据字段可能被带入引用信息的问题。
  • 修复高维向量批量索引时可能触发响应缓冲区溢出的问题,索引会按有效批量自动拆分并重试。
发布于查看详情
  • 适配 Halo 2.25.3 控制台前端依赖,修复新版 Halo 下可能出现的控制台加载异常。
  • 增强实时通知链路:支持 WebSocket、SSE 与事件补偿拉取自动切换。
  • 修复世界频道消息气泡中星系名称显示不准确的问题。
发布于查看详情

详情请参阅更新日志在 GitHub 上查看)。
Please refer to Changelog (view on GitHub) for details.

howiehz-higan-zh-hans.zip 为简体中文默认安装包,仅包含 .br
howiehz-higan-zh-hans-tiny.zip 为简体中文轻量安装包,移除默认字体资源,默认 logo 资源将替换为 1x1 占位图,不包含预压缩文件,且不注入 Mermaid / instant.page 运行时。
howiehz-higan-zh-hans-full-precompressed.zip 为简体中文完整预压缩包,包含 .gz / .br / .zst
howiehz-higan-en.zip is the English default package with .br only.
howiehz-higan-en-tiny.zip is the English tiny package that removes the default font assets, replaces the default logo asset with a 1x1 placeholder image, omits precompressed assets, and excludes Mermaid / instant.page runtime injection.
howiehz-higan-en-full-precompressed.zip is the English full precompressed package with .gz / .br / .zst.

发布于查看详情

新增

  • 新增 洞察图谱 功能,用于将文章内容结构化为 TL 主题节点和 DL 深挖节点。
  • 新增洞察图谱独立设置项,支持控制:是否启用洞察图谱
  • 是否在文章页显示洞察图谱
  • 是否访问文章时自动生成
  • 控制台新增洞察图谱页面,可选择文章并预览已生成的图谱。
  • 控制台预览改为 Vue 本地渲染图谱,支持节点点击查看详情。
image

Full Changelog: 4.0.2...4.0.3


Generated from 4.0.3

发布于查看详情

新增个人资料卡页面
完善了文章页面
后台新增资料卡设置
后台新增限制微信/QQ 内置浏览器访问设置
后台新增移动端显示比例设置
后台桌面内容宽度设置

发布于查看详情

修复:长图折叠功能多项缺陷

  • 包裹容器居中:长图折叠容器与主题图片保持一致居中,不再错位偏左
  • 折叠态渐变遮罩:折叠时图片底部新增渐变遮罩,提示下方仍有内容
  • sticky 失效降级:若主题导致 sticky 失效,自动降级为 absolute 定位
  • 折叠判断与展开动画优化:折叠判定由图片原始像素高度改为页面实际渲染高度,修复窄列中图片被 CSS 缩放后仍被包裹、折叠态与原图无差异的问题
发布于查看详情

新增

  • 黑/白名单批量操作 — 支持多选、全选、批量添加/移除评论者,弹窗支持从历史评论者多选和手动输入
  • 全局页面AI回复开关 — 一键启用/禁用所有独立页面的AI回复(包括新建页面),默认关闭
  • 语言要求提示词模块 — 新增第五个提示词模块 languageRequirement,可自定义多语言回复规则
  • 已拦截数统计 — 首页概览卡片新增已拦截数统计(已失败和待审核之间)
  • AI Foundation 智能状态检测 — 区分未安装/未启用/未配置模型三种状态,提供对应快捷跳转按钮
  • 手动清理自定义时间节点 — 手动清理支持自定义清理天数(默认7天前),二次确认弹窗防误操作
  • 实时刷新偏好持久化 — 日志页实时刷新开关和刷新间隔通过 localStorage 自动保存,默认开启10秒间隔
  • 配置导入导出 — 支持将插件配置(ConfigMap + AI角色)导出为 JSON 文件,方便备份和迁移

改进

  • “提示词"改为"人格提示词” — AI角色编辑弹窗中的提示词改名为人格提示词,留空时使用基础配置的 personaIdentity
  • 配置项重构 — 最大重试次数(0为不重试,最大10,默认3)、最大对话轮次(0为不限制,默认10)、速率限制(0为不限制,默认0/h)移至基本设置,滑条改为输入框,模型设置中删除重复项
  • 提示词均为可选项 — 五个提示词模块均标注"(可选)",留空使用默认值
  • 白名单文案修正 — 删除"管理员自动加入白名单"的显示文案(实际不支持自动加入)
  • 手动清理区域样式优化 — 红色危险主题卡片式布局,输入框组与按钮高度对齐
  • 分类角色映射迁移 — 从模型设置组迁移至 AI 角色配置组(persona)
  • 瞬间评论 group 校验 — Moment 评论判断增加 group 双重校验,避免误判同名资源

移除

  • 回复质量自学习功能 — 因正常情况下不会被拒绝且已有自动审核,移除 ReplyLearningService 及所有相关引用
  • 提示词预设开关 — 移除设置页内的提示词预设开关(友好型/专业型/幽默型/简洁型),预设模板保留在文档中

Bug 修复

  • 修复配置导入 400 Bad Request — 导入时清除 persona 的 labels、annotations 等只读 metadata 字段
  • 修复所有注册用户绕过白名单过滤 — WhitelistService 中 isRegisteredUser 改为 isAdminUser,只检查 super-role 和 role-admin
  • 修复 getAdminList 误标管理员 — 改为只匹配 role-admin 角色的用户
  • 修复手动输入评论者无法添加 — addManualEntry 方法实际将条目加入选中列表
  • 修复手动输入框回车触发表单提交 — 添加 .prevent 修饰符
  • 修复 AI Foundation 状态显示不正确 — 未配置模型时不再错误显示"连接正常"
  • 修复 Comment Next 冲突提醒不显示 — 增强检测逻辑支持多种插件名称模式
  • 修复 AI Foundation 插件跳转路径 — 从 /console/plugins/plugin-ai-foundation 改为 /console/plugins/ai-foundation
  • 修复前端导入错误提示不显示 — 显示实际错误信息而非通用的"导入失败"
  • 修复 categoryPersonaMap 配置分组不一致 — 新增 persona 配置组,前端正确读写
发布于查看详情

1.0.9

二次元少女风格的 Halo 2.x 博客主题。本次为功能新增与问题修复。

✨ 新增

  • 适配 Halo「文本绘图」插件,支持渲染 Mermaid 流程图,并跟随明暗模式与主题色自动重新着色。(感谢 @pandyzhou 贡献 PR #7
  • 补充 Halo 插件扩展注入点(<halo:head/> / <halo:footer/>),提升与各类 Halo 插件的兼容性。

🐛 修复

  • 用户菜单「退出登录」改用标准 POST + CSRF 方式:直接登出、不再弹确认页、不再 403。
  • 修复留言墙页面的层级问题:音乐控件遮挡发布窗口、发布窗口遮挡顶栏菜单。
  • 修复头像卡个人签名为空时可能出现的控制台报错。

✅ 适配

Halo 2.14.0 及以上版本。


完整说明见仓库 README。


Generated from v1.0.9

发布于查看详情
  • 新增插件迁移状态基线,持久化记录运行版本、最近成功版本、数据结构版本、已应用迁移和待迁移项。
  • 新增控制台迁移状态查询与预检查 API,为后续跨大版本和小版本数据迁移提供入口。
  • 补充迁移状态权限节点、RBAC 角色模板、后端 API 合同、产品定义和结构化清单文档。
  • 版本号递增至 2.3.23。

Generated from v2.3.23

发布于查看详情

新特性

  • 支持通过 [!code fold:start] / [!code fold:end] 标记折叠代码块,并支持未闭合标记的尾部折叠 by @ruibaby in #31

功能优化

  • 调整 Console UI 资源输出目录以适配 Halo 2.25 插件资源结构 by @ruibaby

开发者相关

  • 升级 Halo 平台依赖至 2.25,并将插件最低 Halo 版本要求调整为 >=2.25.0 by @ruibaby
  • 升级 Gradle、Halo 插件开发工具、Rsbuild、Shiki 等构建和前端依赖 by @ruibaby

Full Changelogv1.3.2…v1.4.0


Generated from v1.4.0

发布于查看详情

Full Changelog: v1.5.1...v1.5.2

feat(hitokoto-hub): 新增连续提交上限配置与提交配置接口

  1. 新增submissionBatchLimit提交配置项,限制单IP冷却周期内连续提交次数
  2. 添加获取提交配置的公共API端点,用于前端动态隐藏提交按钮
  3. 更新RBAC权限规则,新增sentence-submission/config资源权限
  4. 优化提交冷却逻辑,支持按连续提交次数限流
  5. 更新前端模板,根据配置自动隐藏提交按钮
  6. 完善后台设置表单的条件显示与帮助文案

Generated from v1.5.2

发布于查看详情

Full Changelog: v1.5.0...v1.5.1

  • 新增AI生成日志实体字段与管理接口
  • 实现访客提交与AI日志的删除功能
  • 优化前端列表状态展示与删除交互
  • 更新README文档与权限配置
  • 调整前端弹窗z-index层级

Generated from v1.5.1

发布于查看详情

主要功能

  • 文档库管理:创建、编辑、删除文档库,支持描述与封面
  • 树形编排:在 Console 中拖拽调整目录树与同级顺序,支持父子层级与排序权重
  • Markdown 编辑:独立 Vditor 编辑器,支持从 Halo 附件库插入图片、附件与站内文档链接
  • 前台文档站点:提供 /docs/docs/{librarySlug}/docs/{librarySlug}/{docSlug} 页面,含侧边目录树与可配置布局的文档库首页
  • 阅读增强:正文大纲、滚动高亮、同库标题短链接跳转、移动端折叠目录,并跟随 Halo 主题切换
  • 搜索与 SEO:已发布文档接入 Halo 搜索,并输出页面级 SEO 元信息
  • 公共访问接口:仅暴露已发布文档的只读 API,避免草稿泄露
  • 备份与恢复:文档设置页支持导出 / 加载设置,快照含插件设置、文档库与文档 Markdown 内容
  • 自定义代码注入:支持在全局、文档库、单篇文档三个层级注入自定义 head / body 代码(HTML / CSS / JS),按 全局 → 文档库 → 文档 顺序叠加
  • 扩展点机制:对外开放 DocContentHandler(正文后处理)与 DocDetailModelHandler(阅读页 Model 注入)两个扩展点
  • AI 辅助编写:文档设置页提供「后台代码片段」与「扩展插件开发」提示词一键复制
发布于查看详情

首次公开版本

  • 基于 Halo AI Foundation 统一管理 Chat、Embedding、Rerank 和 Query Rewrite 模型能力
  • 提供 RAG 智能问答、AI 搜索、文章摘要、交互脑图与编辑器写作辅助
  • 提供意图路由、效果评测、内容缺口运营智能体及模型用量审计
  • 使用内置 Lucene 混合检索,无需额外部署向量数据库
  • 补齐应用市场要求的仓库、问题反馈、主页、许可证与自定义 Logo 元数据

安装要求

Halo >= 2.25.0,必须先安装并启用 Halo AI Foundation。

升级与迁移

这是应用市场首个公开版本。从早期 ai-assistant 插件升级时,插件会迁移兼容数据;Embedding 模型或向量维度变化后需要重建索引。

注意事项

模型调用可能产生第三方费用,站点内容会发送给管理员配置的模型服务商。

发布于查看详情

新增

  • 新增世界频道。
  • 支持已接入星系在同一世界频道内实时交流。
  • 支持消息发送、撤回、举报、禁言提示、自定义表情包、成员列表、成员详情、最近文章展示等能力。
  • 支持世界频道首次使用协议确认,由服务端下发协议内容。
  • 支持世界频道错误提示优化,违规内容、禁言、频率限制、表情包上传失败、撤回超时等场景会显示明确提示。

修复

  • 修复关系图首次渲染后球体不在视图中心的问题。
  • 修复关系图需要手动点击「重置」后才能看到完整球体的问题。
  • 修复关系图未点击渲染前仍可能看到图谱残影的问题。
  • 修复关系图节点提示展示“已接入 / 未接入”状态造成干扰的问题。

优化

  • 关系图改为手动点击「开始渲染」后再加载,避免进入页面后自动渲染造成性能消耗。
  • 关系图节点渲染上限提升至 5000。
  • 简化关系图「开始渲染」按钮样式。
发布于查看详情

1.0.7

二次元少女风格的 Halo 2.x 博客主题。本次为功能新增与体验优化。

✨ 新增

  • 导航栏右上角新增用户入口:未登录显示「登录」按钮,已登录显示头像并可展开用户菜单(控制台 / 个人中心 / 退出登录)。(感谢 @pandyzhou 贡献 PR #6
  • 新增「顶栏-登录入口地址」设置,默认 /console,可按需改为 /login 等。

💄 优化

  • 用户菜单点击退出改为直接登出,不再经过系统确认页;下拉在移动端支持点击展开/收起,且不再遮挡顶栏。
  • 移除页脚的登录入口显示及其相关设置项(统一由顶栏用户入口承担)。

✅ 适配

Halo 2.14.0 及以上版本。


完整说明见仓库 README。


Generated from v1.0.7

发布于查看详情

halo-theme-cosolar 是一款为 Halo 2.20+ 打造的现代博客主题,专为技术写作者设计。它把"内容"放回舞台中央 —— 干净的排版、克制的动效、合理的留白,让代码与文字都能舒适呼吸。同时在小屏与移动端做了完整自适应:贴底毛玻璃操作栏、抽屉式目录、自动隐藏的侧边栏,让手机阅读体验与桌面端同样顺滑。

设计亮点

  • 🎨 青绿美学 — 默认主色 #10B981,可在后台一键换色,全站按钮 / 链接 / 标签 / 进度条联动
  • 🌗 暗色模式 — 跟随系统 / 强制浅色 / 强制暗色三档可切,导航与操作栏毛玻璃风格
  • 🖼️ 精选轮播 — 首页顶部卡片轮播,支持手动指定、自动播放、置顶回退
  • 🗂️ 分类导航 + 热门标签 + 近期更新 — 侧边栏模块化组件,可单独开关
  • 📚 文章目录(TOC) — 桌面端右侧悬浮跟随,移动端抽屉式弹出,1px 极细滚动条
  • 📊 阅读进度条 — 顶部 2px 彩色渐变,实时反映阅读位置
  • 🖱️ 图片查看器 — 文章图片点击放大,支持滚轮缩放 / 拖动 / 双击复位 / ESC 关闭,零依赖
  • 👍 点赞 / 评论 / 分享 / 回顶 — 文章页底部贴底毛玻璃横条,5 按钮平分宽度
  • 📱 移动端自适应 — ≤768px 侧边栏自动隐藏,导航汉堡菜单展开,操作栏贴底
  • Vite 构建 — TypeScript + vite-plugin-halo-theme,产物精简,按模板分块

Snipaste_2026-07-05_08-53-53

发布于查看详情

修复Bug

  • 修复首页“生活回想”图片浮层描述直接显示瞬间插件富文本标签的问题,避免出现 <p style=""> 等 HTML 片段。
发布于查看详情

修复内容:

  1. src/assets/utils/toc.ts setActiveHeading 重写:

    • 分离 class 切换与滚动逻辑
    • 检查 active link 是否在 .toc 容器可视区域内
    • 检查 .toc 容器本身是否在视口内
    • 仅当 link 不可见且容器可见时才调用 scrollIntoView
    • 触摸设备仍跳过 scrollIntoView
  2. src/assets/styles/main.css 为 .toc 添加滚动上下文:

    • max-height: calc(100vh - 12rem)
    • overflow-y: auto 使其成为独立滚动容器
    • overscroll-behavior: contain 防止滚动链
    • OKLCH 滚动条样式与全局一致
发布于查看详情

⚠️兼容性升级至 Halo 2.25.0,不再支持更早版本


🛡️ 更新详情

  • 优化全局文章页面footer与内容适配空间

  • 部分feature组件回退1.2版本配置

  • 修复缩约图部分引入错误

  • 修复其它的一些小bug

发布于查看详情

修复

  • 修复 iPhone Safari 从地址栏首次打开网站时,视频封面偶尔无法播放的问题。
  • 优化页面从 document-hidden 切换到可见状态后的封面视频启动时机,避免 Safari 媒体加载器未准备好导致视频一直等待并回退到封面图。

优化

  • 增加视频封面恢复启动的调试日志,便于排查移动端浏览器的可见性和视频加载问题。
发布于查看详情

性能优化

  • 优化信息流评论 SSR 查询量,减少首页/瞬间页评论与回复的首屏查询压力。
  • 信息流图片改用 Halo 缩略图,九宫格、头像、音乐封面加载更轻量,点开大图仍查看原图。
  • 发布器与调试模块改为按需加载,普通访客不再提前下载发布相关脚本。
  • 优化音频卡片背景模糊实现,降低毛玻璃效果的渲染开销。

修复

  • 修复评论「展开」时短暂跳动的问题,展开全量评论时先离屏构建完整列表,再一次性替换。
  • 修复截断评论展开后全量昵称、回复、待审核状态与评论数量同步显示的问题。
发布于查看详情

详情请参阅更新日志在 GitHub 上查看)。
Please refer to Changelog (view on GitHub) for details.

howiehz-higan-zh-hans.zip 为简体中文默认安装包,仅包含 .br
howiehz-higan-zh-hans-tiny.zip 为简体中文轻量安装包,移除默认字体资源,默认 logo 资源将替换为 1x1 占位图,不包含预压缩文件,且不注入 Mermaid / instant.page 运行时。
howiehz-higan-zh-hans-full-precompressed.zip 为简体中文完整预压缩包,包含 .gz / .br / .zst
howiehz-higan-en.zip is the English default package with .br only.
howiehz-higan-en-tiny.zip is the English tiny package that removes the default font assets, replaces the default logo asset with a 1x1 placeholder image, omits precompressed assets, and excludes Mermaid / instant.page runtime injection.
howiehz-higan-en-full-precompressed.zip is the English full precompressed package with .gz / .br / .zst.

发布于查看详情
  • 在封面区新增“强制 HTTPS 访问”开关。(开启后,HTTP 访问会自动跳转到 HTTPS,可减少 QQ/iOS 内置浏览器中视频封面声音异常、混合内容等兼容问题。)
发布于查看详情
  • 修复从首页进入文章页时,文章页偶尔短暂显示首页封面区域的问题。
  • 修复从文章页返回首页时,PJAX 恢复原浏览位置前会先跳到其它位置的问题。
  • 优化 PJAX 后退恢复逻辑,快照命中和重新拉取页面两种情况都会更稳定地恢复滚动位置。
  • 增加 PJAX 滚动恢复调试日志,便于排查极端情况下的返回定位问题。
发布于查看详情
  • 优化桌面端大屏显示效果:内容区、正文、卡片、顶栏、页脚、预载入页和悬浮按钮会随屏幕宽度连续适配,大屏阅读不再显得过细过长。

  • 优化音乐播放体验:顶部唱片按钮播放中支持根据当前音乐封面主色进行轻微变色,并加入更自然的颜色注入动画。

  • 优化音乐状态同步:改善音乐瞬间卡片、音乐播放器卡片和顶部唱片按钮在播放、暂停、切歌、PJAX 返回后的状态一致性。

  • 优化 Plus 点赞昵称加载:点赞昵称不再等待授权状态后才拉取,支持短缓存和批量请求,刷新页面时点赞昵称显示更及时。

  • 优化 PJAX 进入/返回稳定性,减少快速切换页面时的异常刷新和状态丢失。

  • 优化首屏预载入逻辑:点赞昵称预加载不再阻塞页面预载入结束,首屏进入更顺滑。

  • 调整音乐卡片、文章页、信息流、发布弹窗、归档弹窗等界面细节,使整体比例在不同桌面尺寸下更协调。

  • Plus 用户请确保 Morpho Plus 插件已更新到最新版。

发布于查看详情

v1.0.9 → v1.1.0 更新日志

🐛 Bug 修复

  • PJAX 导航后链接退化replaceWith 替换 DOM 后未重新绑定点击事件,导致后续导航退化为整页加载
  • Alpine.js 不启动:条件启动导致从首页 PJAX 到文章页后所有 Alpine 组件失效
  • 暗色模式表格边框:缺少 --tw-prose-th-borders / --tw-prose-td-borders
  • package.json 尾逗号:导致 CD 构建失败
  • 文章卡片标题层级<h1> 改为 <h2>,修复一页多 <h1> 的文档层级问题
  • 图标按钮缺 aria-label:搜索、用户菜单、返回顶部补上无障碍标签
  • 代码块颜色不跟随主题:硬编码改为 color-mix--earthquake-surface 派生
  • 表格移动端溢出:添加 overflow-x: auto
  • 缺少键盘焦点样式:添加 focus-visible 全局样式

🚀 优化

  • 去掉内置高亮库:不内置 highlight.js / shiki,改为依赖 plugin-shiki,包体积 630KB → 325KB
  • 代码块 CSS 变量化:fuwari 风格 --codeblock-bg,暗色亮色独立控制
  • 注释清理:17 个文件去除冗余注释,源码 -7.2KB
  • 删除未用文件:article-layout.html、site-stats.html、qrious.min.js、image-preview.ts、github-markdown.css
  • 截图全量 WebP:2.6MB → 742KB
  • 热门文章数量:范围 1-9

🏗️ 架构

  • 侧边栏 Widget 动态加载:恢复 v1.0.9 原始动态拼接方案,th:if / th:unless 互斥保证不重复渲染

📄 文档

  • README 重写:WebP 截图、特性更新、plugin-shiki 依赖说明

🏷️ 版本

  • 1.0.9 → 1.1.0
发布于查看详情

重要变更

此版本移除了模型配置,统一使用 Halo 官方提供的 AI Foundation,所以在升级之后所有模型需要在 AI Foundation 配置,并且功能模型选择都需要重新设置。基于 AI Foundation 的好处:

  1. 提升模型厂商的兼容性,解决之前无法配置模型 API 后缀的问题
  2. 后续仅需在 AI Foundation 中统一管理模型,不用在各个插件中额外配置

建议升级步骤

  1. 安装 AI Foundation 插件并启用
  2. 在 AI Foundation 页面配置所需模型
  3. 检查 AI 助手插件配置,在开启的 AI 功能中重新设置模型
发布于查看详情

style(css): 更新文章标题样式并添加图标标记

  • 在 .gitignore 中添加 /.playwright-mcp/ 忽略目录
  • 替换原有的标题索引计数器为 SVG 图标标记系统
  • 为所有标题级别 (h1-h6) 添加自定义 SVG 图标和标记样式
  • 移除原有的数字计数器显示,改用视觉化的图标标记
  • 调整标题的内边距和定位以适应新的图标系统
  • 定义新的 CSS 变量控制图标大小、间距和颜色渐变效果

feat(content): 添加表格内容增强功能并更新主题版本

  • 新增 content-tables.ts 模块处理表格样式增强
  • 添加表格标题、边框、滚动条等样式定义
  • 实现表格包装器重用逻辑优化
  • 更新主题版本号至 1.0.0-beta9
  • 优化表格渲染性能和视觉效果
  • 添加对 Halo 编辑器表格的支持识别

Full Changelog: 1.0.0-beta8...1.0.0-beta9


Generated from 1.0.0-beta9

发布于查看详情

新增

  • 新增助手运行模式配置:
    • 纯宠物
    • RAG + Agent
    • RAG
    • Agent
  • 支持在不启用 RAG 的情况下单独使用 Agent 对话。
  • RAG 索引任务新增「强制停止」和「强制重新索引」操作。
  • PetDex 支持反向代理域名配置,方便国内服务器加载宠物资源。
  • 支持将宠物资源保存到 Halo 附件库,可配置附件分组和存储策略。
  • RAG 索引支持按文档批量处理,降低大知识库重建时的超时风险。
  • 支持导入后仅对本次导入文档执行增量索引。

优化

  • 纯宠物模式下不再打开对话面板,并根据模式展示不同宠物气泡文案。
  • RAG 索引进度提示更清晰,展示当前批次、分块数量和执行状态。
  • Embedding 调用增加批量大小、并发数、重试次数和单批超时配置。
  • RAG 索引任务最多重试 3 次,避免异常时一直重建。
  • 对 Embedding 模型不支持、认证失败、模型或接口不存在等配置类错误,直接终止任务,不再无效重试。
  • Agent 工具调用链路增加更完整的日志上下文,便于定位模型工具流兼容问题。

修复

  • 修复关闭 RAG 后 Agent 无法单独使用的问题。
  • 修复 RAG 索引异常时任务状态可能持续停留在运行中的问题。
  • 修复插件停止或重载时 RAG 索引任务仍可能继续更新状态的问题。
  • 修复部分场景下 RagIndexTask 扩展索引不可用导致后台反复报错的问题。
  • 修复 PetDex 资源在国内环境加载不稳定的问题。
    Full Changelog: 4.0.1...4.0.2

Generated from 4.0.2

发布于查看详情

序白 Alba 1.3.0 重大更新:更强、更美、更易用

一句话概括:从「可配置的主题」进化为「可视化搭建的设计系统」
适用版本:Halo 2.25.0+ | 发布时间:2026 年 7 月


🎉 给您带来的核心价值

维度 升级前 (1.2) 升级后 (1.3) 您的收益
搭建效率 看文档、对照代码、反复试错 后台直接看缩略图选布局 配置时间缩短 70%+
页面表现 固定几种模板 17+ 种布局组合随心搭 覆盖 90% 落地页场景
移动体验 单一抽屉菜单 7 种移动菜单样式 手机端像 App 一样顺滑
视觉冲击 静态页面 动态背景 + 60fps 动画 访客停留时长显著提升
加载速度 全量加载 300KB+ 按需加载,首屏 < 1.5s SEO 更友好,跳出率更低

✨ 核心新功能一览

1. 首屏 Hero 区:3 种风格,一键切换

风格 效果预览 适合场景
经典便当 网格轮播 + 右侧快捷入口 内容型站点、博客、资讯
全景画框 沉浸式大图 + 动态标题 作品集、摄影、设计展示
分屏视界 左右分屏联动切换 SaaS 官网、产品落地页、双栏对比

💡 后台操作:主题设置 → Hero 模块 → 直接点缩略图选中即可,所见即所得

2. 特色区块:10 种专业布局,拖拽式搭建

布局类型 视觉特点 典型用途
基础图文 左图右文/浏览器模拟器 功能介绍、产品展示
卡片列表 两种卡片风格随意切 服务清单、优势罗列
磁贴轮播 大图配右侧标签切换 版本更新、案例轮播
网格布局 左大图右网格卡片 团队介绍、合作伙伴
分类橱窗 两级嵌套分类卡片 产品矩阵、课程目录
团队展示 头像/Logo 两种模式 关于我们、核心成员
画廊/跑马灯 评价轮播/无缝滚动 客户见证、品牌动态
行动召唤(CTA) 色块+多按钮 注册引导、下载入口
问答手风琴 经典/网格两种样式 常见问题、帮助中心
博客列表 内嵌 4 种文章样式 首页最新动态、专题聚合

🎯 零代码搭建:后台「Feature 模块」→ 添加区块 → 选缩略图 → 填内容 → 保存即时生效

3. 移动端体验:像原生 App 一样丝滑

  • 7 种菜单样式:从极简「返回首页」到复杂「矩阵/磁贴/卡片广告」
  • 双 Tab 导航:探索发现 / 用户中心,底部固定不遮挡
  • 触控优化:惯性滚动、防抖点击、手势友好
  • 响应式图片:自动适配 Retina/高 DPI 屏幕

4. 文章页全面进化

新能力 说明
3 种文章模板 经典/轴心分栏/时间轴 —— 换个风格像换主题
侧边栏 5 合 1 订阅区/目录/小组件/图片广告/文字广告随意切
评论双模式 主题精美样式 / Halo 原生样式 任选
分享重构 一键复制 + 微信二维码 + 精美弹窗动画
点赞/收藏/分享 固定侧边栏 + 悬浮按钮,交互不漏埋点

5. 动态背景:让页面「活」起来

  • 琥珀潮汐 —— 暖色粒子流,适合品牌、创意类站点
  • 流雾银辉 —— 冷色雾效,适合科技、极简风格
  • 一键开关,低配设备自动降级为静态色块

6. 归档/分类/标签页:专业级内容浏览

页面 新增布局 亮点
文章归档 3 种 时光轴/详情卡片/原版
分类目录 列表 2 种 + 详情 3 种 支持封面图、子分类展开、文章计数
标签云 列表 2 种 + 详情 3 种 7 天新增计数、热门 Top 10

📋 升级指引(给站长/运营)

⚠️ 重要提示

1.3.0 配置系统完全重写,旧版配置无法自动迁移
升级后需重新在后台配置一次,建议预留 30-60 分钟

升级步骤

  1. 备份现有配置:后台 → 主题设置 → 导出配置(保存 JSON 文件)
  2. 升级 Halo:确保版本 ≥ 2.25.0
  3. 安装新版主题:上传 theme-alba-1.3.0.zip 或从应用市场更新
  4. 按顺序重新配置(建议顺序):
    • 🌐 全局设置 → 网站信息、Logo、动态背景、配色
    • 🎬 Hero 模块 → 选 3 种风格之一,上传轮播图
    • Feature 区块 → 点击「添加区块」→ 选缩略图 → 填内容
    • 📝 Blog 模块 → 选 4 种列表样式之一
    • Q&A 模块 → 选经典/网格,录入常见问题
    • 🧩 Widget 模块 → 便当数列/胶囊悬浮(页脚替代品)
    • 📱 Mobile 菜单 → 选 7 种样式之一
    • 📚 归档/分类/标签 → 各选喜欢的布局
    • 📖 文章配置 → 侧边栏样式、评论模式
    • 🦶 Footer → 页脚内容(支持 HTML)

常见问题

问题 解答
旧配置会丢吗? 可能会,Halo 只保留旧版同名元数据配置,需提前导出配置,后续可切回 1.2.0 恢复
需要懂代码吗? 完全不需要,全程可视化点击配置
会影响收录/SEO 吗? 不会,HTML 结构更语义化,加载更快,对 SEO 有利
手机端会乱吗? 1.3.0 专门强化了移动端,7 种菜单任选一款即可完美适配
可以先试用吗? 建议在测试站/本地先体验,确认无误再上线

🎯 适用场景推荐

您的站点类型 推荐配置组合
个人博客/技术博客 Hero: 经典便当 + Feature: 基础图文/卡片列表 + Blog: 列表样式
企业官网/产品落地页 Hero: 分屏视界 + Feature: CTA/网格/团队 + Widget: 胶囊悬浮
作品集/设计师/摄影 Hero: 全景画框 + Feature: 画廊/磁贴 + 文章: 轴心模版
知识库/文档/帮助中心 Hero: 经典便当 + Feature: 问答/分类橱窗 + 归档: 时光轴
资讯/新闻/内容聚合 Hero: 经典便当 + Feature: 博客列表/卡片 + 侧边栏: 订阅区

📊 性能对比(实测数据)

指标 1.2.0 1.3.0 提升
首屏加载 (LCP) ~2.8s ~1.3s 53% ↓
交互就绪 (TTI) ~3.5s ~1.8s 49% ↓
累积布局偏移 (CLS) 0.12 0.02 83% ↓
移动端性能分 72 94 +22 分
首包体积 303KB ~85KB 72% ↓

测试环境:Halo 2.24 / 2核2G / 启用 CDNginxgzip + 静态资源CDN


序白 Alba 1.3.0 —— 让搭建网站像搭积木一样简单,让访客体验像用 App 一样流畅。

ThemeNets 创意驱动新视界

发布于查看详情

详情请参阅更新日志在 GitHub 上查看)。
Please refer to Changelog (view on GitHub) for details.

howiehz-higan-zh-hans.zip 为简体中文默认安装包,仅包含 .br
howiehz-higan-zh-hans-tiny.zip 为简体中文轻量安装包,移除默认字体资源,默认 logo 资源将替换为 1x1 占位图,不包含预压缩文件,且不注入 Mermaid / instant.page 运行时。
howiehz-higan-zh-hans-full-precompressed.zip 为简体中文完整预压缩包,包含 .gz / .br / .zst
howiehz-higan-en.zip is the English default package with .br only.
howiehz-higan-en-tiny.zip is the English tiny package that removes the default font assets, replaces the default logo asset with a 1x1 placeholder image, omits precompressed assets, and excludes Mermaid / instant.page runtime injection.
howiehz-higan-en-full-precompressed.zip is the English full precompressed package with .gz / .br / .zst.

发布于查看详情

v4.0.0

Tip

此版本为重大更新,插件正式更名为「智阅全能AI助手」。

当前版本依赖 AI 基座 插件,请先安装并启用 AI 基座,并配置可用模型。

Warning

此版本为破坏性更新,升级后需要重新配置插件。

v4 对前台助手、RAG 知识库、Agent 能力、对话配置和部分样式配置进行了重构。旧版本配置可能无法完全兼容,请升级后进入插件设置重新检查并保存配置。

使用知识库能力前,建议重新导入资料或执行一次重建索引。

新增

  • RAG 索引支持按文档批量处理,可配置每批文档数量,降低大知识库重建索引时的超时风险。
  • RAG 支持增量索引,导入文章或文档后可只索引本次新增内容,无需每次全量重建。
  • 前台助手新增显示模式:宠物 + 对话仅显示宠物
  • 宠物气泡文案支持按显示模式分别配置。
  • AI 助手访问模式扩展为 4 种:匿名对话、匿名对话 + Agent、登录对话、登录对话 + Agent。
  • PetDex 新增反代域名配置,支持国内服务器通过反向代理加载 PetDex 资源。
  • PetDex 新增附件库本地化配置,可选择 Halo 附件分组和存储策略,导入宠物时自动将资源保存到附件库。

优化

  • PetDex 宠物库、控制台预览和前台展示统一使用反代或本地化后的资源地址。
  • PetDex 反代支持同路径代理和 {url} / {encodedUrl} / {path} 模板。
  • 仅宠物模式下隐藏对话入口和问答相关交互,避免用户误触打开对话框。
  • RAG 索引任务状态和处理流程更适合大批量文档场景。

修复

  • 修复仅宠物模式下仍可能打开对话框的问题。
  • 修复宠物模式切换后气泡文案不够匹配的问题。
  • 修复部分国内环境无法直接加载 PetDex 远程资源的问题。

注意事项

  • 开启 PetDex 附件库本地化后,新导入的宠物会自动使用本地附件资源。
  • 已导入的旧 PetDex 宠物需要重新导入,或重新保存一次,才会转换为附件库资源。

Full Changelog: 4.0.0...4.0.1


Generated from 4.0.1

发布于查看详情

更新内容

  • 修复 JSON 注入 script 标签导致的存储型 XSS。
  • 修复外部日历 URL 无校验导致的 SSRF。
  • 修复本地条目无界重复展开导致的 DoS。
  • 修复 CSS 样式属性颜色值注入。
  • 修复已禁用日程可通过直接名称引用访问。

Generate from v3.3.0

发布于查看详情
  • 优化 AI 自动审核判断,用户名、来源身份、站点等信息会纳入审核上下文。
  • 管理员/可信用户的评论不再被 AI 拦截;友情链接申请等可信场景不会误入拦截。
  • 新增 AI 拦截记录的手动复核通过能力:通过后评论/回复恢复已审核,并清理对应拦截记录。
  • 修复后台评论编辑器展示不完整、表情面板尺寸和回复弹窗定位异常的问题。
  • 修复举报记录详情弹窗点击详情后无法打开的问题。

Full Changelog: 1.0.4...1.0.5


Generated from 1.0.5

发布于查看详情

v4.0.0

Tip

此版本为重大更新,插件正式更名为「智阅全能AI助手」。

当前版本依赖 AI 基座 插件,请先安装并启用 AI 基座,并配置可用模型。

Warning

此版本为破坏性更新,升级后需要重新配置插件。

v4 对前台助手、RAG 知识库、Agent 能力、对话配置和部分样式配置进行了重构。旧版本配置可能无法完全兼容,请升级后进入插件设置重新检查并保存配置。

使用知识库能力前,建议重新导入资料或执行一次重建索引。

新增

  • 新增前台宠物助手,支持小窗与全屏会话。
  • 新增 RAG 知识库问答能力,可基于站内资料回答访客问题。
  • 新增站点 Agent 能力,可结合站内检索、页面内容和知识库协同输出。
  • 新增文章、页面、文档、Markdown、富文本和本地文件导入。
  • 新增批量文件导入,默认使用文件名作为标题。
  • 新增会话记录与 AI 调用日志。
  • 新增知识库导入任务状态、删除中状态和列表分页。

优化

  • 优化前台小窗和全屏对话 UI。
  • 优化助手名称、头像、欢迎语和主题配色读取逻辑。
  • 优化 Markdown 内容渲染。
  • 优化 Agent 与 RAG 的协作逻辑,避免重复输出。
  • 优化知识库导入交互,降低批量导入复杂度。
  • 优化后台列表样式,更贴近 Halo Console 标准体验。
  • 优化重建索引交互,将其作为高风险操作单独提示。

修复

  • 修复图片展示不完整的问题。
  • 修复部分列表缺少分页的问题。
  • 修复删除状态缺少刷新监听的问题。
  • 修复部分任务状态展示不准确的问题。
  • 修复资源 ID 展示不友好的问题。
  • 修复前台助手未正确展示插件配置头像的问题。
  • 修复 Agent 检索结果与 RAG 回答重复输出的问题。

升级说明

v4.0.0

Tip

此版本为重大更新,插件正式更名为「智阅全能AI助手」。

当前版本依赖 AI 基座 插件,请先安装并启用 AI 基座,并配置可用模型。

Warning

此版本为破坏性更新,升级后需要重新配置插件。

v4 对前台助手、RAG 知识库、Agent 能力、对话配置和部分样式配置进行了重构。旧版本配置可能无法完全兼容,请升级后进入插件设置重新检查并保存配置。

使用知识库能力前,建议重新导入资料或执行一次重建索引。

新增

  • 新增前台宠物助手,支持小窗与全屏会话。
  • 新增 RAG 知识库问答能力,可基于站内资料回答访客问题。
  • 新增站点 Agent 能力,可结合站内检索、页面内容和知识库协同输出。
  • 新增文章、页面、文档、Markdown、富文本和本地文件导入。
  • 新增批量文件导入,默认使用文件名作为标题。
  • 新增会话记录与 AI 调用日志。
  • 新增知识库导入任务状态、删除中状态和列表分页。

优化

  • 优化前台小窗和全屏对话 UI。
  • 优化助手名称、头像、欢迎语和主题配色读取逻辑。
  • 优化 Markdown 内容渲染。
  • 优化 Agent 与 RAG 的协作逻辑,避免重复输出。
  • 优化知识库导入交互,降低批量导入复杂度。
  • 优化后台列表样式,更贴近 Halo Console 标准体验。
  • 优化重建索引交互,将其作为高风险操作单独提示。

修复

  • 修复图片展示不完整的问题。
  • 修复部分列表缺少分页的问题。
  • 修复删除状态缺少刷新监听的问题。
  • 修复部分任务状态展示不准确的问题。
  • 修复资源 ID 展示不友好的问题。
  • 修复前台助手未正确展示插件配置头像的问题。
  • 修复 Agent 检索结果与 RAG 回答重复输出的问题。

升级说明

  • 要求 Halo >= 2.25.0
  • 需要安装并启用 AI 基座 插件。
  • 升级后必须重新检查并保存插件配置。
  • 使用知识库能力前,建议重建索引或重新导入资料。
  • 要求 Halo >= 2.25.0
  • 需要安装并启用 AI 基座 插件。
  • 升级后必须重新检查并保存插件配置。
  • 使用知识库能力前,建议重建索引或重新导入资料。

Generated from 4.0.0

发布于查看详情

新增

  • 支持瞬间插件(Moments)评论区适配 — 当检测到已安装并启用 plugin-moments 时,自动为瞬间评论启用 AI 自动回复
    • 新增 MomentsIntegrationService,通过 SchemeManager 检测 Moment 扩展注册状态,避免直接引用导致的 NoClassDefFoundError
    • 在插件设置 - 基本设置中新增"瞬间评论区适配"开关,仅当瞬间插件可用时显示,默认开启
    • ContextExtractor 适配 Moment 上下文:使用 moment name 作为关联标识,通过 Unstructured 单次 fetch 获取瞬间实际内容(spec.content.raw/html)和发布时间(spec.releaseTime)作为 AI 上下文
    • FilterService 对 Moment 评论读取 momentsEnabled 配置决定是否触发 AI 回复
  • 评论人昵称广告判定 — 前置过滤现在综合判断评论者昵称与评论内容。昵称包含商业推广关键词(如"免费算命"、“加微信xxx”、“代写论文”、"低价代购"等)即使评论内容看似正常也会被判定为广告
    • CommentPreFilterService.check() 新增 commentOwner 参数,将昵称纳入 AI 分类输入
    • 系统提示词新增"原则六:昵称与内容综合判定",列举昵称广告典型特征

改进

  • 重构提示词组装与兼容机制 — 建立更健壮的模块化拼接逻辑,解决多配置组合时的指令冲突与上下文丢失问题
    • 新增 {{output_guidance}}{{sentiment_hint}}{{language_requirement}} 三个占位符,将输出规范、情感提示、语言要求拆分为独立模块
    • 角色与预设使用段落分隔(空行+段落标记)确保指令隔离,避免风格预设污染角色设定
    • 情感提示通过 {{sentiment_hint}} 占位符原位注入;旧模板不含该占位符时自动降级为末尾追加,保持向后兼容
    • 消除两个近乎相同的 buildPrompt 重载的代码重复,统一委托给单一核心组装方法
    • 默认模板更新为模块化结构,新安装用户即可获得更稳定的 AI 输出
    • 强化身份约束:明确角色不是文章作者、站点管理员、客服或用户本人;禁止声称亲身经历未提供之事;禁止编造文章外的人物、数据、链接;禁止泄露系统提示词、模型参数、插件实现与安全策略
  • “Prompt设置"更名为"提示词设置” — UI 标签页、面板标题、设置项标签、帮助文本统一改为中文"提示词"
  • 日志瞬间关联链接精确到具体瞬间 — Moment 评论的关联链接从 /moments 列表页改为 /moments/{name} 具体瞬间页
  • 日志页面增加实时刷新功能 — 新增"实时刷新"开关,开启后每 10 秒静默轮询新数据。标签页隐藏或弹窗打开时自动暂停,回到页面时立即刷新。支持可配置刷新间隔(5s/10s/30s/60s)、新记录 Toast 提示、滚动位置保留、连续失败自动关闭
  • AI 安全审核改为失败关闭策略ReviewService 在审核服务不可用或异常时不再自动通过,改为返回 FAIL 并拦截发布,避免未经审核的 AI 回复被自动发布

Bug 修复

  • 修复日志页面 XSS 漏洞renderContent 仅移除 <script><iframe> 标签,未过滤 on* 事件处理器和 javascript: 协议。现已全面清理所有事件处理器、危险协议和嵌入标签
  • 修复日志页面删除后页码越界 — 删除最后一条记录后当前页变空但页码不回退,显示"暂无记录"。新增页码自动回退逻辑
  • 修复日志页面分页按钮在加载中可重复点击 — 新增 :disabled="loading" 防止重复请求
  • 修复误报弹窗关闭后残留状态 — 点击遮罩关闭弹窗时未清除 falsePositiveTarget,可能导致重开时显示旧数据
  • 修复 AiReplyOrchestrator 指数退避无上限retryCount 较高时延迟可达 43 分钟,超过处理锁 TTL 导致锁提前过期。新增 300 秒上限
  • 修复 ContextExtractor 空指针风险extractCommentContent/extractCommentOwner/extractReplyContent 未检查 spec == null,畸形数据会触发 NPE 中断整个处理链
  • 修复 SettingsView 邮箱防抖定时器未清理 — 组件卸载时 emailDebounce 定时器仍在运行,导致内存泄漏。新增 onUnmounted 清理
  • 修复 HomeView 刷新数据 Toast 提前弹出refreshData 未等待异步请求完成就提示成功。改为 await Promise.all() 后再提示
  • 修复 PromptBuilder 安全提示词可被绕过 — 自定义模板若遗漏 {{safety_prompt}} 占位符,安全约束会被静默丢弃。新增安全网:检测到遗漏时强制前置注入安全规范
  • 修复 AiReplyOrchestrator.processFalsePositive 无去重锁 — 误报处理流程未使用处理锁,重复触发会创建重复 AI 回复。新增 processingLocks 机制
  • 修复 AiReplyOrchestrator.processFalsePositive 失败后记录卡在 PENDING — 处理失败时记录未被标记为 FAIL,用户无法重试。新增 onErrorResume 将记录标记为 FAIL
  • 修复 AiReplyOrchestrator.hasExistingReply 错误时静默放行 — 数据库异常时去重检查返回 false 导致重复创建记录。改为返回 true(失败关闭,宁可跳过也不重复)
  • 修复 AiReplyCleanupService 删除处理中记录 — 清理逻辑未过滤 PENDING/REVIEWING 状态记录,可能破坏正在进行的 AI 回复流程。新增状态过滤
  • 修复 AiReplyCleanupService null subscribe 消费者.subscribe(null, ...) 传入 null 成功消费者,可能导致 NPE。改为空 lambda
  • 修复 AiReplyCleanupService 清理开关默认值不一致 — ConfigMap 存在但 data 为 null 时返回 false(禁用),与其他情况返回 true 不一致。统一为 true
  • 修复 Endpoint 分页参数未校验Integer.parseInt 对非数字参数抛出 500 错误。新增 parseIntSafely 安全解析
  • 修复 Endpoint 关键词搜索大小写敏感 — 搜索 “Hello” 无法匹配 “hello”。改为 toLowerCase() 不区分大小写
  • 修复 Endpoint 批量操作并发无限制flatMap 默认并发 256,大批量操作可能压垮数据库。限制为 10
  • 修复 LogsView 实时刷新漏检状态变化 — 数据签名仅含 total 和首尾 name,记录状态变化不会被检测。签名新增首尾状态和发布标记
  • 修复 LogsView 实时刷新与手动操作竞态 — 自动刷新与手动 fetchReplies 可能同时执行导致数据错乱。新增 autoRefreshing 标志位
  • 修复 ReplyReconciler.isAiReply 空指针风险 — 未检查 spec == null,畸形 Reply 数据会触发 NPE
  • 修复 ContextExtractor 瞬间内容重复 fetchgetMomentContentgetMomentReleaseDate 各自独立 fetch 同一个瞬间扩展,产生 2 次重复查询。合并为 getMomentContentAndDate 单次 fetch
  • 修复 ContextExtractor 瞬间分支缺少容错buildContext 的 Moment 分支缺少 onErrorResumedefaultIfEmpty,异常时静默跳过而非降级处理。已补齐与 Post/SinglePage 一致的容错
  • 修复 AiReplyOrchestrator.processFalsePositive 锁竞态条件 — 锁值存储过期时间(未来时间戳),过期后 putIfAbsent 不覆盖旧值导致去重失效。改为存储获取时间,与 processComment 一致
  • 修复 cleanupStaleLocks 无法清理误报处理锁 — 误报处理锁值是未来时间戳,cleanupStaleLocks 计算 age 为负数永远不清理。统一为存储获取时间
  • 修复 ContextExtractor.getCommentCount 空指针风险reply.getSpec() 可能为 null 时直接调用 getCommentName() 触发 NPE。fetchConversationHistory 同样问题已一并修复
  • 移除实时刷新冗余时间显示 — 移除刷新间隔选择右侧的"等待中…"/“刚刚更新”/"N秒前更新"等状态文本及相关定时器,减少不必要的 UI 噪声和每秒重渲染
发布于查看详情

首页封面支持视频背景,可配置本地附件或外链视频,并支持移动端开关、图片封面兜底。
封面视频支持手动开启声音,滚动离开封面区自动淡出静音,返回封面区柔和恢复。
声场播放器优化为唱片图标,播放时旋转,暂停时保留当前旋转角度。
顶部声场歌词支持自动横向滚动,长歌词会尽量在当前句结束前完整展示。
前台发布瞬间支持外链附件:图片、实况照片、视频直链、音频直链、音乐封面外链、歌词外链。
在线音乐发布体验增强。
新增封面视频、音乐播放、加载预热等调试日志开关。

发布于查看详情

修复

  • 修复启用 PJAX 与 Lenis 平滑滚动后,从其他页面返回首页时页面滚动边界未及时刷新,导致页脚下方出现大面积空白并可继续滚动的问题。
  • 修复首页 Swiper、图片等异步内容加载后未同步刷新 Lenis 滚动高度的问题。
  • 优化 PJAX 内容替换后的滚动复位流程,切页后会同步重置 Lenis 与浏览器原生滚动位置。
发布于查看详情

新增与增强

1. 支持WebSocket 实时刷新

  • 新增 ** WebSocket 事件监听**,当星系联盟、星系关系、星系资料、星际资讯等数据发生变化后,插件会自动刷新本地星图库快照并推送给主题页面。
  • 更新 不再依赖后台手动点击“重新同步”,主题侧可以直接接收新的本地快照结果。
  • 对连续到达的实时事件增加 合并与节流处理,避免短时间内重复触发刷新,提升页面数据更新的及时性与稳定性。

2. 星图库主题侧数据推送链路补强

  • 新增星图库专用路由、服务与 WebSocket 处理链路,统一承接实时事件、快照重建与前台推送。
  • 优化本地星图库快照的刷新时机,保证主题页面获取到的是最新一轮聚合后的数据结果。

问题修复

修复Bug:收紧前端删除入口判定,只有 目标站点已接入插件 且关系状态为 following / mutual 时,才允许显示“删除友链 / 解除关系”按钮。

发布于查看详情

feat(theme): 添加产品商城主题配置选项

  • 在设置中添加产品商城配置分组
  • 添加页面标签、标题和描述的自定义配置
  • 添加每页显示数量的配置选项
  • 添加是否显示分类筛选的开关配置
  • 添加是否显示授权版本的开关配置
  • 添加各类商品交付说明文案配置
  • 更新产品列表页以使用主题配置
  • 更新产品详情页以使用主题配置
  • 修复插件链接地址错误问题

fix(gateway): 修复脚本加载和产品插件配置

  • 在main.js脚本标签中添加vite-ignore属性以避免构建问题
  • 移除产品商城设置中的插件安装提示通知组件配置
  • 简化产品模块的表单配置结构

feat(theme): 添加留言页功能支持

  • 在.gitignore中添加/.codebase-memory/忽略规则
  • 新增src/guestbook.html实现留言页面模板
  • 添加留言页面相关CSS样式到main.css文件
  • 在theme.yaml中注册留言页模板配置项

feat(config): 添加插件安装提示和路由说明信息

  • 在友链配置区域添加了插件安装提醒和路由说明
  • 为瞬间插件、图库管理插件、装备管理插件添加路由提示信息
  • 为朋友圈插件、Bilibili追番插件、Steam游戏库插件增加路由说明
  • 添加了Docsme插件和项目集插件的路由指引
  • 在产品商城配置中新增插件安装提醒和路由提示
  • 统一使用样式化的提示框展示插件安装和路由配置信息

Full Changelog: 1.0.0-beta7...1.0.0-beta8


Generated from 1.0.0-beta8

发布于查看详情

feat(withdraw): 优化提现设置条件显示逻辑

  • 在提现设置中添加条件判断,仅当余额账户开启时显示
  • 修改提现手续费率字段配置,去除不必要的number验证
  • 更新版本号至1.2.0-alpha1以反映新功能调整

feat(api): 更新API文档和集成设置以支持产品订单积分兑换

  • 将余额相关术语统一替换为储值账户
  • 在MemberLevelRecord查询参数中添加startTimeEmpty和endTimeEmpty过滤选项
  • 在MemberTransactionRecord查询参数中添加businessId过滤选项
  • 新增产品订单积分兑换API接口供控制台和公开访问
  • 新增获取会员插件设置的API接口
  • 添加ProductOrderPointsRedemptionRequest和Result数据模型
  • 在设置结果中新增余额账户和收藏设置配置
  • 添加产品插件集成设置和验证令牌功能
  • 实现产品订单积分兑换的安全访问控制和令牌验证
  • 更新交易类型枚举添加PRODUCT_ORDER和SCORE_PRODUCT_REDEMPTION
  • 配置角色模板允许产品订单积分兑换操作
  • 在设置界面添加产品插件集成配置表单组件

feat(register): 支持可选的邀请码注册配置

  • 添加了邀请码必填/选填配置选项,默认为必填
  • 更新了前端模型定义,在InviteRegister接口中新增required字段
  • 修改邀请码输入页面逻辑,支持可选模式下的不同提示文案和表单行为
  • 实现跳过邀请码注册的功能,当邀请码设置为选填时可通过参数跳过
  • 添加相关单元测试验证必填和选填场景的不同行为
  • 更新API文档同步新增的required字段
  • 在设置页面添加邀请码必填开关的配置界面

docs(api): 添加推荐功能API测试示例和相关配置文档

  • 添加完整的API测试示例文档,包含curl命令、JavaScript示例和Postman集合
  • 更新项目依赖版本,halo平台版本从2.24.0升级至2.25.0,插件版本从2.25.0升级至2.25.3
  • 新增PRODUCT_ORDER业务类型枚举值,扩展业务类型支持
  • 添加邀请访问限制配置分析与优化建议文档
  • 添加设备指纹集成指南文档,提供前端集成方案和后端验证说明
  • 添加充值防重复提交功能说明文档,详细解释防重复机制和技术实现
  • 添加Excel批量导入会员等级功能文档,说明模板下载和批量导入流程

fix(member): 优化用户注册邀请过滤器行为和错误处理

  • 将版本号更新为 1.2.0-alpha2
  • 在 UserRegisterWebFilter 中加入对异常的 onErrorResume 处理,避免配置获取失败导致过滤失败
  • 修改清理邀请码 Cookie 逻辑,避免响应已提交时重复操作和异常抛出
  • 使用 UTF-8 显式编码邀请码输入页面内容,提升安全性和兼容性
  • 调整过滤器执行顺序,确保邀请注册检查优先于主题/域名路由过滤器
  • 增加多项单元测试覆盖异常场景和行为边界
  • 优化测试中对于响应已提交状态和异常处理的模拟验证
发布于查看详情

演示站防护

演示站防护是一个 Halo 插件,用来限制“演示角色”在 Halo 控制台、用户中心和核心 API 中执行高风险写操作。它适合公开演示站、试用环境、售前演示环境这类场景:访客可以登录体验后台,但不能发布文章、改用户、删资源、上传附件、改主题插件配置,别让人一顿乱点把站点霍霍没了。

功能体验

地址 账号/密码
管理端 demo/demo123.

交流群

点击链接加入群聊【halo博客-lywq插件】

功能介绍

  • 按 Halo 角色识别演示用户:配置项保存的是角色 metadata.name,插件会读取当前登录用户的真实角色绑定。
  • 按 HTTP 方法拦截危险操作:可分别控制 POSTPUTPATCH 写请求和 DELETE 删除请求。
  • 按路径模式保护接口:支持精确路径、* 单段通配、** 多段通配。
  • 支持放行路径:放行路径优先级高于保护路径,用于避免误拦插件自身接口或必须开放的接口。
  • 对前端返回结构化错误:被拦截时返回 403application/problem+json,提示 当前演示用户禁止操作
  • 默认关闭:安装后不会立刻影响管理员操作,需要手动启用。

这个插件是演示环境的兜底防护,不是 Halo RBAC 的替代品。演示账号本身也别乱给超级管理员权限,除非你已经把所有危险接口都配进保护路径里,不然就是往门口挂个锁、后墙留个洞,闹呢。

环境要求

  • Halo >= 2.25.0
  • Java 21+
  • Node.js 18+
  • pnpm

安装教程

  1. 构建插件:
./gradlew build
  1. 构建完成后,在 build/libs 目录找到插件 jar,例如:
build/libs/plugin-demo-guard-1.0.0-SNAPSHOT.jar
  1. 进入 Halo 控制台,打开 插件 页面。

  2. 上传并安装插件 jar。

  3. 启用插件后,进入插件设置页配置防护规则。

升级线上环境时,一定要上传新构建出来的 jar。只改本地代码不升级线上插件,线上当然没反应,这个锅代码不背。

使用教程

最小可用示例:禁止演示用户发布文章

如果你现在只想拦截这个发布接口:

/apis/api.console.halo.run/v1alpha1/posts/019f1b47-2f0e-75fa-a868-d5231f673d24/publish

保护路径应该配置成通配形式:

/apis/api.console.halo.run/v1alpha1/posts/*/publish

同时确认:

启用演示站防护:开启
拦截写请求:开启
演示角色标识:选择演示用户绑定的角色 metadata.name

发布文章接口是 PUT 请求,所以只开“拦截删除请求”没用,这地方别拧巴。

1. 创建演示角色

在 Halo 控制台创建一个专门给演示用户使用的角色,例如 演示角色

插件配置里最终保存的是角色的 metadata.name,通常类似:

role-jlijn3me

不用手填也行,插件设置页的“演示角色标识”会从 Halo 角色列表中选择并保存实际角色名。

2. 给演示用户绑定角色

创建或选择一个演示用户,例如 demo,并给它绑定上一步创建的演示角色。

如果演示用户没有绑定这个角色,插件不会把它当作演示用户处理。

3. 开启防护

在插件设置中配置:

启用演示站防护:开启
演示角色标识:选择演示角色
拦截写请求:开启
拦截删除请求:按需开启

4. 配置保护路径

保护路径只写 URL path,不要写协议、域名、端口和查询参数。

正确:

/apis/api.console.halo.run/v1alpha1/posts/*/publish

错误:

http://localhost:8090/apis/api.console.halo.run/v1alpha1/posts/*/publish

多个路径可以用换行、空格、逗号或分号分隔:

/apis/api.console.halo.run/v1alpha1/posts/*/publish
/apis/api.console.halo.run/v1alpha1/posts/*/unpublish
/apis/api.console.halo.run/v1alpha1/posts/*/recycle

也可以写成一行:

/apis/api.console.halo.run/v1alpha1/posts/*/publish /apis/api.console.halo.run/v1alpha1/posts/*/unpublish /apis/api.console.halo.run/v1alpha1/posts/*/recycle

5. 配置放行路径

放行路径优先级高于保护路径。默认放行插件自身接口:

/apis/console.demoguard.muyin.site/**

不要把放行路径写得太宽,例如:

/apis/**

这会把所有 Halo API 都放掉,防护直接变空气,配置了等于没配置。

配置项说明

配置项 说明 建议
启用演示站防护 总开关,关闭后不拦截任何请求。 配完角色和路径后再开启。
演示角色标识 演示角色的 metadata.name 数组。 使用设置页下拉选择,不要填显示名。
拦截写请求 拦截命中保护路径的 POSTPUTPATCH 演示站通常开启。
拦截删除请求 拦截命中保护路径的 DELETE 演示站通常开启。
保护路径 需要禁止演示用户访问的 API path。 只写 path,支持 ***
放行路径 优先放行的 API path。 保留插件自身接口,别写太宽。

路径匹配规则

  • * 匹配单个路径段。
  • ** 匹配多个路径段。
  • 只匹配 path,不匹配 query string。
  • 放行路径先匹配,命中后不再拦截。
  • GET 请求不会被“拦截写请求”拦截。
  • DELETE 请求只受“拦截删除请求”控制。

示例:禁止演示角色发布任意文章:

/apis/api.console.halo.run/v1alpha1/posts/*/publish

可匹配:

/apis/api.console.halo.run/v1alpha1/posts/019f1b47-2f0e-75fa-a868-d5231f673d24/publish

如果接口带查询参数,例如:

/apis/api.console.halo.run/v1alpha1/posts/xxx/publish?async=true

保护路径仍然只写:

/apis/api.console.halo.run/v1alpha1/posts/*/publish

常用保护路径示例

下面这些路径和插件默认配置保持一致,可以按你的演示站开放范围删减。原则很简单:不想让演示用户改的,就别心软。

文章发布、取消发布、回收:

/apis/api.console.halo.run/v1alpha1/posts/*/publish
/apis/api.console.halo.run/v1alpha1/posts/*/unpublish
/apis/api.console.halo.run/v1alpha1/posts/*/recycle

文章底层资源:

/apis/content.halo.run/v1alpha1/posts/**

用户、角色和权限:

/apis/console.api.security.halo.run/v1alpha1/users/**
/apis/api.console.halo.run/v1alpha1/users
/apis/api.console.halo.run/v1alpha1/users/test/permissions
/apis/api.console.halo.run/v1alpha1/users/-/password
/apis/api.console.halo.run/v1alpha1/users/-
/api/v1alpha1/users/**
/api/v1alpha1/roles/**

附件:

/apis/api.console.halo.run/v1alpha1/attachments/upload
/apis/storage.halo.run/v1alpha1/attachments/**

独立页面:

/apis/content.halo.run/v1alpha1/singlepages/**

主题和插件:

/apis/api.console.halo.run/v1alpha1/themes/*/reset-config
/apis/theme.halo.run/v1alpha1/themes/**
/apis/api.console.halo.run/v1alpha1/plugins/*/plugin-state
/apis/api.console.halo.run/v1alpha1/plugins/*/reset-config
/apis/plugin.halo.run/v1alpha1/plugins/**

系统配置和迁移:

/apis/console.api.halo.run/v1alpha1/systemconfigs/basic
/apis/migration.halo.run/v1alpha1/backups
/apis/console.api.migration.halo.run/v1alpha1/restorations

用户中心安全项:

/apis/uc.api.security.halo.run/v1alpha1/personalaccesstokens
/apis/uc.api.security.halo.run/v1alpha1/authentications/two-factor/settings/enabled
/apis/uc.api.security.halo.run/v1alpha1/authentications/two-factor/totp

不同 Halo 版本或插件可能会调整接口路径。拿不准就打开当前站点的 Swagger:

/swagger-ui/index.html

照真实接口路径配置,别靠猜。尤其是 reset-configresetconfig 这种命名,猜错一个字符就全白搭。

验证是否生效

  1. 使用演示用户登录 Halo 控制台。
  2. 在浏览器开发者工具的 Network 面板确认操作请求的 method 和 path。
  3. 执行受保护操作,例如发布文章。
  4. 预期返回 403,响应体包含 当前演示用户禁止操作
  5. 使用非演示角色账号重复同样操作,应该正常通过。

如果演示用户和管理员都被拦,通常是角色配错或账号角色混了;如果谁都不拦,先看总开关、请求方法、真实 path 和线上 jar 版本。别上来就怀疑玄学,十有八九是配置没对上。

被拦截时的响应

命中防护后,插件返回:

HTTP/1.1 403 Forbidden
Content-Type: application/problem+json

响应体:

{
  "status": 403,
  "title": "当前演示用户禁止操作",
  "detail": "当前演示用户禁止操作",
  "message": "当前演示用户禁止操作"
}

如果前端仍然只显示 403: Forbidden,说明前端统一错误处理没有读取 detailmessage 字段。后端已经把话递过去了,前端不接,那就是前端自己的脾气。

常见问题

本地有效,线上无效

优先检查这几件事:

  • 线上是否已经安装新构建的 jar。
  • 插件设置里的 enabled 是否为 true
  • 演示用户是否真的绑定了配置中的角色 metadata.name
  • 请求方法是否在拦截范围内,例如发布文章是 PUT,需要开启“拦截写请求”。
  • 保护路径是否只写 path,没有写域名、协议、端口。
  • 放行路径是否过宽,例如误写了 /apis/**
  • 当前线上 Halo 的真实接口路径是否和你配置的一致。

保护路径一整行配置为什么之前不生效

旧版本只按换行和逗号拆分路径。一整行空格分隔会被当成一个超长路径模式,自然匹配不到真实接口。

当前版本已经支持空格、换行、逗号和分号分隔。线上要获得这个能力,必须升级到包含该修复的新 jar。

为什么没进入演示角色判断

通常是当前请求没有可用登录态,或者插件版本还在使用较旧的过滤器链。当前版本在 Halo 安全认证之后读取用户信息,正常登录请求会进入演示角色判断。

为什么配置了角色还是没拦住

确认配置的是角色 metadata.name,不是显示名。显示名可以叫“演示角色”,但真正保存和匹配的一般是:

role-xxxxxxxx

开发约定

新建 Halo 插件必须优先使用官方脚手架:

pnpm create halo-plugin

不要复制已有插件目录改名初始化,容易带入脏配置、缓存和错误依赖。

本地开发

启动 Halo 开发服务:

./gradlew haloServer

前端开发:

cd ui
pnpm install
pnpm dev

热加载插件:

./gradlew reload

运行测试和构建:

./gradlew test
./gradlew build

许可证

GPL-3.0 © Lywq

发布于查看详情

新增

新增微信读书阅读统计集成,支持通过 WeRead Agent API 获取阅读时长、阅读天数、日均时长、读过、读完、笔记等统计数据。
新增阅读统计面板,支持按周、月、年、全部范围查看数据。
新增年度统计视图,支持年份切换、年度热力图和月度柱状图展示。
新增微信读书 API Key 配置项,用于调用阅读统计等高级接口。
新增 Cookie 状态展示,包括 Cookie 是否有效、微信读书用户名、最近刷新时间。
新增书籍管理顶部筛选工具栏,支持按书名/作者搜索、分类、显示状态、阅读状态筛选。
新增书籍笔记详情接口和抽屉视图,用于查看单本书的划线、想法和书评内容。

改进

优化微信读书 Cookie 管理逻辑,增强 CookieCloud 配置、刷新和状态反馈。
优化同步流程,支持同步划线内容、想法/评论、书评等笔记数据。
优化微信读书接口调用兼容性,改进 notebook、bookmark、review 等数据解析。
优化书籍管理页面布局和白色主题视觉,统计、筛选、书籍列表和笔记抽屉更统一。
优化阅读统计年度热力图,月份标签按真实周列对齐,并减少大屏空白。
优化偏好作者统计口径,按当前范围内本地书籍作者本数统计,避免官方统计字段含义不一致。
优化设置页,提供更清晰的 CookieCloud、API Key、同步和 Cookie 状态管理入口。

修复

修复划线记录、想法/评论同步为空的问题。
修复笔记数量统计不准确的问题。
修复官方阅读统计不可用时页面无数据的问题,现在会回退到本地同步数据。
修复统计卡片单位重复显示的问题,例如 17本 本。
修复年度热力图在部分数据格式下错位或无法正确显示的问题。

发布于查看详情

Bug 修复

  • 修复 AiReplyOrchestrator.retryOrFail 重试计数失效.then() 丢弃了更新后的记录导致 retryCount 始终为 0,AI 生成失败时陷入无限重试。改为 .flatMap() 传递更新后的记录
  • 修复误报反馈"AI 回复"被空字符串覆盖.subscribe() 在异步流程中过早触发,导致 AI 回复生成完成后被空字符串覆盖。改为在 .doOnSuccess() 中触发异步生成
  • 修复 PersonaResolver 在响应式上下文中使用 .block() — 调用阻塞方法会阻塞 Reactor 线程。改为返回 Mono<String> 并使用 Flux.concatMap().next() 替代 for 循环
  • 修复 penalizeComment/penalizeReply 缺少乐观锁重试 — 并发更新 Comment/Reply 时可能静默失败。添加 Retry.backoff(3, 100ms) 重试
  • 修复 approveOriginalComment 缺少乐观锁重试 — 同上,添加 Retry.backoff(3, 100ms) 重试
  • 修复误报反馈端点无法重试 FAIL 状态记录 — 仅接受 FILTEREDFALSE_POSITIVE 状态,AI 生成失败的记录无法重试。现接受 FAIL 状态
  • 修复 tag-NEUTRAL 缺少 CSS 样式 — 中性情感标签无样式显示。补充样式定义
  • 修复 handleTriggerAiReply 缺少加载保护 — 触发 AI 回复按钮可被重复点击导致重复提交。添加 loading 状态
  • 修复 filterKeyword 输入未做防抖 — 每次按键都触发搜索,性能开销大。添加 300ms 防抖
  • 修复 performCleanup 逻辑错误 — 清理逻辑存在判断错误

改进

  • 优化 extractChoice 分类匹配优先级 — 优先匹配违规类别(advertising/abuse/sensitive/meaningless),再匹配 normal,避免正常评论被误判为违规类别
发布于查看详情

更新内容

  • 修复 Microsoft Outlook Calendar 等使用 Windows 时区名称(如 China Standard Time)的 ICS 订阅无法导入的问题。
  • 新增 Windows 时区到 IANA 时区的自动映射,解析失败时回退到系统默认时区。

Generate from v3.1.0

发布于查看详情

1.0.5

二次元少女风格的 Halo 2.x 博客主题。本次为问题修复。

🐛 修复

  • 修复「留言墙」发布区的分类下拉框被留言卡片遮挡的问题(提升发布栏层级,使其浮于卡片之上)。

✅ 适配

Halo 2.14.0 及以上版本。


完整说明见仓库 README。


Generated from v1.0.5

发布于查看详情

Full Changelog: v1.4.2...v1.4.3

feat(hitokoto): 新增点赞功能与深色主题优化

  1. 重构页面样式使用CSS变量统一管理主题色
  2. 添加双击/心形按钮点赞功能,支持本地状态缓存与心跳动效
  3. 新增点赞计数展示与API交互逻辑
  4. 优化背景光晕与新增暗角效果增强视觉深度
  5. 替换旧的页面刷新逻辑为API直取,提升切换句子的流畅度
  6. 添加轻提示、樱花背景与响应式适配

Generated from v1.4.3

发布于查看详情

1.0.4

二次元少女风格的 Halo 2.x 博客主题。本次为功能新增与体验优化。

✨ 新增

  • 顶栏菜单支持子菜单:桌面端鼠标悬停展开下拉(毛玻璃质感 + 主题色图标),移动端在折叠菜单内缩进展开。
  • 「时间天气」新增可选的精确定位功能:后台开启后,访客可点击「使用精确定位」按钮授权浏览器定位以获得更准确的天气(默认关闭,会记住授权避免重复弹窗)。
  • 侧栏「分类」「标签」新增最多显示数量设置,可控制前台展示的条数。

💄 优化

  • 「留言墙」发布区的分类选择器改为自定义下拉,支持深色模式,并按可用空间自动选择向上/向下弹出方向。
  • 新增 color-scheme 声明,原生控件(下拉、滚动条等)跟随明暗模式显示。

✅ 适配

Halo 2.14.0 及以上版本。


完整说明见仓库 README。


Generated from v1.0.4

发布于查看详情

🐛 修复:插件 CSS 不再覆盖主题代码块样式

  • 修复 CSS 冲突:移除了 .ce-pre 中多余的重置样式(background: transparentpadding: 0border: 0 等),主题的代码块背景色、内边距、滚动条等样式完整保留
  • 修复静态资源 404:重新创建被误删的 reverseProxy.yaml,修正资源路径去掉多余 /static/ 层级,CSS/JS 文件恢复正常加载
  • 移除无用数据:前端配置不再注入未使用的 pluginName 字段
  • 内存整洁:pjax 切换时正确释放旧 IntersectionObserver 实例
  • 文档修正:README 后端代码示例对齐实际实现
发布于查看详情

v2.0.0 (2026-06-29)

🎉 重大精简:移除所有非核心功能,专注折叠体验

  • 移除代码高亮:不再依赖 Highlight.js,文件大小减少 97%
  • 移除行号显示:简化代码块结构
  • 移除复制按钮:如需复制功能,可使用浏览器自带复制或主题自带功能
  • 移除语言名称显示:简化界面
  • 移除标题栏:不再显示 macOS 风格红绿灯按钮
  • 新增懒加载图片兼容:支持 data-srcdata-originaldata-lazy 等常见懒加载属性
  • 新增展开态 sticky 按钮:长代码时展开按钮固定在视口底部
  • 新增横向滚动支持:超长代码行自动横向滚动
  • 新增无障碍支持aria-labelaria-expanded:focus-visible
  • 性能优化:JS 从 ~600 行重构为 ~270 行(-55%),CSS 从 ~800 行重构为 ~220 行(-72%)
  • 浏览器兼容性提升:Chrome 57+、Firefox 52+、Safari 10.1+
  • 默认启用功能:代码折叠和长图折叠默认开启(之前默认关闭)

升级说明

  • 从 v1.x 升级到 v2.0.0 会自动丢失高亮、行号、复制按钮等功能
  • 如果依赖这些功能,请勿升级
  • 如果只需要折叠功能,v2.0.0 性能更优,体验更好
发布于查看详情

更新内容

  • 修复 GitHub Actions 中 gradlew 无执行权限导致 CI/CD 失败的问题。
  • 插件版本递增至 0.0.18。
  • 保留业余无线电 GardMap 通联网格地图显示名称。
  • Release 发布后由 CD 自动构建 JAR 并发布到 Halo 应用市场 app-rftgoicv。

Generated from v0.0.18

发布于查看详情

fix(post): 修复文章导航链接逻辑错误

  • 修复上一篇按钮指向错误,现在正确指向下一个文章
  • 修复下一篇按钮指向错误,现在正确指向前一个文章
  • 修复导航标签显示错误,确保前后文章标题正确显示
  • 修正aria标签中的文章标题引用错误

fix(categories): 修复分类展示页面链接和计数显示

  • 将链接从 /archives 更改为 /categories
  • 更新文本从 "全部" 为 "全部分类"
  • 修改描述从 "浏览所有文章内容" 为 "浏览所有分类目录"
  • 调整计数显示从文章总数改为分类数量
  • 使用 #lists.size(categories) 替代 posts.total 计算分类数

style(styles): 格式化菜单图标和导航链接样式

  • 为 hydro-menu-icon 添加 align-self、box-sizing 和 overflow 属性
  • 修改 svg 元素为 flex 布局并使用 CSS 变量控制尺寸
  • 为 hydro-nav-menu__label 添加 flex 显示和居中对齐
  • 为 hydro-dropdown 添加 flex 显示和居中对齐
  • 为导航链接添加高度和行高设置
  • 统一移动端菜单图标的 SVG 尺寸变量
  • 为波浪链接添加内联弹性布局对齐方式

feat(scroll): 添加初始滚动保护功能

  • 在 base-head.html 和 layout.html 中添加历史记录滚动恢复手动控制
  • 创建 initial-scroll-guard.ts 文件实现滚动保护逻辑
  • 监听用户滚动行为并记住位置防止页面加载重置到顶部
  • 支持键盘滚动操作的记忆功能
  • 集成 Lenis 滚动库的兼容性处理
  • 在 main.ts 中初始化滚动保护功能

fix(search): 解决移动端搜索输入框字体大小问题

  • 在移动设备上为搜索输入框设置 16px 字体大小
  • 避免 iOS Safari 缩放导致的布局问题

feat(scroll): 实现程序化滚动行为控制功能

  • 添加了 HydroProgrammaticScrollPlan 和相关类型定义
  • 创建了滚动计划生成器 createHydroProgrammaticScrollPlan 函数
  • 集成了移动设备回顶滚动优化逻辑
  • 实现了滚动同步延迟调度机制
  • 添加了移动端粗指针设备查询判断
  • 更新了 scrollToPosition 函数支持滚动配置文件
  • 增加了滚动完成后的同步处理函数

refactor(scroll): 简化滚动行为配置并移除不必要的属性

  • 移除 prefersReducedMotion 和 viewportHeight 属性
  • 删除移动端返回顶部的动画持续时间计算逻辑
  • 移除自定义缓动函数和距离计算相关代码
  • 简化滚动计划创建逻辑,统一使用立即执行模式
  • 将移动设备返回顶部行为改为直接跳转而非平滑滚动

style(post): 优化文章页面样式和功能实现

  • 添加表格头部渐变背景和边框样式
  • 重构列表样式,实现自定义复选框和编号列表效果
  • 优化链接悬停效果和可访问性支持
  • 添加媒体元素宽度控制属性支持
  • 改进图片和视频对齐方式及布局
  • 优化多列布局组件样式和响应式设计
  • 增强表格滚动容器视觉效果
  • 改进详情展开组件交互体验
  • 添加画廊组件支持
  • 重命名内容增强函数以提高代码清晰度
  • 优化作者信息显示逻辑,处理名称为空的情况

Full Changelog: 1.0.0-beta6...1.0.0-beta7


Generated from 1.0.0-beta7

发布于查看详情

当前版本完成 QSL 通联网格地图插件的首个可测试版本发布:
新增公开地图页面,展示 qsl-management 提供的 QSO 通联网格数据。
支持天地图瓦片服务,应用 key 可在后台插件设置中配置。
支持默认中心网格、默认缩放级别、最小/最大缩放级别后台配置。
默认中心点为 OM89,刷新和数据加载后不再被全量网格自动框选覆盖。
新增 [qsl-grid-map] 短码,可在文章或页面中嵌入地图。
新增 Halo 默认编辑器 / 菜单小组件,插入后显示预览卡片。
仅提供公开只读页面接口,不新增写入接口和角色模板。

发布于查看详情
  • 公开网格清单 API 取消返回数量上限,历史 limit 参数保留兼容但不再限制结果。
  • 新增 detailLevel 详情级别参数,支持 full 完整模式和 brief 简略模式;简略模式只返回网格与呼号清单,不返回通联明细。
  • 同步公开 API 合同、产品定义和结构化清单文档,版本号递增至 2.3.22。

Generated from v2.3.22

发布于查看详情

新增桌面端外侧背景功能,可在「外观」中上传背景图并选择显示强度。
桌面背景支持低分辨率图片自适应处理,避免小图拉伸后过度模糊突兀。
优化桌面背景下的深色模式、文章页、底部栏和右下角按钮显示效果。
新增右下角「深浅色切换」和「返回顶部」按钮开关,可在后台分别控制是否显示。
优化文章页在桌面背景下的外侧区域显示,减少灰色背景残留。
优化前台开发者调试日志,减少背景相关日志刷屏。
细化点赞 / 评论区域的分隔线和交互细节,使信息流观感更统一。

发布于查看详情
  • 收卡业务三个子菜单的基本清单保留已结束收卡记录可见,便于继续查看闭环后的收卡状态。
  • 已结束收卡记录不再显示继续收卡和结束收卡入口,避免重复追加收卡。
  • 保持通联业务送达确认等待处理清单原有过滤逻辑不变。
  • 同步结构化文档与产品定义,版本号递增至 2.3.21。

Generated from v2.3.21

发布于查看详情

Moesora 1.0.3

二次元少女风格的 Halo 2.x 博客主题。本次为功能更新与问题修复。

✨ 新增

  • 个人信息卡支持在「侧边栏」设置中自定义头像(留空则沿用站点 Logo)。

🐛 修复

  • 修复「离开 / 返回时标签页文字」清空后仍显示默认文案的问题:现在留空即表示不修改标签页标题(显示页面原标题),填写则使用自定义文字。

✅ 适配

Halo 2.14.0 及以上版本。


完整说明见仓库 README。


Generated from v1.0.3

发布于查看详情

新增点赞/评论按钮卡片弹出的动画效果
调整外链卡片尺寸
修复点赞数量显示异常bug
修复主题版权显示逻辑

发布于查看详情

Full Changelog: 1.4.0...v1.4.1

feat: 新增可配置的AI自动生成句子定时任务

  • 新增aiCron配置项支持自定义Cron表达式

  • 将固定凌晨2点的AI生成任务改为动态可配置

  • 监听配置变更自动重新加载定时任务

  • 提供常用预设时间选项方便快速选择


Generated from v1.4.1

发布于查看详情

版本

  • 主题版本更新至 2.1.0

新特性(新增星图库)

星图库页面

  • 新增“星图库”页面模板,可在 Halo 后台创建页面时选择使用。
  • 星图库支持插件状态探测,插件未安装、未启用或暂无数据时展示提示状态。
  • 星图库支持展示本星系头像、名称、描述、访问入口与星图遥测信息。
  • 星图库支持展示本星系关联星系数量。
  • 星图库支持展示星系代号、星球代号、联邦签名、星图遥测等信息。
  • 星系联盟支持星系头像、名称、描述、影响力、可信度、星球数量展示。
  • 星系联盟支持卡片点击打开星系详情弹窗。
  • 星系联盟支持三种展示模式:
    • 泡泡模式
    • 一体川流模式
    • 极简模式
  • 泡泡模式支持星系头像气泡展示。
  • 泡泡模式支持鼠标悬停展示星系信息卡片。
  • 一体川流模式支持星系卡片横向流动展示。
  • 一体川流模式支持鼠标悬停暂停流动。
  • 极简模式支持星系卡片网格展示。
  • 星图库展示模式可在主题后台配置切换。
  • 星系详情弹窗支持展示星系头像、名称、描述、访问星系按钮。
  • 星系详情弹窗支持展示影响力、可信度、星球数量。
  • 星系详情弹窗支持展示加入时间与活跃时间。
  • 星系详情弹窗新增“星系成员”区域。
  • 星系成员展示当前星系下的星球成员。
  • 新增“星际资讯”模块。
  • 星际资讯支持展示文章类动态。
  • 星际资讯支持展示星系连接、同步、邀请等动态。
  • 星际资讯支持展示动态头像、标题、描述、时间、来源星球。
  • 星际资讯文章类动态支持“打开原文”按钮。
  • 星际资讯非文章类动态支持“定位星球”按钮。

首页导航标志

  • 修复首页菜单图标配置缺失的问题。顶部导航图标配置新增首页菜单标志配置,基本设置->导航图标配置->首页图标,默认fa-solid fa-house。

项目集页面

  • 项目集页面新增项目分类配置,支持按自定义分类分组展示,项目展示
    ->GitHub 项目列表。

朋友们页面

  • 朋友们页面重构为三种展示模式,友链页面->友链设置:
    • 泡泡模式
    • 一体川流模式
    • 极简画栏模式
  • 优化友链筛选逻辑,不同分类下保持交互状态一致。
  • 画廊模式按分类分组展示,分类标题展示对应数量。
  • 非画廊模式的筛选项样式与分类标题保持一致。

导航

  • 修复顶部导航默认图标匹配问题。
  • 新增星图库页面默认图标识别。
  • 调整星图库默认导航图标为 fa-solid fa-location-arrow
  • 修复首页菜单图标配置缺失的问题。

项目集页面

  • 新增项目分类配置。
  • 支持 GitHub 项目和自定义项目分别设置分类。
  • 前台按分类分组展示项目卡片。
  • 保留“我的项目”和“收藏项目”的原有行为。
  • 修复 PJAX 进入项目集页面时项目数据需要刷新当前页才加载的问题。

其他…

发布于查看详情

本版本带来两项核心改进——Steam 数据缓存定时预热架构游戏元数据补全,并对公开 REST API 的响应结构做了规范化调整。

⚠️ REST API 破坏性变更

自本版本起,公开 REST API(/profile/games/recent/badges)的响应字段统一从 Steam 原始的 snake_case 改为 camelCase,并裁剪了内部字段、补充了格式化字段(如 headerImageUrldelistedplaytimeFormatted 等)。已通过 REST API 调用这些接口的主题或自定义前端需要同步更新 ,Finder API 不受影响。

完整字段定义请参考 README - REST API使用指南 - API 接口,或 Halo 后台的 OpenAPI(Swagger)文档。

✨ 新功能

  • 缓存定时预热:新增活跃信息(资料 / 最近游玩)与库藏信息(游戏库 / 徽章)两条独立预热通道,可分别配置刷新间隔;前端页面只读缓存,预热失败时用上一次数据兜底,避免页面空白
  • 游戏元数据补全:通过 IStoreBrowseService/GetItems 为库外游戏或 Steam API 暂未返回名称的游戏补全本地化名称、真实封面与商店链接(新发布游戏的封面带内容哈希,已无法靠 AppID 拼接)
  • 富文本游戏卡片支持 「不可用」标识:已下架 / 区域限制 / App ID 无效的游戏不再误显示为「加载失败」,判定口径与游戏库同源
  • 新增配置项:活跃 / 库藏信息刷新间隔游戏显示语言游戏图片 CDN 域名重写

⚡ 优化

  • 改进 appdetails 接口 success:false 的处理:先用 GetItems 的 visible=false 二次确认是否真的不可见,避免接口限流时把正常游戏误判为下架
  • 不可用游戏的判定结果纳入详情缓存,命中缓存期间不再重复请求 Steam API
  • headerImageUrl 行为调整:无真实封面时改为返回 null(旧版返回 appId 拼接路径,对新游戏本就是 404)。

📚 文档

  • 更新 Steam API 技术参考:补充 appdetailssuccess 字段语义、修正 header_image 示例地址,完善 GetItems 行为说明
  • 更新使用指南与 README:补充缓存预热行为、新增配置项、富文本卡片「不可用」处理、REST API 字段调整
发布于查看详情

AstraHub 插件 2.6.0 更新说明

主题接入方式

AstraHub 星图库采用 REST API + WebSocket 的方式对外提供数据。

插件状态探测

主题页面建议先请求状态接口,用于判断 AstraHub 插件是否已启用、星图库数据是否可用。

const statusRes = await fetch('/apis/anonymous.astrahub.halo.run/v1alpha1/star-gallery/-/status', {
  method: 'GET',
  credentials: 'same-origin',
  headers: {
    Accept: 'application/json',
  },
});

if (!statusRes.ok) {
  // 插件未安装、未启用,或接口不可用
}

const status = await statusRes.json();

if (!status.available) {
  // 插件已启用,但星图库数据尚不可用
}

返回示例:

{
  "available": true,
  "generatedAt": "2026-06-28T00:00:00Z",
  "relationCount": 64
}

获取星图库快照

状态可用后,请求完整快照接口。

const snapshotRes = await fetch('/apis/anonymous.astrahub.halo.run/v1alpha1/star-gallery/-/snapshot', {
  method: 'GET',
  credentials: 'same-origin',
  headers: {
    Accept: 'application/json',
  },
});

const snapshot = await snapshotRes.json();

快照主要字段:

  • snapshot.profile // 本站 / 本星系信息
  • snapshot.sectors // 星系联盟卡片
  • snapshot.posts // 星际资讯

星系成员分页

每个星系卡片会提供 planetsUrl,主题可以直接请求该地址获取星系成员。

const planetsRes = await fetch(`${sector.planetsUrl}?page=1&pageSize=24`, {
  method: 'GET',
  credentials: 'same-origin',
  headers: {
    Accept: 'application/json',
  },
});

const planets = await planetsRes.json();

返回示例:

{
  "items": [],
  "page": 1,
  "pageSize": 24,
  "total": 98,
  "hasMore": true
}

实时更新

主题可选接入 WebSocket。当 AstraHub 同步到新数据时,前台可以自动刷新星图库。

const protocol = location.protocol === 'https:' ? 'wss:' : 'ws:';

const ws = new WebSocket(
  `${protocol}//${location.host}/apis/anonymous.astrahub.halo.run/v1alpha1/astrahub/ws/star-gallery`
);

ws.addEventListener('message', (event) => {
  const snapshot = JSON.parse(event.data);
  // 使用新的 snapshot 重新渲染页面
});

星际资讯按钮建议

posts 中推荐按以下字段处理:

  • post.url // 文章类资讯的原文地址
  • post.siteUrl // 星球 / 站点地址
  • post.type // 资讯类型

推荐逻辑:

const isArticle = ['rss', 'article', 'post'].includes(
  String(post.type || '').toLowerCase()
);

if (isArticle && post.url) {
  // 显示:打开原文
  // 跳转:post.url
}

if (!isArticle && post.siteUrl) {
  // 显示:定位星球
  // 跳转:post.siteUrl
}

插件未启用提示

如果状态接口请求失败,主题可提示:

需要安装或启动 AstraHub 星链插件
请在 Halo 后台启用 AstraHub 星链插件,并同步星图库数据。

发布于查看详情

v0.4.6

  • 新增开发者选项中的音乐调试开关,用于播放调试场景
  • 修复 iOS 设备后台播放音乐会被自动暂停的问题
  • 优化音乐播放在多端环境下的稳定性

社区支持

QQ 交流群:1040502725

发布于查看详情

主题设置新增【菜单栏】设置选项
顶部导航栏支持新增自定义按钮
预加载页面载入页逻辑优化
修复了部分已知 bug

发布于查看详情

feat(theme): 添加产品管理和项目集功能支持

  • 新增 portfolio.html 和 portfolio-detail.html 模板文件
  • 新增 product.html 模板文件实现产品商城功能
  • 添加产品管理相关样式类和过滤器样式
  • 集成 PluginProduct 插件支持授权产品、实物商品和卡密商品
  • 实现项目集插件的列表、筛选和详情页功能
  • 添加产品详情页和购物车相关功能
  • 更新文档说明产品管理插件使用方式
  • 优化路由配置避免路径冲突问题

Full Changelog: 1.0.0-beta5...1.0.0-beta6


Generated from 1.0.0-beta6

发布于查看详情
条 / 页