FIT2CLOUD

更新内容

  • 新增侧边栏恩爱计时,可配置开始时间、名称、头像与 QQ 自动头像。
  • 新增多页面返回顶部按钮,并优化文章详情快捷操作为圆形图标按钮。
  • 侧边栏标签云和分类支持数量配置,标签云支持多种展示动画。
发布于查看详情

本次发布补齐 ARM 架构支持,并集中修正断链检测的误报来源;代理配置从「仅断链检测」扩展到全部出站请求。

🐛 问题修复

  • ARM 架构下图片处理失败 (#20) - 更换 WebP/AVIF 编解码库并补齐 aarch64 / arm64 原生库,ARM 云主机、Apple Silicon、树莓派等设备现已可正常使用图片处理
  • 部分站点编辑器上传不被处理 - 附件上传策略与分组改为按 Halo 核心的两层合并语义解析,修复从未保存过「附件设置」的站点读到空值导致上传被跳过
  • 断链检测误报 - 读超时不再算作连接失败;HEAD 被拒(405/501)时改用 GET 复核;含 % 的文件名与中文域名不再被判为无效链接
  • 扫描期间显示旧数据 - 引用统计、断链检测、重复检测三个面板发起扫描时即清空列表并显示「正在扫描」
  • 批量处理误报失败 - 附件记录大小与实际不符导致的超限下载归为「跳过」而非失败

✨ 功能增强

  • 代理排除主机 - 新增配置项,NO_PROXY 语义,支持 * 通配,默认 localhost / 127.* / ::1
  • 代理作用于全部出站请求 - 重复文件扫描与批量处理的附件下载/上传同样走代理,例外由排除名单统一控制

⚡ 优化

  • 出站请求统一装配、共用连接池,不再按超时/代理组合各自建池
  • 断链检测超时默认 5 → 10 秒、上限 30 → 60 秒,减少境外站点与代理场景的误报
  • 界面细节:重复检测分页独立成卡、分组名过长显示省略号、卡片圆角修正

⚠️ 升级提示

  • 断链检测超时默认值改为 10 秒,仅影响未手动改过该项的站点
  • 已启用代理的站点:代理现在作用于全部出站请求,本站域名如需直连请加入「代理排除主机」

📋 完整更新日志


Generated from v1.1.0

发布于查看详情

文章投稿审核 1.3.0

本版本新增站点公开的投稿展示页面,并延续 1.2.0 的安全审核与委派权限设计。

新增投稿榜单

  • 新增公开访问目录:/artisub
  • 新增“投稿作者榜”,按每位用户已发布的投稿文章数降序排列,展示前五名。
  • 新增“最新投稿文章”,展示最近发布的 12 篇投稿文章。
  • 同一文章即使存在历史投稿记录也只统计一次,避免榜单重复计数。
  • 作者数量、已发布投稿数量同步展示。
  • 页面支持桌面端、平板和手机端自适应布局。

隐私与安全

  • 榜单只统计状态为 PUBLISHED,且 Halo 文章自身仍处于已发布状态的投稿。
  • AI 审核中、待人工审核、已拒绝和文章已取消发布的记录不会公开。
  • 页面不展示 AI 审核原因、管理员意见、评分或投稿人的隐私资料。

主题适配

  • 插件提供默认 Thymeleaf 页面模板,可直接访问。
  • 主题可提供 artisub.html 覆盖插件默认模板,实现与主题一致的页头、页尾和视觉风格。
发布于查看详情

第一盏灯,终于亮起来了。

Akari 是一款为个人博客设计的 Halo 主题。它不把内容陈列成整齐划一的货架,而是把手记、照片、瞬间、书影音和来访者的纸条,慢慢收进一间有生活痕迹的小屋。

主题印象

  • 温馨的二次元色彩:柔和的暖色、细腻的纸张质感与克制的角色元素,共同构成安静而有辨识度的视觉语言。
  • 一张会呼吸的首页:主视觉、最近生活拼贴、正在播放、书架、最新手记与媒体房间,共同讲述屋主最近的生活。
  • 为阅读保留安静:文章页提供阅读时间、分层目录、细致的正文排版、随文音视频、读者回应与回到顶部。
  • 丰富而连贯的媒体体验:支持音乐、视频、相册灯箱、瞬间与媒体札记,常驻播放器在页面之间穿行时也不会打断正在播放的声音。
  • 只玩真实的:文章、作者、分类、标签、归档与评论由 Halo 动态提供,相册、瞬间、友链和搜索则会自然接入对应插件。

小屋里的房间

  • 小屋:用一张完整首页收拢近期文章、声音、照片和生活状态。
  • 手记与归档:按分类、标签、年份与时间慢慢翻阅文章,不让筛选打断阅读节奏。
  • 分类与标签:把散落的内容整理成可以重新发现的收藏册。
  • 媒体室:集中展示正在听、正在看与正在读的内容。
  • 相册与瞬间:记录比文章更轻、更接近日常的生活切片。
  • 关于、友链与留言簿:介绍屋主,也为朋友和来访者留下一盏灯。

细节与适配

  • 适配宽屏、桌面、平板与手机,不同尺寸拥有相应的信息密度与排版节奏。
  • 支持明亮、深色和跟随系统三种显示模式。
  • 内置简体中文、繁体中文、日语和英文界面文案。
  • 支持未登录访客回应,并根据 Halo 后台设置按需完成访客验证。
  • 页面样式与交互资源按需加载,在保留动效与连贯体验的同时兼顾首屏性能。

Akari 适用于 Halo 2.25.0 及以上版本。安装后可按照主题使用说明完成自定义页面、菜单、媒体内容与可选插件的配置。

愿你写下的每一段生活,都能在这里被温柔地接住。

发布于查看详情

Halo 深色模式 v1.1.2

为 Halo 后台管理面板提供深色/浅色模式切换。插件内置 Dark Reader 通用暗色引擎,自动分析页面 CSS 与 DOM,无需逐页手工适配,即可覆盖 Halo 核心页面和第三方插件页面。

功能特性

  • 三种主题模式:浅色(light)、深色(dark)、跟随系统(auto
  • 偏好记忆:自动将选择持久化到 localStorage,刷新不丢失
  • 跟随系统:切换系统外观时自动响应(auto 模式)
  • Dark Reader 通用引擎:自动转换 Halo 核心页面与第三方插件页面,动态渲染内容也能适配
  • 官方外观分组:设置入口位于 Halo「外观」分组,与主题、菜单、插件同组
  • 零后端依赖:纯前端实现,不依赖额外后端 API,安装即用

🆕 本次更新(v1.1.2)

  • 更新插件 Logo 为新的深色风格图标
  • 更新 README 截图预览:插件信息、模式选择、文章写作、仪表盘、主题界面

安装

  1. 从本 Release 下载 plugin-dark-mode-1.1.0.jar
  2. 在 Halo 后台「插件管理」中上传并安装
  3. 启用插件后,进入「外观 → 深色模式」设置页面选择显示模式

使用

配置项 可选值 说明
主题模式 light 始终使用浅色模式
主题模式 dark 始终使用深色模式
主题模式 auto 跟随系统外观自动切换

验证

  • 前端 8 项单元测试全部通过,type-check / lint / build 全绿
  • ./gradlew build 构建成功,JAR 内 ui/main.js 包含 Dark Reader 引擎,logo.png 为新图标
  • 切换深浅色后在 Halo 核心页面与第三方插件页面验证通过

环境要求

  • Halo >= 2.25.0
发布于查看详情

新特性

  • 新增完整的友链申请与审核流程,支持访客提交、评论识别、审批恢复、历史筛选和批量清理 by @ruibaby in #141
  • 为访客友链申请增加图形验证码、待审核容量限制和新申请通知 by @ruibaby in #153, #156, #157
  • 支持通过 AI Foundation 从评论中提取友链信息 by @ruibaby in #142
  • 为链接增加右键快捷操作,支持编辑、移动分组和删除
  • 支持在 Console 中隐藏 RSS/Atom 条目,并提供独立的隐藏条目恢复入口 by @ruibaby in #159

功能优化

  • 优化友链申请详情、来源展示和审核体验,并支持在审核评论来源的申请时通过或回复来源评论 by @ruibaby in #154, #155
  • 将 RSS 订阅数据迁移至 SQLite,并增强迁移、快照和故障恢复能力 by @ruibaby in #151
  • RSS 更新页统一展示隐藏、收藏和稍后阅读数量,并自动刷新统计 by @ruibaby in #160
  • 优化 AI 评论识别体验,打开识别面板时自动加载评论,并移除输出 Token 限制
  • 评论识别模型选择器支持清空,不再仅展示声明支持结构化输出的模型
  • 统一使用 Halo HTTP 安全组件访问外部链接,增强请求安全性 by @ruibaby in #146

问题修复

  • 修复取消 RSS 订阅后缓存条目和运行状态未清理的问题 by @ruibaby in #163
  • 修复 AI Foundation 加载期间可能导致插件偶发启动失败的问题 by @ruibaby in #161
  • 修复 RSS 条目已读/未读操作按钮图标显示错误

开发者相关

  • 新增公开友链申请 REST API,支持无 Cookie 获取验证码并通过 JSON 提交申请 by @ruibaby in #158
  • 为主题提供友链申请表单接口,使用方式请参阅主题 API 文档
  • 最低 Halo 版本调整为 2.25.0;AI 功能需要可选的 AI Foundation 1.0.0-beta.4 或更高兼容版本

Full Changelog: v2.2.1...v2.3.0


Generated from v2.3.0

发布于查看详情

更新说明

  • 新增侧边栏设置,支持上传并展示公众号二维码。
  • 新增站点标签开关,按文章数量排序展示前 40 个标签,并提供动态标签云效果。
  • 新增站点分类开关,按文章数量排序展示前 20 个分类。
  • 优化侧边栏分类样式,使用轻量的 GitHub 风格标签排列。
发布于查看详情

本次更新

  • 修复 ADI Header 起始结构,使导出文件符合 ADIF 3.1.7。
  • ADI 仅输出可打印 ASCII;字段包含中文或其他非 ASCII 字符时整字段省略,并在导出完成后提示省略数量。
  • ADI 多行字段压平为单行,应用字段补充数据类型标识。
  • 将 USB/LSB 规范化为 MODE=SSB 与对应 SUBMODE
  • 新增 UTF-8 ADX 导出,通过 _INTL 字段保留中文内容。
  • ADIF 导出页新增独立的“导出ADI文件”和“导出ADX文件”按钮。
  • 同步产品定义和项目结构化清单。

验证

  • Gradle clean build 完整构建与 Java 测试通过。
  • Vitest 6 项 ADIF 协议单元测试通过。
  • ESLint、Oxlint 与 TypeScript 类型检查通过。
  • 插件热重载成功。
  • Chrome MCP 实际导出 111 条 ADI/ADX 记录:ADI 非法字节和字段长度异常均为 0,MY_SIG 缺省、USB 映射及 ADX 中文字段均验证通过。

Generated from v2.3.30

发布于查看详情

AstraHub 3.0.3

本次更新重点优化了插件后台的数据加载机制,减少重复请求、服务器流量和数据库压力,并提升页面切换速度。

主要更新

  • 优化插件内部页面切换机制。
  • 各页面改为首次访问时加载数据。
  • 已访问页面的数据会保留在当前插件会话中。
  • 再次切换回来时直接展示已有数据,不再重复请求服务端。
  • 保留列表分页、滚动位置、聊天记录和页面操作状态。

实时同步优化

  • 世界频道继续通过 WebSocket实时接收新消息和消息变化。
  • 友链邀请、审核结果和友链关系变化继续实时同步。
  • 补齐 site_profile_updated 事件处理。
  • 站点名称、头像和资料发生变化时可及时更新。
  • 仅在实时事件信息不足时刷新对应数据,不再因普通切页重新加载。

关系图优化

  • 保留“点击开始渲染后才加载”的机制。
  • 未点击渲染时不会请求关系图数据。
  • 已加载的关系图在插件内部切页后继续保留。
  • 离开关系图期间收到关系变化时暂缓刷新,返回后再进行更新。
  • 避免隐藏状态下重复执行高开销的图谱请求。

涉及页面

  • 友链星球
  • 友链审核管理
  • 资讯中心
  • 星际通讯
  • 关系图
  • 接入配置

仍会正常请求的操作

以下操作属于主动查询或必要的数据同步,仍会正常访问服务端:

  • 首次打开页面
  • 搜索内容
  • 切换筛选条件或审核分类
  • 加载更多数据
  • 手动刷新
  • 切换 AstraHub 节点
  • WebSocket断线后的必要状态校准

更新效果

  • 插件内部重复切页基本不再产生业务数据请求。
  • 页面切换响应速度更快。
  • 减少服务端带宽消耗。
  • 降低数据库重复查询压力。
  • 改善世界频道、资讯和大型列表页面的使用体验。
  • 实时数据仍由 WebSocket持续同步。
发布于查看详情

AstraHub v3.0.2 更新日志

AstraHub 3.0 是从单节点接入迈向多节点协同的一次重大跨越。

这一版本不只是界面和版本号的更新,而是对节点架构、图谱同步、实时通信、故障切换、运行状态存储以及插件交互体验的一次整体升级。


Astra 节点团队

Astra 节点能力由以下成员共同提供强力驱动:

节点伙伴 节点地址 伙伴主页
Serenity’s Blog https://astra.aobp.cn https://www.aobp.cn
冷月笙寒的小窝 https://astra.lygalaxy.cn https://lygalaxy.cn
Fry酥条 https://astra.fryfries13.cn https://space.bilibili.com/1808002444
Beibing https://astra.zzrbk.xyz https://www.zzrbk.xyz
Rinty雨屋 https://astra.rinty.xyz https://www.rinty.xyz

感谢每一位伙伴为 AstraHub 的贡献。


重大更新:正式进入多节点时代

插件启动后会自动检测各节点状态和连接延迟,并根据实际可用情况选择服务节点。

主要能力包括:

  • 自动并行检测全部节点;
  • 展示各节点当前状态和检测延迟;
  • 根据最新检测结果选择低延迟节点;
  • 支持用户手动切换服务节点;
  • 保持已选节点,减少频繁跳转造成的连接抖动;
  • 节点业务请求失败后自动切换;
  • 故障节点进入短暂冷却,避免持续请求异常节点;
  • 节点恢复后自动重新加入候选列表;
  • 所有正式节点共享 AstraHub 数据与实时能力。

Bug修复

  • 其他一些你或许并不在意的细节
发布于查看详情

呀呼!欢迎使用 Ethereal 主题 v1.1.0 版本,本次更新是 Ethereal 主题发布以来第一次大版本更新

本次更新带来 Banner 增强、文章卡片布局、在线状态功能、入场欢迎卡片等重大功能更新,并修复了一批体验问题

如在主题使用中遇到问题或者建议,欢迎在 Issue 中提交。也可前往主题交流群 进行讨论

新增

  • Banner 增强:新增视频展示、多图轮播、移动端独立图片来源;可前往「主题设置 → 基本设置 → Banner」配置体验 by @Helio-RC in #15

  • 文章卡片布局:新增文章卡片网格布局,支持瀑布流显示以及封面贴边。可前往「主题设置 → 文章 → 文章卡片布局」配置,体验全新的卡片布局

  • 在线状态功能:新增个人简介小组件在线状态功能,可显示个人在线状态以及自定义文案,支持管理员账号已登录时前台直接切换,无需后台设置;可前往「主题设置 → 侧边栏 → 在线状态」查看,体验独一的状态功能

  • 入场欢迎卡片:新增访客进入网站时弹出欢迎卡片,支持 IP 定位(复用天气小组件腾讯位置服务 Key,无需单独配置)、自定义文案;可前往「主题设置 → 基础设置 → 欢迎弹窗」配置体验

  • 动画速度档位:新增动画速度档位(舒缓 / 均衡 / 疾速 / 自定义),动画时长全面变量化;可前往「主题设置 → 基础设置 → 动画速度」配置体验 by @Helio-RC in #12

  • 菜单面板:移动端新增抽屉样式,支持手风琴 / 抽屉两种模式切换;PC端新增支持固定导航栏,可前往「主题设置 → 样式 → 菜单栏设置」配置体验

  • 心愿便签插件页面适配:新增适配 心愿便签 插件页面,可安装后体验

  • 日程日历插件页面适配及小组件:新增适配 日程日历 插件页面,并新增配套最近日程小组件,可安装后体验

优化

  • 卡片悬浮效果,移动端自动屏蔽
  • 优化PC端以及移动端文章卡片显示样式
  • 部分设置项说明优化

修复

  • 修复所有小组件主题色装饰线未与标题对齐的问题

  • 修复移动端文章卡片封面不铺满卡片的问题

  • 修复音乐播放器 401 的问题 #11

  • 修复公告移动端不显示的问题 #13

  • 修复 CodeQL 安全扫描告警(构建产物 HTML 注释清理健壮性、外链弹窗头像 URL 协议白名单防 XSS)

其它

  • 版本号提升至 V1.1.0
  • 更新 README
  • 新增 GitHub Issue 模板 by @Helio-RC
  • 依赖与构建工具链安全告警清零 by @Helio-RC in #10

TODO

  • 全屏(透明) Banner 、访客前台快速切换样式等功能将在 v1.1.x 版本陆续实现,如果您有更好的建议欢迎提交反馈

变更完整日志: v1.0.8...v1.1.0


Generated from v1.1.0

发布于查看详情

更新说明

  • 新增公告设置,可在菜单栏下方显示全宽公告横幅。
  • 新增哀悼模式,开启后全站使用灰色显示效果。
  • 修复文章、瞬间、留言板的评论输入 / 时误触发全局搜索的问题,现可正常输入网址及含斜杠内容。
发布于查看详情
  • 新增独立的友链设置,支持自定义本站友链资料、友链页面和 RSS 订阅地址。
  • 友链申请可直接提交至留言板,包含友链页面和 RSS 订阅地址,便于人工审核。
  • 优化申请提交反馈,成功后在表单内显示醒目的绿色状态。
  • 留言板弹幕改为随机循环,限制同时显示数量,避免重复留言。
发布于查看详情

AI RolePlay for Halo

AI RolePlay 是面向 Halo 2.25.4+ 的 AI 角色扮演插件。所有模型发现、Provider 密钥和模型调用都由
Halo AI Foundation 提供,本插件不实现任何厂商大模型客户端。

功能

  • 从 AI Foundation 自动读取语言模型,支持插件默认模型和角色专属模型。
  • UC 新增“AI”内容分组及其下的“角色扮演”,包含角色大厅、逐字回复、历史会话和首次协议确认。
  • 角色支持从 Halo 附件库选择头像和 16:9 封面图。
  • Console 包含仪表盘、模型、角色、聊天记录、用户、协议、会话处置与权限管理。
  • 聊天不产生逐条审核任务;管理员按需查看完整会话,并可封禁或解封不合适的会话。
  • 支持单角色/全部 AI 封禁、永久/限时封禁、聊天搜索、删除和 CSV 导出。
  • “使用 AI 角色扮演”是可单独分配给普通用户的 Halo RoleTemplate。
  • 6 个 Halo Custom Extension 数据模型,兼容 Halo 支持的底层数据库。

兼容版本

  • Halo 2.25.4+
  • Java 21
  • AI Foundation 1.0.0(插件依赖范围 <2.0.0
  • Node.js 24、pnpm 10

构建

./gradlew clean build

Windows:

.\gradlew.bat clean build

产物位于 build/libs/plugin-ai-roleplay-1.3.1.jar

本地开发

  1. 先在 Halo 中安装并启用 AI Foundation,至少配置一个可用语言模型。
  2. 启动开发服务器:
./gradlew haloServer
  1. 打开 http://localhost:8090/console,默认账号密码均为 admin
  2. 在 Halo 用户/角色管理中为普通用户分配“使用 AI 角色扮演”权限。
  3. 在插件设置中选择默认语言模型;随后在 UC 的“AI”分组下进入“角色扮演”。

数据模型与 Migration

Halo 最新插件规范使用 Extension Store,而不是插件直接维护数据库方言相关的物理表。逻辑映射如下:

需求中的逻辑表 Halo Extension
ai_role AiRole
ai_chat_session AiChatSession
ai_chat_message AiChatMessage
ai_user_permission AiUserPermission
ai_agreement AiAgreement
协议确认 AiAgreementAcceptance

会话处置字段保存在 AiChatSession 中,AiChatMessage 不维护逐条审核状态。

V001SeedDataMigration 在首次启动时幂等创建默认服务协议和四个示例角色,不覆盖管理员数据。

AI Foundation 调用

后端通过 Halo 跨插件扩展点获取模型服务:

extensionGetter.getEnabledExtension(AiModelService.class)
    .flatMap(service -> service.languageModel(modelName))
    .flatMap(model -> model.generateText(request));

modelName 始终为 AiModel.metadata.name。API Key、Base URL、Provider 适配和模型发现均留在 AI Foundation 中。

权限与会话处置

  • 普通用户必须被明确授予“使用 AI 角色扮演”RoleTemplate 才能看到 UC 入口并调用 UC API。
  • 管理员可以从聊天记录进入完整对话;封禁后会话仍可查看,但用户不能继续发送,管理员可随时解封。
  • 会话 API 校验当前登录用户所有权;Console API 由 Halo RBAC 保护。
  • 系统提示词加入防泄露、危机处理和禁止依赖规则。
  • 聊天内容会持久化,首次协议明确说明管理员查看、导出和删除范围。

作者与支持

发布于查看详情

halo-theme-cosolar v1.1.4

图库页面 (Photos) 体验增强

新增两项图库设置,让访客可以更灵活地浏览照片。

  • 悬停显示图片信息photos_show_meta,默认开启):
    • 鼠标移动到图片上时,在图片底部叠层显示照片名称与所属分组信息。
    • 读取路径:theme.config?.photos?.photos_show_meta
  • 点击图片行为photos_click_behavior,默认 detail):
    • detail(跳转详情页):点击图片进入照片详情页;悬停时同时显示「查看详情」与「放大查看」两个按钮。
    • lightbox(直接放大查看):点击图片直接打开大图灯箱,不再跳转详情页,此时「查看详情」按钮自动隐藏,仅保留「放大查看」。
    • 读取路径:theme.config?.photos?.photos_click_behavior
  • 配套更新 photos.css / photos.ts / photo.html / photos.htmlmain.css,实现叠层样式、按钮显隐逻辑与灯箱交互。
  • theme.yaml 版本号升至 1.1.4

登录注册页

  • 修复登录注册页样式问题;
  • 修复文章内容引用块多一行空行;
发布于查看详情
  • 新增播放器显示位置设置:左下角 / 右上角。
  • 右上角播放器采用紧凑样式,显示动态歌词、上一首、播放/暂停、下一首和循环模式。
  • 新增页头天气显示开关,天气显示在搜索框后。
  • 天气优先根据访问者浏览器定位获取,定位不可用时使用后台配置的城市。
  • 后台天气默认城市调整为深圳。
发布于查看详情

修复

  • 修复下载/访问记录弹窗内容不渲染的问题:VModal + OverlayScrollbars 下打开弹窗后用 v-if 插入节点会触发 insertBefore 异常,改用 v-show 常驻渲染

Generated from v1.3.2

发布于查看详情
  • 新增站点运行时间设置,页脚可按天、时、分、秒实时显示运行时长。
  • 完善主题品牌信息,新增主题 Logo 与主页地址。
  • 优化页脚云服务商与运行时间的布局和图标展示。
  • 更新关于页建站历程与「十年之约」默认文案。
发布于查看详情

新增

  • 新增简体中文与 English 的 Halo 原生国际化支持及全站语言切换器。
  • 新增深夜、暮色、月白和跟随系统四种月相配色,并支持持久化用户选择。
  • 新增文章阅读设置、阅读进度、分享、打印和动态月相切换效果。
  • 补充瞬间标签呈现与主题使用文档。

修复

  • 修复 JetBrains Marketplace 嵌入内容在主题中的显示问题。
  • 修复英文分类标签重叠、筛选控件边框裁切等界面问题。
发布于查看详情

新增:地域分布(中国省份地图 + 世界地图)

  • 「文章数据 → 地域分布」页签(与趋势图 / 数据列表同级)
  • 中国 34 省级行政区热力地图(默认视图,按会话量着色,省份标签 + 悬停详情)
  • 世界地图切换(按国家着色,175 国),国家 / 地区 Top12 排行(国旗 emoji)
  • 国内省份 / 地区排行,兼容 CN-GD / GD / CN-11 三种 region 码并按省去重
  • 后端新增 GET umami/metrics?type=country|region|city&startAt=&endAt=&limit= 代理端点(复用登录换 token,未配置/异常自动降级)
  • 支持近 7 / 30 / 90 天与自定义起止日期
  • 地图数据来源:Natural Earth 110m(世界)、DataV GeoAtlas(中国省份)

Generated from v1.1.2

发布于查看详情

Full Changelog: v2.4.1...v2.4.2

feat: add dark/light theme support for share cards

此提交实现了句子分享卡片的明暗主题切换功能,包括:

  1. 后端API新增theme查询参数,支持指定dark/light主题,非法值自动回退到dark
  2. 后端SVG生成器重构配色方案,支持两套主题配色
  3. 前端分享弹窗新增主题切换按钮,支持实时预览不同主题的分享卡片
  4. 分享页支持通过url参数指定主题,且主题切换带有平滑过渡动画
  5. 优化了分享卡片的导出逻辑,适配不同主题的背景色
  6. 新增自动刷新倒计时光环组件,优化分享直达视图的体验

Generated from v2.4.2

发布于查看详情

修正

  • 插件显示名恢复为「资源下载管理」,角色模板命名同步恢复
  • 侧边栏保持合并后的单一入口「资源访问管理」(页签切换下载资源 / 受保护链接)
  • 使用指南与博客文章标题恢复原名

Generated from v1.3.1

发布于查看详情

新增功能

  • 受保护链接(超链接访问门禁):为任意 http/https 地址生成 /link/{slug} 门禁页,可选邮箱验证,验证后 302 跳转,支持访问统计与 CSV 导出
  • 控制台合并:下载资源与受保护链接统一到「资源访问管理」单页,页签切换,沿用下载管理图标
  • 邮箱验证通知区分下载/链接模板
  • 引用扫描支持 /link/ 链接

Generated from v1.3.0

发布于查看详情

Full Changelog: v2.4.0...v2.4.1

refactor(share): 重构分享卡片功能,简化配置与渲染流程

  1. 移除分享卡片多余的标语、英文标识配置项,简化站点名称配置逻辑
  2. 重构SVG生成逻辑,减少不必要的参数传递,优化排版计算
  3. 调整分享卡片视觉样式,优化内边距、图片缩放与背景光晕效果
  4. 更新日期显示格式与卡片整体设计风格

Generated from v2.4.1

发布于查看详情

Full Changelog: v2.3.1...v2.4.0

功能:新增句子分享功能,包括后端API和前端弹窗

  • 为公开角色和查看角色新增与分享相关的RBAC权限
  • 在插件设置中新增分享配置设置项
  • 新增句子分享服务,支持载荷生成和SVG卡片生成
  • 新增公开分享端点和控制台分享端点
  • 在Vue后台管理中新增分享弹窗组件
  • 在前端模板中新增分享按钮和弹窗
  • 在Hitokoto页面新增分享功能

Generated from v2.4.0

发布于查看详情

Full Changelog: v2.3.0...v2.3.1

refactor(SentenceList): 优化批量导入JSON解析逻辑

  • 新增对象判断、键扁平化和嵌套取值工具函数
  • 替换原有的简单键获取和属性访问逻辑
  • 支持多层嵌套对象和数组类型的JSON数据解析

Generated from v2.3.1

发布于查看详情

What's Changed

新功能

  • 新增基础行高和文章段落间距设置, 可在 全局样式 -> 基础行高全局样式 -> 文章段落间距 中配置
  • 新增文章元信息分隔符设置, 可在 全局样式 -> 文章元信息分隔符 中自定义
  • 新增文章正文链接专用的颜色和文本装饰变量
  • 新增行内代码的文字和背景颜色颜色变量

修复

  • 修复瞬间点赞请求完成前可以被重复提交的问题, 请求期间会禁用按钮并正确恢复失败状态
  • 为友链, 社交资料, 页脚和备案信息中的外部链接补充 noopener noreferrer
  • 修复归档模板中多余的闭合标签

样式

  • 优化 inkpaper 配色
  • 将默认行高调整为基础字号的 1.75 倍, 文章段落间距调整为基础字号的 1.25
  • 优化文章列表间距和分页分隔线颜色, 移除文章列表之间的多余边线
  • 调整文章底部分页分割线为弱化前景色
  • 为前景色与强调色相同的双色配色自动显示正文链接下划线

杂项

  • 调整全局样式设置顺序及帮助说明
  • 补充页头操作, 文章目录, 瞬间交互, 页脚和错误页面等界面文本的多语言支持

Full Changelog: 2.5.0...2.6.0


Generated from 2.6.0

发布于查看详情

⚙️ Enhancements / 功能优化

  • Public Page: Delegated /schedule-calendar and public card rendering to Thymeleaf templates with theme override support / 公开页面:将 /schedule-calendar 与公开卡片渲染委托给 Thymeleaf 模板,支持主题覆盖自定义
  • Settings: Removed the public page enable toggle because the public page route is now always available through template delegation / 后台设置:移除前台公开页面启用开关,公开页面路由改为通过模板委托始终可用
  • Favicon: Public calendar pages now inherit the site favicon when configured, and omit favicon links when unavailable / 站点图标:公开日历页现在继承主站 favicon,未配置时不输出 favicon 链接

🛠️ Bug Fixes / 问题修复

  • Permissions: Replaced destructive permission probing with the dedicated console manage-permission endpoint to avoid misleading 404 logs for __permission_probe__ / 权限:将破坏性权限探测替换为控制台管理权限专用接口,避免 __permission_probe__ 产生误导性的 404 日志
  • Public Page: Removed hardcoded /favicon.ico references that could trigger 404 requests on sites without a root favicon file / 公开页面:移除硬编码 /favicon.ico 引用,避免未配置根路径 favicon 的站点产生 404 请求

Generate from v3.5.0

发布于查看详情
  • 新增左下角悬浮音乐播放器,支持网易云音乐歌单和自定义 API 数据源。
  • 支持顺序播放、随机播放、上一首、下一首,以及站内切页自动续播。 -
  • 文章详情页新增回到顶部、点赞和评论快捷操作。
  • 优化归档页互动统计的布局与展示效果。
发布于查看详情

Full Changelog: v2.2.1...v2.3.0

feat: 新增CSV导入、Excel导出功能,添加分类切换功能

  1. 新增句子CSV导入与Excel导出功能,添加对应依赖
  2. 添加前端分类切换面板,支持本地缓存分类选择
  3. 新增操作日志记录,完善权限控制
  4. 新增定时清理提交记录与浏览缓存任务
  5. 优化相似度检查内存占用与异常重试逻辑
  6. 补充批量删除操作的操作人日志

Generated from v2.3.0

发布于查看详情

1.7.0

  • 优化投稿频率限制与访客识别
  • 完善 AI 预审和自定义审核提示词
  • 修复插件升级后的索引注册问题
  • 修复前端投稿开关同步问题
发布于查看详情

文章投稿审核 1.2.0

本版本针对 Halo 应用市场审核反馈完成安全、权限、性能和合规整改。

安全审核流程

  • 投稿时绑定 Halo 不可变文章快照,并记录标题、摘要、标签、分类、作者、正文长度和 SHA-256 内容指纹。
  • 30,000 字符以内的正文会完整提交给 AI 审核,不再截断正文后自动发布。
  • 超过 30,000 字符的文章直接转入人工审核,不产生 AI 调用费用。
  • 自动发布前重新读取文章完整内容和元数据,并与投稿快照进行一致性校验。
  • 文章发生修改、所有者变化、快照损坏或并发更新冲突时,一律转入人工审核。
  • 只有模型明确返回 pass: true 且评分不低于 85 分时才允许自动发布。
  • pass 缺失、字段类型错误、评分越界或 pass 与评分矛盾时不会自动发布。
  • AI 服务原始异常不再保存或展示给投稿用户。

权限修复

  • 为“投稿审核管理”权限模板补充以下子资源权限:
    • contributions/pass
    • contributions/reject
    • contributions/retry-ai
  • 后台列表、统计、设置和审核操作改为最小必要权限。
  • 修复委派管理员读取设置页所需的集合查询权限,并将配置访问限定到插件自身 ConfigMap。
  • 支持将审核能力委派给非超级管理员角色。

性能与费用控制

  • 相同用户和文章使用确定性投稿标识,避免并发产生重复投稿记录。
  • 同一投稿请求增加并发锁,重复请求不会产生额外 AI 调用。
  • 普通用户投稿增加 30 秒频率限制。
  • 管理员重新 AI 审核增加 30 秒频率限制。
  • AI 审核限制为最多 2 个并发请求,并设置 90 秒超时。
  • 用户可投稿文章改为按 spec.owner 索引查询,不再全量读取文章后过滤。

规范与合规

  • 项目自有 Java 命名空间由 Halo 保留的 run.halo.* 迁移至 top.itxiaohui.contribution.*
  • Halo 兼容范围统一为清单部分版本 2.25,即 Halo 2.25.x
  • 插件改为 Proprietary 专有软件许可,完整许可文件随 JAR 制品提供。
  • 新增隐私与数据处理说明,披露 AI Foundation 和模型服务提供方的数据流向。

升级提示

  • 升级后已有投稿仍可查看和人工处理;重新 AI 审核时会自动绑定当前不可变文章快照。
  • 请确认 AI Foundation 已启用并配置可用语言模型。
  • 请重新检查“发起投稿审核”和“投稿审核管理”权限模板的角色分配。
发布于查看详情

本次更新带来全新的主题切换动画,并主要围绕页面加载性能与交互稳定性做了系统优化:热门文章与图片加载策略重写,降低请求量与布局抖动;外链安全校验、无障碍体验与稳定性问题一并完善,整体体验更流畅。

本版本大部分功能与优化 by @Helio-RC in #8 #7 #4 贡献,在此表示感谢!

欢迎加入 QQ 交流群:点击加入交流群

tips

  • 此次更新主题后建议执行重载主题配置 & 清除模版缓存,确保主题使用正常。

新增

  • 主题切换动画:切换深浅色时新增淡入淡出 / 圆形扩散 / 擦除三种过渡动效,可前往「主题设置 → 样式 → 配色切换动画」配置
  • 底部波浪:开关升级为三选(关闭 / 开启 / 移动端关闭),可前往「主题设置 → 样式 → 底部波浪效果」配置

优化

  • 热门文章:改用服务端按访问量排序,单请求获取榜单,替代原先"先取总数再全量拉取"的两步请求,加载更快、接口压力更小
  • 首屏加载:文章正文图片懒加载并预留空间(加载前按比例占位、加载后自动修正),减少首屏请求与页面抖动
  • 动画节流:后台标签页自动暂停横幅文字、波浪等动画,回到前台继续,减少资源占用
  • 目录高亮:滚动时高亮跟随更平滑,切换页面更跟手
  • 页面加载:朋友圈相关脚本改为仅朋友圈页面加载,其他页面不再加载多余脚本
  • 缓存更新:静态资源统一追加版本指纹,主题升级后旧缓存自动失效,刷新即可生效
  • 认证页同步:登录 / 注册等页面配色与主站明暗设置保持一致
  • 无障碍:优化读屏软件兼容、弱对比度文字、键盘操作(音量 / 进度滑块、菜单展开)、搜索框与首页标题等细节

修复

  • 安全性:外链跳转与友链 / 装备等用户填写内容加强协议校验,拦截 javascript: 等危险链接,防止恶意脚本执行
  • 安全性:新窗口打开的链接补充安全属性,防止新页面反向利用当前页面
  • 点赞 / 投票:失败自动回滚(撤销已赞状态与计数)并抖动提示;点赞后 5 秒冷却,防连点刷接口
  • 随机访问:随机访问 / 随机钓鱼仅从正常 http(s) 链接中随机,危险链接不进候选
  • 天气小组件:接口限流时不再反复重试(避免请求放大),直接显示缓存或错误提示
  • 翻页稳定性:修复多次翻页后随机访问可能重复跳转、友链申请可能重复提交的问题

其它

  • 清理死代码与冗余逻辑
  • 文章正文补充无脚本降级显示
  • 开发维护:修复依赖锁定文件与依赖清单不一致,统一包管理工具版本,避免反复出现无谓的文件变动
  • 更新 README
  • 版本号提升至 v1.0.8

变更完整日志: v1.0.7...v1.0.8


Generated from v1.0.8

发布于查看详情

halo-theme-cosolar v1.1.3

页脚设置重构

将页脚相关设置统一收归至「页脚设置」分组,便于集中管理;并对各功能区做分组整理,提升配置直观性。

  • 版权与备案迁移:将原「基础设置」中的 footer_text(页脚版权文字)与 icp(ICP 备案号)移动到「页脚设置」分组。
    • theme.config?.basic?.footer_texttheme.config?.footer?.footer_text
    • theme.config?.basic?.icp / theme.config.basic.icptheme.config?.footer?.icp / theme.config.footer.icp
  • 页脚导航链接分组:将 privacy_urlterms_urllinks_urlabout_url 整理进新增的 legal_links 子分组,每个链接配独立显示开关(privacy_enabled / terms_enabled / links_enabled / about_enabled),关闭后对应链接不渲染。
    • layout.htmlth:with 同步改为从 legal_links 读取,开关关闭时 URL 变量置为 null
  • 浅色 / 深色模式分组:将页脚背景图、透明度、文字与图标颜色整理为 light(浅色模式)与 dark(深色模式)两个子分组,取代原先平铺的 bg_image / bg_image_dark / social_color / social_color_dark 等字段。
    • 读取路径更新:footer.bg_imagefooter.light.bg_imagefooter.social_color_darkfooter.dark.social_color 等,透明度同理分属 light / dark
  • 页脚订阅表单提交地址迁移:将 footer_subscribe_action 从「博主信息」(social) 分组移动到「页脚设置」分组末尾。
    • theme.config?.social?.footer_subscribe_actiontheme.config?.footer?.footer_subscribe_action

页脚新增服务商 / 赞助商信息

在页脚底部新增可配置的服务商 / 赞助商信息模块(如云服务、CDN 提供商)。

  • 新增「页脚设置 → 服务商/赞助商」子分组 (footer.sponsor):
    • enabled:是否显示服务商信息(默认关闭)。
    • icon:Iconify 图标名(如 ri:cloud-line)或完整图片 URL。
    • name:服务商名称(如 腾讯云、阿里云、京东云)。
    • url:服务商链接,留空则名称显示为纯文本。
    • prefix / suffix:名称前 / 后文字,留空不渲染、不留空格。
    • name_is_link:名称是否为超链接(默认开启)。
  • 渲染结构:prefixsuffix 在外层,iconname 包在 .footer-sponsor-brand 内紧挨显示(gap:0,icon 加 margin-right:2px 微调);仅当 enabledname 非空时渲染整块。
  • 新增 .footer-sponsor 系列样式,复用主题色变量与 hover 过渡,与页脚其它元素风格一致。

效果示例(配置 name=腾讯云、url=https://cloud.tencent.com、suffix=提供 CDN 加速/云存储服务):

☁ 本网站由 腾讯云 提供 CDN 加速/云存储服务

其中「腾讯云」为指向服务商链接的超链接,图标使用主题主色调。

  • 重新设计并重构友情链接页面 (links.html / links.css / links.ts),统一卡片视觉与交互。
  • 新增分类导航,支持按分组筛选;分类图标可通过注解 (theme-cosolar-linkgroup-icon) 自定义(Iconify / iconfont)。
  • 新增详细 / 简洁两种视图切换,偏好通过 localStorage 记忆。
  • 提交友链表单:
    • 新增「申请友链」CTA 区块开关 (links.show_apply_cta)。
    • 新增表单字段显示控制 (links.form_fields),可隐藏 logo / 邮箱 / 描述 / 友链 / RSS 等字段。
    • 提交成功 / 失败提示优化为居中胶囊样式,并修复关闭弹窗后提示残留的问题。
    • 验证码、表单等样式在深色模式下同步适配。
  • 移动端专项优化:
    • 分类导航改为下拉选择,避免网格溢出。
    • 顶部「分类 + 提交友链」整合为同一行。
    • 工具栏(搜索 / 排序 / 视图切换)整合为单行布局。
    • 卡片网格使用 minmax(0, 1fr),消除横向滚动;卡片描述最多显示 3 行并省略。
    • 申请弹窗内验证码与图片同排,合理分配宽度。

登录页面 (Login) 样式重构与移动端适配

  • 社交登录按钮重做:
    • 按 Halo OAuth2 插件真实 DOM 结构(.pill-items > li > form.social-auth-provider-form > button)编写样式,修复原规则被 .cos-card form button[type="submit"] 覆盖导致样式不生效的问题(提升选择器特异性并加 !important)。
    • 统一为中性描边胶囊按钮:白底、--c-border 边框、圆角,悬停仅文字 / 边框变主题色,不浮动、无阴影动画、不区分第三方平台品牌色。
    • 解除 .pill-items li 的边框影响,避免按钮外层出现黑框。
    • PC 端彻底移除悬停动画(transition 仅过渡颜色,transform:none、阴影锁定)。
  • 登录主按钮:
    • 补充 min-height:48pxline-height:1,修复不同浏览器默认行高导致的高度异常。
  • 移动端(≤480px)独立布局:
    • 卡片全宽撑满屏幕、无阴影、内容自然紧凑,不再强制垂直居中导致大片空白。
    • 输入框高度提升至 54px、登录按钮 52px、字号 16px,触控更友好。
    • 社交登录按钮改为自适应排布(flex-wrap,单项 min-width:140px),列数由后台配置决定,不写死。
    • 平板及以下隐藏登录页背景图,仅保留纯色背景,只显示登录表单。
  • 构建产物 login-*.css 同步更新。

文档与配置

  • 新增 docs/links-rest-api.mddocs/links-theme-api.md,说明友情链接 REST API 与主题集成能力。
  • settings.yaml 新增友链相关设置项。
  • annotation-setting.yaml 新增 LinkGroup 图标注解字段。

其他

  • main.css 全面整理与变量统一。
  • 移除废弃的 password-reset.css,相关样式并入 main.css
  • 更新 README.md.gitignore

分页组件 (Pagination) 重构

  • 重新设计 src/partials/pagination.htmlmain.css 中的分页样式,使其与文章卡片视觉权重协调。
  • 结构精简:移除首页 / 末页按钮,保留「上一页 / 当前页码 / 下一页」核心控件,跳转区移除「跳至 / 页」中文,仅保留输入框 + Go 按钮。
  • 视觉层级:
    • 下一页:主色实心按钮(最强 CTA),hover 时背景变深 + 阴影光晕 + 图标向右滑动 2px。
    • 上一页:次级描边按钮,hover 时主色文字 + 淡背景 + 图标向左滑动 2px。
    • 当前页码:弱化文本 当前 / 总,字号 / 字重区分主次,不抢戏。
  • 尺寸压缩:按钮高度统一为 28px(PC)/ 24px(移动端),圆角 6-8px,与文章卡片标签同等量级。
  • 响应式:
    • PC 端:上一页 / 下一页显示「图标 + 中文」组合,最直观易认。
    • 移动端(≤640px):自动隐藏中文文字标签,仅保留图标 + 页码,节省横向空间。
  • 修复:SVG 与中文文字垂直居中对齐(SVG 设为 display:block + flex item,文字 line-height:1)。
  • 修复:下一页按钮 hover / active 态文字颜色未显式声明导致与绿色背景同色「消失」的问题。

链接管理插件:较新版beta加入了友链提交功能,具体可以查看插件说明。
image

发布于查看详情

2.1.5

新增

  • 适配 Links 插件的访客友链申请功能。
  • 在友链页面分类栏右侧新增“申请友链”入口。
  • 新增友链申请弹窗,支持官方验证码、CSRF 校验和审核流程。
  • 在申请弹窗中展示本站名称、地址、头像链接和站点描述,并支持一键复制。

适配

  • 适配心愿插件新接口。
  • 适配Afdian Plus插件新接口。

移除

  • 移除友链页面底部原有的申请组件。
发布于查看详情

Full Changelog: v2.1.0...v2.2.1

功能更新:新增句子自动刷新功能并优化移动端适配

  1. 在后端和前端中新增自动刷新相关配置
  2. 新增自动刷新功能的切换按钮
  3. 优化移动端安全区域适配及樱花效果参数
  4. 调整小屏幕设备的布局样式

Generated from v2.2.1

发布于查看详情
  • 修复控制台资源路径异常导致页面持续加载/加载不出的问题。
  • 优化前端制品目录结构,提升插件安装与更新后的加载稳定性。
发布于查看详情

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

发布于查看详情

变更

修复:Umami 认证方式统一为登录账密,移除无效的 API Key 字段

自托管 Umami(任意版本,含 v2.x / v3.x)均没有「设置 → API keys」功能,API Key 仅为 Umami Cloud 的特性。原设置项对用户产生误导,且此前设置界面没有账密输入项(后端早已支持账密登录换令牌)。

  • 设置表单:移除 API Key,新增「登录用户名」「登录密码」
  • 后端:移除 apiKey 优先逻辑,统一通过 /api/auth/login 换取访问令牌
  • Console 提示文案与 README 同步修正

升级提示

升级后请前往插件设置重新填写 Umami 登录用户名和密码,原 API Key 配置项不再生效。

Full Changelog: v1.0.7...v1.0.8


Generated from v1.0.8

发布于查看详情

新增

  • 新增全局返回顶部按钮。
  • 新增友情链接申请弹窗,对接链接管理插件申请接口。
  • 支持展示并复制本站友链名称、地址、简介、Logo、RSS 和邮箱。
  • 新增友链资料主题设置分组。

友情链接申请功能必须配合 链接管理插件 2.3.0 使用。


Generated from v1.0.1

发布于查看详情

Afdian Plus — 爱发电增强插件

适用于 Halo 2.20+ 的爱发电数据集成插件,提供赞助者、订单、方案、电铺商品、作品集的完整管理与主题展示能力。

功能概览

数据管理

  • 一键拉取爱发电全部数据(赞助者、订单、方案、电铺商品、作品集),自动翻页
  • 数据持久化到 ConfigMap,重启不丢失
  • 内存缓存机制,可配置缓存时长(默认 30 分钟)
  • 双域名容灾:自动在 afdian.comifdian.net 之间切换,主域名不可用时自动回退到备用域名

后台仪表盘

  • 赞助者总数、订单总数、累计金额、方案/商品数量统计卡片
  • 近 6 个月订单趋势柱状图
  • 赞助者金额排行榜
  • 最近订单时间线

数据面板

  • 赞助者列表(头像、昵称、累计金额、最后支付时间、当前方案)
  • 订单列表(订单号、标题、金额、状态、类型、时间)
  • 方案卡片(名称、价格、类型标签、描述,点击可弹窗下单)
  • 电铺商品卡片(图片、名称、价格、在售状态,点击可弹窗下单)
  • 作品集卡片(封面、标题、状态、篇数)
  • Webhook 日志查看(摘要、原始 JSON 展开)

Webhook 回调

  • 接收爱发电支付回调通知
  • 自动保存 Webhook 日志
  • 收到回调后自动清除缓存并重新拉取全部数据
  • 通过 Halo 通知系统向管理员发送新订单站内通知和邮件

主题集成

插件注册 afdianPlusFinder 到 Thymeleaf 上下文,主题模板可直接调用:

方法 说明
afdianPlusFinder.listAllSponsor() 获取全部赞助者
afdianPlusFinder.listAllOrder() 获取全部订单
afdianPlusFinder.listAllPlan() 获取所有方案
afdianPlusFinder.listAllProduct() 获取电铺全部商品
afdianPlusFinder.listAllAlbum() 获取全部作品集
afdianPlusFinder.parseTime(timestamp) 秒级时间戳转 yyyy-MM-dd

弹窗支付

使用 window.open() 弹出 520×700 居中小窗口打开爱发电支付页面(爱发电设置了 X-Frame-Options,无法使用 iframe)。

配置说明

在插件后台「API 配置」页面设置:

配置项 说明
用户 ID (user_id) 爱发电创作者管理 → 开发者设置中获取
API Token 爱发电创作者管理 → 开发者设置中获取
缓存时长 数据缓存分钟数,默认 30,最大 1440
方案 ID 列表 需要在主题中展示的方案 ID,可添加多个

Webhook 配置

在爱发电后台设置 Webhook 地址:

https://你的域名/apis/console.api.afdian.aobp.cn/v1alpha1/afdian/-/webhook

主题集成

详见 THEME-INTEGRATION.md,包含赞助者列表、方案卡片、电铺商品、弹窗支付的完整 Thymeleaf 模板示例。

Serenity 主题(Hue / Ordinary)已内置集成,在主题设置 → 关于页面中开启爱发电即可。

交流

欢迎加入交流群了解更新、反馈问题和交流主题集成。

交流群

项目信息

二次开发与借鉴说明

如果你基于本项目进行二次开发、功能移植或实现思路借鉴,请主动告知开发者。这有助于了解项目的实际使用情况、协调兼容性,并减少重复开发。

上述告知属于社区协作倡议,不限制 GPL-3.0 已授予的复制、修改和再分发权利。发布或分发衍生作品时,仍需遵守 GPL-3.0 的源代码提供、许可证保留和版权声明要求。

如需获取与发布制品对应的完整源代码,请通过项目主页或 GitHub 联系开发者。

发布于查看详情

心愿便签(Wishboard)

适用于 Halo 2.25+ 的心愿墙与树洞插件,为站点提供便签展示、访客投稿、内容审核和主题集成能力。

功能概览

  • 便签墙页面:提供独立的心愿墙与树洞页面,便签以卡片形式展示,桌面端支持拖动,新便签发布后无需刷新即可显示
  • 多种便签类型:内置心愿和树洞两种类型,并支持在后台创建自定义类型
  • 访客投稿:访客可以匿名或署名发布便签,并选择便签颜色和类型
  • 投稿开关:可随时关闭前台投稿,保留已有便签的公开展示
  • 内容审核:支持免审核、人工审核和 AI 自动审核
  • AI 能力:支持暖心回复、情绪标签、内容审核
  • 心愿追踪:支持待处理、进行中和已达成等状态,达成后可添加纪念照片与感言
  • 纪念日计数:可在便签墙显示纪念日天数和双方名称
  • 访问保护:支持访问频率限制和敏感词过滤
  • 数据管理:支持便签与类型的导入、导出、批量管理和审核
  • 主题适配:提供独立页面、主题模板覆盖和 Finder 数据访问能力

基本使用

安装并启用插件后,在插件设置中配置页面标题、投稿方式、审核模式和便签类型。

需要直接使用插件页面时,可启用内置页面并访问 /wishes。也可以在 Halo 后台创建便签墙页面,由当前主题提供 wishes.html 模板。

主题集成

使用主题模板

在主题的 templates/ 目录中创建 wishes.html,插件会优先使用主题模板渲染便签墙。主题可以自行控制页面布局和样式,便签数据通过 wishFinder 获取。

显示便签

<th:block th:if="${wishFinder != null}"
          th:with="wishes=${wishFinder.listApproved()}, typeMap=${wishFinder.getTypeMap()}">
  <article th:each="wish : ${wishes}">
    <span th:text="${typeMap[wish.spec.type]}">类型</span>
    <p th:text="${wish.spec.content}">便签内容</p>
    <span th:text="${wish.spec.anonymous ? '匿名' : wish.spec.nickname}">昵称</span>
  </article>
</th:block>

按类型显示

<th:block th:if="${wishFinder != null}"
          th:with="wishes=${wishFinder.listByType('wish')}">
  <article th:each="wish : ${wishes}">
    <p th:text="${wish.spec.content}">心愿内容</p>
    <span th:text="${wish.spec.status}">状态</span>
  </article>
</th:block>

可将 wish 改为 treehole 或后台创建的自定义类型标识。主题还可以使用:

  • wishFinder.listTypes():获取便签类型
  • wishFinder.countApproved():获取公开便签总数
  • wishFinder.countByType('wish'):获取指定类型数量
  • wishFinder.getTypeMap():获取类型名称映射

自定义 wishes.html 时,可直接使用插件注入的页面标题、副标题、纪念日设置、投稿开关和 AI 开关等模板变量。

交流

欢迎加入交流群了解更新、反馈问题和交流主题集成。

交流群

项目信息

二次开发与借鉴说明

如果你基于本项目进行二次开发、功能移植或实现思路借鉴,请主动告知开发者。这有助于了解项目的实际使用情况、协调兼容性,并减少重复开发。

上述告知属于社区协作倡议,不限制 GPL-3.0 已授予的复制、修改和再分发权利。发布或分发衍生作品时,仍需遵守 GPL-3.0 的源代码提供、许可证保留和版权声明要求。

如需联系开发者,请访问 https://www.aobp.cnhttps://github.com/atangccc。

发布于查看详情

AstraHub 插件 2.7.16 紧急更新公告

[!CAUTION]
本次更新为强制更新,请所有已接入 AstraHub 的站点管理员尽快完成升级。

由于 AstraHub 服务端迁移及数据恢复需要,旧版本插件可能出现站点识别失败、自动上报失败、星链信息推送失败或显示“站点未注册”等问题。

必须更新的原因

本次更新加入了临时站点身份恢复能力。插件升级后,会使用站点本地保留的接入配置,与新的 AstraHub 服务端重新确认并恢复原有站点身份。

恢复内容包括:

  • 原站点 ID
  • 原站点接入凭据
  • 绑定邮箱
  • 站点地址
  • 站点名称、节点名称、头像及 RSS 地址
  • 星链和友链关系数据

由于恢复过程依赖限时开放的服务端恢复窗口,未及时升级的站点可能无法自动恢复原有接入状态。

发布于查看详情

halo-theme-cosolar v1.1.2

新增功能

  • 邮箱密码找回页面:新增 password_reset_email_send.htmlpassword_reset_email_reset.html 两个官方网关片段,以及 send.html / reset.html 页面,全部中文化(标题、副标题、按钮、提示、错误文案),采用居中的单栏美化布局。
  • 文章页面设置分组:在后台设置中新增独立的「文章页面(post)」分组,集中管理文章相关配置:
    • show_post_title:是否显示文章标题(默认开)。
    • toc_show_h1:右侧目录是否包含正文 H1 级标题(默认关)。
    • show_content_h1:是否渲染显示正文内手动撰写的 H1 标题(默认开),与目录 H1 开关相互独立。
    • toc_width:文章目录宽度(默认 240,范围 180–320),由原「主题样式」分组迁入。
    • default_post_cover:文章缺省封面图,由原「主题样式」分组迁入。

问题修复

  • 注册页邮箱注册不正常
    • 错误提示缺失、协议勾选校验、提交时字段 trim、与官方片段对齐等问题已修复。
    • 注册失败时顶部错误红框无文字的问题修复:增加 !#strings.isEmpty(error) 判断与兜底文案「注册失败,请检查填写内容」。
  • 注册页表单挤压:优化注册表单布局,避免邮箱/验证码区域在窄屏下被挤压,并兼容移动端显示。
  • 注册失败滚动问题:表单在 ≤900px 视口下由框内滚动改为页面自然滚动(height:auto / min-height:100dvh / overflow:visible),不再出现框内滚动条。
  • 退出页头像占位优化:用户未设置头像时展示首字母渐变圆标占位(青绿色渐变)。
  • 退出页 500 错误:修复 SpEL 表达式中混用选择表达式 *{...} 与工具表达式 #strings 导致的 TemplateProcessingException。同时修正头像判断始终走占位逻辑的问题(th:object 上下文下误用 ${spec.avatar} 读不到值),现统一使用 ${user.spec.avatar} 等完整路径,已设置头像时正确显示真实头像。
  • 注册页 / 登录页移动端兼容:补充 iOS 输入防缩放(font-size:16px)、断点响应式(768 / 480 / 360 / 横屏)等适配。

其他

  • 后台「主题样式(style)」分组中的 toc_widthdefault_post_cover 已迁出至新的「文章页面(post)」分组,所有代码引用同步由 style.* 改为 post.*
  • docs/使用教程.md 同步更新:目录与章节重新排序,文章页面成为独立第 17 节,并完整列出 5 个设置项说明。

升级提示

直接覆盖主题文件并重新构建(pnpm build)即可。设置项 post.* 已带默认值,旧站点的 style.toc_width / style.default_post_cover 配置将不再生效,请到「文章页面」分组重新确认。

发布于查看详情

本次更新主要优化主题的整体体验,包括统计字数准确性、热门文章覆盖范围与页面加载性能,并修复若干细节问题。主题功能逐渐增加完毕以及稳定,后续将拉长发版间隔,避免更新过于频繁。

优化

  • SEO 完善:为缺少 meta description 的页面自动添加描述,并补齐三套语言包(中/繁/英)的页面描述文案 by @Helio-RC in #3
  • 页面标题与分享信息:18 个页面的 title/OG 标签统一由 Layout 输出,删除重复与空值,避免分享平台读到空链接、重复标题 by @Helio-RC in #3
  • 首屏加载:文章封面与相册图片预占空间,避免页面加载时布局抖动;客户端脚本按需加载,减少不必要的请求 by @Helio-RC in #3
  • 站点统计字数:总字数优先使用 API 扩展包 插件服务端统计,精确且零请求,未安装插件时自动回退客户端兜底统计 by @Helio-RC in #3 ;两套统计规则现已统一,字数显示更一致、误差更小
  • 热门文章:新增会话缓存,切换页面不再重复请求列表接口 by @Helio-RC in #3 ;同时不再受固定 50 篇限制,改为先获取文章总数再拉取全量,按访问量排序取前五,避免老文章因篇数超限无法上榜
  • 样式细节:站点统计五组图标统一为圆角风格,归档页副标题图标更新,无封面文章卡片宽度自适应

修复

  • 修复 iOS 下页面缩放与横竖屏适配问题 by @Helio-RC in #3
  • 修复客户端入口脚本输出位置问题 by @Helio-RC in #3
  • 修复部分组合下分类小组件更多按钮失效的问题

其它

  • 更新README
  • 版本号提升至 v1.0.7

变更完整日志: v1.0.6...v1.0.7


Generated from v1.0.7

发布于查看详情

本版本更新主题到 0.9.46。\n\n主要内容:\n- 补齐服务端 SEO 的 og:url、og:site_name、robots、语言、canonical 分页和页面语义。\n- 修复分类/标签全部文章分页,统一使用 ?p=N,并完善 PJAX SEO 与结构化数据修复。\n- 桌面与通知中心数据型小组件增加 hydration 等待骨架,按尺寸保留卡片框架,数据就绪后自动替换真实内容。\n- Halo 最低版本保持 >=2.25.0,PluginLinks 按 2.2.1 契约适配。\n\n验证:pnpm run check、pnpm run build、依赖许可证与安全审计、发布包供应链校验通过。\n\n说明:当前本地 Halo localhost:8090 实际启用 theme-sky-blog-4,未将其响应冒充本版本的 theme-sky-blog-3 真页验证;Reload、Playwright 和性能真页复验需在切换到本主题后补做。


Generated from v0.9.46

发布于查看详情

新增

  • 文章打赏:新增文章打赏功能,可在「主题设置 → 文章 → 文章操作栏」中配置打赏文案与收款图片
  • 文章操作栏设置:新增文章操作栏设置组(启用/点赞/分享/打赏),可在「主题设置 → 文章 → 文章操作栏」中配置
  • 友情链接自助提交:新增友链自助提交功能,访客可在友链页直接填写信息提交申请,需链接管理插件为最新测试版(2.3.0-beta 及以上),可在「主题设置 → 友情链接 → 功能开关」中开启
18c7f0dbb3f73db4246

优化

  • 分享海报:海报高度按内容动态计算,避免固定高度留白,摘要超长截断省略号
  • 代码精简:精简重复代码,优化图片加载逻辑,提升页面加载速度
  • 还有一些你可能并不在意的UI样式优化……

修复

  • 安全:修复外链跳转弹窗安全漏洞
  • 点赞数量:修复新访客看不到文章点赞数量

其它

  • 版本号提升至 v1.0.6
  • 更新 README

变更完整日志: v1.0.4...v1.0.6


Generated from v1.0.6

发布于查看详情

首个公开发布版本

  • 下载资源管理:选择附件创建下载资源,生成 /download/{slug} 链接
  • 下载统计:下载次数、去重下载人数、详细记录(时间/邮箱/IP/UA),支持 CSV 导出
  • 邮箱验证:按资源开关,Halo 通知中心发信,已验证邮箱长期免验证
  • 防直链:注册为资源的本机附件 /upload/** 直链返回 404
  • 文章引用扫描:扫描已发布文章,展示每个资源被哪些文章引用

1.1.1:代码基础包名迁移至 io.github.shirainbown(应用市场审核整改),功能不变

发布于查看详情

v1.0.7 数据区间与点赞明细

\n
  • 单篇文章分析支持数据区间(近7/30/90天/自定义):新增「区间阅读」「区间点赞」可排序列,CSV 导出同步包含
  • 全站数据列表新增「点赞明细」列:当天被赞文章一目了然,点击直达单篇数据抽屉
  • 区间阅读基于 Umami 按 URL 聚合(兼容新旧版本 Umami),区间点赞基于按日明细求和
\n

要求 Halo 2.21+。

发布于查看详情

v1.0.6 数据区间与点赞明细

\n
  • 单篇文章分析支持数据区间(近7/30/90天/自定义):新增「区间阅读」「区间点赞」可排序列,CSV 导出同步包含
  • 全站数据列表新增「点赞明细」列:当天被赞文章一目了然,点击直达单篇数据抽屉
  • 区间阅读基于 Umami 按 URL 聚合(兼容新旧版本 Umami),区间点赞基于按日明细求和
\n

要求 Halo 2.21+。

发布于查看详情

Full Changelog: 1.0.10...v1.0.11

chore: release theme version 1.0.11, refactor common components

  • 版本号更新至1.0.11
  • 重构分页组件为通用模块,复用代码
  • 新增通用文章卡片列表组件,统一归档页面样式
  • 新增错误页面模板
  • 优化布局文件:新增主题色meta、预连接资源,移除冗余jQuery依赖
  • 优化JS代码:替换jQuery为原生API,优化滚动事件性能
  • 优化Fancybox样式,适配移动端显示
  • 新增PJAX加载指示器样式
  • 修复部分页面样式细节问题

Generated from v1.0.11

发布于查看详情

Full Changelog: v1.0.9...1.0.10

chore: release theme version 1.0.10, add mobile lyric sync feature

  1. update theme version from 1.0.9 to 1.0.10
  2. add mobile-side custom lyric display sync function
  3. add mobile lyric display DOM and style
  4. refactor mobile music player styles, merge duplicate code

Generated from 1.0.10

发布于查看详情

Full Changelog: v1.0.8...v1.0.9

refactor(frontend): 优化图片灯箱体验与UI交互

  1. 重构文章头图、动态图片的灯箱交互逻辑,移除旧的zoom按钮
  2. 新增自动为文章正文图片包裹Fancybox链接的功能
  3. 完善头像兜底显示逻辑,无头像时展示昵称首字母
  4. 统一全站点图片hover放大与放大镜交互效果
  5. 自定义Fancybox主题风格,适配站点主题色
  6. 优化PJAX跳转与Fancybox的兼容性,避免页面异常重载

Generated from v1.0.9

发布于查看详情

Fuwari v2.2.0

本次更新新增友链自助申请与萌 ICP 备案支持,并对友链页面和 Markdown 显示体验进行了优化。

新功能

  • 友链页面新增与主题风格一致的申请表单,支持填写网站信息、反链及 RSS / Atom 订阅地址。
  • 友链申请接入 plugin-links 公共 REST API,验证码获取和申请提交均无需刷新页面。
  • 新增萌 ICP 备案号和跳转链接设置,仅在两者均已配置时显示。感谢 @qzgeek 的贡献(#31)。

优化与修复

  • 完善友链申请成功、内容无效、验证码错误、重复申请、请求限流和服务不可用等状态提示。
  • 优化验证码刷新、过期处理和请求状态,避免重复请求及重复提交。
  • 修复 Swup 页面切换后申请按钮可能一直处于禁用状态的问题。
  • Logo 加载前、加载失败或未配置时显示网站名称首字,不再出现裂图。
  • 保留无 JavaScript 环境下的原生友链申请表单。
  • 修复 Markdown 行内代码前后显示多余反引号的问题。感谢 @nekoside-dev 的贡献(#30)。

兼容性

  • 需要 Halo 2.25.0 或更高版本。
  • 使用无刷新友链申请功能需要 plugin-links v2.3.0-beta.2 或更高版本。

升级提示

升级后请在 Halo Console 中重载主题配置,以载入新增的萌 ICP 备案设置。

Full Changelog: v2.1.0...v2.2.0


Generated from v2.2.0

发布于查看详情

v1.0.1 应用市场审核整改

\n
  • 数据生命周期:每日点赞统计改为有界存储——默认仅保留 90 天(可配置 7-365),过期数据每次轮询自动清理;已删除文章的快照自动移除;每日单篇明细上限 1000 篇;新增 DELETE 重置端点;README 补充完整的数据存储、清理、备份与卸载说明
  • 性能:点赞计数轮询间隔从 60 秒降至默认 300 秒(可配置 60-3600 秒)
  • 合规:Java 包与自定义 API group 从平台保留的 run.halo 命名空间迁移至 io.github.shirainbown
  • 许可:补充 MIT LICENSE 文件并随制品分发,仓库、制品与市场资料保持一致
\n

要求 Halo 2.21+。

发布于查看详情

功能优化

  • 评论识别模型选择器支持清空,不再仅展示声明支持结构化输出的模型

开发者相关

  • 新增公开友链申请 REST API,支持无 Cookie 获取验证码并通过 JSON 提交申请 by @ruibaby in #158
  • /links/apply/submit 恢复为原生表单提交;使用 v2.3.0-beta.1 JSON 协商响应的集成需迁移至 REST API by @ruibaby in #158

Full Changelog: v2.3.0-beta.1...v2.3.0-beta.2


Generated from v2.3.0-beta.2

发布于查看详情

重构

  • 主题登录认证界面:重构登录认证界面,引入动画角色交互面板,登录交互更生动有趣,前往「主题设置 → 认证」切换体验

新增

  • 公告小组件:新增公告小组件,可在「主题设置 → 侧边栏设置页 → 公告小组件」配置公告内容并展示
  • 一言 API 可配置:一言小组件支持自定义 API 地址和获取失败文案,可在「主题设置 → 侧边栏设置页 → 小组件设置 → 一言」中配置
  • 主题署名开关:新增主题署名开关,可在「主题设置 → 页脚 → 显示主题署名」关闭或开启署名显示
  • 随机访问/钓鱼动效:友情链接页面随机访问与朋友圈随机钓鱼跳转新增动效
  • 图片处理:图片处理新增 Banner 与头像设置,可在「主题设置 → 速度优化」中配置

优化

  • 个人简介设置迁移:个人简介小组件部分设置项迁移,设置项更加明了
  • 小组件边距统一:各小组件边距统一调整,视觉更整齐
  • 图片处理:优化图片处理默认值,精简重复的模板表达式
  • 外部字体:外部字体改为非阻塞加载,JS 打包优化
  • 菜单栏二级菜单:补齐点击内凹效果

修复

  • SEO 描述:修复 meta description 标签缺少 th: 前缀,导致搜索引擎抓取到字面模板文本的问题 by @Helio-RC in #2
  • 个人简介跳转:修复个人简介跳转 /login 一瞬间样式散架问题
  • 友情链接随机访问:修复友链随机访问自定义分组失效问题,随机访问改回 DOM 方案实现
  • 图片处理:修复图片自定义格式失效、正文图片双重加载与空跑问题
  • 分享海报:分享海报摘要改为读取 Halo 后台数据,不再依赖摘要框开关
  • 安全:修复潜在安全风险

其它

  • 版本号提升至v1.0.4
  • 更新README

tips

  • 本次更新改动较多,建议更新完成后执行清除模版缓存,如遇页面显示异常可重启 Halo 服务
  • 如遇到主题使用问题或意见反馈欢迎前往issues

新贡献者

变更完整日志: v1.0.3...v1.0.4


Generated from v1.0.4

发布于查看详情

归航寻亲

homeward 是一款 Halo 公益寻亲系统插件,首版聚焦“后台发布案例、前台公益展示、404 页面公益增强、访客提交线索、管理员处理线索”这一条闭环。

功能

  • Console 管理页:/console/homeward
  • 案例导入:支持从公网 URL 抓取,或粘贴网页正文/HTML;解析结果先回填为草稿,人工核对后再保存
  • AI 案例导入:通过 plugin-ai-foundation 的结构化输出解析自然语言、网页、PDF、Word、TXT、Markdown 和 HTML 文档
  • 批量 AI 导入:支持最多 20 条网页/文本资料或文档并发解析,逐条进入案例编辑器核对
  • 前台公益页:/homeward
  • 404 增强:在主题 404 页识别到 error.status == 404 时注入寻亲模块
  • Public API:/apis/public.homeward.muyin.site/v1alpha1/widget
  • Console API:/apis/console.homeward.muyin.site/v1alpha1/**
  • 数据模型:MissingPersonCaseClueReport
  • 防刷:IP 哈希限流、honeypot 字段
  • 通知:homeward-clue-submitted-notification 站内通知,可搜索并多选 Halo 用户,默认接收人 admin

AI 解析

插件依赖 Halo 官方 plugin-ai-foundation。安装并启用 AI Foundation 后,在归航寻亲设置的“AI
解析”分组中选择文本/网页模型;解析文档时优先选择声明支持 file input 的语言模型。模型设置保存的是
AiModel.metadata.name,留空时使用 AI Foundation 默认语言模型。

控制台入口:

  • 单条导入:开启“使用 AI 智能识别”后解析网页或粘贴文本;也可以上传单个文档。
  • 网页规则解析字段不足且 AI Foundation 已配置可用模型时,会在当前弹窗中提示一键使用 AI 重试,不会直接把空草稿送进编辑器。
  • 批量导入:按 --- 分隔多段文本,或一次选择多个文档;结果会逐条显示并进入编辑器核对。

相关 Console API:

  • POST /apis/console.homeward.muyin.site/v1alpha1/cases/import/preview
  • POST /apis/console.homeward.muyin.site/v1alpha1/cases/import/preview/document
  • POST /apis/console.homeward.muyin.site/v1alpha1/cases/import/batch/preview
  • POST /apis/console.homeward.muyin.site/v1alpha1/cases/import/batch/preview/documents

AI 结果不会自动保存或发布;网页抓取继续执行公网地址、响应大小和超时校验,文档上传限制为 10 MB。

后续 AI 方向

结合当前案例、访客线索和公益展示闭环,下一步适合按风险从低到高推进:

  1. 线索摘要与标签:为管理员生成“地点、时间、关系、可信度待核验项”的摘要,但保留原文。
  2. 相似案例/线索召回:使用 AI Foundation Embedding 建立候选召回,再由 Rerank 模型排序,最终仍由人工确认。
  3. 重复案例检测:保存前提示疑似重复姓名、地点、日期和来源,不直接合并数据。
  4. 隐私与发布检查:识别身份证号、精确住址、未授权联系方式等敏感信息,发布前提示脱敏。
  5. 资料质量检查:检查日期矛盾、年龄不一致、来源缺失和联系方式格式,给出可解释的修正建议。
  6. 图片辅助核验:在明确授权和模型支持的前提下提取照片元信息或生成无敏感细节的描述,禁止做人脸身份判断。

品牌

  • 插件名:归航寻亲
  • metadata.namehomeward
  • 包名:site.muyin.homeward
  • Logo:灯塔、回家路径、定位点组合,文件位于 src/main/resources/logo.svg

开发

./gradlew test
./gradlew build

本地启动 Halo DevTools:

./gradlew haloServer

许可证

GPL-3.0 © lywq

发布于查看详情

feat: 重构按钮定位并增强健壮性

  • 重构按钮定位策略,折叠态锚定容器底部,展开态粘视口底部
  • 修复 sticky 阻断问题,支持 overflow:clip 修复及旧浏览器降级
  • 增加后端兜底注入与配置校验,移除模板类型过滤
  • 兼容非 PJAX 动态加载,使用 MutationObserver 兜底重扫
  • 优化图片懒加载检测与折叠逻辑,完善暗色主题适配
发布于查看详情

新特性

  • 将 Halo 官网账户、应用目录、安装、升级和许可证交互迁移到插件后端,统一安装事务并避免在浏览器处理 Halo 官网凭据
  • 新增已安装应用管理页,支持搜索筛选、插件启用、应用管理以及单个和批量更新
  • 安装或更新付费应用后,自动尝试使用已有专业版、商城版或账户许可证激活
  • 支持按应用类型和身份识别发布资产;多资产时可选择,不可识别资产改为前往 Halo 官网下载

功能优化

  • 应用版本列表改为分页加载,降低历史版本较多时的请求和处理开销
  • 统一安装目标准备,执行前重新校验资产选择、确认和本地目标,避免使用已变化的安装目标
  • 优化许可证激活状态轮询,避免重复加载完整的 Halo 官网数据
  • 应用市场入口及操作统一限制为超级管理员,并在升级时移除旧的管理角色模板
  • 应用详情、协议和关联应用弹窗改为按需加载,减少控制台初始资源加载

问题修复

  • 增强应用 README、发布说明和弃用提示的渲染安全,过滤不安全 HTML 与外部 URL
  • 修复应用详情跨页导航、内容溢出以及发布说明和空状态加载异常
  • 修复存在多个有效 Halo 专业版激活记录时无法访问 Halo 官网数据的问题
  • 修复 Halo 专业版或商城版凭据无效提示的“查看许可证”跳转错误
发布于查看详情

新特性

  • 新增完整的友链申请与审核流程,支持访客提交、评论识别、审批恢复、历史筛选和批量清理 by @ruibaby in #141
  • 为访客友链申请增加图形验证码、待审核容量限制和新申请通知 by @ruibaby in #153, #156, #157
  • 支持通过 AI Foundation 从评论中提取友链信息 by @ruibaby in #142
  • 为链接增加右键快捷操作,支持编辑、移动分组和删除

功能优化

  • 优化友链申请详情、来源展示和审核体验 by @ruibaby in #154, #155
  • 将 RSS 订阅数据迁移至 SQLite,并增强迁移、快照和故障恢复能力 by @ruibaby in #151
  • 统一使用 Halo HTTP 安全组件访问外部链接,增强请求安全性 by @ruibaby in #146

开发者相关

  • 为主题支持友链申请提交的端点,文档可查阅:主题 API 文档
  • 最低 Halo 版本调整为 2.25.0;AI 功能需要可选的 AI Foundation 1.0.0-beta.4 或更高兼容版本

Full Changelog: v2.2.1...v2.3.0-beta.1


Generated from v2.3.0-beta.1

发布于查看详情

功能优化

  • 优化 AI 文章设置生成,结合当前文章内容与已有设置,仅生成所选字段,并在应用前校验结果。
  • 自动规范化 AI 生成的文章、分类和标签别名,提高常见格式变体的兼容性。

问题修复

  • 修复待创建的 AI 分类和标签无法逐项移除,保存时仍会创建并关联已拒绝项目的问题。
  • 修复部分运行环境未注册 JsonMapper Bean 时编辑器 AI 与 RAG 组件无法初始化的问题。
发布于查看详情

MacWk Halo Theme v1.0.0

这是 MacWk Halo Theme 的首个稳定版本。主题以 Halo 原生服务端渲染为基础,面向软件目录、专题和内容站点提供完整的 MacWk 展示体验,同时保持与 plugin-software 的职责边界清晰。

版本亮点

  • 现代 SSR 主题架构:使用 Astro 组织组件和样式,构建为 Halo Thymeleaf 模板;核心页面无需 JavaScript 即可访问,Vue Island 仅用于评论和下载等必要交互。
  • 完整内容与软件页面:覆盖首页、文章、分类、标签、归档、独立页面、404/500,以及软件列表、筛选、分页、详情、版本、下载、评论和软件专题。
  • 丰富的站点页面模板:内置关于、隐私政策、留言反馈、打赏支持、正版推荐、装机必备、精彩软件推荐、推荐应用和软件专题列表等自定义 Page 模板。
  • 安全下载流程:适配 plugin-software 的安全下载授权;公开详情不携带最终下载地址,受保护下载按需加载 Turnstile,并在授权成功后于新标签页打开下载。
  • 可配置的外观系统:提供自动、明亮、复古、护眼、海天、深邃和暗黑模式,支持自定义强调色,并记忆访客的外观和软件列表显示偏好。
  • 渐进增强的浏览体验:保留服务端链接和正文,使用 Swup 只替换主内容区域;登录、Console、API、附件和下载链接维持正常的浏览器导航行为。
  • SEO、可访问性与响应式:包含 Canonical、结构化数据、动态页面 noindex、键盘交互、焦点管理、reduced motion,以及桌面端和移动端布局。
  • 可控的插件依赖plugin-software 可用时展示软件目录和专题数据;插件未安装或未启用时隐藏相关入口并显示降级提示,Halo 原生内容仍可继续使用。
  • 发布质量门禁:包含 Biome、Astro Check、Vitest、Playwright、视觉回归、资源预算、生成资源引用校验和主题 ZIP allowlist 校验。

兼容性

  • Halo >= 2.25.0
  • plugin-software 1.0.0(软件目录、专题和下载功能需要;主题的 Halo 原生内容不依赖该插件)
  • Node.js >= 22.12.0、pnpm 10(仅从源码构建主题时需要)

安装与启用

  1. GitHub Releases 下载 frontend-macwk-halo-theme-1.0.0.zip
  2. 在 Halo Console 的“主题”页面上传并启用主题。
  3. 在主题设置中配置站点标题、Logo、导航、首页内容和强调色。
  4. 创建或编辑对应的独立页面,并为其选择主题内置的自定义模板(关于、隐私、反馈、打赏、正版、装机必备、推荐和专题等)。
  5. 如需软件目录能力,先安装并启用 plugin-software,再按插件文档配置软件和专题数据。

升级注意

  • 主题清单或设置发生变化后,请在 Halo Console 执行主题配置重载,并重新确认独立页面使用的模板。
  • 下载交互依赖插件的 download-options/download-grants 公共契约;自定义页面不要直接读取 Console API、原始 Extension 或旧的详情下载 URL。
  • 主题会在新标签页打开已授权的下载链接;提取码和密码只在当前下载面板内存中使用,不写入初始 HTML、本地存储或日志。
  • 若禁用 plugin-software/soft/... 和插件专题路由不可用是预期行为;主题自有的推荐、装机必备等页面会显示降级提示。

已知边界

  • AI Foundation 不是主题运行依赖;AI 能力只影响插件 Console 编辑辅助,不影响公开页面渲染。
  • 应用市场发布当前未启用,本版本通过 GitHub Release 分发。

许可证

GPL-3.0

发布于查看详情

更新内容

友链功能

  • 按静态 Demo 重构友链页面,统一“友链 / 友链动态 / 申请友链”三入口与桌面、移动端布局。
  • 接入 PluginLinks 2.2.1 的真实分组、状态、公开 RSS、权限与游标能力,保留评论留言和申请降级流程。
  • 新增友链与动态详情弹窗、分组/来源筛选、加载更多、申请 Markdown 生成和浏览器历史恢复。
  • 友链视图与分组切换改为页面内局部更新,绕过全局 Swup,避免整页刷新和重复生命周期。
  • 公开模板继续隐藏私有 RSS feedUrls,并清理旧 plugin-friends / link-submit 依赖。

SEO 与页面运行时

  • 新增统一 SEO Head 所有权,覆盖 18 个真实布局的 title、canonical、社交元数据与结构化数据降级。
  • 补齐关键页面 H1、图片 alt、分页链接及内容 main 语义,并增加工作树与主题 ZIP 二次验证。
  • 收口 PJAX 页面即时挂载、清理与状态恢复,修复晚加载入口和重复初始化问题。
  • 更新插件适配矩阵、运行态审计、Links 文档和发布验证脚本。

安全与构建

  • 新增 Links 路由、权限、游标、负载与模板契约测试,并强化 28 个插件契约检查。
  • 升级安全传递依赖:svgo 4.0.2、brace-expansion 5.0.8,并采用兼容回移修复版 brace-expansion 2.1.3。
  • 版本统一升级到 2.2.38,重新生成 19 个入口和 5 个版本化 chunk。

验证结果

  • Lint、Prettier、TypeScript 与配置类型检查通过。
  • PluginLinks 路由、权限、游标、负载与模板契约通过;28 个插件契约通过。
  • SEO 校验覆盖 18 个布局、82 个图片 alt、38 个关键 H1 和 15 个分页锚点。
  • Vite 生产构建、生成产物检查、主题 ZIP 打包及 ZIP 内 SEO 二次校验通过。
  • 当前 Halo 实例插件页面 smoke 11/11 通过;已禁用的 Friends 路由按预期跳过。
  • 浏览器验证中三视图与分组切换均无 Document 请求,RSS 列表 40→60 条且游标未进入 URL;390px 无横向溢出,控制台无错误。

兼容说明

  • Halo 要求:2.23.0 及以上版本。
  • PluginLinks 契约与实测版本:2.2.1。
  • 源码构建环境:Node.js >=24.18.0 <25、pnpm 10.34.5。
  • 登录用户和管理员专属写操作仍遵循 PluginLinks 权限控制;本次未执行真实评论或后台管理写入。

Generated from v2.2.38

发布于查看详情

Halo 项目展厅

面向 Halo 2.25+ 的项目展示插件。它把项目的在线体验、源码、下载、版本、状态、已知限制和关联文章集中管理,并将可验证的项目入口展示给博客读者。

效果预览

前台项目展厅

projects-page

Console 项目管理

console-project-list

查看项目编辑界面

project-editor-basic

![项目编辑访问入口与关联内容]
project-editor-details

功能

  • 在 Halo Console 中创建、编辑、删除和排序项目
  • 从已发布文章中选择项目的关联文章
  • 独立的 /projects 项目展示页
  • 在关联文章正文顶部自动插入项目体验卡
  • 项目封面和最多 12 张项目截图均支持剪贴板粘贴、上传及附件库选择,截图还支持拖拽排序和放大浏览
  • 支持 Bilibili BV/AV 视频链接,点击后按需加载播放器
  • 公开项目只读 API
  • 手动或每 30 分钟检测演示地址
  • 地址检测阻止私网、回环、特殊用途 IP 和非 HTTP(S) 协议
  • 区分在线体验、源码和下载,不把可访问项目误标为开源项目

安装

  1. GitHub Releases 下载最新的 plugin-project-showcase-*.jar
  2. 在 Halo Console 的插件管理中上传 JAR。
  3. 启用插件后,在 Console 左侧进入“项目展厅”。
  4. 创建项目并打开“公开展示”,前台即可访问 /projects

插件要求 Halo >= 2.25.0

也可以使用 JDK 21 从源码构建:

.\gradlew.bat build

构建产物位于 build/libs/

配置与使用

  1. 在“项目展厅”中点击“新建项目”,填写项目名称、简介和状态。
  2. 设置封面、项目截图、版本、技术标签及需要公开的访问地址。
  3. 根据需要关联已发布文章,并填写体验说明或已知限制。
  4. 打开“公开展示”并保存;公开项目会出现在 /projects,也可以在关联文章顶部显示体验卡。
  5. 使用列表页的检测按钮检查体验地址,或等待插件每 30 分钟自动检测。

项目不会因为填写了体验地址而自动标记为开源。只有单独填写源码地址时,前台才会显示源码入口。

升级与卸载

  • 升级前建议先备份 Halo 数据,再在插件管理中上传新版本 JAR 完成升级。现有项目数据和设置会继续使用。
  • 卸载前先禁用插件;禁用后定时地址检测和插件路由将停止运行。
  • 如需永久删除项目数据,请在卸载前从“项目展厅”中删除对应项目。插件不提供外部账户、订阅或云端数据,无需额外解绑。

项目字段

  • 项目名称、简介、封面、项目截图、版本和生命周期
  • 在线体验、源码和下载地址
  • Bilibili 项目演示视频
  • 技术标签与已知限制
  • 体验说明
  • 关联的 Halo 文章
  • 公开状态与排序

体验说明是公开内容,不应填写密码、密钥或其他敏感信息。需要测试账号时,建议填写账号申请方式,或使用权限受限且可定期重置的公开测试账号。

封面和截图都使用 Halo 附件库。在项目编辑窗口中点击对应的“剪贴板封面”或“剪贴板截图”区域,再按 Ctrl+V 即可上传剪贴板图片;也可以继续使用文件上传或附件库选择。截图最多保存 12 张,并可在后台拖拽调整顺序。没有单独设置封面时,第一张有效截图会作为项目封面。

Bilibili 视频请填写标准页面地址,例如 https://www.bilibili.com/video/BV1xx411c7mD。插件不接受短链接或任意 iframe HTML,只会为通过域名和视频编号校验的链接生成播放器。

地址检测

插件只将 HTTP 2xx 响应视为可访问。检测结果是一次网络可达性观察,不代表项目的安全性、正确性或生产可用性。

为防止 SSRF,检测客户端会拒绝私网、回环、链路本地、组播和特殊用途地址,并对每次重定向重新执行安全校验。

公开展示的数据只保留 HTTP(S) 链接和站内附件路径;Bilibili 播放器固定使用 player.bilibili.com,不会执行用户填写的嵌入代码。

数据与外部请求

  • 项目资料存储在 Halo 的扩展资源中,插件不会将项目资料、用户信息或站点内容同步到开发者服务器。
  • 只有手动检测或定时检测公开项目时,Halo 服务器才会请求对应的在线体验地址;请求设有超时,并会拒绝私网、回环和特殊用途地址。
  • 用户点击 Bilibili 演示视频后,浏览器会按需加载 player.bilibili.com 播放器。未点击时不会加载播放器。
  • 公开项目会通过 /projects 和只读公开 API 对访客可见。请勿在项目名称、简介、体验说明或链接中填写敏感信息。

公开 API

GET /apis/api.projectshowcase.xsstar.cn/v1alpha1/projects
GET /apis/api.projectshowcase.xsstar.cn/v1alpha1/posts/{postName}/projects

接口只返回已公开项目,并且不会暴露 Halo 扩展资源的完整内部字段。

故障排查

  • Console 中没有“项目展厅”:确认插件已启用,并刷新浏览器页面。
  • 前台 /projects 没有内容:确认至少有一个项目打开了“公开展示”。
  • 地址显示不可访问:确认目标使用 HTTP(S)、能够从 Halo 服务器访问,并返回 2xx 状态码。
  • 图片无法显示:确认附件仍然存在,并检查附件访问权限和站点地址配置。
  • Bilibili 视频无法播放:使用标准 BV/AV 视频页面地址,不要填写短链接或 iframe 代码。

问题反馈请提交到 GitHub Issues。报告问题时请附上 Halo 版本、插件版本、复现步骤和相关日志,并删除其中的敏感信息。

开发

环境要求:JDK 21、Node.js 20+、pnpm 10。

.\gradlew.bat test
.\gradlew.bat :ui:buildFrontend
.\gradlew.bat build

Docker 可用时,可以运行 ./gradlew haloServer 启动本地 Halo 开发环境。

发布于查看详情

1、增加明信片首页
2、修改文档说明
3、修改文档分享点赞位置,更符合阅读方式
4、增加登录信息显示
5、修复情侣时间地区问题
6、修复分享微信二维码不显示
7、修复分享微信不能访问

发布于查看详情

feat(oauth): 实现OAuth授权码和登录会话的容量限制与过期清理

  • 添加授权码管理器的最大容量限制,默认值为1000
  • 实现授权码过期自动清理机制,在签发和消费时触发清理
  • 添加登录会话的最大容量限制,默认值为10000
  • 实现登录会话过期自动清理机制,在开始和消费时触发清理
  • 为授权码和会话管理器增加同步控制防止并发问题
  • 在容量满时抛出相应异常并提供友好错误信息
  • 为服务层添加异常映射,将业务异常转为HTTP状态异常
  • 增加相关单元测试验证容量管理和过期清理功能

Full Changelog: https://github.com/liuyiwuqing/halo-plugin-sso/commits/1.1.0


Generated from 1.1.0

发布于查看详情

新特性

  • 支持在 UI Message 中实时传输工具调用入参,并在模型测试台中诊断工具入参流 by @LIlGG in #91

问题修复

  • 修复多工具调用续轮时推理上下文丢失的问题,并支持按模型配置推理历史回传 by @LIlGG in #88
  • 修复工具调用失败或参数无效时续传中断,以及原始错误原因被后续协议错误覆盖的问题 by @LIlGG in #92
  • 修复 Provider 协调器重复更新导致持续协调和客户端缓存反复失效的问题 by @ruibaby in #89
  • 修复编辑或删除模型后模型列表未完整刷新的问题 by @ruibaby in 8be783f

开发者相关

  • 统一模型参数定义目录,并通过 Provider Type API 暴露参数定义 by @ruibaby in #87
  • 完善 AI Foundation SDK 中英文开发文档,并新增面向 AI 编程助手的 SDK 查询 Skill by @LIlGG in #93

Full Changelog: v1.0.0-beta.5...v1.0.0-beta.6


Generated from v1.0.0-beta.6

发布于查看详情

软件中心 v1.0.0

这是 Software Manager for Halo 的首个稳定版本,为 Halo 提供独立、主题中立的软件内容管理、公开查询和安全下载能力。主题可以通过 Finder、Theme Router 或版本化 REST API 接入,插件本身不依赖任何特定主题。

版本亮点

  • 完整的软件领域模型:支持软件、版本、下载源、分类、标签和专题的创建与管理,并覆盖发布状态、排序、统计、SEO 及关联内容。
  • Console 管理界面:提供软件编辑器,以及分类、标签、专题、版本和下载源管理;下载源支持类型、优先级、健康状态和门禁配置。
  • 主题中立的公开集成:提供 softwareFinder、公共主题路由和 v1alpha1 REST API,公开 VO 与 Console/原始 Extension 分离,方便不同主题或客户端消费。
  • 安全下载授权:下载详情不直接暴露最终 URL、storageKey、提取码或密码等敏感字段;通过短期 download-grants 授权获取下载信息,并支持 Cloudflare Turnstile 验证。
  • 权限与安全边界:新增软件查看、软件管理和敏感下载配置等角色模板;下载目标执行 HTTP(S)/站内路径校验,验证码异常、Secret 缺失或目标不安全时按 fail-closed 处理,敏感响应使用 no-store
  • 评论与可选 AI:将 SoftwareApp 注册为 Halo 评论资源;可选接入 AI Foundation,为软件摘要、详情和 SEO 提供 Console 编辑建议,不影响核心软件管理功能。
  • 开发者契约与工程化:提供主题 API、REST API 和 OpenAPI 文档,并配套 Java、Vue、公共 VO、Router、RBAC、下载安全和 AI 能力契约测试。

兼容性

  • Halo >= 2.25.0
  • Java 21(仅从源码构建插件时需要)
  • AI Foundation >= 1.0.0-SNAPSHOT< 2.0.0(可选,仅用于 AI 编辑辅助)

安装

  1. GitHub Releases 下载 software 插件 JAR。
  2. 在 Halo Console 的“插件”页面上传并启用。
  3. 在“软件”菜单中配置选项、分类、标签、专题、软件、版本和下载源。
  4. 如使用验证码下载,在 Halo 中创建保存 Turnstile Secret Key 的 Secret,再完成插件“下载安全”设置。
  5. 使用主题或其他客户端时,仅调用公开 Finder/Router/REST API,不要读取原始 Extension 或 Console API 中的敏感字段。

升级注意

  • 主题接入应使用 GET /download-optionsPOST /download-grants 获取下载授权,不应继续依赖详情接口中的最终下载 URL。
  • 公开详情中的下载源 URL 为空是预期行为;提取码、密码和存储键只在完成授权后返回,并且只应保存在当前下载流程的内存中。
  • v1alpha1 公共契约、getHome()/SoftwareHomeVo 和主题 Router 均属于跨项目接口,升级主题或自定义客户端时请同步查看 主题 API 文档REST API 文档
  • AI Foundation 缺失、禁用或未配置模型时,软件管理、公开 API、Finder 和主题路由仍应正常工作。

已知边界

  • 插件只负责软件数据、查询、授权和权限;网格/列表布局、颜色、动画等展示逻辑由主题负责。
  • 应用市场发布当前未启用,本版本通过 GitHub Release 分发。

许可证

GPL-3.0

发布于查看详情

1、增加明信片首页
2、修改文档说明
3、修改文档分享点赞位置,更符合阅读方式
4、增加登录信息显示
5、修复情侣时间地区问题

iShot_2026-07-29_12.25.13
iShot_2026-07-29_12.25.32
iShot_2026-07-29_12.25.49

发布于查看详情

重构

  • 朋友圈页面UI:改用时间轴布局样式流式加载列表,页面更加美观便捷,同日期同一作者的文章自动归入同一卡片

新增

  • 朋友圈黑名单:可在主题设置 → 朋友圈设置页 → 屏蔽列表 进行设置
  • 卡片悬浮效果:可在主题设置 → 样式设置页 → 卡片悬浮效果 打开或关闭,打开后部分卡片鼠标悬停时轻微上移并显示主题色阴影
  • 文章页支持与分享卡片:可在主题设置 → 文章设置页 → 启用文章操作栏 打开或关闭,打开后文章页面将显示支持与分享卡片,点赞+生成海报分享功能

优化

  • 按钮交互:部分按钮图标增加 hover 旋转动效
  • 瞬间动态卡片:瞬间页面动态卡片右上角增加引号装饰
  • 目录小组件:目录小组件条目增加 hover 位移动效,与其它小组件统一
  • 各页面卡片入场动画:各个页面卡片入场动画优化并统一
  • 随机访问优化:友情链接页面随机访问功能优化,改用官方链接管理插件API
  • 装备卡片点击逻辑优化装备库页面卡片点击跳转逻辑,现在点击卡片即可跳转

修复

  • 装备库页面每页数量不跟随插件设置问题
  • 加上了部分卡片缺失点击的内凹效果

其它

  • 移除了未生效的项目集的分页控件代码,现在项目集页面无分页功能
  • 清理冗余依赖及死代码
  • 移除了适配和体验并不好的卡片3D倾斜效果,使用用卡片悬浮效果代替
  • 更新README
  • 版本号提升至1.0.3

tips

  • 本次更新改动较多,建议更新完成后执行清除模版缓存,如遇页面显示异常可重启 Halo 服务
  • 如遇到主题使用问题或意见反馈欢迎前往issues
发布于查看详情

新特性

  • 爬虫记录、搜索流量和推送历史改用 SQLite 存储,升级时会自动迁移原有 Nitrite 数据

问题修复

  • 修复 Halo 部署在子路径时 IndexNow 密钥验证失败的问题
  • 修复 IndexNow 验证路由可能与 /robots.txt 等根路径冲突的问题
发布于查看详情
条 / 页