FIT2CLOUD

Halo2Bark v1.1.0 更新说明

本次更新让通知更聪明:设备故障有回音、点击直达对应的管理页、评论爆发不再刷屏。

新增

  • 设备健康有回音:某台设备连续投递失败会收到失败告警;故障恢复后,恢复通知会在手机上原地替换失败告警——每台设备的健康状态在手机上始终只占一条,不用去后台查。多设备站点里,失败告警由其他正常设备代为转达。
  • 评论爆发温度计:评论爆发刚起时收到一条「🔥 评论爆发中」,爆发结束的合并摘要会原地替换这条过程通知——无论讨论多热烈,整个过程在手机上只占两条。

改进

  • 点击直达对应的管理页:「评论待审核」点进去是 Console 的待审核列表,「文章已删除 / 取消发布」点进去是回收站——每个事件都落到你最可能要去的地方,被删文章不再跳死链。

说明

  • 需要 Halo 2.26.0 及以上,升级后无需重新配置。
  • 以上能力依赖较新的 Bark 服务端(v2.2.5+,官方服务即为新版);旧版服务端会自动退化为普通通知,不影响使用。
发布于查看详情

2.0.0 正式版说明 · 收官版本

装包后请强刷浏览器(Ctrl+Shift+R),并完整重启一次 Halo 服务(仅替换 jar 不重启,Halo 会继续用内存里的旧代码)。

这是最后一个功能版本。此后本插件不再新增功能,只维持可用。所以这一版的重点不是"还能做什么",而是让它在你不管它的情况下也不容易坏、坏了你能自己看出来。

一、插件内自检:提醒不弹时,先点这里

设置里新增「提醒自检」卡片,点一下会沿着提醒链路逐项检查,并用人话告诉你结论:

检查项 它会告诉你
提醒接口 能不能取到提醒数据、当前有几条进入提醒期
服务端版本 后端实际在跑的版本(排查"换了包没生效")
插件版本 插件版本与服务端版本是否一致 —— 不一致几乎就是换了 jar 没重启
弹窗脚本 当前页面有没有注入弹窗脚本、脚本序号是多少

任何一项异常都会直接给出下一步该做什么(强刷浏览器 / 重启 Halo / 检查开关)。这一项是为"以后没人给你排查"准备的:以前这类问题只能靠翻日志和猜,现在用户自己点一下就有答案。

二、使用说明搬进了插件里

从应用市场安装的用户看不到仓库里的 README,所以把用法直接放进设置页,做成可折叠的「使用说明与常见问题」:

  • 三步就能用起来(先记日子 → 想管车再加座驾 → 要公开才开前台开关)
  • 提醒会在哪三个地方出现
  • 弹窗为什么"刷新又出来了"、怎么才能不烦我
  • 默认值是给谁看的(哪些内容默认不对访客展示)
  • 到期了没办会怎么样(逾期 → 待处理 → 一直保留,可撤销)
  • 提醒没出现怎么办(三步排查)
  • 数据在哪、怎么搬走

三、条目多了也能一眼看出最近要办什么

「记得」页的重要日期列表此前只能按人员筛选,排序还是拖拽顺序 —— 条目一多,根本看不出"最近有什么"。

  • 新增临近程度筛选:全部 / 今天 / 7 天内 / 30 天内 / 30 天以后,每档都带条目数;
  • 新增「还有」列:直接显示「明天」「5 天后」「已过 3 天」,临近的用颜色标出来。

四、修掉一个会打乱顺序的问题

拖拽排序此前把筛选后可见的那几条的顺序整份写回,于是被筛掉的条目顺序被抹平,会在列表里悄悄跳位。现在只移动可见项,其余条目保持原有相对位置。加了临近程度筛选之后这个问题的破坏力会成倍放大,所以一并修掉。

五、弹窗的无障碍与小改进

  • 支持 Esc 关闭:按键盘的习惯动作只收起当前弹窗,不写任何静音记录(不该因为按了下 Esc 就"以后都不提醒")。
  • 关闭按钮从 <span> 换成真正的 <button>:可以 Tab 聚焦、回车触发,读屏软件能正确朗读「关闭提醒」。
  • 弹窗语义从 role="alert" 改为 role="status" + aria-live="polite":这是提醒不是报错,不该打断用户正在听的内容。

六、描述收敛成一句话

插件描述从 200 多字的长句改成一句话:

把容易忘的事记下来:纪念日与生日、家人朋友、爱车的保险年检保养到期,到点提醒你,愿意公开的还能展示在博客前台。

七、关于后续维护

  • 升级方式:请在「插件」页面上传新 jar 升级。不要手工替换 plugins 目录里的文件 —— Halo 在数据库里记录插件的加载路径,换了文件名它就不再加载(表现为接口 404、后台菜单消失)。
  • 数据安全:纪念日、人员、座驾都存在 Halo 自己的数据里,卸载插件不会替你删除;「记得」页右上角的导出可以把全部内容存成 JSON 留底。
  • 遇到问题先点「提醒自检」,它能覆盖绝大多数"提醒不出现"的情况。
发布于查看详情

screenshot-v1.1.0

深绿玻璃拟态 Halo 主题的首次功能升级:首页从「Hero + 纵向文章流」升级为完整的信息层次体验。

功能特性

  • Hero 数据徽章行:文章 / 分类 / 标签真实统计数字,琥珀色 #E8B96E 斜体衬线点缀,访问量可选配置
  • 精选专题区:自动取最近 3 篇带封面文章生成玻璃特色卡
  • 文章列表混合布局:置顶文章通栏大卡(左封面右内容)+ 双列网格,可在主题设置切回经典纵向列表
  • 首页作者卡片:圆头像徽章 + 简介 + GitHub/Email 联系胶囊
  • 导航搜索入口:配置搜索页链接后显示(可选)
  • 新增主题设置分组:精选专题 / 文章列表 / 作者卡片 / Hero 徽章,全部带默认值兜底,老站点升级免配置

修复

  • 修复首页数据徽章 categoryFinder.getAll() 调用不存在的 API 导致的 500(改为 list(1, 1).total)

安装方式

  1. 下载本 Release 附件中的 theme-luye.zip
  2. Halo 后台 → 外观 → 主题 → 升级主题(或安装主题)
  3. 在「主题设置」中查看新增的配置分组

兼容性

  • Halo >= 2.26.0
  • 已在 Halo 2.26.0 本地实例完成真机验证(首页 / 文章 / 归档 / 分类 / 标签 / 静态资源全路径 200)
发布于查看详情

记得(plugin-important-dates)

build
plugin

一个 Halo 2.x 插件:记录纪念日、生日与家人朋友,也管好你的座驾(汽车 / 电瓶车 / 自行车)——保险、年检、保养到期自动提醒;支持阳历/农历、多图相册、前台「生活 / 爱车」双视图、隐私脱敏,零系统配置写入、零主题文件写入。

English README | Releases | 问题反馈 | 作者:yyliucha

截图

截图 说明
仪表盘提醒小组件 控制台仪表盘小组件:到期提醒常驻仪表盘,每分钟自动刷新
后台页签 后台页签:重要日期 / 人员 / 座驾,提醒横幅 + 卡片列表 + 拖拽排序
座驾列表 座驾页签:分类图标、车牌、到期徽章(已过期 / 临近)、车主与驾驶人、前台开关
座驾表单 座驾表单(1.3.0):五个可折叠分区(基本信息 / 到期提醒默认展开);字段按车型显示——电瓶车锁定「纯电」、不留发动机号,自行车连车牌与能源都不出现
前台页面 前台 /important-dates:生活视图——重要日期 + 牵挂的人(生日与纪念日倒计时)
前台爱车视图 爱车视图:车辆卡片(脱敏车牌、到期徽章)+ 车主与驾驶人(统一徽章)+ 其他重要的人
前台相册 相册查看:点击封面全屏浏览(只读、Esc 关闭),仅显示后台勾选「展示」的照片
全站悬浮提醒 悬浮提醒:位置自选、倒计时 + 进度条、关闭方式菜单(本次关闭 / 今天不再提示 / N 天内不显示),默认只在「记得」页弹出

功能

📅 重要日期

  • 名称 + 日期 + 多行备注;阳历 / 农历(含闰月),农历自动换算当年阳历
  • 每年自动循环,列表显示"最近一次"与"还有几天";支持拖拽排序(前后台一致)
  • 自研日期选择器:阳历格内标注农历;农历选年/月(含闰月)/日实时换算;编辑时面板定位到已选日期

👤 人员

  • 姓名、昵称、关系(含"本人")、生日(阳历/农历)、性别、血型、身高、体重、喜好、备注、大头贴(官方附件上传 / 附件库选择);支持拖拽排序
  • 重要日期可关联多人,列表可按人员筛选

🚗 座驾(汽车 / 电瓶车 / 自行车)

  • 17 类分类(轿车 / SUV / MPV / 跑车 / 越野车 / 皮卡 / 旅行车 / 两厢车 / 跨界车 / 微面 / 房车 / 货车 / 客车 / 摩托车 / 电瓶车 / 自行车 / 其他)、能源类型(燃油 / 纯电 / 插混 / 油电混动 / 人力)、品牌型号、颜色、VIN、发动机号、注册与购买日期、里程、状态(在用车 / 已出售 / 已报废)
  • 按车型只显示用得上的字段(1.3.0):以「有没有发动机、有没有牌照」分档——自行车不显示车牌 / 能源类型 / 车架号 / 里程 / 购买价格;电瓶车保留车牌与车架号(称「整车编号 / 车架号」),能源类型锁定为纯电,不显示发动机号与首次登记日期;保险公司与保险 / 年检 / 车船税只对汽车、摩托车等机动车出现。编辑弹窗相应精简为五个可折叠分区(基本信息、到期提醒默认展开,相册 / 关联人员 / 更多资料收起并显示摘要),每条到期项压成一行、细节收进「设置」
  • 改车型不丢数据:把汽车改成自行车时,已有的保险 / 年检项保留在库里但不再展示、也不再提醒(表单里看不到、卡片与前台都不出现),改回汽车后原样恢复,到期日一字不改
  • 多图相册:上传或附件库多选、拖拽排序、设封面;每张可单独勾选「展示」(未勾选仅后台可见,适合行驶证、保单等证件照)
  • 附件库来源范围:可在「设置 → 照片设置」为人员大头贴与座驾相册分别指定「分类(分组)」与「存储策略」;命中不到时自动放宽范围并在弹窗中说明当前生效范围与命中数(不会出现空白列表),也可一键「显示全部图片」
  • 图片失效自动降级:附件被删除(或被其它插件的全局规则拦截)导致图片打不开时,前台封面回退车型图标、大头贴回退首字、相册显示占位说明——访客永远看不到破图;后台车辆/人员卡片会标出「含失效图片 N」「大头贴已失效」,可一键「移除失效图片」或逐张「重新选择」
  • 省流量的图片处理:列表 / 相册网格 / 前台卡片使用 ?width= 缩略图(默认 480px,可配,0=原图),点开查看仍是原图;上传超过 1.5MB 的图片会先在浏览器压缩(默认压到 1920px,可关)
  • 提醒状态机(1.2.6):到期日过了没办就是逾期(不再自动滚到下一期)——逾期期间逐日提醒,之后转「待处理」但一直保留在清单里;只有点「已办」才顺延:循环项顺延一期、保养项记为「刚做完保养」(自动更新上次保养日期并按间隔推算下次)、一次性项标记完成;支持一键撤销办理(含上次保养日期一起还原)
  • 节点式提醒节奏:提醒期每 7 天一个节点、最后 15 天加密为 15/7/3/1/0 天、逾期 1/2/3 天,每个节点给出对应的贴心文案—— 这条管的是后台/前台横幅与仪表盘的主动提醒节奏;悬浮弹窗按下面的规则每次打开都提示
  • 弹窗内动作原地生效:在座驾编辑弹窗点「已办 / 撤销办理」立即写库、只刷新本行、不关闭弹窗(不必再"记得点保存")
  • 提醒可逐条忽略:前台横幅与仪表盘小组件每条右侧的 ✕ 表示"本次到期周期内不再提示"(存在浏览器里,到期日变化后自动恢复),可一键「恢复显示」,也可在设置里关闭
  • 年检规则可配置:「座驾设置 → 年检节点(默认 2,4,6,10)」「从第几年起每年上线检验(默认 11)」可按当地车管所规则调整,表单预览与提醒同步
  • 到期提醒:交强险 / 商业险 / 年检 / 保养(按上次保养 + 间隔月数推算)/ 车船税 / 自定义项;每项可设启用、提前天数与循环间隔(每年 / 每两年 / 每三年 / 不循环 / 自定义月数);已出售 / 报废不再提醒(「驾照换证」自 1.3.0 起不再挂在座驾上——它属于"人"而非"车",同一个人开两辆车不会重复提醒)
  • 保险公司填一次就够:车辆级「保险公司」全车共用(含常用公司快捷提示),个别险种可「使用其他保险公司」单独覆盖;老数据启动时自动迁移(幂等)
  • 年检自动推算:按「首次登记日期 + 车型规则」推算下一次年检(第 2/4 年免检申领 → 第 6/10 年上线检验 → 第 11 年起每年),提示阶段与依据,可「手动指定日期」覆盖;默认提前 30 天提醒
  • 年检 / 车船税默认与保险同期:日期跟随交强险到期日(可取消后独立填写),保存时写入相同日期
  • 同车同日合并提醒:交强险 / 商业险 / 车船税 / 年检同日到期时合并为一条(如「小白 · 交强险 / 商业险 / 年检」),后台列表仍逐项显示
  • 规则切换一次性提示:车辆进入上线检验期(第 6 年起)或改为每年一次(第 11 年起)时后台提示一次,点「知道了」不再重复
  • 关联人员:车主 + 常用驾驶人(可选),车辆卡片与人员卡片使用统一徽章(男生「酷」/ 女生「可爱」/ 未关联中性)

🔔 到期提醒(三处,任你挑)

  • 仪表盘小组件(Halo 2.21+):常驻仪表盘、每分钟刷新、小分页(默认每页 5 条,可调或关闭),显示完整提醒列表(仪表盘 → 编辑 → 添加部件 → 小部件中心 → 分组「记得」)
  • 后台 + 前台横幅:“「结婚纪念日」明天就到啦~” / “「小白」的交强险还有 7 天到期,记得安排一下呀~”
  • 悬浮弹窗(可选):默认只在「记得」页面弹出(访客看不到站主提醒),可切回"全站";位置 / 文案 / 倒计时可配;每次打开页面都会提示(设置里可关闭菜单,改成静音需访客主动选择时长)
  • 重要日期与座驾到期统一排序(谁近谁靠前);同一辆车同一天到期的多项自动合并为一条

👁 隐私

  • 日期、人员、车辆各有「前台展示」开关(车辆默认关闭)
  • 前台永不输出:体重、血型、身高、喜好、备注;车牌号永远脱敏(粤B·****5);VIN、发动机号、保单号、购买价格不输出;生日默认脱敏
  • 未勾选「展示」的照片不出现在前台相册

🏠 前台页面(插件默认模板,主题可选覆盖)

  • 单页 「生活 / 爱车」 双视图切换(地址栏记忆 ?view=car):生活视图=重要日期 + 牵挂的人;爱车视图=车辆卡片 + 车主与驾驶人 + 其他重要的人
  • 相册:点击车辆封面全屏滚动查看(只读)
  • 通过官方页面布局契约复用主题外壳(主题不支持时用 Halo fallback 布局);主题可放置同名模板覆盖;插件不写入、不修改任何主题文件(停用 / 卸载零残留)
  • 提供 importantDateFinder:listAll() / listAllPeople() / listAllCars() / listUpcoming(days) / listUpcomingCarEvents(days)

📊 其他

  • 导出 / 导入:JSON(v3,含人员与座驾),判重跳过、不覆盖,兼容旧版导出文件

数据与合规

  • 数据存于 Halo 扩展存储(importantdates.halo.run/v1alpha1),底层即站点数据库(H2 / MySQL / PostgreSQL),与站点同库同备份
  • 零系统配置写入(不使用「代码注入」,脚本经官方 TemplateHeadProcessor 输出)、零主题文件写入
  • 无任何联网请求,不采集、不上传任何用户数据

兼容性

  • Halo 2.26 及以上(按官方 2.26 文档与扩展点实现;Java 17 字节码;1.3.0 在真实 2.26 实例上以既有数据(含 10 辆历史车辆)完成功能自测 18/18 与前台回归 5/5,覆盖卡片到期项、车型联动、切车型不丢数据、折叠分区与老数据纠偏)
  • 管理员安装后默认拥有全部权限,无需手动配置角色权限

安装与升级

  1. 从 Releases 下载 plugin-important-dates-*.jar;
  2. Halo 后台 → 插件 → 安装 → 本地安装 → 上传 jar → 启用(左侧菜单 内容 → 记得);
  3. 前台访问 https://你的域名/important-dates。

升级:停用 → 卸载旧版 → 安装新 jar → 启用(数据不丢失)。若使用页面静态化 / 缓存插件,升级后清理一次页面缓存。

使用(后台)

  • 新增日期:名称、日期类型、日期(阳历点选 / 农历选年月日)、关联人员(可多选)、备注;可设「重要」与「前台展示」
  • 人员页签:维护人员信息与「前台展示」;可拖拽排序
  • 座驾页签:维护车辆档案、相册(含逐张「展示」勾选)、到期项;可拖拽排序;卡片上可直接切换「前台展示」
  • 导出 / 导入:页面右上角
  • 提醒与隐私配置:插件 → 记得 → 设置(提醒设置、全站悬浮提醒、展示设置、隐私设置、照片设置、座驾设置)

全站悬浮提醒(可选,设置驱动)

  • 启用:经官方 TemplateHeadProcessor 输出脚本,关闭即不输出,停用 / 卸载随插件消失
  • 位置:右下角 / 左下角 / 右上角 / 左上角 / 底部居中 / 屏幕中间(默认右下角)
  • 文案占位符:{title}、{whenText}、{daysUntil}、{dateText}、{nextSolarDate}
  • 行为:每次打开页面都会提示(1.3.1 起;此前是同一浏览器只弹一次);自动关闭(默认 8 秒,含倒计时 + 进度条);点 × 可选本次关闭 / 今天不再提示 / N 天内不显示
  • 只提醒、不堆清单(1.3.3 起):一辆车只占一行(显示最近到期的那项,并注明「这辆车共 N 项到期」);被折叠或超出「每类最多 N 条」的汇总成「还有 N 项」,底部一行可点文字直达「记得」页看全部。完整日期在前台横幅、仪表盘小组件与「记得」页始终逐条可见
  • 关闭方式菜单(默认开):点 × 弹出上面这些选项;若关掉菜单,点 × 只收起当前弹窗,不会静默静音
    • 时长可在设置里勾选(默认 3 / 5 / 7 / 30 天)
    • 没有「永久不再提示」:所有静音都有期限,到期自动恢复,不会有人手一滑就再也收不到提醒
    • ⚠️ 菜单开启时有 5 秒超时:未选择则执行「× 关闭默认行为」,建议保持「本次关闭」或「今天不再提示」

历史升级提示:1.0.21 及以前使用「代码注入」方式,1.0.30–1.1.1 曾自动维护注入片段;自 1.1.2 起改为官方扩展点。若站点仍留有 id-toast:start/end 片段,请到「系统设置 → 代码注入」删除一次。

主题模板(自定义展示,可选)

插件不写入主题文件。想完全自定义时,在主题放置 templates/important-dates.html(TemplateNameResolver 优先使用;删除即回退插件默认模板)。

可用数据:

  • 生活视图:title、dates、people、reminders、showImportantTag、showAvatar
  • 爱车视图:cars(含 plateMasked、coverUrl、photos、skin、events)、carEvents、carPeople、otherPeople、personCars、showCarSection、carSkinEnabled、view

重新构建(可选)

需 JDK 17+(已在 JDK 23 验证)与 Node.js 18+:

cd plugin-important-dates
./gradlew build

构建结果位于 build/libs/plugin-important-dates-<版本>.jar(当前版本:1.3.3)。

