Skip to content

Releases: fhfzfy1231/halo-plugin-activity-calendar

活跃日历2.0.0-debug3

Choose a tag to compare

@fhfzfy1231 fhfzfy1231 released this 18 Jul 10:25

v2.0.0-debug.3 - 完整生命周期诊断

修复

  • 修复 Snapshot 为 null 时 Reactor Flux.just() 导致的 NullPointerException。
  • Snapshot 现在自动过滤 null,不再中断诊断流程。

新增

  • 每篇文章完整生命周期调试。
  • Snapshot 存在性检查。
  • Snapshot Owner 检查。
  • 多作者信息输出。
  • 正文读取状态输出。
  • 正文字数统计输出。
  • Activity 是否生成输出。
  • 每一步执行阶段编号。
  • 所有异常完整输出,不再吞掉。

调试增强

新增整体统计:

  • Snapshot 成功数量
  • Snapshot 失败数量
  • Content 成功数量
  • Content 失败数量
  • Author 成功数量
  • Author 失败数量
  • Activity 成功数量

用于快速定位问题。

⚠️ 本版本仍属于 Debug 版本,仅用于定位问题。

活跃日历2.0.0-debug2

Pre-release

Choose a tag to compare

@fhfzfy1231 fhfzfy1231 released this 18 Jul 09:43

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

Pre-release

Choose a tag to compare

@fhfzfy1231 fhfzfy1231 released this 18 Jul 09:01

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

Choose a tag to compare

@fhfzfy1231 fhfzfy1231 released this 18 Jul 08:25

v1.0.5 - 重构活跃度数据读取机制

本次更新对插件的数据统计方式进行了重构,重点解决部分站点无法正常读取活跃数据、历史数据无法显示以及新发布文章无法及时统计的问题。


🚀 重构活跃度读取机制

优化插件的数据获取流程,降低对中间缓存数据的依赖。

新的数据流程:

Halo 内容
    ↓
实时读取文章 / 独立页面
    ↓
计算活跃度
    ↓
返回前端展示

相比之前的数据流程更加稳定,也更容易保证统计结果的一致性。


🐞 修复活跃度始终为 0 的问题

针对部分站点出现:

  • 已发布文章没有活跃度;
  • 新建文章始终不统计;
  • 活跃度日历一直为空;
  • 数据接口返回空结果。

进行了整体修复。

优化后:

  • 已发布内容可以正常参与统计;
  • 新发布文章能够自动进入活跃度计算;
  • 避免首次扫描内容被错误忽略。

📚 优化历史数据读取

历史数据现在会直接读取 Halo 已存在的内容信息。

支持读取:

  • 文章(Post)
  • 独立页面(SinglePage)
  • 作者
  • 发布时间
  • 正文内容量
  • 发布状态

根据已有内容重新计算历史活跃度。


📅 优化历史日期恢复

历史活跃度将优先按照文章真实发布时间进行归档。

修复:

  • 历史文章全部统计到当天的问题;
  • 过去年份活跃度无法显示的问题;
  • 历史贡献日期错误的问题。

⚡ 优化实时统计

进一步优化实时统计逻辑:

  • 新建文章;
  • 修改文章;
  • 发布文章;
  • 更新内容;

均可正常参与活跃度计算。


🧩 提升兼容性

优化插件在不同 Halo 环境下的数据读取兼容性:

  • 降低中间数据依赖;
  • 提高数据读取稳定性;
  • 避免部分情况下统计流程中断导致整个日历为空。

🔧 技术优化

  • 重构活跃度数据读取流程;
  • 优化历史扫描逻辑;
  • 优化实时数据合并策略;
  • 优化接口返回速度;
  • 优化缓存刷新机制;
  • 保留 v1.0.3 Tooltip 修复;
  • 保留 v1.0.4 活跃度计算优化。

💡 建议升级

推荐所有用户升级至 v1.0.5

如果遇到以下问题:

  • 活跃度始终显示为 0;
  • 新发布文章无法统计;
  • 历史数据无法显示;
  • 活跃度日历为空;

活跃日历1.0.4

Choose a tag to compare

@fhfzfy1231 fhfzfy1231 released this 18 Jul 08:13

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

Choose a tag to compare

@fhfzfy1231 fhfzfy1231 released this 18 Jul 07:43

v1.0.3 - 修复 Tooltip 显示位置异常

本次更新主要修复了活跃度日历在部分 Halo 主题下,鼠标悬停日期时详情浮窗(Tooltip)出现严重位置偏移的问题,提升了插件的兼容性和交互体验。


✨ 修复内容

🐞 修复 Tooltip 位置偏移

修复了部分 Halo 主题(使用 transformfilter 等 CSS 属性)导致 Tooltip 坐标计算错误的问题。

现在鼠标悬停任意日期方块时:

  • Tooltip 将准确显示在当前日期格附近;
  • 不再出现漂移到页面其它位置的情况;
  • 不受主题布局影响。

🎯 优化 Tooltip 定位逻辑

重新实现了 Tooltip 的显示方式:

  • Tooltip 挂载至页面 body 层;
  • 使用浏览器视口坐标进行定位;
  • 自动计算最佳显示位置。

新增边界保护:

  • 靠近页面顶部时自动显示在日期格下方;
  • 靠近左右边缘时自动调整位置;
  • 防止 Tooltip 超出浏览器可视区域。

🚀 保留已有功能

本次更新不会影响已有功能:

  • GitHub 风格创作活跃度日历
  • 实时活跃度统计
  • 历史活跃度回溯(v1.0.2)
  • 每日活跃颜色深浅显示
  • 用户活跃信息展示

🔧 技术调整

  • 重构 Tooltip 定位逻辑;
  • Tooltip 从组件内部迁移至 document.body
  • 统一使用 getBoundingClientRect() 进行坐标计算;
  • 增加浏览器边界检测与自动修正;
  • 提升不同 Halo 主题之间的兼容性。

活跃日历1.0.2

Choose a tag to compare

@fhfzfy1231 fhfzfy1231 released this 18 Jul 07:36

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

Choose a tag to compare

@fhfzfy1231 fhfzfy1231 released this 18 Jul 07:23

v1.0.1

修复

  • 修复前台活跃度数据加载失败问题
  • 修复游客访问接口权限问题
  • 修复 GitHub Actions 构建失败问题

优化

  • 增强 API 稳定性
  • 增加异常处理
  • 优化前端错误提示

文档

  • 重构 README.md
  • 统一插件项目文档格式

活跃日历1.0.0

Choose a tag to compare

@fhfzfy1231 fhfzfy1231 released this 18 Jul 06:59

第一版活跃日历插件