FIT2CLOUD

发布时间:2026-05-25

新增

  • 新增 Steam 桌面中卡片小组件 plugin-steam.summary
  • Steam 小组件支持在线、离线、正在游玩三种状态展示。
  • 正在游玩时使用当前游戏封面作为背景装饰;非游玩状态使用 Steam 风格背景。

优化

  • 适配并复验近期插件版本:
    • plugin-friends1.4.6
    • PluginLinks2.0.0
    • PluginPhotos2.1.1
    • plugin-shiki1.3.1
  • PluginLinks 2.0.0 的友链申请助手调整为两种形态:
    • 访客默认手动填写友链申请表。
    • 管理员登录态可使用 Console detail API 自动补全。
  • 友链申请表不再默认填入 https://www.5ee.net/
  • 静态构建产物已同步到 templates/assets/**,Halo 可直接加载新版运行时代码。

修复

  • 修复未登录访客仍能看到“生成 / 自动补全”入口的问题。
  • 移除旧版匿名 PluginLinks/link-detail 提取链路,避免跨权限调用。
  • 修复友链申请字段被预览区域布局影响,导致默认表单体验不稳定的问题。

支持

  • 支持 PluginLinks 2.0.0 的 api.link.halo.run / console.api.link.halo.run 命名空间。
  • 支持访客手动提交友链申请;提交失败时切换为留言板草稿。
  • 支持管理员在输入站点 URL 后主动触发自动补全。
  • 支持 PluginPhotos 2.1.1 的列表页和详情页惰性模型变量。
  • 支持 plugin-friends 1.4.6 在 Links 2.0.0 依赖下继续使用 SSR feed 和 linkName 筛选。
  • 支持 plugin-shiki 1.3.1 的末尾空代码行修正;主题继续避免重复接管高亮。

不支持 / 暂不支持

  • 不支持访客或普通用户使用友链自动补全;该功能仅面向管理员。
  • 不支持匿名前端调用 Links Console detail API。
  • 不支持旧版 PluginLinks/link-detail 匿名提取接口。
  • 不支持自动判断所有自定义管理员角色;当前识别 super-roleadminadministrator
  • 暂未实测普通登录但非管理员账号;该路径按角色判断隐藏自动补全入口。
  • PluginPhotos 公共 REST、tag、ungrouped 和详情预取仍属于后续增强,不在本版本接入。
  • Docsme / Moments 中 Shiki 真实代码块样本仍待补充,不阻塞当前 plugin-shiki 1.3.1 兼容标记。

Git 变更总结

  • a54a1fc feat: add Steam desktop summary widget
  • 9bbc3e3 docs: 更新插件适配契约版本
  • 7d874f6 feat(links): 收紧友链申请自动补全权限
  • f9f19f5 build: 同步主题静态构建产物

验证

  • pnpm run build-only
  • pnpm run typecheck
  • pnpm run lint
  • pnpm run verify:reload
  • SMOKE_BASE_URL=${HALO_BASE_URL:-http://localhost:8090} pnpm run smoke:playwright
  • 浏览器验证:
    • 管理员态:友链自动补全入口显示,URL 默认为空。
    • 匿名态:不显示生成/自动补全,默认显示手动申请表。

Generated from v0.9.36

发布于查看详情

更新日志

v1.0.8

新增

  • 媒体类卡片(图片 / 音频 / 视频 / 文件)新增 /view/{sid} 分享落地页:

    • 微信 / QQ 二次分享打开此页
  • 访问统计新增「分享落地」类型(VIEW):

    • 与推广页访问区分

修复

  • 修复非链接类卡片依赖 ?hint=0 隐藏提示、在 QQ 内易丢失 query 参数导致被分享者仍看到引导文案的问题

  • 兼容旧分享链接:

    • /share/{sid}?hint=0
    • 自动 302 跳转至 /view/{sid}

优化

  • 移除 JS「分享后自动隐藏提示」逻辑:
    • 分享 URL 改为独立 path
    • 行为更加稳定

发布于查看详情

主要更新

  • 新增:支持配置首页快捷导航显示控制;
  • 新增:第三方插件链接管理、投票管理显示控制;

插件链接

应用链接

文档链接

发布于查看详情

🚀 首页博主简介描述处适配 hitokoto-hub 轻言插件的随机一句话:

  • 接入 hitokoto-hub 公共接口:/apis/public.api.hitokotohub.puresky.top/v1alpha1/sentence/random?limit=1&encode=json
  • 同时覆盖全屏打字机简介与普通简介两种展示模式
  • 插件未安装、接口异常或返回为空时,自动回退到原有 description
发布于查看详情
  • 未登录用户访问页面时自动跳转到 /login
  • 已登录用户正常访问。
  • 可在插件设置中开启账号白名单,仅允许指定账号访问。
  • 自动放行登录页、登录接口、静态资源和控制台资源,避免重定向循环。
  • 控制台“工具”二级菜单提供插件入口。
发布于查看详情

版本 2.2.0

主要变更

  • 新增 AI 配置能力,支持 OpenAI 兼容接口配置、Secret 方式保存 API Key。
  • 新增线上换卡导入 AI 解析,可用于单条导入和批量导入,并保留本地解析回退。
  • 新增地址管理中的 AI 地址整理能力,支持勾选地址后预览并应用规范化结果。
  • AI 提示词改为完整模板,可在系统配置中查看、编辑,并按项重置为内置默认值。
  • 导入导出同步纳入 AI 配置与提示词字段。
  • 补充对应 RBAC、接口合同、结构化文档与测试覆盖。

数据与配置提示

  • AI API Key 不会写入 SystemSetting 明文字段,只写入 Halo Secret。
  • 本版本新增/调整 SystemSetting AI 配置字段:aiSystemPrompt、aiOnlineImportPrompt、aiAddressCleanupPrompt 等。
  • 自定义提示词必须保持系统指定 JSON 返回结构:线上换卡导入顶层字段为 rows,地址整理顶层字段为 items。

验证

  • 已通过 .\gradlew.bat test。
  • 已完成插件 reloadPlugin 热重载验证。

Generated from v2.2.0

发布于查看详情

v0.9.35

发布时间:2026-05-22

新增

  • 新增豆瓣收藏桌面小组件 plugin-douban.showcase,仅提供 large 大卡片形态。
  • 小组件支持真实 plugin-douban API 数据、类型/状态配置、自动轮播和悬停预览。
  • 豆瓣小组件主卡片支持 PJAX 打开豆瓣归档页。

优化

  • 豆瓣小组件新增 memory + sessionStorage 缓存,页面往返时优先复用本轮会话数据。
  • 桌面小组件增强调度合并,减少 PJAX 切换后的重复增强调用。
  • 已 hydrated 的豆瓣小组件在配置不变时保留运行时 DOM,避免返回首页后被重置为初始模板。

修复

  • 修复返回首页后豆瓣小组件底部缩略图轨道为空的问题。
  • 修复桌面图标在初次渲染后偶发未接入 PJAX、点击变成整页跳转的问题。
  • 修复豆瓣小组件悬停、点击、拖拽和 PJAX 往返时可能重复触发切换或请求的问题。

验证

  • pnpm run check
  • pnpm run verify:reload
  • SMOKE_BASE_URL=${HALO_BASE_URL:-http://localhost:8090} pnpm run smoke:playwright
  • 桌面图标 PJAX 专项验证:点击 AI 图标未产生 /categories/ai document 请求,返回首页后豆瓣缩略图保持 6 个,未出现 incomplete DOM 重挂载。

Generated from v0.9.35

发布于查看详情

版本说明

本版本完成 Console 表格组件化收口,并将插件版本升级为 2.1.0。

主要变化

  • 新增统一表格组件 QslDataTable,收口普通列表、排序、空态、分页和行操作展示。
  • 新增统一详情表组件 QslDetailTable,收口历史记录展开详情布局。
  • 统一历史/批量编辑表格能力,降低各业务页面重复实现。
  • 统一二次确认按钮组件,便于后续复用删除、重发、异常标记等高风险操作确认流程。
  • 调整多个业务页面的表格渲染方式,保持原有业务字段和操作语义不变。

验证

  • 已通过 ./gradlew.bat test
  • 已通过 ./gradlew.bat reloadPlugin,本地 Halo 插件热重载成功。
  • 已使用 Chrome 对主要表格页面完成只读与可写走查;测试环境中完成新增、编辑、删除和清理测试数据;未执行邮件发送。

发布说明

Release 附件由 GitHub Actions CD 自动构建并上传,本 Release 不手动上传 JAR 附件。


Generated from v2.1.0

发布于查看详情

新特性

功能优化

  • 迁移至 Halo 2.22 索引和查询 API by @ruibaby in #118
  • 懒加载 /links 页面变量并添加分组过滤支持 by @ruibaby in f5a99b7

问题修复

  • 修复 roleTemplate 中 RBAC 子资源 URL 配置错误 by @ruibaby in 304ab4e
  • 修复匿名角色 RBAC 子资源名称配置 by @ruibaby in 13fcdd8
  • 为链接详情获取添加 SSRF 防护,无效 URL 返回 400 by @ruibaby in ee87768

Full Changelog: v1.7.2...v2.0.0


Generated from v2.0.0

发布于查看详情

v0.9.34 更新说明

本次新增 豆瓣 App(/douban),用于在主题内以 macOS App 窗口形式展示个人书影音记录。

新增功能

  • 新增 /douban 独立页面与窗口壳层
  • 接入 plugin-douban 公开 API
  • 支持电影、图书、音乐、游戏、舞台剧等类型切换
  • 支持想看 / 在看 / 看过状态筛选
  • 支持题材筛选、关键词搜索
  • 支持网格视图与列表视图切换
  • 支持 Quick Look 预览详情、评分、短评和豆瓣外链

移动端优化

  • 移动端进入全屏 App 模式
  • 隐藏外层 Header 和 Dock
  • 优化筛选刷新体验,避免出现突兀的大块骨架屏

后台配置

  • 新增豆瓣页面配置项:标题、说明、图标、配色模式
  • 配色支持默认豆瓣绿或跟随主题色

其他调整

  • 同步插件适配文档与 README 进度说明
  • 版本号更新至 0.9.34
  • 重新生成前端构建产物

验证

  • pnpm run build-only
  • pnpm run lint
  • pnpm run typecheck
  • pnpm run verify:reload
  • SMOKE_BASE_URL=${HALO_BASE_URL:-http://localhost:8090} pnpm run smoke:playwright

以上验证均已通过。


Generated from v0.9.34

发布于查看详情

v0.9.33 发布说明

本次版本重点完善桌面小组件体系,新增追番小组件,并对追番小组件的亮色模式、评分、进度条和 macOS 风格视觉进行了集中优化。

新增

  • 新增追番小组件 plugin-bangumis.recent
    • 支持 2x2 / 2x4 / 4x4 三种尺寸
    • 支持追番 / 追剧类型展示
    • 支持在看 / 想看 / 已看状态展示
  • 新增 Docsme 快捷小组件
  • 新增 Friends 小组件
  • 新增小组件配置 schema 与验证脚本
  • 新增追番插件 plugin-bilibili-bangumi 1.4.0 适配契约记录

优化

  • 重做追番 4x4 小组件视觉
    • 优化主封面比例和信息层级
    • 降低右侧列表视觉噪音
    • 优化暗色和亮色模式显示
    • 移除外层白色描边
  • 优化追番小组件进度条
    • 在看状态显示追看中进度
    • 想看状态显示待开播 0%
    • 已看状态显示完成态
  • 优化追番评分显示
    • 统一读取 spec.score
    • 过滤 0 / 0.0 / 0分 等无效评分
    • 修复星级显示异常
  • 优化追番页亮色模式
    • 降低侧栏 active 状态粉色饱和度
    • 改善亮色下的文字和标签可读性
  • 优化 Friends、Moments、Photos、Weather 等桌面小组件样式
  • 优化 Docsme 小组件 macOS 质感和交互细节
  • 优化桌面小组件中心、编辑态和持久化配置体验

修复

  • 修复追番小组件 全部 / 在看 / 想看 无法切换的问题
  • 修复追番小组件亮色显示异常
  • 修复追番页评分字段显示异常
  • 修复部分小组件中心反馈体验
  • 修复 Moments 通知请求兼容性问题
  • 修复 Steam 插件适配细节
  • 修复 Links 提交入口 fallback
  • 修复 Shiki 在 PJAX 场景下的重放边界
  • 修复 CI 中 pnpm 版本重复配置问题

验证

已通过以下验证:

  • pnpm run build-only
  • pnpm run verify:reload
  • SMOKE_BASE_URL=${HALO_BASE_URL:-http://localhost:8090} pnpm run smoke:playwright
  • 小组件配置 schema 验证
  • 追番小组件渲染契约验证

版本信息

  • 当前版本:v0.9.33
  • 对比范围:v0.9.30..v0.9.33
  • 最新提交:641b450 发布 v0.9.33

Generated from v0.9.33

发布于查看详情

更新内容

  • 数据 / 卡片异动 / 卡片重发:移除清单中的操作列,仅保留记录展示。
  • 通用历史表组件新增操作列显示开关,默认保持既有页面行为不变。

验证

  • pnpm --dir ui type-check
  • .\gradlew.bat test
  • .\gradlew.bat reloadPlugin

兼容性

  • 本版本不变更数据模型、不变更公开 API、不新增权限节点。

Generated from v2.0.17

发布于查看详情

更新内容

  • 收口卡片状态机:有收卡记录关联的正式卡片统一进入“已收卡片”状态。
  • 导入完成后按卡片状态字段与 ReceiveRecord.spec.outboundCardNames 重建 flowStatus
  • 导出时按收卡关联派生 cardReceivedreceivedAtflowStatus,避免导出包继续携带不一致状态。
  • 公开查询、审计卡片查询、统计口径统一到新的已收状态规则。
  • 同步更新结构化文档与插件版本到 2.0.14

验证

  • pnpm --dir ui type-check
  • ./gradlew.bat test
  • git diff --check
  • ./gradlew.bat reloadPlugin

Generated from v2.0.14

发布于查看详情

更新日志

v1.0.7

新增

  • 支持 手机 QQ 自定义分享卡片:落地页注入 mqq.invoke('data','setShareInfo') 与 Open Graph 式 meta 标签(无需额外 AppId)
  • 公开链接支持 path 形式/wechat-share/share/{sid}/wechat-share/go/{sid}(兼容原有 ?sid= 写法)
  • 数据看板访问环境增加 手机 QQ 统计维度

修复

  • 修复 QQ 打开分享链时 丢失 sid 参数(仅剩 qq_aio_chat_type)导致白屏或无效页的问题
  • 修复 链接卡片 在 QQ 内分享后点开仍停留在扫码落地页、未跳转外链的问题(QQ 分享链改为 /go/{sid}
  • 修复图片 / 音频 / 视频 / 文件卡片在右上角分享后,「分享后将自动隐藏」提示仍不消失 的问题(分享面板返回后自动隐藏,并写入 session;对外链附带 ?hint=0
  • 微信 JSSDK 签名 URL 对齐外部访问地址;分享图补全绝对地址
  • 公开路由 Filter 异常时回退到 Halo 默认链路,避免空响应

优化

  • 控制台二维码与推广链接统一为 path 形式,更适配 QQ 内置浏览器
  • QQ setShareInfo 的标题 / 摘要 / 分享 URL 按官方限制做 UTF-8 字节截断
  • 插件展示名称与描述更新为支持微信、QQ 双端分享
发布于查看详情

变更内容

  • 创建卡片时为 CardRecord.spec.cardReceived 增加默认值 false。
  • 在线打印工具在 cardReceived 为空或缺失时默认按未收卡处理,勾选“请回卡片/回复卡片/欢迎回卡”。
  • cardReceived 为 true 时保持勾选“感谢来卡/感谢您的卡片/感谢您的来卡”。
  • 补打眼球卡片默认设置为发出卡片并勾选请回卡片。
  • 同步更新 CardPrint 说明与 docs/spec 结构化文档。

验证

  • python -m pytest tools/CardPrint/tests/test_online_bridge_service.py:18 passed
  • pnpm --dir ui type-check:通过
  • .\gradlew.bat test:BUILD SUCCESSFUL
  • .\gradlew.bat reloadPlugin:插件已就绪

Generated from v2.0.9

发布于查看详情

功能优化

  • 对齐 Halo 默认 Lucene 搜索实现,完善 Meilisearch 搜索过滤、索引设置校验和异常恢复。by @ruibaby in #9
  • 优化 Meilisearch 数据概览接口,复用当前搜索引擎客户端并避免阻塞 WebFlux 事件线程。by @ruibaby in #9

问题修复

  • 修复 Halo 文档 ID 包含点号时无法写入 Meilisearch,导致重建索引后搜索无数据的问题。by @ruibaby in #9
  • 修复 Meilisearch 异步任务失败但被误认为成功的问题,索引删除、创建、设置更新和文档写入都会校验最终任务状态。by @ruibaby in #9

Full Changelog: v1.1.0...v1.2.0


Generated from v1.2.0

发布于查看详情

兼容性提醒

这是 2.0.x 兼容过渡版本。本版本保留旧版本字段定义,但普通业务、前端展示、统计、导入导出已不再使用旧收卡编号字段。

计划在 2.1.x 版本移除的旧字段/旧列:

  • CardRecord.spec.receivedRecordCodes:旧版卡片记录内的收卡编号集合字段。
  • card-record.csv 中的 receivedRecordCodes 列:2.0.7 起已不再导入/导出,旧数据迁移应以 ReceiveRecord.metadata.nameReceiveRecord.spec.outboundCardNames 为准。

本次调整

  • 收卡编号主数据统一为 ReceiveRecord.metadata.name
  • 发出卡片与收到卡片的关联统一为 ReceiveRecord.spec.outboundCardNames
  • 修改收卡日期时同步更新关联的 ReceiveRecord,不再重写旧字段。
  • 前端卡片查询中的收卡编号改为从 ReceiveRecord 反向聚合显示。

验证

  • 已执行 ./gradlew.bat test,测试通过。
  • 已执行 ./gradlew.bat reloadPlugin,构建、测试、打包通过;热重载阶段因本机 http://localhost:8090 未监听而连接失败。

Generated from v2.0.7

发布于查看详情

重要说明

本版本仍属于 QSL 2.x 数据模型版本,数据格式与 1.x 旧版本不兼容。升级前请先完整备份旧版本导出数据和 Halo 数据目录。

更新内容

  • 新增旧版本一键迁移能力,可在新版本安装后将旧模型中的收卡关联、线下换卡关联聚合到新数据模型。
  • 新增迁移预检与执行接口,并补充导入导出页面入口。
  • 迁移过程会清理旧版误写入卡片记录的本台卡片占位数据,以及旧版自动收卡临时卡片。
  • 补充迁移服务测试、接口鉴权测试、RBAC 权限与文档说明。

已验证

  • 已在本地 Halo 2.23.2 Docker 环境中完成 1.1.3 导入旧数据、升级 2.0.6、执行迁移的流程验证。
  • 已执行 ./gradlew.bat test 并通过。

Generated from v2.0.6

发布于查看详情

重要:破坏性更新

本版本为 QSL 2.0 数据模型重构版本,数据格式与 1.x 旧版本不兼容。升级前必须先备份旧版本导出数据;升级后需要使用转换脚本将旧导出包转换为 2.0 数据格式,再重新导入。不要直接把旧版本导出包导入到 2.0 环境。

升级前必须执行

  1. 在旧版本中完整导出并保存备份包。
  2. 建议另存一份原始备份,避免转换失败后无法回退。
  3. 使用仓库中的 tools/convert_legacy_export_to_qsl2.py 将旧导出包转换为 2.0 数据包。
  4. 在全新或已清理的数据环境中导入转换后的数据包。
  5. 导入后核对总览、统计报表、收卡记录、线下换卡记录和线上签收状态。

主要变化

  • 发卡记录、收卡事实、线下换卡活动卡拆分为独立模型,减少多业务场景共用同一字段导致的耦合。
  • 新增 ReceiveRecord,收卡编号以收卡记录为准,不再通过重复创建卡片来表达收卡事实。
  • 新增 OfflineExchangeCard,线下换卡卡片与地址管理解耦。
  • 线上换卡“送达确认”调整为“签收确认”,用于记录对方是否签收我方发出的卡片。
  • 统计报表口径重构:只统计正式 C{序号} 且呼号非空的卡片,并修正已发、待发、已收统计口径。
  • 审计查询按业务场景分 tab 展示,卡片记录和收卡记录分别查询。
  • 在线打印工具新增补打眼球卡片能力,并优化部分拉取队列状态提示。
  • 导入导出格式新增 receive-recordoffline-exchange-card 数据集。

验证

  • ./gradlew.bat test 通过。
  • python -m pytest tools/CardPrint/tests tools/test_convert_legacy_export_to_qsl2.py 通过,55 项测试通过。

兼容性说明

这是破坏性版本。旧版数据需要提前备份并转换后重新导入;旧版导出格式、旧版收卡字段聚合方式和旧版线下换卡记录组织方式不再作为 2.0 的直接导入格式。


Generated from v2.0.4

发布于查看详情

后台美化插件 v2.1.6

本版本主要修复后台插件页面、网关页面和设置页中的若干显示问题,提升不同主题下的视觉一致性。

更新内容

  • 修复图库页面在暗色主题下顶部分类工具栏出现白色背景的问题。
  • 修复部分第三方插件页面顶部工具栏背景色与当前主题不一致的问题。
  • 修复登录、注册等网关页面在部分情况下没有加载美化样式的问题。
  • 增加对主题自定义登录页、注册页结构的兼容支持。
  • 优化“启用网关页面美化”设置项说明。
  • 修复插件设置页下拉框点击后出现蓝色外框的问题。
  • 优化 FormKit 下拉选择框的聚焦样式,使其与当前后台主题更一致。
发布于查看详情

更新内容

  • 新增外部日历订阅管理,支持添加 Google Calendar 等工具导出的公开 iCal 地址,并可启用、停用、编辑、删除和手动刷新订阅缓存。
  • 前台公开页面、后台周历和编辑器日程卡片支持展示外部日历事项。
  • 新增公开 iCal 订阅地址 /schedule-calendar.ics,用于导出本地事项,并明确不包含外部日历订阅数据。
  • 本地事项支持启用和停用状态,备份恢复会保留并同步该状态。
  • 插件设置与备份恢复流程优化,支持统计本地事项和外部日历订阅的新增、更新、删除数量。
  • 优化公开链接生成,前台页面和 iCal 订阅链接使用 Halo 外部访问地址。
  • 优化外部日历订阅缓存加载与手动刷新,减少每次访问时的远端订阅请求开销。
  • 清理临时诊断接口、无效样式和过期内部配置,补齐公开 API 权限声明。

Generate from v3.0.0

发布于查看详情

What's Changed

新功能

  • 支持全屏布局
  • 新增代码块文本颜色变量
  • 新增 link 样式变量

样式

  • 优化移动端导航栏样式 in #10
  • 增大默认行高
  • 移除子菜单的下划线

SEO

  • 修复主页文章标题与站点标题重复使用 h1 的问题

Full Changelog: 2.2.1...2.3.0


Generated from 2.3.0

发布于查看详情

详情请参阅更新日志在 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.

发布于查看详情

新特性

  • 重构 Console UI/UX,全面优化管理界面体验 by @ruibaby in #120
  • 添加公开 API,支持通过 API 查询链接和分组 by @chengzhongxue in #119

功能优化

  • 迁移至 Halo 2.22 索引和查询 API by @ruibaby in #118
  • 懒加载 /links 页面变量并添加分组过滤支持 by @ruibaby in f5a99b7

问题修复

  • 修复 roleTemplate 中 RBAC 子资源 URL 配置错误 by @ruibaby in 304ab4e
  • 修复匿名角色 RBAC 子资源名称配置 by @ruibaby in 13fcdd8
  • 为链接详情获取添加 SSRF 防护,无效 URL 返回 400 by @ruibaby in ee87768

Full Changelog: v1.7.2...v2.0.0-beta.1


Generated from v2.0.0-beta.1

发布于查看详情

更新内容

  • 新增“导入BH6SYX卡片广场数据”菜单,支持上传 .xls/.xlsx 表格并自动识别表头行。
  • 导入时按“状态”仅保留“对方已寄出,待我签收”和“待双方寄出”的记录,直接创建线上换卡场景卡片记录。
  • 导入清单支持批量设置默认卡片版本,也支持逐行选择卡片版本;导入结果围绕本站卡片编号展示。
  • “交换ID”和“对方备注”不写入数据;“对方备注”仅在导入清单预览显示,后续流程统一围绕卡片记录编号处理。
  • 同步补充后端 API、RBAC 权限模板、结构化项目文档与导入校验测试。
  • 修复 GitHub Actions 中 Gradle Wrapper 执行权限,确保 release 后 CD 可自动构建插件包。
  • 插件版本递增到 1.1.3。

安装包

  • plugin-qsl-management-1.1.3.jar(由 GitHub Actions 在本 release 发布后自动构建并上传)

Generate from v1.1.3

发布于查看详情

🎉 简介

很高兴宣布 plugin-bark v1.0.0 正式发布!这是一个专为 Halo 博客系统设计的通知推送插件,能够通过 Bark 应用将博客的重要事件实时推送到您的 iOS 设备。

✨ 核心功能

📬 实时通知推送

  • 新评论提醒:当博客收到新评论时,立即推送通知到 iOS 设备
  • 用户注册提醒:当有新用户注册时,及时通知管理员

🔗 深度链接支持

  • 评论通知可直接跳转到对应的文章/页面

⚙️ 灵活配置

  • 可选择接收的通知类型(新评论/新用户注册)
  • 支持自定义 Bark 服务器地址(可自建以保护隐私)

Generate from v1.0.0

发布于查看详情

feat(widget): 添加会员签到小部件功能

  • 实现了浮动和内联两种显示模式的签到小部件
  • 添加了可拖拽定位的浮动窗口支持
  • 集成了签到状态查询和签到操作API
  • 实现了用户认证和权限检查功能
  • 添加了积分和余额奖励显示
  • 更新了依赖版本号到最新发布版
  • 修复了角色模板中的重复路径配置问题
发布于查看详情

更新内容

  • 新增 Photos 插件详情页适配:/photos/{name}。
  • 图库详情页采用 macOS Photos 风格窗口,支持邻近照片序列、滚轮缩放、拖拽平移、详情浮层和评论抽屉。
  • 优化 Photos PJAX 切换、桌面 Dock 可见性、标题栏控件统一性和移动端密度。
  • 完善 SEO/PJAX head 同步与官方 SEO 字段兼容。
  • 同步主题版本与构建资产到 0.9.30。

验证

  • pnpm run build-only
  • pnpm run verify:reload
  • SMOKE_BASE_URL=${HALO_BASE_URL:-http://localhost:8090} pnpm run smoke:playwright

Generated from v0.9.30

发布于查看详情

v2.2.19

发布时间:2026-05-13

本版本包含 v2.2.18 之后的所有提交,重点是插件适配闭环、Docsme 免费版支持、Photos/PJAX 修复、Douban 页面接入和验证脚本增强。

插件适配

  • 修复 PJAX 后 lightgallery 插件脚本重放问题,避免图片灯箱在页面切换后失效。
  • 适配 Photos 详情页 PJAX 访问与返回流程,补齐详情页布局和相邻图片探索体验。
  • 支持 Docsme 免费版 1.5.0,同时保留专业版 1.6.0 兼容说明。
  • 改进 Docsme 目录页脚本链路和 0 篇文档项目禁用态,避免无内容项目生成不可用入口。
  • 改进 Links 提交兼容性;当 link-submit 接口不可用时,友链申请弹窗切换到评论留言兜底。
  • 补充 Moments POST 媒体渲染契约,避免只支持 PHOTO/VIDEO/AUDIO
  • 新增 Douban 豆瓣记录页面适配,支持海报网格、类型筛选、题材筛选、分页、加载态、空态和错误态。
  • Douban 页面按 plugin-douban v1.2.5 公开 API 渲染,避免触发插件路由懒加载变量在空筛选参数下的 NPE。
  • 修复 Douban 题材接口返回字符串数组时筛选按钮文本为空的问题。
  • 补充 Douban 图片加载失败占位;真实封面代理仍通过 plugin-doubanisProxy / proxyHost 配置处理。

验证与文档

  • 更新 Photos、Docsme、Search Widget、Alist、Douban 等插件适配说明。
  • 记录当前浏览器验收结果,包括 Docsme、Search Widget、Shiki、Comment Widget、lightgallery、暗色切换和移动端基础布局。
  • 明确 Alist 存储当前标记为不可用,不作为 Moments 前端发布上传后端。
  • 明确 Search Widget 本地旧索引 404 属于搜索插件索引数据问题,不属于主题模板缺口。
  • 增强插件深度验证,覆盖 Docsme 目录脚本链路和 Douban 真实题材接口。
  • 更新插件适配方案,记录 Douban、Alist、Search Widget、Docsme、Moments 等当前兼容边界。

提交范围

  • 4152a1a fix: replay lightgallery plugin scripts after pjax
  • 588d69c feat: adapt photos detail for pjax
  • 7aadf44 docs: update photos and docsme guidance
  • 71c496b fix: adapt docsme free version support
  • 9ea5edf fix: improve docsme and link submit compatibility
  • 0d6a724 chore: document plugin verification gaps
  • e33cd17 docs: record plugin browser verification
  • 9a5d90b docs: mark alist storage unsupported
  • 6aa231c docs: record search widget verification
  • 0152911 feat: adapt douban page
  • f39adf9 test: strengthen plugin verification
  • ae82d30 chore: release v2.2.19
  • 3a2625c docs: expand v2.2.19 release notes
  • 8e680cb docs: remove release note file

验证

  • pnpm lint
  • pnpm build-only
  • pnpm verify:plugins
  • pnpm verify:plugins:deep

Generated from v2.2.19

发布于查看详情

📋 更新日志 (Changelog)

🆕 版本 2.2.1 (2026-05-13)

Tools工具箱插件-同步至微信公众号1.png
Tools工具箱插件-同步至微信公众号2.png
Tools工具箱插件-同步至微信公众号3.png

✨ 新增功能

微信公众号文章同步增强

功能 说明
📝 同步预览 同步前可预览渲染效果,确认内容无误
🔍 同步检查 自动检查内容完整性和格式规范
📊 同步记录 完整记录每次同步的状态和详情
⚠️ 错误处理 完善的错误提示和异常处理机制

内容渲染优化

功能 说明
🖼️ 图片处理 自动处理封面图和正文图片的上传与压缩
🎨 文章主题 支持自定义文章主题样式
✏️ Markdown 编辑器 内置 Markdown 编辑器,支持实时编辑
👤 预览用户 支持指定预览用户查看效果

用户体验优化

功能 说明
🔧 封面预检查 上传封面图前自动检查尺寸和格式
📱 草稿创建 支持在微信公众号创建草稿
📤 文章发布 支持将草稿发布为正式文章

📦 历史版本

🚀 版本 2.2.0 (2026-05-09)

📱 微信公众号同步

💡 一键将 Halo 博客内容同步到微信公众号,告别重复排版的烦恼

功能 说明
📝 文章同步 支持将博客文章直接同步到微信公众号草稿箱
👀 实时预览 同步前可预览文章在微信中的显示效果
🖼️ 封面选择 新增可视化封面图选择器,支持从媒体库挑选封面
✏️ 参数配置 可自定义标题、作者、摘要、封面、原文链接等信息
📊 同步记录 完整的同步历史记录查询和管理
⚠️ 封面预检 自动检测封面尺寸和格式,避免同步失败

使用场景: 写完博客后,无需手动复制粘贴到微信后台,直接在 Halo 中完成同步操作。


🖼️ 图片代理与随机图

💡 解决图片防盗链问题,提供丰富的随机图片源

功能 说明
🔄 图片代理 代理公网图片资源,绕过防盗链限制
🎲 随机图片 支持多种随机图片类型,丰富内容展示
🔍 类型检测 自动识别图片内容类型
🛡️ 安全防护 防止内网地址访问,保障安全
⏱️ 超时保护 请求超时和响应大小限制
🔁 重试机制 智能重试,提升稳定性

应用场景: 文章配图、头像占位、随机封面等。


💬 评论系统增强

🔔 微信通知功能

💡 评论有新动态?微信实时提醒你!

功能 说明
📲 模板消息 支持微信公众号模板消息通知
📬 订阅消息 支持微信订阅消息推送
👤 用户绑定 评论用户与微信账号绑定
🚫 自评过滤 智能检测自己评论,避免无效通知
⚙️ 灵活配置 可自定义模板 ID 和字段映射

工作流程:

用户评论 → 管理员审批 → 微信通知博主 → 及时互动

🪟 弹窗系统

📢 智能弹窗管理

💡 灵活的弹窗配置,提升用户互动体验

功能 说明
🎨 多样式模板 内置 5 种弹窗样式(默认、Cookie、铃铛、模态框、卡片)
🎯 智能匹配 支持通配符和路径参数匹配规则
💉 动态注入 自动注入脚本和样式
⚙️ 丰富配置 完整的弹窗配置选项

内置模板样式:

样式 适用场景
🔵 默认样式 通用通知
🍪 Cookie 样式 Cookie 同意提示
🔔 铃铛样式 消息提醒
📋 模态框样式 重要公告
🃏 卡片样式 活动推广

👥 会员中心

🎫 会员体系支持

💡 打造专属会员中心,提升用户粘性

功能 说明
🔐 登录状态识别 智能识别用户登录状态
⬆️ 升级引导 已登录用户显示升级会员入口
🏠 会员中心 完整的会员中心页面支持

🔧 系统优化

📦 依赖更新

项目 更新内容
🎨 Halo UI 升级到 2.24.0 版本
🧹 代码清理 移除无效文件,优化项目结构

📚 文档完善

文档 说明
📖 使用文档 添加插件使用指南
🔌 开发文档 添加开发对接文档

🎯 快速上手指南

微信公众号同步(v2.2.1 增强版)

  1. 进入文章编辑页面
  2. 点击「同步到微信」按钮
  3. 配置同步参数(标题、封面等)
  4. 同步前检查: 系统自动检查内容完整性和格式规范
  5. 预览渲染效果: 确认文章在微信中的显示效果
  6. 确认同步 → 系统记录同步状态

Markdown 编辑器使用

  1. 在文章编辑页面切换到 Markdown 模式
  2. 实时编辑 Markdown 内容
  3. 系统自动渲染为微信兼容格式
  4. 支持图片、代码块、表格等丰富格式

随机图片使用

![随机图片](/apis/image/random)

弹窗配置

  1. 进入插件设置页面
  2. 选择弹窗样式模板
  3. 配置显示规则和内容
  4. 保存并预览效果
发布于查看详情

中文

新增

  • 首页文章标题支持显示 置顶 标识。
  • 右侧 文章榜标签榜 标题补充 icon。
  • 首页分页模式支持更轻量的局部翻页体验,减少整页刷新带来的闪动。

优化

  • 首页文章列表调整为更符合论坛场景的展示逻辑:置顶文章优先展示,非置顶文章优先按最后回复时间排序。
  • 右侧 最新文章 保持按发布时间排序,不受回复排序影响。
  • 首页 分页模式无限瀑布流模式 的实现拆分,避免两套逻辑互相干扰。
  • 修复首页无限瀑布流在部分情况下只显示首屏文章、不继续加载的问题。
  • 修复首页分页、刷新、点击 Logo 返回首页时的首屏样式闪动问题。
  • 优化置顶标识与标题文字之间的间距,整体观感更紧凑。
  • 首页、分类页、标签页的文章卡片样式与交互细节进一步统一。

修复

  • 修复置顶文章在首页瀑布流/分页场景下可能失效的问题。
  • 修复测试回复后帖子不能正确提升到前列的问题。
  • 修复分页模式下翻页瞬间右侧侧边栏消失、主列放大、链接样式短暂异常的问题。
  • 修复 文章榜标签榜 icon 显示不稳定的问题。

English

Added

  • Added a Pinned badge before pinned post titles on the homepage.
  • Added icons to the Post Rank and Tag Rank sidebar section headers.
  • Added a lighter partial page transition for homepage pagination to reduce full-page flicker.

Improved

  • Refined homepage post ordering for a more forum-like experience: pinned posts are shown first, and non-pinned posts are prioritized by latest reply activity.
  • Kept the Latest Posts sidebar section sorted by publish time only.
  • Split homepage paged mode and infinite waterfall mode into separate implementations to avoid logic conflicts.
  • Fixed cases where infinite waterfall stopped after the first screen and failed to continue loading.
  • Reduced first-load, refresh, and homepage-return visual flicker on the homepage.
  • Tightened the spacing between the pinned badge and post title text.
  • Further unified post card behavior and styling across home, category, and tag views.

Fixed

  • Fixed pinned posts not being respected correctly in some homepage paged and waterfall scenarios.
  • Fixed replied posts not moving forward correctly after new comments in testing.
  • Fixed pagination flicker where the sidebar briefly disappeared, the main column stretched, and link styles temporarily fell back to browser defaults.
  • Fixed unstable icon display for Post Rank and Tag Rank.

Generated from v0.0.2

发布于查看详情

✨ 改进 / 优化

  • 响应式设计 - 为所有 UI 页面添加响应式布局适配
  • 分页组件替换 - 使用 VPagination 组件替换自定义分页逻辑(@AR-26710 in #14)

🐛 问题修复

  • 修复上传大文件时导致 OutOfMemoryError 的问题,通过前置 Content-Length检查防止大文件读入内存 (#17)
  • 修复 VPagination 集成问题并完善分页组件替换

❤️ 贡献者

感谢 @AR-26710 对本项目的贡献!

📋 完整更新日志


Generated from v0.3.3

发布于查看详情

更新内容

  • 修复构建依赖配置,将 Halo 平台依赖从失效的快照版本切换到正式版本,恢复持续集成环境下的依赖解析。
  • 修复 Gradle 9.4 与 pnpm 安装任务的兼容问题,避免前端依赖目录状态跟踪导致构建失败。

Generate from v2.8.0

发布于查看详情

当前版本对配置文件进行了优化处理,更新主题后请点击 主题 - 重载主题配置,使最新的主题配置生效。

新增特性

问题修复

功能优化

New Contributors

Full Changelog: https://github.com/LIlGG/halo-theme-sakura/compare/v2.4.3...v2.5.0

发布于查看详情

v2.2.18 更新说明

修复

  • 修复 PJAX 切换页面后 lightgallery.js 灯箱插件未重新初始化的问题。
  • 支持从任意页面进入引用 lightgallery 插件的页面后自动恢复灯箱绑定。
  • 修复 PJAX 下在线统计组件重复请求导致 429 Too Many Requests 的问题。

优化

  • 统一通过 PJAX 页面生命周期触发灯箱恢复逻辑。
  • 自动解析 lightgallery 插件注入脚本中的图片区域选择器,减少对固定页面的硬编码。
  • 更新静态构建产物版本引用到 2.2.18。

Generated from v2.2.18

发布于查看详情

v2.2.17 更新说明

感谢 @xiaocaiye5201314 提交 PR:#28,带来了默认主题跟随系统与 Windows 构建路径兼容相关改进。

新增

  • 默认主题支持“跟随系统”选项。
  • 主题切换支持浅色、深色、跟随系统三态循环。

修复

  • 修复 Windows 环境下路径分隔符导致部分页面 JS 构建异常的问题。
  • 修复跟随系统主题在部分浏览器中的监听兼容性问题。
  • 优化 PJAX 切页后主题状态保持逻辑。

优化

  • 优化导航栏主题按钮、移动端菜单、搜索入口和用户菜单的可访问性细节。
  • 保留并刷新 Halo 标准静态构建产物,确保主题资源完整输出。

Generated from v2.2.17

发布于查看详情

更新日志

新增

  • 分享二维码生成本地化:集成 ZXing,创建/更新卡片后生成 PNG,写入 spec.shareQrcodeBase64 / spec.shareQrcodeMimeType 并持久化;控制台列表与「查看二维码」通过管理端接口读取 Data URL不再依赖第三方二维码 HTTP 接口。
  • 链接类型落地页:优化样式

优化

  • 索引与回填ExtensionSchemeRegistryspec.cardKind / spec.visitedAt 等注册索引;启动时 WechatShareVisitCardKindBackfill 对历史无 cardKind 的访问记录按 SID 回填,保证筛选与展示一致。
  • 设置保存 UXPUT /settings 成功后 setTimeout + location.reload,使 Console 子应用与 experimentalIpLookupEnabled 等开关立即反映到 useVisitIpLookup 与列表请求。
  • 落地页工程化WechatSharePageRenderer 抽离 SharePageCopy / SharePageConstants / SharePageSvgSnippets;固定文案与微信脚本提示统一 HtmlEscapes / ObjectMapper 输出;StringBuilder 预设容量
  • 控制台:插件设置 移除「二维码上游接口」(扩展旧字段仅兼容,服务端不再读取)。

修复

  • 筛选一致性:历史访问 spec.cardKind 为空时,列表展示曾与索引/查询不一致导致非 link 类型筛选异常;回填 + 查询归一化后与 WechatShareCardKind.normalize 对齐。
  • 文件类型落地页fp-hint 补全 </p>,消除无效 HTML。
  • 二维码配置WechatShareSettingsService.normalizeSpec 不再写入默认第三方 qrcodeApiBase;移除 QrUpstreamGuard 及仅服务 HTTP 上游的遗留逻辑。
  • 微信 JSSDK 签名 URL 对齐外部访问地址;分享图补全绝对地址

发布于查看详情

更新日志

新增

  • 分享二维码生成本地化:集成 ZXing,创建/更新卡片后生成 PNG,写入 spec.shareQrcodeBase64 / spec.shareQrcodeMimeType 并持久化;控制台列表与「查看二维码」通过管理端接口读取 Data URL不再依赖第三方二维码 HTTP 接口。
  • 链接类型落地页:优化样式

优化

  • 索引与回填ExtensionSchemeRegistryspec.cardKind / spec.visitedAt 等注册索引;启动时 WechatShareVisitCardKindBackfill 对历史无 cardKind 的访问记录按 SID 回填,保证筛选与展示一致。
  • 设置保存 UXPUT /settings 成功后 setTimeout + location.reload,使 Console 子应用与 experimentalIpLookupEnabled 等开关立即反映到 useVisitIpLookup 与列表请求。
  • 落地页工程化WechatSharePageRenderer 抽离 SharePageCopy / SharePageConstants / SharePageSvgSnippets;固定文案与微信脚本提示统一 HtmlEscapes / ObjectMapper 输出;StringBuilder 预设容量
  • 控制台:插件设置 移除「二维码上游接口」(扩展旧字段仅兼容,服务端不再读取)。

修复

  • 筛选一致性:历史访问 spec.cardKind 为空时,列表展示曾与索引/查询不一致导致非 link 类型筛选异常;回填 + 查询归一化后与 WechatShareCardKind.normalize 对齐。
  • 文件类型落地页fp-hint 补全 </p>,消除无效 HTML。
  • 二维码配置WechatShareSettingsService.normalizeSpec 不再写入默认第三方 qrcodeApiBase;移除 QrUpstreamGuard 及仅服务 HTTP 上游的遗留逻辑。

发布于查看详情

新增

  • 添加 types 接口
    /apis/api.douban.moony.la/v1alpha1/doubanmovies/-/types
[
  {
    "doubanCount": 8,
    "key": "movie",
    "name": "电影"
  }
]
发布于查看详情

新增

  • 提供公共 API

分组 /apis/api.equipment.kunkunyu.com/v1alpha1/equipmentgroups

列表 /apis/api.equipment.kunkunyu.com/v1alpha1/equipments

发布于查看详情

新特性

  • 适配图库插件 2.0 版本,支持瀑布流布局和详情页面

功能优化

  • 头像中的登录状态按钮改为异步判断,防止页面缓存之后导致状态不正确
  • 适配链接、图库、瞬间的标题名称设置
发布于查看详情

新增

  • 数据看板:控制台新增「数据看板」页签,支持访问概览、近七日趋势、访问量排行与访问明细。
  • 实验性功能IP 归属查询:默认关闭可在插件设置中开启;查询结果写入访问记录扩展并持久化,访问明细列表与详情展示「IP / 归属」格式。

优化

  • 索引与回填ExtensionSchemeRegistryspec.cardKind / spec.visitedAt 等注册索引;启动时 WechatShareVisitCardKindBackfill 对历史无 cardKind 记录按 SID 回填空值,保证筛选与展示一致。
  • 设置保存 UXPUT /settings 成功后 setTimeout + location.reload,保证 Console 子应用与 experimentalIpLookupEnabled 等开关立即反映到 useVisitIpLookup 与列表请求。

修复

  • 筛选一致性:历史访问 spec.cardKind 为空时,列表展示曾从卡片反推类型,但索引/查询与持久化不一致导致「非 link 无数据」;回填 + 查询归一化后行为与 WechatShareCardKind.normalize 对齐。
发布于查看详情

详情请参阅更新日志在 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.

发布于查看详情

详情请参阅更新日志在 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.

发布于查看详情

详情请参阅更新日志在 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.

发布于查看详情

新特性

功能优化

  • 优化管理页面布局 by @ruibaby in #76
  • 使用 Halo 2.22 提供的新索引 API,提升性能和稳定性 by @ruibaby in #75

文档

新版本主题开发文档和 REST API 文档可查阅:https://github.com/halo-sigs/plugin-photos/tree/main/dev

Full Changelog: v1.6.1...v2.0.0


Generate from v2.0.0

发布于查看详情

详情请参阅更新日志在 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.

发布于查看详情

版本更新说明

优化

  • 前台链接类型页面样式优化;
  • 控制台插件配置样式优化。

修复

  • 控制台插件配置报错无法保存信息问题;
  • 控制台插件的卡片列表switch无法使用问题;
  • 控制台插件内新增卡片后在无刷新页面情况下无法继续新增卡片选择附件问题;
  • 前台无报错场景下出现警告卡片问题。
发布于查看详情

版本更新说明 🎉

功能特性

  • 多类型分享卡片:除「链接卡片」外,新增 图片 / 音频 / 视频 / 文件 卡片类型;各类型独立落地页版式(封面、介绍、媒体区、相关说明等),数据仍按 SID 存 Halo 扩展资源
  • 控制台编辑体验:新建/编辑时可选卡片类型;表单字段按类型联动;侧栏 实时预览 与访客落地页结构、样式对齐(含图片卡 in-* 相关说明等)
  • 分享策略:链接类分享仍指向 /go?sid= 直达跳转;图片/音频/视频/文件等二次分享仍回流 /share?sid=(与前台 hint 逻辑一致)
  • 分享卡片管理:列表、复制分享链接、二维码预览;插件配置(公众号 AppId / AppSecret、换票与 wx.config 签名、公开路径前缀、二维码上游接口等)延续并适配多类型

站点前台

  • 分享页…/share?sid=…):按卡片类型输出对应页面;微信内 JSSDK 注入,更新 朋友圈 / 会话 分享数据
  • 跳转页…/go?sid=…):302 跳转至卡片配置的落地 URL(http/https

改进与可靠性

  • 二维码拉取安全:对上游 URL 做主机与网络侧约束,不跟随 HTTP 重定向,降低误配被滥用风险
  • 微信换票可观测与熔断:换票失败结构化日志(不含密钥);连续失败短时熔断;解析微信 errcode 便于排查
  • HTML 文本转义:访客提示与落地页统一封装,降低 XSS 风险

环境要求

  • Halo ≥ 2.23.0
发布于查看详情

Navidrome Player for Halo v6.0.0

版本大更新,更新了如下功能:

新增“歌曲列表模式”:可选 滚动列表 或 翻页列表。
新增“列表显示歌曲数”:可在 Halo 后台配置,范围目前是 3-12。
压缩了歌曲行高和间距,让同样高度下能显示更多歌曲。
新增“播放信息布局”:可选歌名/歌手 分行 或 合并一行。合并模式下会把歌名和歌手放到同一行,节省上方播放区高度。
窄屏时会自动压缩图标大小、间距,必要时分成多行,避免按钮被挤没。
在侧边空间不足时,支持把展开面板放到播放器上方。
增加/完善“公网服务地址”和“容器/内网服务地址”的双模式。只填内网地址时,音频和封面走 Halo 代理转发。
支持 navidrome:4533 这类地址自动补成 http://navidrome:4533。
新增通过键盘方向键控制播放进度功能。按下 ← (左方向键) 或 → (右方向键) 可将播放进度后退或前进 5 秒。如果同时按住 Shift 键,调整幅度将扩大至 15 秒。


Generated from v6.0.0

发布于查看详情

✨ 新功能

群聊 @提及功能

在群聊和频道中新增完整的 @提及功能,支持 @指定成员和 @全体成员。

@某人

  • 在群聊/频道输入框中输入 @ 即可弹出成员选择器
  • 支持按用户名、昵称、群昵称模糊搜索
  • 支持键盘上下键选择、回车确认、Esc 关闭
  • @用户名 作为整体 Token 显示(蓝色背景),退格键整体删除
  • 被 @的用户在消息中看到高亮显示

@全体成员

  • 群主和管理员可在成员选择器中选择"全体成员"
  • 管理员每日 @全体成员 次数有配额限制(默认 10 次/天,可在插件设置中调整)
  • 群主无次数限制
  • 支持群组级别禁止 @全体成员(NO_AT_ALL 限制)

消息通知

  • 被 @提及时,消息气泡有蓝色边框高亮
  • 会话列表显示 [有人@我][@全体成员] 标签
  • 进入聊天时自动滚动到最近一条 @自己的消息
  • 免打扰模式下,被 @提及的消息仍然正常推送

后台配置

  • 新增「@提及功能配置」设置组
  • 可配置管理员每日 @全体成员 次数限制
  • 可配置 @全体成员 触发关键词(默认"全体成员")
  • 配额每日零点(UTC+8)自动重置

🔧 优化

  • 优化群组消息分发流程,@提及通知异步发送,不阻塞消息分发
  • 免打扰模式下消息仍通过 WebSocket 推送(保持实时性),前端控制通知显示
  • 新增 Mention API 端点,自动生成 TypeScript API 客户端

🐛 修复

  • 修复 MentionNotificationServiceImplChatWebSocketService 的循环依赖问题
  • 修复 MentionEndpoint.enrichMemberVO 中 Reactor map 返回 null 导致的 NPE
  • 修复 MentionInput 占位符与输入内容重叠的问题
  • 修复消息中 non-breaking space 导致的消息去重匹配失败(发送后显示两条)
发布于查看详情

首个版本发布 🎉

功能特性

  • 分享卡片管理(新增、编辑、删除;标题 / 摘要 / 封面 / 跳转链接,独立 SID 与扩展存储)
  • 控制台列表(复制分享链接、二维码预览)
  • 插件配置(公众号 AppId / AppSecretwx.config 所需换票与签名、公开路径前缀二维码生成服务 等)
  • 站点前台 分享页…/share?sid=…,微信内 JSSDK 注入,更新朋友圈 / 会话分享数据)
  • 站点前台 跳转页…/go?sid=…302 跳转到卡片配置的落地 URL)
  • 要求 Halo ≥ 2.23.0

Generate from v1.0.0

发布于查看详情

Full Changelog: v1.1.3...v1.1.4

feat: 概览页表格支持复制 metadataName

  • 分类详情表格新增 metadataName 列,文本可选中复制
  • 复制之后直接粘贴到插件设置页即可设置默认返回的句子

Generated from v1.1.4

发布于查看详情

新特性

功能优化

  • 优化管理页面布局 by @ruibaby in #76
  • 使用 Halo 2.22 提供的新索引 API,提升性能和稳定性 by @ruibaby in #75

Full Changelog: v1.6.1...v2.0.0-beta.1


Generated from v2.0.0-beta.1

发布于查看详情

Changed:

  • 阅读进度上报主通道从 HTTP POST 改为 WebSocket 消息,默认上报间隔改为 1 秒
  • 接口限流配置支持小数秒,最低可设置为 0.1 秒
  • 阅读进度计算改为优先基于文章正文容器,找不到正文时回退到整页滚动百分比
  • 阅读进度身份模型重构为服务端分配 token、全量广播列表,客户端本地按 token 排除自己
  • 将 WebSocket 下行消息机制改为每会话一个持续发送队列
  • 自定义阅读进度脚本改回定时 GET 拉取,并同步更新了 README 说明

Fixed:

  • 修复阅读进度同步中将自己的阅读进度错误渲染为其他读者的问题
  • 修复 WebSocket 成为主通道后,GET 轮询阅读进度无法排除自己的问题
  • 修复阅读进度已写入内存但 WebSocket 客户端收不到 progress 广播的问题
  • 修复高频并发下 WebSocket 消息投递可能失败或丢失的问题,并增加前端原始消息调试事件
发布于查看详情

Halorum v0.0.1

初始发布版本。

主要内容

  • 完成 Typecho_Theme_JJ 视觉风格到 Halo 主题的移植与重构。
  • 使用 Astro 构建 Halo 模板产物。
  • 支持论坛式首页、分页 / 无限加载、右侧信息栏和主题设置。
  • 适配文章页、评论区、用户中心入口和通知入口。
  • 优化打包脚本,排除本地开发目录,生成可直接上传到 Halo 后台的主题包。

安装

下载本 Release 中的 Halorum.zip,在 Halo 后台主题管理中上传并启用。


Generate from v0.0.1

发布于查看详情

Full Changelog: v1.1.1...v1.1.2

feat: 支持多分类默认配置和点赞缓存自动清理

  • 默认分类改为多行文本输入,支持多个分类 ID 作为默认筛选条件
  • 随机接口和 Finder 均支持多分类 in 查询
  • 新增点赞缓存定时清理任务,每 6 小时自动清除过期记录
  • 点赞冷却时间从设置中动态读取,不再硬编码

Generated from v1.1.2

发布于查看详情

详情请参阅更新日志在 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.

发布于查看详情

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

howiehz-higan-zh-hans.zip 为简体中文默认安装包,仅包含 .br
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-full-precompressed.zip is the English full precompressed package with .gz / .br / .zst.

发布于查看详情

v1.0.3 — 标题写得像自家馆子,备份写得像成年人抽屉

这一版主打三件事,用人话讲就是:

👉 前台终于知道自己在叫什么
👉 后台能打包带走全家档口数据(导出 / 覆盖导入,ZIP 里还带说明书那种)
👉 控制台界面顺手捋了捋


新增 / 强化

前台:标题三件套

后台 插件设置 → 基础设置 里,可以给前台配上:

  • 站点标题(浏览器标签 document.title 那一套)
  • 顶栏主标题
  • 顶栏副标题

👉 全家馆子顶栏不再默认「谜之占位符」,改成你家招牌也行、改成「今晚吃火锅」也行(只要你家掌柜同意)。

配置走 DishesSettings,前台模板与控制台表单对齐;细节实现详见仓库内对应改动。

后台数据备份(导出 / 覆盖导入)

控制台 插件设置 → 数据备份

  • 导出:ZIP,内含 manifest.json;可选是否带上点餐记录。
  • 导入覆盖式——会先清空当前 订单 + 菜品 + 分类,再按备份重建。
    👉 不是「增量合并」,是「整抽屉倒空再摆回去」,点导入前请默念三遍备份。

备份里的菜品图:只备份 image_url(路径或完整地址),不把图片文件塞进 ZIP
迁站或换域名时,记得附件还在、外链还能打开,否则导入成功也可能「看得见菜名、看不见菜脸」。


🛠 调整与修复(挑重点说)

备份这条链路,是真的跟 WebFlux 打过一架

Halo 2 这条线是响应式的,导入上传按 FilePart 等方式处理,避免 multipart 绑定翻车;业务异常也会尽量回到 ok: false 的 JSON,而不是糊你一屏 500。

清空数据时的「玄学索引滞后」

覆盖导入前要清空扩展数据;若列表索引还没反应过来,可能出现「菜删光了、分类还在那儿发呆」这类剧情。
这一版在清空逻辑里加了 等待索引跟上 + 必要时重建扩展索引 等处理,尽量做到 第一次点就靠谱,而不是「第一次失败、第二次换报错、第三次突然成功」的三幕剧。

(若你曾在导入时见过类似连续剧,恭喜你 —— 你现在看到的是导演剪辑修复版。)

控制台插件 UI(Vue)

  • 例如:菜品列表缩略图统一尺寸、裁切更顺眼。

⚠️ 备份提醒(很重要)

👉 覆盖式导入会删除现有订单、菜品、分类,执行前请确认你真的不需要当前数据,或已经另外导出备份。
👉 ZIP 不含图片文件,只有路径;跨环境恢复请自备图片可达性(站内附件或外链)。
👉 若导入仍异常,优先带 响应 JSON / Halo 日志片段 开 issue,比截图玄学好排查得多。


致谢

感谢「为什么导入要三次才成功」「清空一半算清空吗」这类灵魂拷问 —— 它们直接变成了这一版的清空与索引逻辑。

继续欢迎吐槽;若有问题,尽量附上 Network 响应体 + 相关日志,治愈概率会指数上升。


Full Changelog: v1.0.2...v1.0.3

(具体文件级差异以 Git 对比为准,此处为面向人类的 Release 叙事版。)

发布于查看详情

Changed:

  • 阅读进度同步由轮询改为 WebSocket 实时推送,延迟降低至 <50ms
  • WebSocket 广播消息格式升级为 JSON,统一在线人数与进度推送协议
  • 加强客户端 IP 提取逻辑,防止伪造 X-Forwarded-For 绕过限流
  • 前端移除进度拉取的 setInterval,改为事件驱动

Fixed:

  • 修复 WebSocket 注册时的 TOCTOU 竞态条件(session 会话与 URI 绑定)
  • 修复 IP 伪造漏洞,限流器不再无条件信任代理头
  • 修复阅读进度内存无界增长风险
  • 修复 WebSocket 会话关闭后 sessionUriMap 未清理的内存泄漏

Added:

  • 新增阅读进度 WebSocket 广播机制,同页面其他用户实时看到进度标记
  • 新增服务端方法 broadcastReadingProgressupdateReadingProgressAndBroadcast
  • 新增前端 WebSocket JSON 消息处理器 installWsMessageHandler
  • 新增 WebSocket 消息类型 progresscount 的结构化定义
发布于查看详情
条 / 页