版本说明:最新正式版 1.3.3(弹窗学会"少抛决定":一辆车只占一行并注明共几项到期、被折叠的汇总成「还有 N 项」、底部一行可点文字直达「记得」页;关闭方式菜单只保留有期限的选项,去掉「永久不再提示」并自动清掉老访客浏览器里的永久静音标记;「提示频率」可限制弹窗次数,另加「今天不再提示」菜单项;修好座驾自定义到期项从不提醒的老问题)。装包后请强刷浏览器并完整重启 Halo 服务。

更早:1.3.1 修复悬浮提醒不出现的一串问题(纪念日被过滤、渲染时提前记账、上报接口 403、全站作用域取不到数据),弹窗改为每次打开页面都提示,点 × 不再被静默静音;1.3.0 座驾按车型分档、改车型保留数据、编辑弹窗折叠分区、移除座驾上的「驾照换证」;1.2.6 提醒状态机与 1.2.5 写操作加固、图片失效降级。

License

MIT

发布于查看详情

🚀 优化项

  • 【插件端】修复邮件通知署名问题,署名改为依次使用【设置-通知设置-邮件通知-显示名称】->【设置-基本设置-站点名称】->【功能设置-应用资料-应用信息-应用名称】的任意一个值,若不存在按顺序降级;
  • 【插件端】修复用户注册在站点设置开启【设置-用户设置-注册需验证邮箱】时无法注册问题;
  • 【移动端】优化异常提示信息;
  • 【移动端】优化绘画作品相关功能。

Full Changelog: v3.0.5...v3.0.6


Generated from v3.0.6

发布于查看详情

本版本统一呼号示例来源,并改进线上换卡的状态反馈与提交成功提示。

更新内容

  • 后台及公开页面的呼号示例采用“配置 → 通信地址”已保存的本台呼号,未配置时保留 BI1KBU;通信地址页面自身示例和实际业务数据不受影响。
  • CardPrint 在重新登录并拉取卡片版本后同步更新呼号示例。
  • 修正审核结果中“已已通过/已已拒绝”的重复文字。
  • 邮件策略明确区分等待手动发送、已发送和已跳过,避免把未执行的操作显示成已跳过。
  • 线上换卡提交成功页分项显示申请编号、审核状态和下一步;本站通信地址未配置时给出明确提示。

验证

  • 后端 230 项、前端 13 项测试及前端类型检查通过;CardPrint 相关 43 项测试通过。
  • 本地 Halo 2.23.2 已完成卡片局申请、审核、建卡、制卡、打包、发信和签收模拟流程验证,并验证手动/自动审核成功页与邮件策略提示。
  • 适用于 Halo >=2.23.0;没有新增持久化模型字段。

JAR 附件由 CD 自动构建并上传,Halo 应用市场版本由同一流程提交。


Generated from v2.3.33

发布于查看详情

在 Halo Console → 主题 → 春野 → 设置 → 谷歌广告 管理:

  • 总开关:关闭后所有主题手动广告位停止输出。
  • 发布商 ID:共用 data-ad-client,以 ca-pub- 开头。
  • 布局预览模式:已开启位置只显示占位,不请求 Google 广告;正式投放时关闭。
  • 布局:顶部为公共设置,下方分为「文章页广告」与「首页广告」;每个位置使用独立卡片,全部同时展示。卡片内包含位置说明及四项配置,修改后统一保存。
  • 每个位置:独立开关、广告单元 ID(data-ad-slot)、格式(自动 / 横幅 / 矩形)、移动端开关。
位置 出现范围
首页列表上方 首页及分页首页,技术分类导航之后
首页侧栏 首页及分页首页,社区介绍卡片之后
文章正文上方 文章阅读区,正文之前
文章目录下方 文章目录之后;移动端开启时位于目录与正文之间
文章末尾 文章结束与标签之后,相邻文章和评论之前

建议为各位置创建对应广告单元,便于在 AdSense 中分别查看效果。主题不内置广告账号,参数缺失或格式错误时不输出该位置。所有广告保持文档流,按容器适配,不向窄侧栏外扩展。网站已有 AdSense 脚本时会复用;原有自动广告继续由 AdSense 管理。

此前目录广告开发配置兼容:ads.enabled、client_id、slot_id、show_mobile、preview 的键保持稳定。slot_id 和 show_mobile 继续用于目录下方位置,新增的 sidebar_enabled 控制该位置独立开关,缺省为开启。新增的另外四个位置默认关闭,升级不会自动增加广告。

有侧栏广告时目录随页面滚动,避免与广告重叠;广告未填充或脚本失败时收起对应位置。无广告时仍保留原有固定目录。未请求的移动端隐藏单元不会匹配 Google 的广告选择器。

参考:Google 自适应展示广告、未填充广告状态。

发布于查看详情

0.4.2 更新内容

  • 新增 AI 标签:可为草稿和已发布文章生成候选标签,人工选择后应用;优先复用已有标签,并保留文章原有标签。
  • 文章列表的操作菜单新增「AI 生成标签」,可在弹窗中完成生成和应用。
  • 新增内容创作默认语言模型;AI 摘要、AI 标签、写作辅助也可分别指定模型。
  • AI 标签生成用量可单独查看。

安装与升级

发布于查看详情

✨ 新特性

  • 【插件端】新增绘画作品排行榜、和详情面板

🚀 优化项

  • 【插件端】修复部分弹窗偶发性弹出错误问题;
  • 【插件端】优化配置内容文字和说明更符合实际功能。

Full Changelog: v3.0.4...v3.0.5


Generated from v3.0.5

发布于查看详情

⚠️ DANGER:破坏性更新,请慎重升级

本次更新对后台配置体系进行了重构,部分功能配置已迁移至具体功能列表中,升级后原有配置位置会发生变化,请重新检查各功能配置项。
插件端与 App 端需配套升级,旧版本【移动端】影响范围不大,仅部分页面的标题适配;
升级后请检查自定义角色的功能权限。

✨ 新特性

  • 【插件端/移动端】新增绘画作品功能:支持用户登录后在画布创作并发布绘画(含审核流程),浏览他人作品;并支持画谜模式——发布时可设置谜底,其他用户猜谜互动,猜对积分 +1,支持画谜排行榜、手动/自动揭晓、出题人管理与审核端画谜信息查看。

  • 【移动端】新增【装备管理】插件支持:支持装备分组与装备展示管理,App 端新增装备列表页(分类吸顶 + 详情弹窗)。

🚀 优化项

  • 【插件端】优化恋爱日记、相册管理的表单 UI 与列表 UI;

  • 【移动端】优化部分列表页面顶部吸顶区域样式。

💥 破坏性

  • 【插件端】后台配置重构:部分功能配置从统一设置迁移到具体的功能列表中配置(如恋爱日记 → 列表顶部「设置」弹窗),升级后需到各功能入口重新确认配置。

What's Changed

New Contributors

Full Changelog: v3.0.3...v3.0.4


Generated from v3.0.4

发布于查看详情

v1.0.3

修复(应用市场审核意见)

  • 业务代码包名由 run.halo.visiteditor 迁移至开发者自有包名 top.iloved.visiteditor
  • 移除对 Halo 2.22+ 引入的 Queries API 的依赖,文章列表读取兼容更低版本
  • 最低兼容版本声明调整为 Halo >= 2.22.0,并同步更新插件清单与 README

v1.0.2

修复

  • 列表排除回收站中的文章(修复出现「未命名未发布文章」的问题),与 Halo 后台文章列表行为保持一致

v1.0.1

修复与优化

  • 修复:搜索框不渲染的问题(组件库中不存在 VInput,改为原生输入框)
  • 新增:输入即搜(300ms 防抖)
  • 新增:支持按阅读量从高到低 / 从低到高排序,文章多时也方便查找

v1.0.0

首次发布:Halo 文章阅读量可视化管理插件。

  • 查看/搜索文章阅读量
  • 行内修改阅读量,支持批量保存
  • 修改后前台即时生效,与真实统计兼容累加

安装:Halo 后台 → 插件 → 安装 → 上传本 jar。要求 Halo >= 2.20。

发布于查看详情

记得 · 重要日期与爱车(plugin-important-dates)

build
plugin

一个 Halo 2.x 插件:记录纪念日、生日与家人朋友,也管好你的座驾(汽车 / 电瓶车 / 自行车)——保险、年检、保养到期自动提醒;支持阳历/农历、多图相册、前台「生活 / 爱车」双视图、隐私脱敏,零系统配置写入、零主题文件写入。

更名说明:原名「重要日期」,1.2.0 起更名「记得」——功能已从"记日期"扩展到"记日子、记人、记爱车",旧名装不下。插件 ID(plugin-important-dates)不变,数据、设置、前台地址(/important-dates)与升级路径均不受影响。

English README | Releases | 问题反馈 | 作者:yyliucha

截图

截图 说明
仪表盘提醒小组件 控制台仪表盘小组件:到期提醒常驻仪表盘,每分钟自动刷新
后台页签 后台页签:重要日期 / 人员 / 座驾,提醒横幅 + 卡片列表 + 拖拽排序
座驾列表 座驾页签:分类图标、车牌、到期徽章(已过期 / 临近)、车主与驾驶人、前台开关
座驾表单 座驾表单(1.3.0):五个可折叠分区(基本信息 / 到期提醒默认展开);字段按车型显示——电瓶车锁定「纯电」、不留发动机号,自行车连车牌与能源都不出现
前台页面 前台 /important-dates:生活视图——重要日期 + 牵挂的人(生日与纪念日倒计时)
前台爱车视图 爱车视图:车辆卡片(脱敏车牌、到期徽章)+ 车主与驾驶人(统一徽章)+ 其他重要的人
前台相册 相册查看:点击封面全屏浏览(只读、Esc 关闭),仅显示后台勾选「展示」的照片
全站悬浮提醒 悬浮提醒:位置自选、倒计时 + 进度条、关闭方式菜单(本次 / 3 天 / 10 天 / 永久),默认只在「记得」页弹出

功能

📅 重要日期

  • 名称 + 日期 + 多行备注;阳历 / 农历(含闰月),农历自动换算当年阳历
  • 每年自动循环,列表显示"最近一次"与"还有几天";支持拖拽排序(前后台一致)
  • 自研日期选择器:阳历格内标注农历;农历选年/月(含闰月)/日实时换算;编辑时面板定位到已选日期

👤 人员

  • 姓名、昵称、关系(含"本人")、生日(阳历/农历)、性别、血型、身高、体重、喜好、备注、大头贴(官方附件上传 / 附件库选择);支持拖拽排序
  • 重要日期可关联多人,列表可按人员筛选

🚗 座驾(汽车 / 电瓶车 / 自行车)

  • 17 类分类(轿车 / SUV / MPV / 跑车 / 越野车 / 皮卡 / 旅行车 / 两厢车 / 跨界车 / 微面 / 房车 / 货车 / 客车 / 摩托车 / 电瓶车 / 自行车 / 其他)、能源类型(燃油 / 纯电 / 插混 / 油电混动 / 人力)、品牌型号、颜色、VIN、发动机号、注册与购买日期、里程、状态(在用车 / 已出售 / 已报废)
  • 按车型只显示用得上的字段(1.3.0):以「有没有发动机、有没有牌照」分档——自行车不显示车牌 / 能源类型 / 车架号 / 里程 / 购买价格;电瓶车保留车牌与车架号(称「整车编号 / 车架号」),能源类型锁定为纯电,不显示发动机号与首次登记日期;保险公司与保险 / 年检 / 车船税只对汽车、摩托车等机动车出现。编辑弹窗相应精简为五个可折叠分区(基本信息、到期提醒默认展开,相册 / 关联人员 / 更多资料收起并显示摘要),每条到期项压成一行、细节收进「设置」
  • 改车型不丢数据:把汽车改成自行车时,已有的保险 / 年检项保留在库里但不再展示、也不再提醒(表单里看不到、卡片与前台都不出现),改回汽车后原样恢复,到期日一字不改
  • 多图相册:上传或附件库多选、拖拽排序、设封面;每张可单独勾选「展示」(未勾选仅后台可见,适合行驶证、保单等证件照)
  • 附件库来源范围:可在「设置 → 照片设置」为人员大头贴与座驾相册分别指定「分类(分组)」与「存储策略」;命中不到时自动放宽范围并在弹窗中说明当前生效范围与命中数(不会出现空白列表),也可一键「显示全部图片」
  • 图片失效自动降级:附件被删除(或被其它插件的全局规则拦截)导致图片打不开时,前台封面回退车型图标、大头贴回退首字、相册显示占位说明——访客永远看不到破图;后台车辆/人员卡片会标出「含失效图片 N」「大头贴已失效」,可一键「移除失效图片」或逐张「重新选择」
  • 省流量的图片处理:列表 / 相册网格 / 前台卡片使用 ?width= 缩略图(默认 480px,可配,0=原图),点开查看仍是原图;上传超过 1.5MB 的图片会先在浏览器压缩(默认压到 1920px,可关)
  • 提醒状态机(1.2.6):到期日过了没办就是逾期(不再自动滚到下一期)——逾期期间逐日提醒,之后转「待处理」但一直保留在清单里;只有点「已办」才顺延:循环项顺延一期、保养项记为「刚做完保养」(自动更新上次保养日期并按间隔推算下次)、一次性项标记完成;支持一键撤销办理(含上次保养日期一起还原)
  • 节点式提醒节奏:提醒期每 7 天一个节点、最后 15 天加密为 15/7/3/1/0 天、逾期 1/2/3 天,每个节点只弹一次并记录在数据库(换浏览器 / 换设备都不会重置)—— 这条管的是后台/前台横幅与仪表盘的主动提醒节奏;悬浮弹窗按下面的规则每次打开都提示
  • 弹窗内动作原地生效:在座驾编辑弹窗点「已办 / 撤销办理」立即写库、只刷新本行、不关闭弹窗(不必再"记得点保存")
  • 提醒可逐条忽略:前台横幅与仪表盘小组件每条右侧的 ✕ 表示"本次到期周期内不再提示"(存在浏览器里,到期日变化后自动恢复),可一键「恢复显示」,也可在设置里关闭
  • 年检规则可配置:「座驾设置 → 年检节点(默认 2,4,6,10)」「从第几年起每年上线检验(默认 11)」可按当地车管所规则调整,表单预览与提醒同步
  • 到期提醒:交强险 / 商业险 / 年检 / 保养(按上次保养 + 间隔月数推算)/ 车船税 / 自定义项;每项可设启用、提前天数与循环间隔(每年 / 每两年 / 每三年 / 不循环 / 自定义月数);已出售 / 报废不再提醒(「驾照换证」自 1.3.0 起不再挂在座驾上——它属于"人"而非"车",同一个人开两辆车不会重复提醒)
  • 保险公司填一次就够:车辆级「保险公司」全车共用(含常用公司快捷提示),个别险种可「使用其他保险公司」单独覆盖;老数据启动时自动迁移(幂等)
  • 年检自动推算:按「首次登记日期 + 车型规则」推算下一次年检(第 2/4 年免检申领 → 第 6/10 年上线检验 → 第 11 年起每年),提示阶段与依据,可「手动指定日期」覆盖;默认提前 30 天提醒
  • 年检 / 车船税默认与保险同期:日期跟随交强险到期日(可取消后独立填写),保存时写入相同日期
  • 同车同日合并提醒:交强险 / 商业险 / 车船税 / 年检同日到期时合并为一条(如「小白 · 交强险 / 商业险 / 年检」),后台列表仍逐项显示
  • 规则切换一次性提示:车辆进入上线检验期(第 6 年起)或改为每年一次(第 11 年起)时后台提示一次,点「知道了」不再重复
  • 关联人员:车主 + 常用驾驶人(可选),车辆卡片与人员卡片使用统一徽章(男生「酷」/ 女生「可爱」/ 未关联中性)

🔔 到期提醒(三处,任你挑)

  • 仪表盘小组件(Halo 2.21+):常驻仪表盘、每分钟刷新、小分页(默认每页 5 条,可调或关闭),显示完整提醒列表(仪表盘 → 编辑 → 添加部件 → 小部件中心 → 分组「记得」)
  • 后台 + 前台横幅:“「结婚纪念日」明天就到啦~” / “「小白」的交强险还有 7 天到期,记得安排一下呀~”
  • 悬浮弹窗(可选):默认只在「记得」页面弹出(访客看不到站主提醒),可切回"全站";位置 / 文案 / 倒计时可配;每次打开页面都会提示(设置里可关闭菜单,改成静音需访客主动选择时长)
  • 重要日期与座驾到期统一排序(谁近谁靠前);同一辆车同一天到期的多项自动合并为一条

👁 隐私

  • 日期、人员、车辆各有「前台展示」开关(车辆默认关闭)
  • 前台永不输出:体重、血型、身高、喜好、备注;车牌号永远脱敏(粤B·****5);VIN、发动机号、保单号、购买价格不输出;生日默认脱敏
  • 未勾选「展示」的照片不出现在前台相册

🏠 前台页面(插件默认模板,主题可选覆盖)

  • 单页 「生活 / 爱车」 双视图切换(地址栏记忆 ?view=car):生活视图=重要日期 + 牵挂的人;爱车视图=车辆卡片 + 车主与驾驶人 + 其他重要的人
  • 相册:点击车辆封面全屏滚动查看(只读)
  • 通过官方页面布局契约复用主题外壳(主题不支持时用 Halo fallback 布局);主题可放置同名模板覆盖;插件不写入、不修改任何主题文件(停用 / 卸载零残留)
  • 提供 importantDateFinder:listAll() / listAllPeople() / listAllCars() / listUpcoming(days) / listUpcomingCarEvents(days)

📊 其他

  • 导出 / 导入:JSON(v3,含人员与座驾),判重跳过、不覆盖,兼容旧版导出文件

数据与合规

  • 数据存于 Halo 扩展存储(importantdates.halo.run/v1alpha1),底层即站点数据库(H2 / MySQL / PostgreSQL),与站点同库同备份
  • 零系统配置写入(不使用「代码注入」,脚本经官方 TemplateHeadProcessor 输出)、零主题文件写入
  • 无任何联网请求,不采集、不上传任何用户数据

兼容性

  • Halo 2.26 及以上(按官方 2.26 文档与扩展点实现;Java 17 字节码;1.3.0 在真实 2.26 实例上以既有数据(含 10 辆历史车辆)完成功能自测 18/18 与前台回归 5/5,覆盖卡片到期项、车型联动、切车型不丢数据、折叠分区与老数据纠偏)
  • 管理员安装后默认拥有全部权限,无需手动配置角色权限

安装与升级

  1. 从 Releases 下载 plugin-important-dates-*.jar;
  2. Halo 后台 → 插件 → 安装 → 本地安装 → 上传 jar → 启用(左侧菜单 内容 → 记得);
  3. 前台访问 https://你的域名/important-dates。

升级:停用 → 卸载旧版 → 安装新 jar → 启用(数据不丢失)。若使用页面静态化 / 缓存插件,升级后清理一次页面缓存。

使用(后台)

  • 新增日期:名称、日期类型、日期(阳历点选 / 农历选年月日)、关联人员(可多选)、备注;可设「重要」与「前台展示」
  • 人员页签:维护人员信息与「前台展示」;可拖拽排序
  • 座驾页签:维护车辆档案、相册(含逐张「展示」勾选)、到期项;可拖拽排序;卡片上可直接切换「前台展示」
  • 导出 / 导入:页面右上角
  • 提醒与隐私配置:插件 → 记得 → 设置(提醒设置、全站悬浮提醒、展示设置、隐私设置、照片设置、座驾设置)

全站悬浮提醒(可选,设置驱动)

  • 启用:经官方 TemplateHeadProcessor 输出脚本,关闭即不输出,停用 / 卸载随插件消失
  • 位置:右下角 / 左下角 / 右上角 / 左上角 / 底部居中 / 屏幕中间(默认右下角)
  • 文案占位符:{title}、{whenText}、{daysUntil}、{dateText}、{nextSolarDate}
  • 行为:每次打开页面都会提示(1.3.1 起;此前是同一浏览器只弹一次);自动关闭(默认 8 秒,含倒计时 + 进度条);点 × 可选本次 / 3 天 / 10 天 / 永久
  • 关闭方式菜单(默认开):点 × 弹出上面 4 个选项;若关掉菜单,点 × 只收起当前弹窗,不会静默静音
    • ⚠️ 菜单开启时有 5 秒超时:未选择则执行「× 关闭默认行为」。所以该默认项建议设成「本次关闭」或「3 天内不显示」,不要设成「永久关闭」,否则手慢一点就会被永久静音

