Skip to content

v0.1.6

Choose a tag to compare

@masknull masknull released this 22 Sep 05:19
· 3 commits to main since this release

v0.1.6:修复 v0.1.5 自动签到无法工作的全部问题

v0.1.5 引入的「每日自动签到」在实际使用中存在多处缺陷,导致签到从未真正执行过。本版本逐项修复,并补上额度明细中缺失的一行。

🐛 关键修复

  • 自动签到从未执行(v0.1.5 的开关实际无效)

    • 配置未合并:设置分区新增的 autoCheckInCN / autoCheckInGlobal / checkInMinuteCN / checkInMinuteGlobal 四个字段没有被搬运进插件读取的实时配置,插件读到的永远是 undefined —— 卡片保存了、文件里也存着,但调度器始终把开关当作关闭。现已改为按字段清单驱动合并,并新增把「schema 字段」与「合并字段」逐个比对的测试:任何一侧漏字段都会立刻失败。
    • 上游客户端标识错误:签到活动接口只对桌面端标识 cosy-clienttype: 10 下发活动列表,此前沿用通用的 5,接口返回 HTTP 200 但活动数组为空,于是每次都被判定为「今日无活动」。已改为显式发送桌面端标识。
    • 定时器从未排期:定时排期依赖了当时还读不到的配置,结果一个定时器都没建立,配置就绪后也没有重排。现在每个变体总会排上定时器,「是否该执行」交由触发时刻判断。
    • 同一动作被并发执行两次start() 的启动补领与设置分区就绪后的补领同时进行,会连续领取两次(服务端幂等,但会写出两条重复日志)。已加在途闩锁。
  • 额度明细少一行

    • 上游在 userQuota(计划额度)之外还会返回 addOnQuota(计划外赠送额度,即每日签到领到的那 100),插件此前完全没有解析这个桶,于是网页显示两个包、卡片只显示一个。现已新增「赠送额度」一行。

✨ 改进

  • 签到时刻可自定义:每个变体各有自己的签到时间(默认 10:00,按 UTC+8),修改后立即生效,无需重启 DSH。
  • 时间可直接键入:原 type=time 控件在中文输入法下只能点选/滚轮,已改为时、分两个数字输入框,失焦或回车提交,越界自动收敛。
  • 可见性
    • 签到日志页显示「下次自动签到:{时间}」,可直接确认定时器排在哪一刻;
    • 定时器每次触发都会留下一条日志(即使当天已领取),不再出现「静默跳过」与「彻底坏了」难以区分的情况。
  • 不再把失败当作完成:「无活动」或出错的日子不再标记为「当天已完成」,当天后续仍可重试。

🧪 验证

  • 双端 TypeScript 类型检查 0 错误;
  • Vitest 29 文件 / 418 项测试全部通过(新增覆盖:配置字段一致性、桌面端标识、并发闩锁、定时排期与重排、自定义时刻、已领取日的可见记录、赠送额度成行等);
  • Node 原生测试 121 项通过;
  • 真实链路验证:对真实账号执行签到返回 claimed+100 Credits