v0.1.6
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。