Releases: fhfzfy1231/halo-plugin-activity-calendar
Release list
活跃日历2.0.0-debug3
v2.0.0-debug.3 - 完整生命周期诊断
修复
- 修复 Snapshot 为 null 时 Reactor Flux.just() 导致的 NullPointerException。
- Snapshot 现在自动过滤 null,不再中断诊断流程。
新增
- 每篇文章完整生命周期调试。
- Snapshot 存在性检查。
- Snapshot Owner 检查。
- 多作者信息输出。
- 正文读取状态输出。
- 正文字数统计输出。
- Activity 是否生成输出。
- 每一步执行阶段编号。
- 所有异常完整输出,不再吞掉。
调试增强
新增整体统计:
- Snapshot 成功数量
- Snapshot 失败数量
- Content 成功数量
- Content 失败数量
- Author 成功数量
- Author 失败数量
- Activity 成功数量
用于快速定位问题。
活跃日历2.0.0-debug2
v2.0.0-debug.2 - 增强正文与多作者诊断
本版本继续用于定位活跃度统计异常。
相比 Debug.1,本版本进一步深入到正文读取阶段,并新增多作者诊断信息,用于定位历史活跃度无法生成的根本原因。
🔍 新增正文读取诊断
新增正文读取调试信息。
现在每篇文章都会记录:
- 正文读取方式;
- 是否成功读取正文;
- 正文原始长度;
- 正文统计长度;
- 正文统计单位数量;
- 正文读取异常类型;
- 根本异常原因;
- 完整异常堆栈。
方便快速定位正文读取失败的位置。
👥 新增多作者诊断
考虑到 Halo 一篇文章可能存在多个参与者,本版本不再只读取 Post Owner。
新增采集:
- Post Owner
- Base Snapshot Owner
- Head Snapshot Owner
- Release Snapshot Owner
并自动生成:
- 作者候选列表
- 作者候选数量
用于判断文章是否存在多个作者或多个编辑者。
📄 新增 Snapshot 调试信息
每篇文章现在都会输出:
- Head Snapshot
- Base Snapshot
- Release Snapshot
以及对应 Snapshot Owner。
方便检查 Snapshot 是否异常或缺失。
📊 新增正文统计信息
调试接口会输出:
- 正文长度;
- 标准化后正文长度;
- 活跃度统计单位数量;
方便判断正文是否真正参与了活跃度计算。
🧪 调试接口增强
调试接口新增统计:
- 正文读取成功数量;
- 正文读取失败数量;
- 多作者文章数量;
- 每篇文章完整调试信息。
⚠️ 注意
本版本仍然属于 Debug 版本,仅用于定位问题。
暂不建议作为正式版本长期使用。
正式修复将在问题定位完成后发布。
活跃日历2.0.0-debug1
v2.0.0-debug.1 - 活跃度统计诊断版
本版本为专门用于排查“活跃度始终为 0”问题的诊断版本。
当前已确认部分站点会出现:
- 插件可以正常加载;
- 活跃度日历组件可以正常显示;
- API 可以正常访问;
- 但活跃度数据始终为 0;
- 接口返回:
Activity calendar scan failed: IllegalStateException
由于此前版本会吞掉部分后端异常,无法准确判断具体失败位置,因此本版本新增了完整诊断接口。
🔍 新增诊断接口
新增接口:
/apis/api.activity.foxbridge.team/v1alpha1/calendar/debug?year=2026
活跃日历1.0.5
v1.0.5 - 重构活跃度数据读取机制
本次更新对插件的数据统计方式进行了重构,重点解决部分站点无法正常读取活跃数据、历史数据无法显示以及新发布文章无法及时统计的问题。
🚀 重构活跃度读取机制
优化插件的数据获取流程,降低对中间缓存数据的依赖。
新的数据流程:
Halo 内容
↓
实时读取文章 / 独立页面
↓
计算活跃度
↓
返回前端展示
相比之前的数据流程更加稳定,也更容易保证统计结果的一致性。
🐞 修复活跃度始终为 0 的问题
针对部分站点出现:
- 已发布文章没有活跃度;
- 新建文章始终不统计;
- 活跃度日历一直为空;
- 数据接口返回空结果。
进行了整体修复。
优化后:
- 已发布内容可以正常参与统计;
- 新发布文章能够自动进入活跃度计算;
- 避免首次扫描内容被错误忽略。
📚 优化历史数据读取
历史数据现在会直接读取 Halo 已存在的内容信息。
支持读取:
- 文章(Post)
- 独立页面(SinglePage)
- 作者
- 发布时间
- 正文内容量
- 发布状态
根据已有内容重新计算历史活跃度。
📅 优化历史日期恢复
历史活跃度将优先按照文章真实发布时间进行归档。
修复:
- 历史文章全部统计到当天的问题;
- 过去年份活跃度无法显示的问题;
- 历史贡献日期错误的问题。
⚡ 优化实时统计
进一步优化实时统计逻辑:
- 新建文章;
- 修改文章;
- 发布文章;
- 更新内容;
均可正常参与活跃度计算。
🧩 提升兼容性
优化插件在不同 Halo 环境下的数据读取兼容性:
- 降低中间数据依赖;
- 提高数据读取稳定性;
- 避免部分情况下统计流程中断导致整个日历为空。
🔧 技术优化
- 重构活跃度数据读取流程;
- 优化历史扫描逻辑;
- 优化实时数据合并策略;
- 优化接口返回速度;
- 优化缓存刷新机制;
- 保留 v1.0.3 Tooltip 修复;
- 保留 v1.0.4 活跃度计算优化。
💡 建议升级
推荐所有用户升级至 v1.0.5。
如果遇到以下问题:
- 活跃度始终显示为 0;
- 新发布文章无法统计;
- 历史数据无法显示;
- 活跃度日历为空;
活跃日历1.0.4
v1.0.4 - 修复活跃数据统计与历史回溯
本次更新重点修复了插件无法正确统计新发布内容,以及历史活跃度无法正常回溯的问题。
🐞 修复新发布内容不计入活跃度的问题
修复了插件首次扫描到新文章时,因为缺少上一版本基线数据而直接跳过统计的问题。
此前可能出现以下情况:
- 新建文章并直接发布后,活跃度仍然显示为 0;
- 新发布内容不会出现在当天活跃度日历中;
- 只有后续再次修改内容时,才可能产生统计数据。
现在:
- 新创建的文章可以正常计入活跃度;
- 新发布内容会自动生成对应的创作贡献;
- 不再因为首次扫描缺少历史状态而跳过统计。
🕒 修复历史活跃度日期错误
此前历史数据重建时,所有旧文章生成的活跃记录都会被错误写入“当天”,导致:
- 过去年份的活跃度日历仍然为空;
- 旧文章贡献无法显示在原本的发布时间;
- 历史数据全部集中到当前日期。
本次更新后:
- 已发布文章优先使用原始
publishTime作为历史活跃日期; - 历史内容会重新分布到对应年份和日期;
- 可以更合理地恢复插件安装前已有内容的历史贡献。
🔄 优化历史数据自动重建
新增并优化启动时的历史扫描逻辑。
插件启动后会自动:
- 扫描已有文章;
- 扫描已有独立页面;
- 获取内容作者;
- 获取正文内容量;
- 获取发布时间;
- 根据现有数据生成历史活跃记录。
无需再手动执行历史数据重建接口即可完成基础初始化。
📊 优化历史活跃度计算
修复历史正文统计方式不一致的问题。
此前部分历史统计直接使用字符串长度计算,现在统一使用插件的正文单位统计逻辑,使历史数据与实时统计结果更加一致。
历史活跃度主要基于:
- 内容作者;
- 正文内容量;
- 发布时间;
- 发布状态;
- 当前可读取的历史内容信息。
⚡ 优化实时扫描机制
- 内容扫描周期由约 15 秒调整为约 10 秒;
- 提升新内容和修改操作被识别的速度;
- 优化首次发现内容时的状态判断逻辑;
- 减少新文章被错误当作“仅建立基线”而跳过的情况。
🧩 防止历史数据重复累计
优化历史记录 ID 生成方式。
现在历史记录使用稳定的唯一标识,避免:
- 插件重启后重复累加同一篇文章;
- 多次执行历史扫描导致活跃度越来越高;
- 同一历史内容被重复记录。
✅ 保留已有功能
本次更新完整保留:
- GitHub 风格全站创作活跃度日历;
- 每日活跃度颜色深浅显示;
- 鼠标悬停查看当天活跃用户;
- 新增文字统计;
- 内容修改统计;
- 发布内容统计;
- 多用户活跃度汇总;
- 年份切换;
- v1.0.3 Tooltip 位置偏移修复。
⚠️ 关于历史数据精度
Halo 可以提供现有文章的作者、正文、发布时间以及部分 Snapshot 信息,因此插件可以对已有内容进行历史贡献重建。
但对于插件安装前的操作,无法保证精确还原:
- 某一天增加了多少字;
- 某一天删除了多少字;
- 每一次具体编辑动作;
- 每一次修改对应的精确贡献值。
因此:
插件安装前的数据属于基于现有 Halo 内容信息进行的历史贡献重建;插件安装后的新增、修改和发布操作则继续按照实时统计逻辑记录。
📦 推荐升级
建议所有使用 v1.0.2 / v1.0.3 的用户升级至 v1.0.4。
特别是遇到以下问题的用户:
- 发布新文章后活跃度仍然为 0;
- 过去年份一直没有活跃数据;
- 历史重建后数据全部出现在当天;
- 新内容必须修改第二次才会被统计。
活跃日历1.0.3
v1.0.3 - 修复 Tooltip 显示位置异常
本次更新主要修复了活跃度日历在部分 Halo 主题下,鼠标悬停日期时详情浮窗(Tooltip)出现严重位置偏移的问题,提升了插件的兼容性和交互体验。
✨ 修复内容
🐞 修复 Tooltip 位置偏移
修复了部分 Halo 主题(使用 transform、filter 等 CSS 属性)导致 Tooltip 坐标计算错误的问题。
现在鼠标悬停任意日期方块时:
- Tooltip 将准确显示在当前日期格附近;
- 不再出现漂移到页面其它位置的情况;
- 不受主题布局影响。
🎯 优化 Tooltip 定位逻辑
重新实现了 Tooltip 的显示方式:
- Tooltip 挂载至页面
body层; - 使用浏览器视口坐标进行定位;
- 自动计算最佳显示位置。
新增边界保护:
- 靠近页面顶部时自动显示在日期格下方;
- 靠近左右边缘时自动调整位置;
- 防止 Tooltip 超出浏览器可视区域。
🚀 保留已有功能
本次更新不会影响已有功能:
- GitHub 风格创作活跃度日历
- 实时活跃度统计
- 历史活跃度回溯(v1.0.2)
- 每日活跃颜色深浅显示
- 用户活跃信息展示
🔧 技术调整
- 重构 Tooltip 定位逻辑;
- Tooltip 从组件内部迁移至
document.body; - 统一使用
getBoundingClientRect()进行坐标计算; - 增加浏览器边界检测与自动修正;
- 提升不同 Halo 主题之间的兼容性。
活跃日历1.0.2
v1.0.2 - 历史活跃度统计支持
本版本重点新增了对 Halo 已有历史内容的活跃度统计能力,解决插件只能统计安装后新增操作、无法展示过去创作贡献的问题。
新增功能
- 新增历史活跃度重建功能。
- 支持扫描 Halo 中已有的文章
Post。 - 支持扫描已有独立页面
SinglePage。 - 根据已有内容的作者、正文内容及发布状态生成历史活跃记录。
- 新增历史数据重建接口:
POST /apis/api.activity.foxbridge.team/v1alpha1/calendar/rebuild-history
调用后会重新扫描站点现有内容,并生成对应的历史活跃度数据。
活跃度统计改进
历史内容现在会根据以下信息生成基础活跃积分:
- 内容作者
- 正文内容量
- 发布状态
- 已存在内容的创作贡献
完成历史数据初始化后,活跃度日历可同时展示:
- 插件安装前已有内容产生的历史活跃度
- 插件安装后的实时创作活跃度
保留原有功能
本次更新不会影响原有实时统计功能,仍然支持:
- 新增文字统计
- 内容修改统计
- 内容发布统计
- 再次编辑并发布后的活跃度累计
- GitHub 风格活跃度日历
- 根据每日总活跃度显示不同颜色深度
- 鼠标悬停查看当天活跃用户信息
技术调整
ActivityTracker新增历史数据重建逻辑。- 新增
rebuildHistory()方法,用于扫描已有 Halo 内容并重新生成历史活跃记录。 ActivityCalendarEndpoint新增历史重建 API。- 历史数据初始化与原有实时监听逻辑兼容,不影响后续正常累计。
注意事项
由于 Halo 默认不会完整保存过去每一次编辑操作的详细日志,因此 v1.0.2 无法还原插件安装前“某一天具体修改了多少字、删除了多少字”等精确编辑过程。
当前历史活跃度是根据 Halo 现存内容、作者及发布信息进行回溯统计;插件安装后的操作则继续按照实时事件进行更细致的活跃度累计。
活跃日历1.0.1
v1.0.1
修复
- 修复前台活跃度数据加载失败问题
- 修复游客访问接口权限问题
- 修复 GitHub Actions 构建失败问题
优化
- 增强 API 稳定性
- 增加异常处理
- 优化前端错误提示
文档
- 重构 README.md
- 统一插件项目文档格式