历史升级提示:1.0.21 及以前使用「代码注入」方式,1.0.30–1.1.1 曾自动维护注入片段;自 1.1.2 起改为官方扩展点。若站点仍留有 id-toast:start/end 片段,请到「系统设置 → 代码注入」删除一次。

主题模板(自定义展示,可选)

插件不写入主题文件。想完全自定义时,在主题放置 templates/important-dates.html(TemplateNameResolver 优先使用;删除即回退插件默认模板)。

可用数据:

  • 生活视图:title、dates、people、reminders、showImportantTag、showAvatar
  • 爱车视图:cars(含 plateMasked、coverUrl、photos、skin、events)、carEvents、carPeople、otherPeople、personCars、showCarSection、carSkinEnabled、view

重新构建(可选)

需 JDK 17+(已在 JDK 23 验证)与 Node.js 18+:

cd plugin-important-dates
./gradlew build

构建结果位于 build/libs/plugin-important-dates-<版本>.jar(当前版本:1.3.1)。

版本说明:最新正式版 1.3.1(修复悬浮提醒不出现的一串问题——纪念日/生日被过滤、渲染时提前记账、上报接口 403、全站作用域取不到数据;弹窗改为每次打开页面都提示;点 × 不再被静默静音;并补上接口的版本标记便于排查)。装包后请强刷浏览器并完整重启 Halo 服务。

更早:1.3.0 座驾按车型分档(电瓶车锁定纯电、自行车不留车牌与能源)、改车型保留数据、编辑弹窗折叠分区、移除座驾上的「驾照换证」,并修复后台座驾卡片到期项标签整块消失的缺陷。

更早:1.2.6 提醒状态机(已办才滚动、逾期逐日提醒、节点式提醒、保养项「已办」= 刚做完保养、一键撤销)与 1.2.5 写操作加固与图片失效降级、1.2.4 拖拽 503 修复、1.2.3 卡片样式修复、1.2.2 附件库范围修复。

License

MIT

发布于查看详情

Halo2Bark v1.0.2 更新说明

本次更新修复了多设备推送的一个边界问题,并进一步提升稳定性。

改进

  • 多设备更可靠:指向官方服务时,单次批量推送有「最多 10 台」的限制;此前配置 11~20 台同址设备时,其中一部分会先经历一次失败再补发。现在插件会按限制自动分批推送,所有设备一次性送达。
  • 自建服务兼容性:使用不支持 V2 接口的自建服务时,设备 Key 中的特殊字符(如空格、斜杠)不再导致推送失败。

说明

  • 需要 Halo 2.26.0 及以上,升级后无需重新配置。
  • 分批推送对自建服务同样生效,多一次请求的开销可忽略。
发布于查看详情

为 Halo 提供 OpenID Connect 身份提供方能力,使用现有 Halo 账户登录第三方应用。管理员注册应用、按 Halo 角色控制应用访问,用户在授权前确认权限,并可以在个人中心撤销授权。

发布于查看详情

v1.4.4

针对应用市场审核意见的修复版本,并修正了自动建号与站点注册策略的若干行为。

修复

  • 修复控制台「BlogsClub 应用配置」表单不显示、无法配置 AppID / AppKey 的问题

    审核延伸发现:插件此前未在 plugin.yaml 声明 settingName 与 configMapName,Halo 据此跳过了 Setting 与 ConfigMap 扩展的初始化(日志提示「the plugin configMapName is blank」),导致控制台根本不渲染配置表单,只能通过 json-config 接口手工写入,且接口还会报 configMapName is blank。

    现已补全 settingName: blogsclub-oauth2-setting 与 configMapName: oauth2-blogsclub-config。升级后控制台「用户 → 认证方式 → BlogsClub → 设置」会正常出现配置表单,AppID / AppKey 可在界面维护。

  • 修复首次登录自动建号时写入空密码导致 500 的问题

    此前自动创建的账号密码字段为空,部分 Halo 版本在建号流程中会因此抛出 500。现已改为写入一段随机生成的 64 位加密密码(userService.encryptPassword(RandomStringUtils.secure().nextAlphanumeric(64))),账号可正常落地,密码对登录无影响(用户始终通过 BlogsClub 授权登录)。

  • 修复自动建号未遵循站点「注册时必须验证邮箱」设置的问题

    此前只要站点开放注册就会无条件自动建号,忽略了后台「注册时必须验证邮箱(mustVerifyEmailOnRegistration)」开关,可能创建出未验证邮箱的账号。

    现已严格遵循该设置:

    • 站点开启「必须验证邮箱」时,插件不再自动建号,交由 Halo 原生绑定流程处理(跳转 /login?oauth2_select),避免产生未验证邮箱的账号;
    • 站点未开启该设置且允许注册时,自动建号并将 BlogsClub 返回的邮箱写入并标记为已验证(emailVerified=true),用户无需再走邮箱验证步骤;
    • 站点关闭「允许注册」时,同样不自动建号,回退 Halo 原生流程。

升级说明

  • 本次修复涉及配置扩展的声明(新增 settingName / configMapName),升级后请到控制台「用户 → 认证方式 → BlogsClub → 设置」确认 AppID / AppKey 已正确填写;此前若通过 json-config 手工写入,升级后可改由控制台表单统一维护。
  • 升级后建议重新走一次 BlogsClub 登录 / 绑定,确认账号正常创建、邮箱被正确标记。
  • 与官方 OAuth2 认证插件可共存、可分别停用、任意启动顺序互不影响(自 v1.4.2 起已修复)。
  • 升级前建议确认当前版本:若为 v1.4.1,请直接升级到 v1.4.4。

兼容性

  • Halo 2.20.8 或更高版本(已在 Halo 2.27.0 实测通过)
  • Java 21+
  • 与官方 OAuth2 认证插件可共存

Full Changelog: https://github.com/YBRC114514/plugin-BlogsClub-OAuth/compare/v1.4.2...v1.4.4

发布于查看详情

Halo2Bark v1.0.1 更新说明

本次更新让推送更可靠、更省心,并新增了运行状态查看入口。

新增

  • 运行状态可查:插件提供了状态查询接口,可以看到配置是否正常、哪些设备可用、有没有通知被丢弃、最近一次推送是否成功。

改进

  • 不被自己的操作打扰:站点管理员自己发出的评论和回复,不再推送给自己;其他访客的互动照常通知。
  • 更可靠:某台设备的服务地址填错时,只有那一台设备收不到,其他设备不受影响;程序偶发异常会自动恢复,推送能力不会越用越弱。
  • 高峰更从容:评论特别多的时候,超出的通知会在这一分钟结束后合并成一条补发;极端爆发下会丢弃最旧的并记录日志。

说明

  • 只有加密密钥配置错误会暂停全部推送,其他配置问题只影响相关设备。
  • 需要 Halo 2.26.0 及以上,升级后无需重新配置。
发布于查看详情

Passkey 认证 v2.0.0

主要特性

  • 点击“使用通行密钥登录”后,直接弹出系统通行密钥选择器。
  • 不再跳转到单独的通行密钥登录页面。
  • 支持从 OIDC 授权页面进入登录后,完成认证自动返回原页面。
  • 登录过程中保留“保持登录会话”选项。
  • 优化安卓 Edge 等移动端浏览器的登录体验。
  • 支持 Halo 2.26.0 及更高版本。

问题修复

  • 修复 OIDC 登录参数丢失问题。
  • 修复“保持登录会话”状态丢失问题。

Generated from v2.0.0

发布于查看详情

功能优化

  • 创建和编辑访问密钥时,支持按工具分类全选或取消选择 by @ruibaby in #14

开发者相关

  • 支持通过 McpToolDefinition.Builder.category(String) 为插件工具设置自定义分类,在工具目录和访问密钥选择器中按插件和分类展示;需使用 run.halo.mcpserver:api:1.3.0 及 MCP Server 1.3.0 或更高版本 by @ruibaby in #15

Full Changelog: v1.2.0...v1.3.0


Generated from v1.3.0

发布于查看详情

修复登录上下文脚本未在 Halo 登录页加载的问题。

从 OIDC 授权跳转到登录页后,切换通行密钥登录会保留 redirect_uri 等查询参数,以及嵌套授权地址的编码。
密码登录与通行密钥登录之间切换时,保持“保持登录会话”的当前勾选状态,包括取消勾选后的状态。
调整登录页脚本加载方式,兼容 Halo 2.26 的认证页面与 Thymeleaf 分块输出。
兼容要求: Halo 2.26.0 及以上。


Generated from v1.0.6

发布于查看详情

v0.9.49

版本日期:2026-10-10。要求 Halo >=2.26.0;发布状态以 GitHub v0.9.49 为准。

安装包与打包检查

  • 修复正式安装包误带三张本地商城 DEMO 图片的问题,打包时排除 templates/assets/images/shop-demo/**。开发素材继续保留,商城运行代码、模板及功能不删减。
  • 常规 pnpm run package / build 在补齐第三方声明后自动校验 ZIP;出现演示素材、版本不一致或必要文件缺失时阻止打包成功。
  • 将正式包素材范围、体积异常核对及正式下载包复核要求写入项目开发与发布要求。

验证

本地候选构建 0.9.49 / 0bd3870d2398 的完整检查、13 路由重载、活动资源一致性与自动制品校验通过。候选 ZIP 约 955 KB,对比上一正式包仅移除三张 DEMO PNG,运行文件集合保持完整;注入演示图的隔离测试包会被拒绝。

本版执行范围及未验收项见版本准备记录。未重跑全站页面冒烟或真实交易;本地候选包不等于正式 CD 制品,正式发布结果另行登记。


Generated from v0.9.49

发布于查看详情

展示架 1.7.4 更新说明

  • 修复后台展示内容搜索框使用中文输入法时,拼音输入及候选词选择期间因界面刷新而中断输入、导致无法正常输入中文的问题。
  • 搜索框会在输入法完成文字合成后再执行筛选,普通文本搜索行为保持不变。
发布于查看详情

运行洞察 1.2.0 增加单插件诊断和可回看的故障证据,并减少持续监控的重复工作。

新增

  • 自身开销面板:采集与诊断任务耗时、CPU 时间、分配速率和 SQLite 读写次数。
  • 压力评分依据:展示四个维度的分数、加权贡献和强度系数,区分 CPU 活动分钟与线程驻留分钟。
  • 单插件诊断:点击性能排行中的插件名称,查看资源趋势、该插件慢接口、事件、优化报告和相关日志。
  • 首次告警现场:保留触发时的系统、请求、插件及接口证据,确认或恢复后仍可查看。
  • 性能基线对比:支持前一时段、昨天、上周和最近升级前后,提示采样覆盖及流量差异。

优化

  • 优化观察空闲时不再反复读取历史;线程 CPU 计数支持批量读取,诊断采样跟随低开销模式。
  • 仪表盘按可见页面加载历史,优化排行只在弹窗打开时查询。
  • 日志支持指定插件筛选、固定快照翻页和增量读取;文件轮转、快照过期及读取缺口有明确提示。
  • 新增详情与开销面板按需查询,未增加后台轮询;日志、线程栈和 JFR 保持独立诊断权限。

安装

下载附件 plugin-insight-1.2.0.jar,在 Halo Console → 插件中上传安装或升级。
需要 Halo 2.26+、Java 21。SQLite 沿用 v5;升级前建议停用插件并备份 insight 数据目录。

验证与范围

53 个后端测试、70 个前端测试及类型检查、代码检查和构建通过。
尚未在运行中的 Halo 实例验证本次新接口的实际角色权限或安装前后性能变化。
CPU 和分配量为有限采样与归属线程的估算;压力评分和基线对比不能单独证明卡顿、泄漏或升级因果。


Generated from v1.2.0

发布于查看详情

此版本需要 Halo 2.26.0 及以上;免费与授权功能需要应用市场 1.19.0 及以上。

旧版表单可通过「旧版表单升级」创建新版副本并迁移历史提交,检查后确认切换,也支持回退。历史提交会复制到新版收件箱,旧版原始数据仍保留;回退不会将新版提交反向迁移。

新特性

  • 全新可视化设计器,支持响应式多列布局、条件逻辑、级联数据、可复用模板和自定义主题。
  • 支持表单预填、答案引用、邮箱验证、跨设备续填和数据保留策略。
  • 支持独立表单页、页面嵌入、悬浮按钮和弹窗投放。
  • 新增提交收件箱和联系人管理,支持搜索筛选、分派、标签、内部备注及批量导出。
  • 支持按回答条件执行站内通知和 Webhook,并提供失败重试与重放。
  • 每站点可免费创建并使用一个表单;创建更多表单、新增或复制级联选择及文件上传字段、新增或修改字段条件逻辑,以及新增或扩展条件自动化与 Webhook 需授权。
  • 授权失效后已有表单和已发布自动化继续运行,已有付费字段可继续使用和编辑,未修改的条件逻辑继续生效。
  • 支持通过 MCP 查询表单、提交和分析数据,以及分派、标记提交和添加内部备注。

功能优化

  • 重新设计数据分析页,完善转化趋势、字段流失、来源、设备、活动参数和答案分布展示,突出同期变化与流失阶段。
  • 重新设计投放与分享页,整合渠道配置和实时预览,改善窄屏布局及未保存改动提示。
  • 重新设计表单版本页,提供版本时间线,优化对比基线选择和差异展示。
  • 支持在设计器中自定义提交按钮文本,文件上传支持自定义按钮文本。
  • 优化模板创建、设计器和提交列表操作,统一提示与校验体验,改善深色模式帮助文本的可读性。

问题修复

  • 修复表单需要点击两次才能提交的问题。
  • 修复删除字段后遗留的联系人身份字段引用导致表单无法发布的问题。
  • 修复弹窗及悬浮面板关闭图标未居中、提交按钮阴影显示异常的问题。
  • 修复旧版表单条目中长数字显示不准确的问题。
  • 修复重复字段导致导出失败的问题,并支持按勾选条目导出。
  • 修复异常历史表单配置可能导致主题页面无法加载的问题。

开发者相关

  • 新增新版表单公开接口及与当前发布版本一致的字段契约,提供自定义页面接入示例。
  • 提供字段类型和自动化动作扩展点。
发布于查看详情

v0.9.48

版本日期:2026-10-09。要求 Halo >=2.26.0;本次核验环境为 Halo 商城版 2.26.1。发布状态以 GitHub v0.9.48 为准。

商城展示与配置

  • 新增独立商店 App 及商品、详情、购物车、结算、支付五个主题模板,沿用官方商品、SKU、价格与交易组件。
  • 探索页采用主推、双推荐、紧凑商品行及预览图集;后台按真实商品 ID 编排,主推支持独立宣传图和文案,双推荐与预览图集读取商品封面及简介,页面保留最新商品区。
  • 商品全集、分类商品和搜索结果支持卡片/列表及大、中、小三档展示,浏览偏好保存在本机;探索和类别总览保持固定布局。
  • 侧栏与页面标题精简为「商品/类别」。侧栏分类可在后台选择、排序,支持子孙分类;类别目录按宽度使用三、两或一列,下方复用后台「编辑精选」。
  • 分类图标和颜色按稳定分类 ID 配置在主题设置中;类别页优先使用商城原生分类图片,缺图或失败时回退图标,侧栏跟随主题强调色。当前商城原生编辑弹窗尚未接入元数据表单,已提交官方扩展建议 #221。
  • 登录后侧栏底部展示头像与显示名,整行进入官方订单页;缺失资料和头像失败有回退。登录与客户中心保持官方认证和文档导航边界。

导航与 macOS 布局

  • 点击与程序导航共用全局 PJAX 准入、离页守卫及 local/same/full 决策;商城浏览保留窗口框架,详情返回保留来源、筛选与滚动上下文。
  • 官方购买和结算表单保留 POST、CSRF、字段编码及提交按钮参数,加入重复提交保护;失败或取消保留源表单,不自动重发。
  • 滚动后固定栏显示紧凑页标题;移除冗余「查看商品」,价格以胶囊显示,完善分类对齐、商品行密度、宣传图、详情购买区及手机布局。

构建与文档

  • 同步两份版本声明和生成资源,整理商城使用、设置入口、截图、主题契约及验证边界。
  • CD 迁移到官方 v5,README 自动同步保持关闭;实际发布结果另行登记。
  • 新增商城组件对应的依赖分发范围与第三方声明。依赖与制品检查以本次候选执行结果为准。

验证与升级边界

本次版本的构建标识、检查、重载及本地 ZIP 结果统一记录在项目进度,适用命令见验证矩阵。详细配置与编号截图见商城指南。旧 0.9.47 截图与日期报告保留原构建身份,不改记为本版本的运行验收。

当前构建 0.9.48 / e10979704e65 的完整检查、13 路由重载、商城 SSR/隔离专项及本地 ZIP 校验通过。全站冒烟 24 路由中 22 项失败,均含同一外部图标 ERR_BLOCKED_BY_ORB;该项来自朋友圈外部图标,本次按用户决定接受此边界,未修改测试规则。

  • 商城分类外观的新配置尚未完成真实保存与回读;已认证头像/姓名、真实加购、订单、付款及履约仍需独立验收。
  • 前轮全站冒烟存在外部图标 ORB 和初始化超时;本次门禁结果与历史结果分别登记,不能将商城专项通过写成全站通过。
  • 升级前备份主题配置和上一稳定 ZIP。商城页面要求 Halo 商城版及对应许可,普通 Halo 安装不会因此获得商城能力。

Generated from v0.9.48

发布于查看详情

微信公众号同步插件配置指南
如何使用 WorkBuddy 配置 Halo 的 MCP 连接器

更新日志

新增

  • 任务记录新增 draftAction(update / create):记录本次同步实际执行的动作并落库。

修复

  • 更新草稿被网关 / WAF 拦截(如 501)时整次同步失败 → 自动改为新建,同步可正常完成。

优化

  • 列表项行内内容补段落包裹避免微信拆行。

MCP

  • wechat_sync_submit:移除 draftAction(只是提交时的预判,执行阶段可能回退),说明改为「预计…」并指向状态查询。
  • wechat_sync_status:按 draftAction 回报实际动作,描述 / 字段说明 / 结果文本都要求 AI 照字段作答。
  • 四个工具的描述、字段说明与结果文本精简为「做什么 + 字段含义 + 一条指令」。

Full Changelog: 1.9.0...1.9.1


Generated from 1.9.1

发布于查看详情

修复与优化

  • 对话、查询改写、Embedding、Rerank 和图像生成模型的连通性测试统一改为后台任务与状态轮询,改善慢模型在反向代理环境下的测试体验。
  • 优化错误提示:HTTP 错误、空响应和非 JSON 响应现在会显示明确的中文说明。
  • 查询中断时显示“状态待确认”,支持继续查询原任务;刷新当前标签页后可恢复查询。
  • 增加重复请求保护,恢复查询不会自动重新提交模型调用,减少重复费用风险。

兼容性与升级

  • 需要 Halo 2.26.0 或更高版本,以及已安装并启用的 Halo AI Foundation 1.1.1 或更高版本。
  • 从 0.4.0 升级无需迁移配置或重建索引。
  • 查询中断时请优先点击“继续查询”;主动“开始新测试”可能产生额外模型调用费用。
  • 测试任务记录保存在内存中,服务重启后会失效。
发布于查看详情

Full Changelog: v2.6.1...v2.6.2

feat: 移除简约卡片模板,新增液态玻璃模板自定义强度设置

本次提交主要改动:

  1. 移除了原有的简约卡片模板(cards),仅保留经典单句和液态玻璃两种模板风格
  2. 新增液态玻璃模板的四个强度设置项:边缘高光、表面掠光、指针高光、背景模糊,支持0-200%的自定义调整
  3. 优化了液态玻璃模板的视觉设计,调整了主色方案和高光效果的实现方式,通过CSS变量倍率控制强度
  4. 修复了分类切换时请求竞态问题,避免旧请求结果覆盖新请求
  5. 更新了README文档和配置说明,同步模板风格和设置项的变化
  6. 调整了默认主题点击跳转设置为开启状态

Generated from v2.6.2

发布于查看详情

新特性

  • 支持 Halo 2.26 的页面布局契约,使接入该契约的插件页面能够复用主题的侧栏、页脚和响应式布局。

问题修复

  • 修复内容区域宽度设置可能不生效或页面宽度异常的问题。
发布于查看详情

升级提示:本版本最低支持 Halo 2.26.0,请先升级 Halo 再安装此版本插件。

问题修复

  • 修复打开搜索框时因滚动条隐藏导致的页面抖动问题。 by @Copilot in #63
  • 修复通过 Escape 或点击遮罩关闭搜索框后,键盘焦点未回到触发元素的问题。 by @ruibaby in #66

开发者相关

  • 最低支持的 Halo 版本从 2.17.0 提升至 2.26.0。 by @ruibaby in #67

Full Changelog: v1.7.1...v1.8.0


Generated from v1.8.0

发布于查看详情

微信公众号同步插件配置指南
如何使用 WorkBuddy 配置 Halo 的 MCP 连接器

更新日志

新功能

  • 重复同步更新草稿:首次同步新建草稿;再次同步先检查上次那份草稿是否还在——在就更新(草稿 ID 不变,不会堆重复草稿),不在就新建。检查出错也按「不在」处理,不中断同步。
  • 开关:设置 → 微信公众号 → 重复同步更新草稿(默认开启);关闭后每次都新建。

MCP

  • 提交工具新增 draftAction:本次是更新(update)还是新建(create),提交时实查微信确认,AI 照它回答即可。
  • 预览:图片/链接补全为完整地址,样式内联在元素上(去掉 <style> 块),客户端清洗或 AI 转述时不再散架;并明确要求「原样输出,不要改写」。
  • 工具、字段与设置项文案统一精简。

升级注意

  • 反向代理需补放行 /cgi-bin/draft/get、/cgi-bin/draft/update(共 7 个路径,见 README)。不放行也不会失败,只是退化为每次都新建草稿,草稿箱会攒下重复草稿。

Full Changelog: 1.8.2...1.9.0


Generated from 1.9.0

发布于查看详情

Full Changelog: v2.6.0...v2.6.1

feat(ui): 重构液态玻璃交互效果,新增指针牵引与控件高光

  • 移除全局噪点层,改为玻璃面板内部渲染
  • 滚动视差新增指针横向偏移,合并 rAF 避免重排
  • 新增控件指针牵引高光与按压形变原点
  • 优化玻璃材质 token、色散 rim 与滤镜参数
  • 调整各元素按压缩放值与入场动画曲线

Generated from v2.6.1

发布于查看详情

新特性

  • 【插件端】新增【应用展示】主题组件(替代原悬浮名片卡片):悬浮面板 + 最小化小球双形态,集中展示小程序、App 及任意自定义类型条目
  • 【插件端/移动端】应用版本升级支持多渠道下载:直链、应用商店分发、外部链接三种方式,商店渠道可配置优先级与 Scheme
  • 【插件端/移动端】新增忘记密码 / 重置密码:邮箱验证码 + 图形验证码校验
  • 【插件端/移动端】账号密码登录支持图形验证码校验(默认关闭,兼容旧版客户端)
  • 【插件端/移动端】页面设置新增足迹地图、项目集、豆瓣等 7 个页面配置项
  • 【移动端】新增足迹插件支持

优化项

  • 【插件端/移动端】功能入口图标扩展为 动物字体 / emoji / 线性 三套风格,默认使用动物图标
  • 【插件端】外部链接形态的应用版本下载地址改为选填
  • 【插件端】菜单【链接管理】【申请审核】改为【友链管理】【友链审核】
  • 【移动端】调整app端更新弹窗逻辑

破坏性

  • 【插件端】 移除原「悬浮名片卡片」组件及相关配置项(由【应用展示】替代)
    • 影响:原悬浮卡片的配置项已删除,配置无法继承
    • 迁移:升级后请在 插件设置 → 主题组件 中重新配置应用展示面板

Full Changelog: v3.0.2...v3.0.3


Generated from v3.0.3

发布于查看详情

Full Changelog: v2.5.3...v2.6.0

feat: 新增两种模板风格

  • 新增模板风格配置项,支持经典单句和简约卡片两种展示模式
  • 新增卡片列表模板页面、样式和脚本
  • 服务端根据配置选择渲染对应模板,客户端适配交互逻辑
  • 优化主题初始化逻辑,避免首屏闪烁问题
  • 按配置控制投递按钮渲染,减少不必要的 DOM 操作
  • 新增液态玻璃模板风格

Generated from v2.6.0

发布于查看详情

新增功能

  • 新增交互宠物:薄荷机器人、奶油橘猫、星云小精灵三款内置皮肤,支持状态变化与聊天头像。
  • 新增 AI 宠物制作:上传参考图生成专属角色,支持精致立体、复古像素两种风格。
  • 支持母版与表情逐张检查、单张重新生成、表情及姿势变化、宠物改名和生成进度提示。
  • 新增背景编辑工具:按颜色选择、圆形橡皮擦、缩放与平移、边缘预览和去白边;已确认图片可再次编辑。

修复与兼容

  • 修复 AI Foundation 正式版接口变化导致写作辅助出现 NoSuchMethodError、等待超时的问题(GitHub Issue #7)。
  • 最低要求 Halo 2.26.0、AI Foundation 1.1.1;已在 Halo 2.26.1、AI Foundation 1.1.1 环境验证。

升级提醒

  • 请先备份数据库、Halo 数据目录和插件配置,再升级 Halo、AI Foundation 与本插件。
  • 升级后检查知识库索引;遇到索引兼容错误时按升级指南重建。更换向量模型或维度时需重建索引。
  • AI 宠物制作需配置支持参考图生成的生图模型。已验证 Qwen Image 2.0 Pro、3.0 Pro 和豆包 Seedream 5;其他模型建议先测试。
  • 若后台经过 EdgeOne 等代理,生图连通性测试可能受回源超时限制;该测试当前需等待生图完成,宠物生成则使用后台任务。

文档

发布于查看详情

1.2.0

发布日期:2026-10-03
主题包:dist/theme-mdocs-1.2.0.zip
适用 Halo:>= 2.25.0

小版本更新:参考语雀(Yuque)公共页面的版式,为 Docsme、MiniDocs 两个插件页面补齐页面级自定义能力,并修复首页模板编译产物被截断的问题。

新增

插件页面英雄块

参考语雀公共页面的头部区,为两个插件页面各新增一组英雄块设置:

  • 新增 启用英雄块 开关,默认关闭;开启后在页面顶部渲染英雄块,并展开下方 5 项子设置,关闭时不输出任何结构。

  • 子设置项:

    子设置项 默认值 说明
    英雄块背景图 空 通栏铺满页面顶部,自动叠加半透明遮罩保证文字可读
    英雄块标题 空 与 Logo 同一行显示;留空时回退为当前页面标题
    英雄块 Logo 空 与标题同一行,显示在标题左侧
    英雄块描述 空 标题下方的说明文字
    搜索框占位文字 请输入 回车跳转 /search?keyword=,需安装 PluginSearchWidget 搜索插件
  • 未安装 PluginSearchWidget 时不渲染搜索框,英雄块其余部分正常显示。

插件页面描述模块

接着英雄块下方,为两个插件页面各新增一组描述设置:

  • 新增 启用描述模块 开关,默认关闭;开启后渲染描述列表,关闭时不输出任何结构。
  • 描述内容以 列表形式 配置,array 组件限制 最多 3 条(max: 3),支持拖拽排序、增删;每条包含 标题 与 文本内容 两个字段。
  • 文本内容支持换行与简单 HTML(链接、加粗等),默认预置 3 条占位文案(快速上手 / 常用文档 / 了解我们),可直接修改或删除,删空后该模块不再输出。
  • 前端按三列排布:960px 以下两列,720px 以下单列。

插件页面显示页眉开关

  • 两个插件页面分组各新增 显示页眉 开关,默认开启。
  • 关闭后该插件页面顶部不再显示站点页眉,首页、文档页等其他页面不受影响。

仅显示页面模块

  • 两个插件页面分组各新增 仅显示页面模块 开关,默认关闭。
  • 关闭时页面自上而下渲染:英雄块 → 描述模块 → 页面模块 → 文档列表(Docsme 项目列表 / MiniDocs 知识库列表),与 1.1.0 行为一致。
  • 开启后不再渲染文档列表,页面内容由页面模块决定。
  • MiniDocs 的知识库阅读器挂载点 #minidocs-viewer-host 已移出该判断条件,?kb= 直达阅读不受影响。

优化

  • 两个插件页面沿用首页的公共模块片段 src/partials/home-modules.html(编译内联到各模板),首页与插件页面共用同一份模块实现。
  • 条件设置项统一使用 $get(字段 id).value 形式的联动表达式,开关切换后子设置项即时显隐,无需先保存。
  • 全部新增设置项均补齐默认值(含 descriptions 数组的 3 条占位文案),重载主题配置后即可直接使用。

修复

  • 修复首页模板重构后 templates/index.html 编译产物缺失闭合标签、只剩首行的问题(.homepage-container 未闭合导致后续内容被丢弃)。
发布于查看详情

HALO 2 博客主题

Halo-Theme-Ethereal 2.0.0

一款专为 Halo 打造的 Fuwari 风格增强型主题

更新说明

欢迎使用 Ethereal 主题 v2.0.0 正式版。请注意,本次更新会导致部分主题配置失效,需重新配置,详见 设置项迁移

本次更新带来全新「沉浸(Hero)」全屏壁纸布局、可自由编排的侧边栏小组件体系、关于页 / 打赏页页面模板与页脚卡片版式,并为全站页头、卡片与正文元素换上新的视觉语言;同时系统性打磨了换页动画、移动端流畅度与旧版浏览器兼容性。

更新完成后建议前往「主题设置 → 详细」进行 重载主题配置 & 清除模板缓存 两项操作,确保新设置项正常生效

主题文档暂未完善,更新后请自行摸索相关配置,如在主题使用中遇到问题或者建议,欢迎在 Issue 中提交,也可前往 主题交流群 进行讨论

全屏壁纸

沉浸(Hero)布局

  • 「全屏布局」新增「沉浸模式」,并支持经典 / 沉浸两种形态,且访客可在前台「显示设置」中切换;可前往「布局设置 → Banner 布局」切换体验

  • 沉浸布局下壁纸钉住视口:首页下滑时壁纸由清晰渐变至模糊、标题随滚动上移淡出;非首页固定模糊、内容贴近导航栏;显示设置支持调节背景模糊度、卡片透明度

导航栏与细节

  • 全屏模式新增首页导航栏顶部透明,向下滚动平滑过渡为玻璃底

  • Banner 署名胶囊在全屏壁纸下隐藏,透明模式移除壁纸压暗滤镜,暗色卡片底改用深灰

流畅度

  • 优化移动端壁纸切换与抽屉菜单性能,消除切换卡顿

  • 打磨换页动画:首页与内页互切时标题落位后再显现、滚动位置与内容位移锁步同步,消除抖动

首页 Banner

链接图标行

  • 标题 / 副标题下方新增一排链接按钮,支持纯图标与 图标 + 名称 胶囊两种形态;可前往「样式设置 → 标题与副标题 → Banner 链接」配置体验

图片加载

  • Banner 图片分档加载适配全部图床

  • 首屏 Banner 揭示不再等待主脚本,媒体就绪且首帧绘制后即刻显示

  • 标题 / 副标题字号改为首帧定档,修复移动端首屏字号闪变

页面头部

仪表条形态

  • 全站页头升级为「眉题 + 标题 + 统计方片 + 动作槽 + 大图标水印」仪表条形态,页头与内容拆分为独立卡片

筛选与统计

  • 分组筛选池改为全新胶囊形态(滑动选中浮块),全部分组页统一接入;页头统计随当前筛选分组实时变化

  • 「已筛选」清除钮移至统计片左侧;日程日历页面周导航移至页头,心愿墙页面分组控件移动至页头

侧边栏

小组件吸顶

  • 左右侧栏重构为「不吸顶区 + 吸顶区」,每个小组件可单独勾选「吸顶」;可前往「侧边栏 → 小组件设置」配置体验

移动端专用列表

  • 新增移动端专用小组件列表(<768px):留空时沿用「左栏 → 右栏」顺序,配置后只显示指定组件;可前往「侧边栏 → 小组件设置」配置体验

目录位置

  • 目录支持挂载在左侧栏或右侧栏(三栏布局),两栏布局继续使用悬浮目录;可前往「文章 → 目录位置」配置体验

  • 含目录的文章页仅保留前 2 个吸顶组件,高度差额由目录卡片承担

两栏「右栏模式」

  • 新增两栏布局右栏模式:侧栏与正文交换列位置,悬浮目录镜像到左侧空白槽;可前往「布局设置 → 页面布局」配置体验

配置与细节

  • 小组件详细配置外提为独立设置分组(站点统计 / 天气 / 一言 / 音乐 / 日程),同类小组件可在多个位置复用

  • 侧栏小组件不再随站内换页重建,音乐播放器与天气等组件在换页间保持状态

  • 音乐播放器未配置 ID 时显示提示卡;默认小组件列表重新编排

页脚

友情链接卡片墙

  • 页脚新增友情链接卡片墙,数据来自友情链接插件、服务端渲染;可前往「页脚 → 页脚友情链接」配置体验

  • 支持显示开关、仅在首页显示、申请友链按钮与最多显示条数

卡片版式与星芒分割带

  • 新增卡片版式页脚,卡片版式整合站点标题、友情链接(紧凑形态)、社交图标、版权与备案等信息,整块为一张卡片;可前往「页脚 → 页脚样式类型」配置体验

  • 新增星芒分割带样式;可前往「页脚 → 分割带样式类型」配置体验

正文与卡片

正文元素适配

  • 文章正文元素全面适配:图片 / iframe 圆角、分隔线、列表 marker、嵌套列表、任务列表、折叠块、视频防溢出与表格磨砂卡片

  • 折叠面板样式优化:友链页折叠面板指示器移至标题左侧,与正文折叠块统一为圆角三角

列表封面比例

  • 文章卡片列表模式新增「列表封面比例」设置:撑满卡片高度(默认)/ 固定 16:9;固定 16:9 在屏幕变窄后自动垂直居中裁切,避免封面越裁越多;可前往「布局设置 → 文章卡片布局 → 列表封面比例」配置体验

  • 移动端卡片封面比例统一为 2:1

项目集卡片

  • 项目集列表卡片重构,推荐区与全部区共用同一份卡片;悬浮反馈分整卡底色、封面放大与标题箭头三层

  • 作品详情页新增「分类区」:平台 / 类型 / 技术栈 / 标签三行展示,移除底部重复区域

卡片样式

  • 新增「卡片跟随主题色」:浅色模式下卡片背景跟随主题色相;可前往「样式设置 → 样式开关」中配置体验

  • 新增「卡片边框和阴影」:内容卡片、按钮卡、分页页码组与导航栏统一加细边框与浅阴影;可前往「样式设置 → 样式开关」中配置体验

  • 两个开关均支持访客在前台「访客样式面板」中覆盖

布局宽度

  • 全站宽屏宽度调整,充分利用宽屏空间,显示宽度不足时自动压缩内容区宽度

  • 列表页卡片最小宽度统一为 240px(项目集 / 友链 / 日程)

功能页面

关于页面

  • 新增「关于页面」模板:身份卡 / 个人简介 / 本人项目 / 最近提交 / 我的技能 / 我的朋友 / 保持联系等共 9 张卡片,后台按卡片顺序分组配置;可前往「扩展页面 → 关于页面」配置体验

  • 身份卡与侧栏「在线状态」实时同步,点击即可切换状态

  • 「订阅更新」卡片:邮箱订阅直连文章订阅插件公开接口,需安装 文章订阅 插件,缺失或未开启时整卡不渲染

打赏页面

  • 新增「打赏页面」模板:用途说明、微信 / 支付宝收款码、打赏者名单;可前往「扩展页面 → 打赏页面」配置体验

  • 文章打赏模态框底部新增「打赏页面」跳转按钮,开关与路径可前往「文章 → 打赏设置」配置体验

瞬间

  • 瞬间页面动态卡片改为全新独立卡片流:一条瞬间一张卡,头像轨道缩进、标签胶囊、右下角水印与复制链接、点赞 / 评论 / 更多操作栏

  • 内容区顶部新增全站瞬间条:服务端直出、无缝跑马灯、悬停与键盘聚焦暂停,仅大屏端(≥768px)显示;可前往「布局设置 → 瞬间预览条」配置体验

友链页即时搜索

  • 友链页新增搜索框,输入即时过滤当前分组卡片:组内无命中整组隐藏、全无命中显示空态,支持一键清空与匹配卡片错峰入场;可前往「友情链接 → 显示搜索框」配置体验

朋友圈

  • 移除黑名单功能与来源链接行

  • 时间轴改为「日期头 + 卡片」整组包裹,移动端浏览体验更佳

归档页面

  • 归档时间轴列宽与对齐调整:年份 / 日期定宽右对齐贴轴,消除内容区左侧空档

个性化与交互

樱花特效

  • 新增全站樱花特效,访客可在前台「访客样式面板」中覆盖;可前往「样式设置 → 样式开关」配置体验

  • 前台「显示设置」新增「特效」标签页与樱花开关

访客样式面板

  • 访客样式切换收敛为标签页级:总开关 + 外观 / 壁纸 / 特效三项,面板 Tab 栏按后台配置项动态生成;可前往「布局设置 → 菜单栏设置 → 访客样式切换」配置体验

按压与细节

  • 全站按钮与弹窗统一按压反馈,按下平滑泛主题色、松手回弹,覆盖外链 / 友链申请 / 分享 / 打赏等场景,并补齐友情链接模态框出场动画

  • 分区标题新增前置图标盒

  • 朋友圈 / 友链 / 标签页眉题图标更新,并移除图标的悬浮放大效果

渐进式入场

  • 归档页面条目补齐渐进入场动画

设置项迁移

从 1.2.4 升级到 2.0.0 后,后台部分设置项的位置与形式发生变化,以下设置需到新位置重新确认一遍,不再沿用旧值。

侧边栏

  • 小组件详细参数从「小组件列表」条目内移出,改为独立分组:

    • 天气 →「天气小组件」
    • 一言 →「一言小组件」
    • 音乐播放器 →「音乐播放器小组件」
    • 最近日程 →「最近日程小组件」
    • 站点统计 →「站点统计小组件」
      • 站点统计的九个开关合并为「统计项」多选
  • 条目精简为「小组件 + 吸顶」,并新增「移动端小组件」列表

  • 个人简介 / 公告取消「启用」与「显示位置」:加入小组件列表即显示,位置由所在列表决定

布局

  • 「启用分类导航栏」移至「页面布局 → 分类导航栏」分组

  • 「列表模式封面位置」移至「文章卡片布局 → 列表设置」

访客样式

  • 访客样式切换由分项开关(主题色相 / 文章布局 / 卡片样式 / 壁纸模式 / 壁纸设置 / 透明设置)收敛为「外观 / 壁纸 / 特效」三项

  • 卡片悬浮效果不再提供前台「访客样式面板」内开关,改为仅后台控制

扩展页面

  • 移除时间轴 / 技能页面的「副标题」设置项

  • 移除朋友圈的「屏蔽列表」设置项

修复与其它

问题修复

  • 修复非主题页(插件自带前台页等)被换页脚本接管导致整站样式丢失的问题,现已交还浏览器原生跳转

  • 修复瞬间页点赞与评论锚点在站内换页后失效的问题

  • 修复部分旧版 Chromium 内核浏览器(OPPO / 一加自带浏览器、旧版微信内核等)图标显示不全的问题

  • 修复认证页装饰图标规则误伤人机验证插件元素的问题

  • 修复移动端浏览器动态地址栏导致的波浪露缝与滑动屏幕壁纸抖动的问题

  • 修复分类导航栏「更多」按钮未贴右端的问题

  • 修复横幅壁纸与全屏壁纸模式下换页内容区抖动的问题

其它

  • 无障碍优化:清理冗余 aria 属性,欢迎弹窗标题层级调整为 h2

  • 依赖升级:Astro 7.2.8、sharp 0.35.4、colord 2.10.0,js-yaml 统一至 4.3.2

  • 版本号提升至 v2.0.0

  • 更新 README

  • 太多了,如有遗漏见谅

本次更新处理的 Issue 与 PR

Issue

  • #46 文章页中目录在侧边栏中的位置,可以调整就好了

  • #47 阅读模式:可隐藏左侧栏、右下角 CSDN 样式目录、正文全宽

  • #69 主页增加友链展示(底部或侧边栏)

  • #80 优化桌面端列表模式文章封面显示(显示不全 / 大屏留白多)

  • #82 SWUP 页面切换 FOUC,手机访问短暂丢失样式

  • #83 OPPO 手机浏览器底部图标加载不全(疑似腾讯 X5 内核兼容问题)

  • #84 加载人机验证插件无法显示验证码

PR

Full Changelog: v1.2.4...v2.0.0


Ethereal,由多位开源贡献者共同打造❤️

Contributors


Generated from v2.0.0

发布于查看详情
  • 修复友链邀请在审核通知与后台同步同时写入时发生的版本冲突。
  • 修复迟到通知可能覆盖较新邀请状态的问题,保护已审核、已确认状态。
  • 分离服务端快照时间与本地失败处理,避免本机时间影响数据新旧判断。
  • 修复邀请确认记录保存失败仍被报告为成功的问题。
  • 优化邀请存储,按邀请 ID 精确查询,减少全量扫描和重复写入。
发布于查看详情

修复优化

  • 修复友链邀请页面快速切换站点或标签页时,旧请求覆盖当前数据的问题。
  • 优化资讯页面搜索、刷新和分页加载,避免过期请求干扰当前结果及加载状态。
  • 取消不再需要的数据请求,减少无效请求。

节点更新

发布于查看详情

新特性

  • 在主题后台“侧边栏设置”中新增“归档页侧栏组件顺序”配置。
  • 支持通过拖动调整归档页面侧栏组件的显示顺序。
  • 支持排序以下组件:
    • 热力图(文章、瞬间、碎碎念数据)
    • 一言
    • 热门文章
    • 最新评论
    • 标签云

PJAX优化

  • 支持首次进入归档页面时初始化。
  • 支持 PJAX 切换回归档页面后重新初始化。
  • 页面离开时终止尚未完成的文章数据请求。
  • 侧栏排序会在日历、评论和标签云初始化之前完成。
  • 文章接口使用分页读取,避免只统计当前归档页数据。
  • 动态内容使用 DOM 文本节点生成,不解析不可信 HTML。

历史遗留Bug修复

  • 分类详情:修复无数据默认展示硬编码数据
  • 文章详情:修复上一篇 / 下一篇跳转方向似乎与发布时间顺序相反等问题
发布于查看详情

运行洞察 1.0.0 首次发布,为安装插件的 Halo 站点提供运行监控、性能诊断和告警通知。

  • 运行总览:CPU、内存、磁盘、JVM、GC、线程、请求耗时和错误率。
  • 插件资源排行:查看插件 CPU、内存分配速率和活动线程,辅助定位持续高消耗插件。
  • 故障诊断:内存与 GC 趋势、热点线程、死锁、日志和按需 JFR 录制。
  • 告警与通知:Halo 站内消息与邮件、多用户选择、出站 Webhook、投递历史与失败重试。
  • 问题反馈:生成可编辑的诊断描述,跳转到插件的 GitHub/GitLab Issue 创建页。
  • 事件时间线、历史数据清理、JSON 导出,以及插件停用前后的优化效果对比。

安装:下载本页附件 plugin-insight-1.0.0.jar,在 Halo Console 的“插件”页面上传安装并启用,然后打开侧边栏“运行洞察”。

环境要求:Halo 2.26.0 或更高版本,Java 21。插件在 Halo 进程内运行,无需 Python 或独立站外探针。

插件 CPU 与内存指标来自线程归因采样,属于估算;“分配内存”表示新分配字节量,不是插件当前保留的堆内存。

功能说明与截图见 README。

发布于查看详情

发布时间:2026-09-30。

**对比基线:**正式 v0.9.46 至本次 v0.9.47(提交 cf504f15),共 28 个提交,见完整差异。

系统设置

  • 重构前端系统设置,整理为外观、墙纸、Dock、菜单栏、导航菜单、小组件、通知中心、首屏加载、应用和高级十类,共 77 个配置路径。新增设置搜索、未应用提示和移动端分类返回,补充「取消」并统一底部操作区。
  • 图片字段接入 Halo 附件库、图片地址和上传;图标字段接入按需加载的 Iconify 图标库,补充中文检索、分页、预览和选择。现有素材字段包括 5 个图片、7 个图标。
  • 完善墙纸与颜色控件,菜单背景支持颜色和不透明度;应用设置采用入口列表与详情面板,保留草稿及各面板滚动位置。
  • 桌面内容挂载、桌面管理和默认布局入口集中到「小组件」。Dock 增加内置「系统设置」入口及后台显示开关。
  • 保存期间继续保留新增编辑;关闭后立即重开、权限检查取消和配置冲突均保留正确上下文。冲突提示要求核对草稿,避免误认为保存成功。

首屏加载

  • 新增「首屏加载」设置,采用两种显示方式的缩略预览及紧凑分组,默认「普通显示」。普通模式提前投影桌面图标与组件占位,预留 Dock 空间,正式节点就绪后接管,减少布局跳动。
  • 可选「开机启动」页面效果,支持每标签页首次播放或首次及主动刷新播放,以及苹果、站点和自定义标识。
  • 演示使用当前草稿,不保存配置或播放记录;退出后恢复设置焦点和上下文。
  • 效果等待 Shell、Dock、桌面或当前 App 就绪后结束,最多持续 2 秒;支持跳过、Escape 和减少动态效果。历史返回、页面恢复及自动恢复重载按规则跳过重复播放。

桌面、Dock 与窗口

  • 统一 Dock 首帧与运行时的尺寸、间距、缩放和玻璃样式;初始化完成后启用过渡,修复窄屏几何和桌面底部空间计算。
  • Dock 的空 SVG、缺失图片和加载失败图标提供文字兜底,并保留可访问名称。
  • 恢复桌面空白区域滚动,修复高度变化后的节点坐标、设置取消后的滚动上下文以及窗口状态恢复。
  • 点击指向当前完整 URL 的普通 Dock 图标可恢复最小化窗口;窗口控制按钮统一紧凑间距。
  • 手机内页隔离背景桌面焦点,进入页面后转移焦点,返回首页或切换宽屏时恢复桌面交互。

小组件与布局保存

  • 补齐首页和内页直达时的桌面组件数据加载,按可见性加载预览,共享请求与缓存,并提供失败重试。
  • 随机标签和追番组件改进独立数据请求与缓存;豆瓣收藏完善加载、失败、空状态及重试。修复追番预览、豆瓣名称、组件添加按钮对比度、天气添加时序和手机标题遮挡。
  • 组件配置变化及时同步预览;销毁后忽略迟到回调,释放事件和请求,避免旧组件覆盖当前界面。
  • 布局保存模块加载失败时保留草稿。默认布局与自定义图标采用并发检查及三方合并,保留保存期间的新增、修改和删除;同名并发新增及过期布局不会直接覆盖最新配置。

导航与页面生命周期

  • 统一 PJAX 点击判定、导航准入和离页守卫;获准离页后再暂停当前页面,取消或失败时恢复,历史导航失败时回滚浏览器状态。
  • 下载、外站、新窗口、特殊协议等链接按原生行为处理;响应进入页面前核对实际 App 和对应资源,认证响应改为完整页面导航。
  • 统一页面就绪、导航结束、错误回退及资源清理,避免旧请求、重复绑定和迟到回调干扰新页面。详细协议见主题导航契约。

内容应用与插件适配

  • **Docsme:**修复正文内链和目录定位被吸顶工具栏遮挡;改进项目上下文搜索、标题锚点冲突及 Shiki/KaTeX/Mermaid 富内容的加载、取消与失败回退。
  • **瞬间:**标签切换只更新列表区域,保留封面、头像和标题栏;分页随导航暂停或恢复。详情明确返回列表,手机列表可返回首页,评论容器按插件能力输出。
  • **友链与朋友圈:**顶部视图切换复用现有组件,完善同 App 局部导航;接入插件官方访客申请能力检测、验证码和失败重试,未开放时回退留言入口。
  • **追番:**改进状态计数异步加载、分页响应协议和请求 URL 校验,避免错误响应污染列表。
  • **图库:**真实图片加载后再显示完成状态,失败图片提供明确提示;卸载后忽略迟到布局回调,评论入口按 Halo 评论能力显示。
  • **豆瓣:**兼容新版扁平数据和旧数据结构;从 URL 恢复筛选、关键词及分页,题材和统计异步加载,失败时保留已加载列表。
  • **Steam:**热力图累计拉取完整分页,校验总数、后续页及重复记录;失败时不展示部分累计值,视图切换后忽略旧请求结果。
  • **装备:**加载更多失败后停止滚动触发的循环重试,提供显式重试按钮。
  • **归档、作者与标签:**按公开文章构建完整年月目录并校验分页,短时缓存按访问身份隔离;完善作者无文章、默认内容源和无效分页恢复,修复浅色标签图标对比度。
  • **阅读与 SEO:**修复冷打开评论锚点、目录标题冲突和编码 hash,卸载时清理监听;PJAX 仅修正可信 canonical 对应列表的分页结构化数据,保留子实体身份。
  • **Halo 与插件:**最低 Halo 要求由 >=2.25.0 提高至 >=2.26.0;新增插件页面 html(head, content) 布局,整理 24 个主题相关插件的 51 个功能范围、版本标记和生命周期边界。各范围实际采用及测试的插件版本见插件适配契约。

登录

  • 修复有公钥时密码加密失败仍可能回退明文的问题:仅提交隐藏密文字段;加密不可用、失败或超出密钥容量时阻止提交并显示错误。
  • 新增密码显示/隐藏按钮及可访问状态,保留原有用户名/密码两步登录和 Halo 登录入口。

构建、依赖与验证工具

  • 固定 Node >=24.21.0 <25、pnpm 12.5.1,更新 Alpine、Vite、Tailwind CSS、Playwright 等依赖及第三方声明;继续使用冻结安装与最小发布时间策略。
  • 改进动态分块和共享模块划分,保留合法的 persistence-conflict.js,构建后检查静态及动态资源引用,避免误删分块和运行时缺失。
  • 同步构建版本、源码指纹、资源 URL 和 CSS 身份片段;启动复用已校验的资源清单,微信二维码库在打开分享时按需加载。
  • 增加导航、登录、组件、设置、首屏、Dock、移动端焦点及错误报告回归检查;真页报告核对实际构建,保留 Shell JS 145 KiB、CSS 64 KiB 的 gzip 预算。
  • CI 改为手动触发,并在检查前准备 Chromium;公开 GitHub Release 后仍由官方 CD 完成打包、制品上传及 Halo 应用市场同步。

文档

  • 按当前功能完善 33 份现行文档,重整 README 与任务式文档索引,补充首屏加载、素材操作和装备指南。
  • 修正配置数量、真实菜单路径、插件功能范围、验证命令及发布包参数;历史发布记录和当前验收范围分别保留。
  • 补充导航契约、分阶段构建和回归记录,保留兼容性、缺少样本及真实业务操作的验收边界。

升级与验证说明

  • 使用本次代码前需将 Halo 升级至 2.26.0 或更高版本;升级前保留主题配置及上一稳定 ZIP。
  • 本次版本为 0.9.47 / 79c9ed2a8831,完整 pnpm run check、构建、资源预算和构建 smoke 通过;两份版本声明、生成资源和源码指纹一致。Shell 静态 JS gzip 为 143580 B,CSS 为 65515 B,均满足原有预算。
  • 正式标签目标提交 cf504f15d15a3365df759ffbfb51e04b8d35e23f 的 CI 检查通过;线上 Playwright Smoke 因未配置 SMOKE_BASE_URL 被跳过。
  • 本地认证只读首页返回 200,版本和指纹正确,服务端 manifest、Shell JS 与 CSS 和本地一致。reload 接口已调用;匿名首页 302 跳转登录,完整 Reload/页面 smoke 的首页身份前置检查受阻,未作为通过证据。
  • 历史构建 0.9.46 / f4cc217c2418 的设置专项及 6 组隔离浏览器检查保留其原始范围,真实配置写入为 0。
  • 前一构建 4cd9e2e00aa6 的完整检查、13 路由 Reload 与 24 场景 smoke 是该构建的历史证据,不能作为新版本候选包的通过记录。
  • 版本声明已同步为 0.9.47;生成资源及本地验证结果见项目进度。真实账号配置持久化、认证提交、插件业务写入和真机触摸的剩余范围见项目进度及发布与回滚。

Generated from v0.9.47

发布于查看详情

功能优化

  • 模型选择器对缺少所需能力的模型显示警告提示,并允许选择 by @ruibaby in #113
  • 模型选择器新增「管理模型」入口,方便快速配置模型 by @ruibaby in #113

开发者相关

  • aiModelSelector 的 requiredFeatures 从强制筛选改为非阻断提示;依赖强制筛选的插件请改用 requiredCapabilities 或在运行时校验,后端 model-options API 的筛选语义不变 by @ruibaby in #113

Full Changelog: v1.1.0...v1.1.1


Generated from v1.1.1

发布于查看详情

此版本需要 Halo 2.26.0 及以上;免费与授权功能需要应用市场 1.19.0 及以上。

旧版表单可通过「旧版表单升级」创建新版副本,检查并发布后再切换,也支持回退。历史提交仍在旧版入口查看,切换后的新提交进入新版收件箱。

新特性

  • 全新可视化设计器,支持响应式多列布局、条件逻辑、级联数据、可复用模板和自定义主题。
  • 支持表单预填、答案引用、邮箱验证、跨设备续填和数据保留策略。
  • 支持独立表单页、页面嵌入、悬浮按钮和弹窗投放,并提供自定义页面接口接入示例。
  • 新增提交收件箱和联系人管理,支持搜索筛选、分派、标签、内部备注及批量导出。
  • 支持按回答条件执行站内通知和 Webhook,并提供失败重试与重放。
  • 提供免费表单功能;许可证解锁更多表单及新增、扩展的条件自动化与 Webhook,授权失效后已有表单和已发布自动化继续运行。
  • 支持通过 MCP 查询表单、提交和分析数据,以及分派、标记提交和添加内部备注。

功能优化

  • 完善转化趋势、字段流失、访问来源、设备、活动参数和答案分布分析。
  • 优化模板创建、设计器和提交列表操作,统一提示与校验体验。
  • 文件上传支持自定义按钮文本,改善深色模式帮助文本的可读性。

问题修复

  • 修复旧版表单条目中长数字显示不准确的问题。
  • 修复重复字段导致导出失败的问题,并支持按勾选条目导出。
  • 修复异常历史表单配置可能导致主题页面无法加载的问题。

开发者相关

  • 新增新版表单公开接口及与当前发布版本一致的字段契约和接入示例。
  • 提供字段类型和自动化动作扩展点。
发布于查看详情

记得 · 重要日期与爱车(plugin-important-dates)

build
plugin

一个 Halo 2.x 插件:记录纪念日、生日与家人朋友,也管好你的座驾(汽车 / 电瓶车 / 自行车)——保险、年检、保养到期自动提醒;支持阳历/农历、多图相册、前台「生活 / 爱车」双视图、隐私脱敏,零系统配置写入、零主题文件写入。

更名说明:原名「重要日期」,1.2.0 起更名「记得」——功能已从"记日期"扩展到"记日子、记人、记爱车",旧名装不下。插件 ID(plugin-important-dates)不变,数据、设置、前台地址(/important-dates)与升级路径均不受影响。

English README | Releases | 问题反馈 | 作者:yyliucha

截图

截图 说明
仪表盘提醒小组件 控制台仪表盘小组件:到期提醒常驻仪表盘,每分钟自动刷新
后台页签 后台页签:重要日期 / 人员 / 座驾,提醒横幅 + 卡片列表 + 拖拽排序
座驾列表 座驾页签:分类图标、车牌、到期徽章(已过期 / 临近)、车主与驾驶人、前台开关
座驾表单 座驾表单(1.3.0):五个可折叠分区(基本信息 / 到期提醒默认展开);字段按车型显示——电瓶车锁定「纯电」、不留发动机号,自行车连车牌与能源都不出现
前台页面 前台 /important-dates:生活视图——重要日期 + 牵挂的人(生日与纪念日倒计时)
前台爱车视图 爱车视图:车辆卡片(脱敏车牌、到期徽章)+ 车主与驾驶人(统一徽章)+ 其他重要的人
前台相册 相册查看:点击封面全屏浏览(只读、Esc 关闭),仅显示后台勾选「展示」的照片
全站悬浮提醒 悬浮提醒:位置自选、倒计时 + 进度条、关闭方式菜单(本次 / 3 天 / 10 天 / 永久),默认只在「记得」页弹出

功能

📅 重要日期

  • 名称 + 日期 + 多行备注;阳历 / 农历(含闰月),农历自动换算当年阳历
  • 每年自动循环,列表显示"最近一次"与"还有几天";支持拖拽排序(前后台一致)
  • 自研日期选择器:阳历格内标注农历;农历选年/月(含闰月)/日实时换算;编辑时面板定位到已选日期

👤 人员

  • 姓名、昵称、关系(含"本人")、生日(阳历/农历)、性别、血型、身高、体重、喜好、备注、大头贴(官方附件上传 / 附件库选择);支持拖拽排序
  • 重要日期可关联多人,列表可按人员筛选

🚗 座驾(汽车 / 电瓶车 / 自行车)

  • 17 类分类(轿车 / SUV / MPV / 跑车 / 越野车 / 皮卡 / 旅行车 / 两厢车 / 跨界车 / 微面 / 房车 / 货车 / 客车 / 摩托车 / 电瓶车 / 自行车 / 其他)、能源类型(燃油 / 纯电 / 插混 / 油电混动 / 人力)、品牌型号、颜色、VIN、发动机号、注册与购买日期、里程、状态(在用车 / 已出售 / 已报废)
  • 按车型只显示用得上的字段(1.3.0):以「有没有发动机、有没有牌照」分档——自行车不显示车牌 / 能源类型 / 车架号 / 里程 / 购买价格;电瓶车保留车牌与车架号(称「整车编号 / 车架号」),能源类型锁定为纯电,不显示发动机号与首次登记日期;保险公司与保险 / 年检 / 车船税只对汽车、摩托车等机动车出现。编辑弹窗相应精简为五个可折叠分区(基本信息、到期提醒默认展开,相册 / 关联人员 / 更多资料收起并显示摘要),每条到期项压成一行、细节收进「设置」
  • 改车型不丢数据:把汽车改成自行车时,已有的保险 / 年检项保留在库里但不再展示、也不再提醒(表单里看不到、卡片与前台都不出现),改回汽车后原样恢复,到期日一字不改
  • 多图相册:上传或附件库多选、拖拽排序、设封面;每张可单独勾选「展示」(未勾选仅后台可见,适合行驶证、保单等证件照)
  • 附件库来源范围:可在「设置 → 照片设置」为人员大头贴与座驾相册分别指定「分类(分组)」与「存储策略」;命中不到时自动放宽范围并在弹窗中说明当前生效范围与命中数(不会出现空白列表),也可一键「显示全部图片」
  • 图片失效自动降级:附件被删除(或被其它插件的全局规则拦截)导致图片打不开时,前台封面回退车型图标、大头贴回退首字、相册显示占位说明——访客永远看不到破图;后台车辆/人员卡片会标出「含失效图片 N」「大头贴已失效」,可一键「移除失效图片」或逐张「重新选择」
  • 省流量的图片处理:列表 / 相册网格 / 前台卡片使用 ?width= 缩略图(默认 480px,可配,0=原图),点开查看仍是原图;上传超过 1.5MB 的图片会先在浏览器压缩(默认压到 1920px,可关)
  • 提醒状态机(1.2.6):到期日过了没办就是逾期(不再自动滚到下一期)——逾期期间逐日提醒,之后转「待处理」但一直保留在清单里;只有点「已办」才顺延:循环项顺延一期、保养项记为「刚做完保养」(自动更新上次保养日期并按间隔推算下次)、一次性项标记完成;支持一键撤销办理(含上次保养日期一起还原)
  • 节点式提醒节奏:提醒期每 7 天一个节点、最后 15 天加密为 15/7/3/1/0 天、逾期 1/2/3 天,每个节点只弹一次并记录在数据库(换浏览器 / 换设备都不会重置)
  • 弹窗内动作原地生效:在座驾编辑弹窗点「已办 / 撤销办理」立即写库、只刷新本行、不关闭弹窗(不必再"记得点保存")
  • 提醒可逐条忽略:前台横幅与仪表盘小组件每条右侧的 ✕ 表示"本次到期周期内不再提示"(存在浏览器里,到期日变化后自动恢复),可一键「恢复显示」,也可在设置里关闭
  • 年检规则可配置:「座驾设置 → 年检节点(默认 2,4,6,10)」「从第几年起每年上线检验(默认 11)」可按当地车管所规则调整,表单预览与提醒同步
  • 到期提醒:交强险 / 商业险 / 年检 / 保养(按上次保养 + 间隔月数推算)/ 车船税 / 自定义项;每项可设启用、提前天数与循环间隔(每年 / 每两年 / 每三年 / 不循环 / 自定义月数);已出售 / 报废不再提醒(「驾照换证」自 1.3.0 起不再挂在座驾上——它属于"人"而非"车",同一个人开两辆车不会重复提醒)
  • 保险公司填一次就够:车辆级「保险公司」全车共用(含常用公司快捷提示),个别险种可「使用其他保险公司」单独覆盖;老数据启动时自动迁移(幂等)
  • 年检自动推算:按「首次登记日期 + 车型规则」推算下一次年检(第 2/4 年免检申领 → 第 6/10 年上线检验 → 第 11 年起每年),提示阶段与依据,可「手动指定日期」覆盖;默认提前 30 天提醒
  • 年检 / 车船税默认与保险同期:日期跟随交强险到期日(可取消后独立填写),保存时写入相同日期
  • 同车同日合并提醒:交强险 / 商业险 / 车船税 / 年检同日到期时合并为一条(如「小白 · 交强险 / 商业险 / 年检」),后台列表仍逐项显示
  • 规则切换一次性提示:车辆进入上线检验期(第 6 年起)或改为每年一次(第 11 年起)时后台提示一次,点「知道了」不再重复
  • 关联人员:车主 + 常用驾驶人(可选),车辆卡片与人员卡片使用统一徽章(男生「酷」/ 女生「可爱」/ 未关联中性)

🔔 到期提醒(三处,任你挑)

  • 仪表盘小组件(Halo 2.21+):常驻仪表盘、每分钟刷新、小分页(默认每页 5 条,可调或关闭),显示完整提醒列表(仪表盘 → 编辑 → 添加部件 → 小部件中心 → 分组「记得」)
  • 后台 + 前台横幅:“「结婚纪念日」明天就到啦~” / “「小白」的交强险还有 7 天到期,记得安排一下呀~”
  • 悬浮弹窗(可选):默认只在「记得」页面弹出(访客看不到站主提醒),可切回"全站";位置 / 文案 / 倒计时可配;每个提醒节点只弹一次
  • 重要日期与座驾到期统一排序(谁近谁靠前);同一辆车同一天到期的多项自动合并为一条

👁 隐私

  • 日期、人员、车辆各有「前台展示」开关(车辆默认关闭)
  • 前台永不输出:体重、血型、身高、喜好、备注;车牌号永远脱敏(粤B·****5);VIN、发动机号、保单号、购买价格不输出;生日默认脱敏
  • 未勾选「展示」的照片不出现在前台相册

🏠 前台页面(插件默认模板,主题可选覆盖)

  • 单页 「生活 / 爱车」 双视图切换(地址栏记忆 ?view=car):生活视图=重要日期 + 牵挂的人;爱车视图=车辆卡片 + 车主与驾驶人 + 其他重要的人
  • 相册:点击车辆封面全屏滚动查看(只读)
  • 通过官方页面布局契约复用主题外壳(主题不支持时用 Halo fallback 布局);主题可放置同名模板覆盖;插件不写入、不修改任何主题文件(停用 / 卸载零残留)
  • 提供 importantDateFinder:listAll() / listAllPeople() / listAllCars() / listUpcoming(days) / listUpcomingCarEvents(days)

📊 其他

  • 导出 / 导入:JSON(v3,含人员与座驾),判重跳过、不覆盖,兼容旧版导出文件

数据与合规

  • 数据存于 Halo 扩展存储(importantdates.halo.run/v1alpha1),底层即站点数据库(H2 / MySQL / PostgreSQL),与站点同库同备份
  • 零系统配置写入(不使用「代码注入」,脚本经官方 TemplateHeadProcessor 输出)、零主题文件写入
  • 无任何联网请求,不采集、不上传任何用户数据

兼容性

  • Halo 2.26 及以上(按官方 2.26 文档与扩展点实现;Java 17 字节码;1.3.0 在真实 2.26 实例上以既有数据(含 10 辆历史车辆)完成功能自测 18/18 与前台回归 5/5,覆盖卡片到期项、车型联动、切车型不丢数据、折叠分区与老数据纠偏)
  • 管理员安装后默认拥有全部权限,无需手动配置角色权限

安装与升级

  1. 从 Releases 下载 plugin-important-dates-*.jar;
  2. Halo 后台 → 插件 → 安装 → 本地安装 → 上传 jar → 启用(左侧菜单 内容 → 记得);
  3. 前台访问 https://你的域名/important-dates。

升级:停用 → 卸载旧版 → 安装新 jar → 启用(数据不丢失)。若使用页面静态化 / 缓存插件,升级后清理一次页面缓存。

使用(后台)

  • 新增日期:名称、日期类型、日期(阳历点选 / 农历选年月日)、关联人员(可多选)、备注;可设「重要」与「前台展示」
  • 人员页签:维护人员信息与「前台展示」;可拖拽排序
  • 座驾页签:维护车辆档案、相册(含逐张「展示」勾选)、到期项;可拖拽排序;卡片上可直接切换「前台展示」
  • 导出 / 导入:页面右上角
  • 提醒与隐私配置:插件 → 记得 → 设置(提醒设置、全站悬浮提醒、展示设置、隐私设置、照片设置、座驾设置)

全站悬浮提醒(可选,设置驱动)

  • 启用:经官方 TemplateHeadProcessor 输出脚本,关闭即不输出,停用 / 卸载随插件消失
  • 位置:右下角 / 左下角 / 右上角 / 左上角 / 底部居中 / 屏幕中间(默认右下角)
  • 文案占位符:{title}、{whenText}、{daysUntil}、{dateText}、{nextSolarDate}
  • 行为:自动关闭(默认 8 秒,含倒计时 + 进度条);点 × 可选本次 / 3 天 / 10 天 / 永久;站主可设 × 默认行为与是否显示关闭菜单

历史升级提示:1.0.21 及以前使用「代码注入」方式,1.0.30–1.1.1 曾自动维护注入片段;自 1.1.2 起改为官方扩展点。若站点仍留有 id-toast:start/end 片段,请到「系统设置 → 代码注入」删除一次。

主题模板(自定义展示,可选)

插件不写入主题文件。想完全自定义时,在主题放置 templates/important-dates.html(TemplateNameResolver 优先使用;删除即回退插件默认模板)。

可用数据:

  • 生活视图:title、dates、people、reminders、showImportantTag、showAvatar
  • 爱车视图:cars(含 plateMasked、coverUrl、photos、skin、events)、carEvents、carPeople、otherPeople、personCars、showCarSection、carSkinEnabled、view

重新构建(可选)

需 JDK 17+(已在 JDK 23 验证)与 Node.js 18+:

cd plugin-important-dates
./gradlew build

构建结果位于 build/libs/plugin-important-dates-<版本>.jar(当前版本:1.3.0)。

版本说明:最新正式版 1.3.0(座驾按车型分档只显示用得上的字段——电瓶车锁定纯电、自行车不留车牌与能源;改车型保留数据不再提醒、改回即恢复;编辑弹窗改为可折叠分区;不再把「驾照换证」挂在座驾上;并修复 1.2.6 起后台座驾卡片的到期项标签会整块消失的缺陷)。装包后请强刷一次浏览器(Ctrl+Shift+R)。

更早:1.2.6 提醒状态机(已办才滚动、逾期逐日提醒、节点式提醒、保养项「已办」= 刚做完保养、一键撤销)与 1.2.5 写操作加固与图片失效降级、1.2.4 拖拽 503 修复、1.2.3 卡片样式修复、1.2.2 附件库范围修复。

License

MIT

发布于查看详情

为 SpringForAll 社区制作的独立 Halo 主题,版本 1.0.4。

采用 Spring 绿、石墨色和暖白底色,使用编辑型首页、轻量文章列表与独立阅读布局。历史文章没有封面时自动显示与分类匹配的视觉占位。源码为 Thymeleaf + CSS + 原生 JavaScript,无需 Node 构建、在线字体或前端框架。

1.0.4 更新

  • 修复 Shiki 代码高亮插件与主题重复工具栏、复制按钮及外层边框的问题。
  • Shiki 代码块由插件负责展示,普通代码块使用内置 highlight.js 11.12.0 高亮与主题复制栏,资源随主题打包,无外部 CDN 请求。
  • 读取 language-、lang-、sourceCode 和 data-language 标记;显式纯文本保持原样,未标记代码使用有限语言识别。
  • 统一深色工具栏与代码区,第三方库许可证见 THIRD-PARTY-LICENSES.txt。

1.0.3 更新

  • 页脚改为品牌导航、横向友情链接、版权署名三层结构,统一链接样式。
  • 移动端友情链接自然换行,保留所有链接和后台设置。

1.0.2 更新

  • 页脚增加「友情链接」入口:SpringForAll 社区、程序猿DD、OpenWrite、FastGoing、灵蟹创作。
  • 增加「春野主题 · SpringForAll 出品」主题署名,使用完整网址,部署在其他域名时仍可访问出品方。
  • 名称、网址、品牌区域和主题署名开关可在 Halo 主题设置 → 页脚中调整。
  • 保留 Halo 技术署名;主题介绍页上线后可单独配置其地址。
  • 品牌入口是普通公开链接,不包含访问追踪脚本。

1.0.1 更新

  • 公共布局至少占满视口高度,短页面页脚自然贴底,长页面正常滚动。
  • 高屏桌面上的归档列表适度增加行距。
  • 更新静态资源版本,避免旧 CSS 缓存。
发布于查看详情

问题修复&新增

  • 修复Pjax导致的评论组件不兼容问题(移除Pjax)
  • 本次更新建议所有1.1.2版本用户更新,此更新为破坏性更新,老版本Halo可能不兼容
  • 新增图库页面标签页显示
  • 修复若干BUG,适配2.2X.X版本Halo
  • 注意本次更新前,请全量备份主题数据,避免更新造成数据丢失
  • 注意本次更新前,请全量备份主题数据,避免更新造成数据丢失

食用教程

主题食用教程

意见建议

  • 欢迎各位小伙伴提出建议~
发布于查看详情

记得 · 重要日期与爱车(plugin-important-dates)

build
plugin

一个 Halo 2.x 插件:记录纪念日、生日与家人朋友,也管好你的座驾(汽车 / 电瓶车 / 自行车)——保险、年检、保养到期自动提醒;支持阳历/农历、多图相册、前台「生活 / 爱车」双视图、隐私脱敏,零系统配置写入、零主题文件写入。

更名说明:原名「重要日期」,1.2.0 起更名「记得」——功能已从"记日期"扩展到"记日子、记人、记爱车",旧名装不下。插件 ID(plugin-important-dates)不变,数据、设置、前台地址(/important-dates)与升级路径均不受影响。

English README | Releases | 问题反馈 | 作者:yyliucha

截图

截图 说明
仪表盘提醒小组件 控制台仪表盘小组件:到期提醒常驻仪表盘,每分钟自动刷新
后台页签 后台页签:重要日期 / 人员 / 座驾,提醒横幅 + 卡片列表 + 拖拽排序
座驾列表 座驾页签:分类图标、车牌、到期徽章(已过期 / 临近)、车主与驾驶人、前台开关
座驾表单 座驾表单:分类(含电瓶车 / 自行车)、能源、证照与里程、多图相册、到期项
前台页面 前台 /important-dates:生活视图——重要日期 + 牵挂的人(生日与纪念日倒计时)
前台爱车视图 爱车视图:车辆卡片(脱敏车牌、到期徽章)+ 车主与驾驶人(统一徽章)+ 其他重要的人
前台相册 相册查看:点击封面全屏浏览(只读、Esc 关闭),仅显示后台勾选「展示」的照片
全站悬浮提醒 悬浮提醒:位置自选、倒计时 + 进度条、关闭方式菜单(本次 / 3 天 / 10 天 / 永久),默认只在「记得」页弹出

功能

📅 重要日期

  • 名称 + 日期 + 多行备注;阳历 / 农历(含闰月),农历自动换算当年阳历
  • 每年自动循环,列表显示"最近一次"与"还有几天";支持拖拽排序(前后台一致)
  • 自研日期选择器:阳历格内标注农历;农历选年/月(含闰月)/日实时换算;编辑时面板定位到已选日期

👤 人员

  • 姓名、昵称、关系(含"本人")、生日(阳历/农历)、性别、血型、身高、体重、喜好、备注、大头贴(官方附件上传 / 附件库选择);支持拖拽排序
  • 重要日期可关联多人,列表可按人员筛选

🚗 座驾(汽车 / 电瓶车 / 自行车)

  • 17 类分类(轿车 / SUV / MPV / 跑车 / 越野车 / 皮卡 / 旅行车 / 两厢车 / 跨界车 / 微面 / 房车 / 货车 / 客车 / 摩托车 / 电瓶车 / 自行车 / 其他)、能源类型(燃油 / 纯电 / 插混 / 油电混动 / 人力)、品牌型号、颜色、VIN、发动机号、注册与购买日期、里程、状态(在用车 / 已出售 / 已报废)
  • 多图相册:上传或附件库多选、拖拽排序、设封面;每张可单独勾选「展示」(未勾选仅后台可见,适合行驶证、保单等证件照)
  • 附件库来源范围:可在「设置 → 照片设置」为人员大头贴与座驾相册分别指定「分类(分组)」与「存储策略」;命中不到时自动放宽范围并在弹窗中说明当前生效范围与命中数(不会出现空白列表),也可一键「显示全部图片」
  • 图片失效自动降级:附件被删除(或被其它插件的全局规则拦截)导致图片打不开时,前台封面回退车型图标、大头贴回退首字、相册显示占位说明——访客永远看不到破图;后台车辆/人员卡片会标出「含失效图片 N」「大头贴已失效」,可一键「移除失效图片」或逐张「重新选择」
  • 省流量的图片处理:列表 / 相册网格 / 前台卡片使用 ?width= 缩略图(默认 480px,可配,0=原图),点开查看仍是原图;上传超过 1.5MB 的图片会先在浏览器压缩(默认压到 1920px,可关)
  • 提醒状态机(1.2.6):到期日过了没办就是逾期(不再自动滚到下一期)——逾期期间逐日提醒,之后转「待处理」但一直保留在清单里;只有点「已办」才顺延:循环项顺延一期、保养项记为「刚做完保养」(自动更新上次保养日期并按间隔推算下次)、一次性项标记完成;支持一键撤销办理(含上次保养日期一起还原)
  • 节点式提醒节奏:提醒期每 7 天一个节点、最后 15 天加密为 15/7/3/1/0 天、逾期 1/2/3 天,每个节点只弹一次并记录在数据库(换浏览器 / 换设备都不会重置)
  • 弹窗内动作原地生效:在座驾编辑弹窗点「已办 / 撤销办理」立即写库、只刷新本行、不关闭弹窗(不必再"记得点保存")
  • 提醒可逐条忽略:前台横幅与仪表盘小组件每条右侧的 ✕ 表示"本次到期周期内不再提示"(存在浏览器里,到期日变化后自动恢复),可一键「恢复显示」,也可在设置里关闭
  • 年检规则可配置:「座驾设置 → 年检节点(默认 2,4,6,10)」「从第几年起每年上线检验(默认 11)」可按当地车管所规则调整,表单预览与提醒同步
  • 到期提醒:交强险 / 商业险 / 年检 / 保养(按上次保养 + 间隔月数推算)/ 车船税 / 驾照换证 / 自定义项;每项可设启用、提前天数与循环间隔(每年 / 每两年 / 每三年 / 不循环 / 自定义月数);已出售 / 报废不再提醒
  • 保险公司填一次就够:车辆级「保险公司」全车共用(含常用公司快捷提示),个别险种可「使用其他保险公司」单独覆盖;老数据启动时自动迁移(幂等)
  • 年检自动推算:按「首次登记日期 + 车型规则」推算下一次年检(第 2/4 年免检申领 → 第 6/10 年上线检验 → 第 11 年起每年),提示阶段与依据,可「手动指定日期」覆盖;默认提前 30 天提醒
  • 年检 / 车船税默认与保险同期:日期跟随交强险到期日(可取消后独立填写),保存时写入相同日期
  • 同车同日合并提醒:交强险 / 商业险 / 车船税 / 年检同日到期时合并为一条(如「小白 · 交强险 / 商业险 / 年检」),后台列表仍逐项显示
  • 规则切换一次性提示:车辆进入上线检验期(第 6 年起)或改为每年一次(第 11 年起)时后台提示一次,点「知道了」不再重复
  • 关联人员:车主 + 常用驾驶人(可选),车辆卡片与人员卡片使用统一徽章(男生「酷」/ 女生「可爱」/ 未关联中性)

🔔 到期提醒(三处,任你挑)

  • 仪表盘小组件(Halo 2.21+):常驻仪表盘、每分钟刷新、小分页(默认每页 5 条,可调或关闭),显示完整提醒列表(仪表盘 → 编辑 → 添加部件 → 小部件中心 → 分组「记得」)
  • 后台 + 前台横幅:“「结婚纪念日」明天就到啦~” / “「小白」的交强险还有 7 天到期,记得安排一下呀~”
  • 悬浮弹窗(可选):默认只在「记得」页面弹出(访客看不到站主提醒),可切回"全站";位置 / 文案 / 倒计时可配;每个提醒节点只弹一次
  • 重要日期与座驾到期统一排序(谁近谁靠前);同一辆车同一天到期的多项自动合并为一条

👁 隐私

  • 日期、人员、车辆各有「前台展示」开关(车辆默认关闭)
  • 前台永不输出:体重、血型、身高、喜好、备注;车牌号永远脱敏(粤B·****5);VIN、发动机号、保单号、购买价格不输出;生日默认脱敏
  • 未勾选「展示」的照片不出现在前台相册

🏠 前台页面(插件默认模板,主题可选覆盖)

  • 单页 「生活 / 爱车」 双视图切换(地址栏记忆 ?view=car):生活视图=重要日期 + 牵挂的人;爱车视图=车辆卡片 + 车主与驾驶人 + 其他重要的人
  • 相册:点击车辆封面全屏滚动查看(只读)
  • 通过官方页面布局契约复用主题外壳(主题不支持时用 Halo fallback 布局);主题可放置同名模板覆盖;插件不写入、不修改任何主题文件(停用 / 卸载零残留)
  • 提供 importantDateFinder:listAll() / listAllPeople() / listAllCars() / listUpcoming(days) / listUpcomingCarEvents(days)

📊 其他

  • 导出 / 导入:JSON(v3,含人员与座驾),判重跳过、不覆盖,兼容旧版导出文件

数据与合规

  • 数据存于 Halo 扩展存储(importantdates.halo.run/v1alpha1),底层即站点数据库(H2 / MySQL / PostgreSQL),与站点同库同备份
  • 零系统配置写入(不使用「代码注入」,脚本经官方 TemplateHeadProcessor 输出)、零主题文件写入
  • 无任何联网请求,不采集、不上传任何用户数据

兼容性

  • Halo 2.26 及以上(按官方 2.26 文档与扩展点实现;Java 17 字节码;1.2.6 在全新 2.26 实例经保养项语义、状态机、提示与撤销、图片失效降级、浏览器端到端 13/13 等专项验证)
  • 管理员安装后默认拥有全部权限,无需手动配置角色权限

安装与升级

  1. 从 Releases 下载 plugin-important-dates-*.jar;
  2. Halo 后台 → 插件 → 安装 → 本地安装 → 上传 jar → 启用(左侧菜单 内容 → 记得);
  3. 前台访问 https://你的域名/important-dates。

升级:停用 → 卸载旧版 → 安装新 jar → 启用(数据不丢失)。若使用页面静态化 / 缓存插件,升级后清理一次页面缓存。

使用(后台)

  • 新增日期:名称、日期类型、日期(阳历点选 / 农历选年月日)、关联人员(可多选)、备注;可设「重要」与「前台展示」
  • 人员页签:维护人员信息与「前台展示」;可拖拽排序
  • 座驾页签:维护车辆档案、相册(含逐张「展示」勾选)、到期项;可拖拽排序;卡片上可直接切换「前台展示」
  • 导出 / 导入:页面右上角
  • 提醒与隐私配置:插件 → 记得 → 设置(提醒设置、全站悬浮提醒、展示设置、隐私设置、照片设置、座驾设置)

全站悬浮提醒(可选,设置驱动)

  • 启用:经官方 TemplateHeadProcessor 输出脚本,关闭即不输出,停用 / 卸载随插件消失
  • 位置:右下角 / 左下角 / 右上角 / 左上角 / 底部居中 / 屏幕中间(默认右下角)
  • 文案占位符:{title}、{whenText}、{daysUntil}、{dateText}、{nextSolarDate}
  • 行为:自动关闭(默认 8 秒,含倒计时 + 进度条);点 × 可选本次 / 3 天 / 10 天 / 永久;站主可设 × 默认行为与是否显示关闭菜单

历史升级提示:1.0.21 及以前使用「代码注入」方式,1.0.30–1.1.1 曾自动维护注入片段;自 1.1.2 起改为官方扩展点。若站点仍留有 id-toast:start/end 片段,请到「系统设置 → 代码注入」删除一次。

主题模板(自定义展示,可选)

插件不写入主题文件。想完全自定义时,在主题放置 templates/important-dates.html(TemplateNameResolver 优先使用;删除即回退插件默认模板)。

可用数据:

  • 生活视图:title、dates、people、reminders、showImportantTag、showAvatar
  • 爱车视图:cars(含 plateMasked、coverUrl、photos、skin、events)、carEvents、carPeople、otherPeople、personCars、showCarSection、carSkinEnabled、view

重新构建(可选)

需 JDK 17+(已在 JDK 23 验证)与 Node.js 18+:

cd plugin-important-dates
./gradlew build

构建结果位于 build/libs/plugin-important-dates-<版本>.jar(当前版本:1.2.6)。

版本说明:最新正式版 1.2.6(提醒状态机:已办才滚动、逾期逐日提醒后转待处理、节点式提醒、保养项「已办」= 刚做完保养、一键撤销、前台只显示未逾期的待办项、弹窗内动作原地生效、提示语人性化;并含 1.2.5 写操作加固与图片失效降级、1.2.4 拖拽 503 修复、1.2.3 卡片样式修复、1.2.2 附件库范围修复)。装包后请强刷一次浏览器(Ctrl+Shift+R)。

License

MIT

发布于查看详情

v2.2.40:Halo 2.26 与前端依赖适配

变化

  • 主题最低 Halo 版本提高到 2.26.0,沿用官方 layout.html 布局契约;Halo 2.25 及更早版本不能安装本版。
  • 升级 Alpine.js、Swup、daisyUI、Vite、TypeScript 等前端与构建依赖,生成 2.2.40 版本化资源,避免页面缓存继续引用旧版脚本和样式。Node 版本文件和 CI 固定为 24.21.0,包管理器为 pnpm 12.6.0。
  • CD 打包任务补齐 lint 和格式检查,与标签 Quality Gate 的主要质量门禁保持一致。

发布前验证

  • Node 24.21.0 / pnpm 12.6.0:无例外冻结安装、lint、格式、依赖审计及完整构建通过;27 项静态插件契约和 33 项插件读取检查通过,审计报告 0 个已知漏洞。
  • 本地 Halo Pro 2.26.1 临时激活本主题并刷新页面缓存:114 个 URL 为 113 个 200、已移除入口的 /terms 为预期 404。真实浏览器验证首页→文章 PJAX、404 回退后返回文章、独立日历整页导航,以及 390px 友链页;测试后恢复原激活主题。
  • AI Assistant 3.1.0、Restricted Reading 1.9.1、Schedule Calendar 3.5.0 的主题相关读取和展示表面已定向复测;自动摘要注入、匿名受限组件完整交互及插件后台业务不在通过范围。环境、源码指纹及测试边界见依赖适配记录。

Generated from v2.2.40

发布于查看详情

v2.2.39:分类分页、友情链接与代码块修复

修复

  • #40:分类页停止把下一页文章无限追加到当前页。分类切换和翻页使用真实链接,文章数、地址和分页器保持一致。
  • #38:移除旧版 Links 分组字段调用,修正首页友链分组筛选的 Thymeleaf 作用域,并补齐 Halo 标准布局 templates/layout.html,避免友链页因 EL1008E 返回 500。
  • #36:让文章中的 pre code 保留代码块原有空白与换行,修复多行代码挤成一行。

插件与页面适配

  • 支持 PluginLinks 2.3.0 的访客申请接口与权限门控;原独立 Friends 页面退役,友链动态统一位于 /links?view=friends。旧菜单中的 /friends 项会指向新入口。
  • 更新 Douban 数据字段兼容、页面切换时的组件清理、文章热力图及分类/标签异常页码处理。插件相关验证结果和未覆盖场景见适配记录。
  • 主题声明的最低 Halo 版本仍为 2.23.0;本次最新插件组合在本地 Halo Pro 2.26.1 上验证。各插件自己的最低 Halo 要求仍须分别满足。

验证

  • Node.js 24.19.0、pnpm 10.34.5:冻结依赖安装、lint、格式检查、依赖审计、完整构建及主题 ZIP 二次检查通过;静态插件契约 27 项通过。
  • Halo Pro 2.26.1、PluginLinks 2.3.0、本版主题代码:插件页面和公开 API 深度读取检查 33/33 通过。
  • 真实浏览器避开旧页面缓存后,/categories 首屏和滚动后均为 6 篇,第二页是另外 6 篇;/links 正常显示;含 26 个代码块的文章中,抽样多行代码的计算样式为 white-space: pre。精确环境与结果

本次验证覆盖上述主题页面和读取链路。插件后台写入、第三方 RSS 可达性,以及此前偶发的 Bilibili 上游超时和装备插件分页告警,不包含在这三项主题修复的通过结论中。


Generated from v2.2.39

发布于查看详情

v1.2.6 正式版 · 提醒状态机与体验打磨

测试与升级说明

本版已在全新 Halo 2.26 实例完成回归:保养项语义 4/4、已办才滚动/节奏 B/原地生效 4/4、提醒状态机 7/7、提示与撤销 7/7、图片失效降级 7/7、浏览器端到端 13/13、附件库范围 5/5、拖拽排序 6/6。长期运行、多主题兼容、极端数据量等场景未覆盖。

升级后请强刷一次浏览器(Ctrl+Shift+R):控制台会缓存插件的控制台包与提示脚本,不强刷可能看不到新界面或仍跑旧提示。

升级后你会看到的变化:以前"到期日过了就自动当作进入下一期"的行为已取消——现在只有你点「已办」才会顺延。所以现有数据里凡是"到期日已过、但你一直没确认办过"的循环项,会统一以「已逾期」出现在后台(红色 / 待处理),点一次「已办」即可把它顺延到下一期。

一、提醒状态机(本次核心)

  • 已办才滚动:到期日过了没办就是逾期,不再静默滚到下一期;只有点「已办」才按循环间隔顺延,且保证滚到未来。
  • 逾期窗口 3 天(可配 1–30):逾期期间每天文案不同;超过窗口转「待处理」——不再主动提醒,但永远保留在清单里,直到你「已办」或「忽略」(不再像以前那样满 30 天直接消失)。
  • 已办语义:循环项(保险 / 车船税 / 驾照等)顺延一期;保养项记为「刚做完保养」(自动更新上次保养日期并按间隔推算下次);一次性项标记完成、不再提醒。
  • 撤销办理:一键把到期日(保养项连同上一次保养日期)还原到办理前,误操作可自救。
  • 忽略 / 恢复:本周期不再提醒,到期日一变自动恢复。

二、提醒节奏(节点式)

进入提醒期后按节点提醒,每个节点只弹一次并写库(关浏览器、换设备都不会重置):窗口内每 7 天一个节点(提前 60 天 → 60、53、46、39、32、25、18 天);最后 15 天加密为 15 / 7 / 3 / 1 / 0 天;逾期 1 / 2 / 3 天。

三、前台与展示

  • 前台只显示"待办且未逾期":已办、已忽略、逾期项都不出现在访客可见面(横幅 / 悬浮提示 / 卡片徽章),逾期项只在后台可见(可在设置里打开前台显示)。
  • 悬浮提示默认只在「记得」页面弹出(访客浏览其它页面看不到站主提醒),也可切回"全站";提示数据每次实时获取,站点装了页面缓存也不会再弹旧提醒。
  • 去掉前台排序/筛选工具条:前台完全按后台拖拽顺序显示。
  • 跨年软提示:动作结果的年份不是今年时,提示里会轻轻提醒一句(防连点误操作)。

四、体验与文案

  • 弹窗内动作原地生效:编辑座驾时点「已办 / 撤销办理」立即写库、只刷新本行、不关闭弹窗,不再需要"记得点保存"。
  • 提示语全面人性化:日期改中文(2027 年 9 月 23 日)、成功提示口语化(办好了 ✅ / 保养记好啦 ✅ / 已撤销 ✅)、报错去掉 HTTP 状态码与技术术语。

五、移除(按使用反馈精简)

后台「自检」入口与「操作日志」入口(并停止写入日志数据);列表下方"数据存储于…"与仪表盘小组件底部"来自「记得」插件…"说明;设置里的「关于」与「日志设置」分组(设置页由 9 个页签精简为 6 个)。

六、修复的历史问题

开启「全站悬浮提醒」会导致「记得」页面内容整块消失(注入脚本用了自闭合 <script />);在座驾编辑弹窗保存会清空提醒状态;编辑弹窗提醒行整块不渲染(缺少 import 导致渲染报错)。

七、兼容与升级

Halo 2.26 及以上;由 1.2.0 – 1.2.5 升级:停用 → 卸载 → 安装本版 → 启用,数据不会丢失(新增字段缺失时按"待办"处理,无需迁移脚本)。若主题目录存在 templates/important-dates.html 覆盖文件,请用仓库 docs/theme-override/ 下最新版替换。

发布于查看详情

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

发布于查看详情

微信公众号同步插件配置指南

更新日志

本次升级要点

本次更新以微信素材缓存体系为主线:新增素材上传缓存,避免同一张图反复上传挤占微信素材库;配套补齐了缓存库的自动备份、每日清理、失效自愈与凭据脱敏;同时新增「一级标题对齐方式」配置项,并在同步任务记录中留存文章标题。

  • 重复同步同一篇文章时,图片上传次数显著下降,微信素材库占用更可控
  • 缓存库有了备份与自动回收,长期运行不再无限增长
  • 封面素材在微信侧被删除导致的 40007 失败,现在能自动自愈
  • 日志与任务失败原因中的 access_token 等凭据已脱敏,避免凭据泄露

新增功能

1. 微信素材上传缓存

  • 按文件内容指纹缓存已上传素材,同一份文件只向微信上传一次,之后直接复用 media_id / 图片地址
  • 命中缓存后仍会校验资源是否真实存在:
    • 正文图片:校验微信图片地址(HEAD 请求,不走代理)
    • 永久素材:用 material/get_material 查询素材本身
  • 校验结果为三态(明确存在 / 明确不存在 / 无法判定),只有「明确存在」才复用;失效或判定不出结论时重新上传,宁可多传一份,也不让草稿发不出去
  • 新增接口调用支持。若启用代理,请同步配置 material/get_material 接口的代理规则。

2. 媒体缓存库每日自动备份

  • 时间:每天 1 点
  • 方式:SQLite VACUUM INTO 生成一致快照
  • 位置:<插件数据目录>/backups
  • 轮转:只保留最新 3 份
  • 备份失败仅记录日志,不影响缓存读写与文章同步

3. 新增 MCP 工具

工具(本地名) 类型 参数 说明
wechat_sync_preview 只读 postName 获取预览信息:按与同步一致的规则美化正文,返回美化后的正文 HTML、上传后实际使用的标题(64 字上限)、摘要(120 字)、作者(8 字)、原文链接(阅读原文)与留言设置,以及因超过微信长度上限被截断的字段名;不调用微信接口、不写任何数据,可反复调用
wechat_sync_submit 写操作 postName 提交同步到微信:先做提交前预检(微信配置、封面图、文章是否正在同步中),通过后创建后台同步任务并立即返回;同步时封面与正文图片会自动转存到微信素材库、正文按公众号排版美化,完成后可在公众号草稿箱看到草稿
wechat_sync_status 只读 postName 查询同步状态:返回该文章最近一次同步的状态与说明——PENDING(已提交、正在后台执行)/ SUCCESS(已写入公众号草稿箱)/ FAILED(失败,message 为微信返回的失败原因)/ NONE(尚未同步过);只读取任务记录,不调用微信接口、不写任何数据,提交同步后可用它轮询结果
wechat_cache_cleanup 写操作 无 清理素材缓存:立即执行一次素材缓存清理(与每天 0 点的计划任务同一套规则),返回本次删除条数与生效的保留策略——deletedRecords(删除条数)、remainingRecords(剩余记录数)、retentionDays(生效的保留策略:保留天数,如 "30";「全部保留」时为 never)、cutoff(判定时间);只删除「超过保留期且最近未被使用」的记录,仍被复用的缓存不会误删,也不影响每天 0 点的自动清理

4. 支持配置一级标题(H1)对齐方式

  • 配置项:正文美化 → 一级标题对齐方式(h1Align)
  • 取值:左对齐 / 居中 / 右对齐,默认居中
  • 正文中 H1 若已自带对齐方式(行内 text-align 或 align 属性),保持原样,本项不生效

5. 任务记录留存提交时的文章标题

  • 任务落到终态(SUCCESS / FAILED)后,输入快照会被清空以释放正文 HTML 占用的数据库空间
  • 文章标题现独立保存在任务记录 spec.postTitle 上,快照清空后仍能在任务列表里认出「这条任务是哪篇文章」

问题修复

  • 凭据可能写入日志与任务失败原因:新增脱敏处理,access_token、secret、appsecret、authorization、sign、password 等键的值统一替换为 ***;接口名与参数名保留,不影响排查。appid 为公开标识,不做脱敏

升级注意事项

  • 目录权限:新增 SQLite 缓存库与 backups 备份目录,插件数据目录需具备写权限;备份轮转只保留 3 份,磁盘占用可控
  • 容器部署确认时区:清理(0 点)与备份(1 点)按 JVM 本地时间触发,请确保容器的 TZ / 系统时区设置正确,否则会按 UTC 执行
  • 反向代理需放行 material/get_material:未放行时永久素材校验会「无法判定」,插件将保守地重新上传封面——功能不受影响,但会增加素材库占用与上传耗时
  • 日志中的凭据已脱敏:access_token 等显示为 ***,属预期行为,非异常
  • MCP 客户端可接入
  • 无需数据迁移:缓存库为空时会自动建立,并在首次同步中填充,不影响已有同步任务记录

Full Changelog: 1.7.0...1.8.0


Generated from 1.8.0

发布于查看详情

修复

  • 修复插件在已安装并启用 AI 基座的情况下仍然启动失败、一直处于 FAILED 的问题。原因是 AI 基座被声明为可选依赖 ai-foundation?,而 PF4J 不会把可选依赖放进依赖图,没有任何启动顺序保证:本插件可能先于 AI 基座启动,此时看不到 run.halo.aifoundation.* 的类,Spring 装配时抛 NoClassDefFoundError: run/halo/aifoundation/tool/ToolDefinition。现已声明为必选依赖,并给仅剩的两个引用 AI 基座类型的组件补上条件装配。(#42)
  • 修复洞察图谱「问这一块」在匿名访问时被重定向到登录页、不跟随站点匿名设置的问题。提问接口未授予匿名角色,请求在 Halo 鉴权层就被拒绝,走不到插件自己的访问模式判断。现在是否允许匿名提问完全由「AI 安全设置」里的访问模式决定;站点要求登录时会返回明确提示,而不是跳转登录页。(#41)
  • 修复前台对话输出代码块时,消息内容被撑出面板右侧并被裁掉的问题。代码块现在在气泡内横向滚动。(#39)

新增

  • 洞察图谱新增「文章页默认折叠」设置。开启后文章页的图谱默认收起,读者点击标题栏再展开,避免占用正文阅读空间;读者手动展开或收起后会保留自己的选择。(#40)

升级提示

Important

从此版本开始,AI 基座 是必选依赖。如果尚未安装,请先安装并启用 AI 基座并配置可用模型,否则插件不会启动。

这不是能力收紧:在此之前,没有 AI 基座的环境同样无法启动,只是报错是一段难以理解的堆栈;现在会直接提示依赖缺失。

感谢 kajhg(#42,提供了完整堆栈和非常到位的排查)、SwaggyMacro(#39 #40 #41)的反馈。


Generated from 4.0.6

发布于查看详情

新特性

  • 新增免费版功能,无需许可证即可使用 Copilot 补全、文章属性生成和文章总结;已有 RAG 服务在许可证失效后仍可继续使用(需应用市场 1.19.0 或更高版本)
  • 编辑器 Agent 支持添加多个不连续的内容标注,并为每个标注设置独立的处理要求

功能优化

  • 提升编辑器 Agent 联网研究在慢模型和异常情况下的稳定性
  • 优化 Markdown 代码高亮加载,减小初始化体积并移除 WebAssembly 运行时

问题修复

  • 修复编辑器 Agent 因网络或代理异常中断后无法重新发送指令的问题
发布于查看详情

根因

设置服务会把同一主机的签名凭证归并成「单个元素、内嵌换行」的形态(host: access: X + 换行 + host: secret: Y),而签名解析把列表元素当作一行处理——归一化形态的值因包含换行被防注入检查整条拒绝。自 1.6.4 引入 SigV4 支持以来,通过设置页配置的签名凭证从未真正生效过,私有桶请求全部以未签名发出,R2 回 400 InvalidArgument / Authorization。

此前的测试直接注入逐行形态的凭证,恰好绕过了归一化这一环,因此一直未能发现。

修复

  • parseSigningRules 先把每个元素按行拆开再解析:设置页保存的「一行一条」与设置服务归一化后的「内嵌换行」两种形态均支持;防注入检查保留(拆行后的值不再包含换行)。
  • 新增走完整链路的回归测试:UI 两行凭证 → 设置服务归一化 → 代理签名,断言 Authorization 头存在;并对真实 R2 私有桶验证同一链路可正常流式取回。

升级

升级到 1.7.4 后无需重新配置,已保存的签名凭证即刻生效。


Generated from v1.7.4

发布于查看详情

问题背景

生产环境出现 上游拒绝:400 InvalidArgument - Authorization:这是 R2 对完全未携带签名的请求的回应(签名错误会是 403 SignatureDoesNotMatch)。说明媒体代理的签名凭证规则没有生效——可能是未配置,也可能是配置的行被静默丢弃(主机与允许清单不一致、access/secret 未成对等)。

改进

  • 502 报错自动区分「未签名被拒」:当上游回 InvalidArgument/Authorization 且本次请求未携带签名时,报错追加指引——去「文档设置 → 媒体同域代理 → 签名凭证」为该主机配置成对的 access 与 secret(已签名的请求不追加,避免误导)。
  • 设置解析丢弃凭证规则时,服务端日志输出 WARN(凭证值一律脱敏为 ***):格式错误的行、主机不在允许清单内的规则、access/secret 未成对的组,都能在 Halo 日志里直接看到被忽略的原因。

Generated from v1.7.3

发布于查看详情

修复

视频播放:媒体代理此前把上游响应体整段缓冲(≤8 MiB 进内存、更大落临时文件)后才回给浏览器,导致:

  • 视频首帧要等完整下载完成,大文件表现为长时间黑屏转圈;
  • 每次拖动进度条都触发一次全量重新拉取;
  • 播放器放弃旧请求后,服务端仍在继续白下载。

本版改为流式转发:上游响应头一到即回给浏览器,响应体边收边转;Range 请求原样透传,拖动进度条只取所需片段;浏览器断开时取消信号传回上游。服务端不再整段缓冲、不再落临时文件。

其他改进

  • 上游错误状态(非 XML 响应体)如实报上游状态码,不再误报 415。
  • 地址已带 X-Amz-Signature 等预签名参数时不再叠加 SigV4 签名头,避免双重鉴权被 S3 拒绝。
  • 关闭压缩协商,上游字节原样透传,避免视频流被中途解压破坏。

验证

  • 新增回归测试:首帧时序、取消传导、Range 字节一致性;全套 151 个测试通过。
  • 对真实 R2 私有桶端到端验证:无凭证报错可读、签名全量取回、Range 三段字节一致、HEAD 正常。

Generated from v1.7.2

发布于查看详情

v1.7.1:上游错误文档不再误报 415

修复

  • 对象存储的鉴权失败与对象不存在都返回 application/xml。此前一律按「415 上游内容类型不允许」
    拒绝,把排查方向引到内容类型上,而真正的原因(AccessDenied、InvalidArgument 等)躺在响应体里。
    现在这类响应会读出 /,报成 502 并带上错误码与说明。
  • 日志同时打印上游状态码与错误文档片段。

保留

  • 类型闸门不变:非 XML 的 text/html、image/svg+xml 等仍按 415 拒绝。

测试

  • 新增 4 条用例(R2 的 InvalidArgument/Authorization、AccessDenied、无 Code 标签、非 XML 仍 415)。
  • Java 用例 139 → 143。

Generated from v1.7.1

发布于查看详情

v1.7.0:文档设置页改版

改进

  • 分组导航:七个分组(备份与恢复、基础设置、文档库首页布局、文档页面渲染、视频与媒体代理、
    全局自定义代码、AI 辅助编写)一键跳转,滚动时高亮当前分组;窄屏变成顶部粘性横向条。
  • 常驻保存栏:显示「有未保存的改动 / 当前设置已保存」,无改动时保存按钮置灰。
  • 媒体代理的允许主机、签名凭证、附加请求头、大小上限收进折叠区,打开代理开关时自动展开。
  • 布局列表分组显示条数。

修复

  • 保存失败时曾立即显示「已保存」并禁用保存按钮,用户看不到错误也无法重试;
    现在落库成功后才更新已保存状态,失败提示并保持可重试。
  • 滚动高亮此前只监听 window。Halo 控制台外壳用 OverlayScrollbars 内部滚动,
    window 上不会有 scroll 事件,分组高亮会永远停在第一项;现在自动识别真正的滚动容器,
    点击导航也会同步选中。
  • 整页装得下视口时不再误判为「滚到底」而高亮最后一个分组。

测试

  • 新增 settings-navigation(分组清单、滚动判定、改动检测、滚动容器识别)10 条用例。
  • my-docs-settings 新增「每个声明字段都必须能往返」用例,防止保存时静默丢字段。
  • UI 用例 45 → 56,全部通过;Java 用例 139 个不变。

Generated from v1.7.0

发布于查看详情

v1.6.4:媒体代理支持 S3 SigV4 签名凭证,私有桶可用

修复

  • 私有桶此前根本用不了:R2 / S3 的 API 不接受静态 Authorization 头,
    GetObject 必须带按请求算出来的 SigV4 签名,靠「附加请求头」填固定值填不出来
    (填 Bearer 会得到 400/403,表现为 502)。
  • 新增「媒体代理签名凭证」设置项:每行「主机: 键: 值」,键取 access、secret 与可选
    region,插件在每次请求时现算签名头。

新增

  • AwsSigV4Signer:纯 JDK 的 AWS Signature V4 实现(HMAC-SHA256),
    对照 AWS 文档 IAM 示例向量校验:签名
    5d672d79c15b13162d9279b0855cfba6789a8edb4c82c400e06b5924a6f2b5d7
    (期望值用一份独立实现按文档算法算出,逐字符一致)。
  • 顺带修掉两处会让签名失效的问题:路径二次编码(%20 → %2520)、
    参与签名的头集合与文档示例不一致。
  • MediaProxySignedRequestTest:桩上游抓出真正发出去的请求头,按上游视角复算签名,
    确保中间层没有改写 Authorization;凭证不会带给不在允许清单里的主机。
  • 测试:Java 127 → 139。

提示

  • 凭证以明文存放在站点 ConfigMap 里,请授予只读权限并定期轮换。

Generated from v1.6.4

发布于查看详情

v1.6.3:修复匿名访客访问媒体代理被重定向到登录页

修复

  • 匿名访客访问 media-proxy 会被 302 到 /login?authentication_required,
    表现是前台视频资源加载失败,而管理员的浏览器(已登录)会走到上游类型检查,
    于是同一个功能对不同人报出不同的错。
  • 根因:Halo 的 RequestInfoFactory 会把 /apis/{group}/{version}/{资源} 判成资源请求
    (resource=media-proxy、verb=get),nonResourceURLs 规则匹配不到这类路径,
    匿名角色必须把资源名逐个写进 resources。此前只声明了 nonResourceURLs,
    同一规则里的 libraries 之所以能用,是因为它另有资源规则。
  • 公开资源清单补上 media-proxy,并在 roleTemplates.yaml 注释里写明这个坑。

测试

  • 新增 PublicEndpointRoleTest,把公开端点的资源清单与匿名角色对起来;
    已用「临时移除 media-proxy」验证过它会失败。
  • 公网用例超时放宽到 180 秒,避免跑整套用例时因外部站点变慢而误报。
  • Java 用例 123 → 127。

同时包含 v1.6.2 的内容:媒体代理放行 application/octet-stream 对象并按 URL 扩展名
推断类型(对象存储里没带 Content-Type 的视频此前会被 415 挡掉)。


Generated from v1.6.3

发布于查看详情

v1.6.2:媒体代理放行 octet-stream 对象并按扩展名推断类型

修复

  • 对象存储里上传时没带 Content-Type 的对象会返回 application/octet-stream,
    媒体代理此前按「不是 video/* 就拒」处理,直接回 415,明明能播的视频播不了。
  • 判定改为三步:白名单类型(video/ audio/ image/)直接放行;明确危险的类型
    (text/html、image/svg+xml、application/xml、JavaScript 等)一律拒绝;其余
    按 URL 扩展名推断(webm → video/webm、m3u8 → application/vnd.apple.mpegurl 等)。
  • 放行后响应类型改成推断结果;扩展名兜底命中图片时补 Content-Disposition: attachment;
    所有响应统一带 X-Content-Type-Options: nosniff。
  • 没有可用扩展名且类型不可识别时仍然拒绝,不猜。
  • 拒绝时把上游实际类型与地址写进 WARN 日志,便于排查。

测试

  • 新增 MediaTypePolicyTest(6 个用例)与三条桩客户端用例:octet-stream 视频放行并改写类型、
    HTML 伪装成 .png 仍拒绝、无扩展名的二进制仍拒绝。Java 用例 114 → 123。

Generated from v1.6.2

发布于查看详情

v1.6.1:文档设置页补齐媒体代理与阅读增强设置项

修复

  • 文档设置页此前不认识 renderCopyButtons、renderImageZoom、renderMediaEmbed
    与四个 mediaProxy* 字段:这些项只写在 settings.yaml 里,而文档设置页是自绘表单,
    结果既不显示,保存时还会整组覆盖 ConfigMap 把它们静默清空。
  • 现在「代码块与公式渲染」一节补上「复制按钮」「图片点击放大」,
    新增「视频与媒体代理」一节:媒体同域代理开关、允许主机清单、附加请求头、大小上限。
  • 设置解析补齐这 7 个字段:多行文本与数组两种形态都能读回来,大小上限钳制在
    1048576 - 2147483647,并补测试守住「解析后序列化不丢字段」。

说明

  • 媒体同域代理默认关闭;允许清单留空时不做任何改写。
  • 该端点对访客开放,凭证规则只按主机匹配、没有路径限制,配了凭证即等于把该主机
    对公网开放读取;设置页与 README 都标注了这一点。

Generated from v1.6.1

发布于查看详情

v1.6.0:媒体同域代理与前台明暗切换

新功能

  • 同域媒体代理:新增 media-proxy 端点与「媒体同域代理」设置组。
    把允许清单内主机的图片、音视频地址改写为站点自身的
    /apis/api.my-docs.tsdaer.run/v1alpha1/media-proxy?src=… 由服务端代取,
    前台只与站点同域通信。适用于对象存储桶不对外开放、Halo 附件只记录
    裸对象地址(浏览器直连返回 400 InvalidArgument / Authorization)的情况。
    支持 *.example.com 通配主机、可选凭证请求头、大小上限;超限在响应流上截断;
    8 MiB 以内走内存,更大落临时文件流式回放。
  • 前台明暗切换按钮:访客手动选择后优先于站点主题与系统偏好,记在浏览器本地,
    刷新保持,宿主主题写在根元素上的 dark 标记不会把手动浅色压回去。
  • 后台从附件库插入视频改用图片语法 文件名,标签取附件标题或文件名。
  • 记住附件弹窗打开前的光标位置,插入落回该位置而不是文档末尾。

修复

  • 端点清理时机:临时文件曾在 WebFlux 开始写响应体之前被删除,
    大于 8 MiB 的媒体全部返回 500、客户端收到 0 字节。
  • 媒体代理大小上限未生效:改为在响应流上按字节截断,不再信任上游声明的
    Content-Length(此前声明 1 KiB 实发 12 MiB 会把整个文件读进堆)。
  • 普通域名被误判为 IPv6 私网地址(cdn.example.com 这类全十六进制字符域名被拒)。
  • :443 显式端口与尾点域名匹配不上允许清单,私有桶场景下等于既没代理、直连也打不开。
  • 带端口的凭证规则把端口当成头名,导致规则静默失效并向上游发出垃圾头。
  • 204 之类的 2xx 响应丢弃已落地的响应体,导致临时文件泄漏。
  • 附件标签在非法百分号编码时抛 URIError。

升级提示

  • 媒体同域代理默认关闭;允许清单留空时端点一律 404。
  • 该端点对访客开放,凭证规则只按主机匹配、没有路径限制:配了凭证即等于
    把该主机对公网开放读取。请只把确实需要公开的媒体主机写进允许清单。
  • 文档渲染设置新增四个媒体代理设置项;主题切换按钮出现在 /docs 三个页面右上角。

Generated from v1.6.0

发布于查看详情

新增

  • 复制按钮:代码块、图片和块级公式右上角悬停显示复制按钮——代码块复制源码,图片转 PNG 写入剪贴板(跨域等失败时自动降级为复制图片链接),公式复制 LaTeX 源码;同时替换 Vditor 内置的代码复制按钮,样式统一随明暗主题。
  • 图片点击放大:点击正文图片以灯箱形式查看大图,支持点击遮罩、关闭按钮或 ESC 关闭;图片被链接包裹时仅在链接指向图片文件时放大原图,普通页面链接不受影响。
  • 视频内嵌播放:图片语法引用 mp4 / webm / ogv / ogg / m4v / mov / m3u8 文件时渲染为内嵌播放器(DPlayer),m3u8 通过 hls.js 支持,加载失败自动回退原生播放器;#md-width / #md-align 等图片参数继续有效,普通链接保持链接语义。
  • 图表主题适配:明暗模式切换时全部图表(Mermaid、ECharts、flowchart、graphviz、mindmap、markmap、plantuml、abc、SMILES)自动恢复源码重渲染换肤;ECharts 与 mindmap 背景改为透明融入页面,配色以主题强调色(--mdocs-accent)为主色自动生成,并修复图表容器无高度不可见的问题。

设置

  • 新增三个渲染开关(默认开启):复制按钮、图片点击放大、视频内嵌播放。

Generated from v1.5.0

发布于查看详情

微信公众号同步插件配置指南

更新日志

  • docs: 补充微信接口错误码速查文档
  • feat: 支持草稿字段超长截断与预览标识
    • 标题:64字
    • 作者:8字
    • 摘要:120字
    • 计数规则:按微信计数规则计算
  • feat: 不可上传微信的附件,直接显示链接名或链接地址
    • 配置入口:插件配置 → 正文美化 → 附件链接显示
    • 显示方式:纯文本形式,不含其他内容
  • fix(beautifier): 压紧列表结构避免微信生成空列表项

Full Changelog: 1.6.2...1.7.0


Generated from 1.7.0

发布于查看详情

更新日志

本次更新新增垃圾内容检测、AI 群机器人和聊天图片定期清理,完善协议签署流程,并优化聊天界面、消息处理及访问权限校验。

新增功能

垃圾内容检测

  • 支持对私聊、群聊和频道消息配置检测范围,默认关闭,由管理员按需启用。
  • 文本检测支持本地规则、阿里云内容安全、腾讯云内容安全和 Halo AI Foundation。
  • 本地规则支持内置推广词库及自定义拦截词条;自定义词条每行一条,命中即拒绝发送,英文不区分大小写。
  • 支持通过 AI Foundation 进行图片内容检测,并对本地或云服务判定为可疑的文本进行 AI 复核。
  • 支持超时时间、检测阈值、结果缓存及异常处理策略。检测服务超时或异常时,默认放行并记录告警,也可选择严格拒绝。
  • 配置项随检测服务动态显示;模型使用 AI Foundation 模型选择器,云服务凭据使用 Halo 原生 Secret 组件,支持选择或创建密钥。

AI 群机器人

  • 接入 Halo AI Foundation 对话能力,支持机器人身份、模型、提示词及群组绑定配置。
  • 支持按群配置触发方式、上下文消息数量、冷却时间及使用角色等选项。
  • 管理入口整合至「群组管理」:在群组「更多操作」中新增机器人,在「查看成员」中查看和管理群机器人。
  • 使用 AI Foundation 提供的模型选择器,简化机器人编辑表单。
  • 机器人回复异步处理,并增加并发限制、超时控制、任务恢复和回复去重,提高重启及异常情况下的稳定性。

聊天图片定期清理

  • 支持按保留时长、执行时间和批次数量清理聊天图片,默认关闭。
  • 仅处理在聊天中发送并被标记的 Halo 图片附件,避免扫描其他业务附件。

协议签署与群组资料

  • 更新服务条款、隐私与数据处理说明至 v2.0,新增协议签署页面和签署记录展示。
  • 支持本地开发环境及授权中心站点的协议签署豁免,并修复外部访问地址判断。
  • 支持群聊和频道资料编辑。

体验与性能优化

  • 聊天窗口默认保留 Halo 侧边菜单,支持在浏览器页面内全屏/还原;优化全屏按钮、菜单图标及相关提示样式。
  • 链接卡片预览改为消息发送后异步补全,减少获取外部网页信息对发送流程的影响。
  • 缓存解析后的检测配置,并对检测结果缓存设置容量边界与隔离规则。
  • 群机器人异常提示使用 Halo 统一组件,垃圾内容检测说明与其他设置页保持一致。

问题修复与安全加固

  • 修复切换文本检测服务时下拉框、复选框和文本域错误复用的问题,保留隐藏配置项的已填值。
  • 修复 @提及输入框占位符及聊天窗口全屏按钮显示问题。
  • 修复历史消息分页推进、未读消息 WebSocket 数据结构及隐藏消息过滤问题。
  • 加强 WebSocket 身份绑定、会话访问、私聊接收方及群成员查询的权限校验,收紧原始数据访问权限,同时兼容已有群管理权限。
  • 增加 WebSocket 消息和队列大小限制,修复发送缓冲区释放问题。
  • 加强动态聊天界面内容清理与链接预览抓取防护。
  • 修复归档批量配置未生效、归档索引创建失败后的补偿,以及群组创建失败、解散清理的可靠性问题。
  • 修复机器人重复回复、过期任务恢复、冷却状态持久化及消息分发异常时的触发问题。
  • 调整核心配置隔离与 API 生成流程,降低可选依赖、鉴权配置及 UI 构建对生成 API 客户端的影响。

更新后注意事项

  1. 检查运行环境与依赖。 本版本要求 Halo 2.26.0 或以上;当前正式插件描述声明依赖 WebjingMandateCore 2.2.0 或以上,更新前请确认已安装并启用。AI Foundation 为可选依赖,支持 1.0.0 至 2.0.0 之前的版本;使用 AI 检测或机器人时需安装、启用并配置可用模型。
  2. 更新前备份数据,更新后刷新页面。 建议备份数据库、插件配置和附件。更新完成后重新打开聊天窗口;旧页面如仍显示旧菜单或控件,请刷新页面以加载新版资源。
  3. 检查授权与协议状态。 普通站点请在「协议签署」中确认当前协议状态并按页面提示完成签署。
  4. 新功能需要单独启用。 垃圾内容检测、AI 群机器人和聊天图片清理默认关闭。使用机器人时,先开启插件设置中的总开关,再到群组管理中添加、绑定并启用机器人。
  5. 核对云服务密钥。 阿里云 Secret 需包含 accessKeyId、accessKeySecret;腾讯云 Secret 需包含 secretId、secretKey。表单仍保存 Secret 资源名称,原有名称配置可继续使用;更新后请确认对应资源存在且字段完整。
  6. 区分本地规则与 AI 检测。 本地文本检测是规则与词条匹配;图片服务选择「本地不检测」会直接放行图片。需要识别图片内容时,应选择 AI Foundation 并配置支持 vision 的模型。AI 是否在本地运行取决于 AI Foundation 接入的模型服务。内置推广词命中分数为 0.70,默认阻断阈值为 0.80,命中内置词不代表一定拦截;需要直接拦截的词语可加入自定义词条。
  7. 根据业务选择异常策略。 默认放行意味着检测服务不可用时消息仍可发送,告警记录在服务端日志中;严格拒绝会在检测失败或超时时阻止消息。检测在消息保存、分发前执行,启用远程检测会增加一定等待时间;请结合实际服务响应调整超时。机器人调用失败只影响机器人回复,不阻止用户正常发送消息。
  8. 启用清理前确认保留期限。 默认保留时长为 30 天,从图片最后一次在聊天中发送开始计算。清理会永久删除符合条件的附件,历史聊天中的对应图片可能无法再查看;如同一附件被其他页面引用,也会受删除影响,请先备份并确认用途。
  9. 使用第三方检测或 AI 前确认数据处理范围。 启用后,相关消息内容、图片或机器人上下文可能发送至所配置的服务商;请核对服务商费用、额度及站点隐私告知内容。
  10. 使用自定义角色或外部集成的站点需回归验证。 本次收紧了部分访问权限并更新 API 客户端及消息数据结构。升级后建议验证私聊、群聊、历史消息、未读数和机器人;若自定义角色出现无权访问,应按新版权限配置排查,避免通过开放原始聊天数据权限解决。
发布于查看详情
页
条 / 页