# Changelog 本项目的版本变更记录。格式参考 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/)。 ## [0.2.1] - 2026-10-16 ### 新增 - **支持从仓库链接直装**:构建入口改成纯 Node(scripts/build.mjs),并补 `prepare` 脚本 —— 安装时可以现场从源码构建出 `lib/`,不必先手工打包。 ### 变更 - `scripts/build.sh` 变成 `scripts/build.mjs` 的薄包装(Windows 上没有可用 bash,git 直装必须走 Node)。 ## [0.2.0] - 2026-10-16 ### 修复 - 书页缓存的 TTL 边界改成 `>=`:`ttlMs=0` 必须在同一毫秒内也判过期(原来在该边界上判命中,测试在快机器上会随机变红)。 - CI 固定运行时区为 `Asia/Shanghai`:测试里的时间戳是 +08:00 语义(「数据日期」取本地自然日),UTC runner 上会整片失败。 ### 变更 - **包名改为 `dsh-rank-scan`**(原来是带内部 scope 的名字,无法发布到 npm),并补齐 repository / homepage / bugs / keywords 元数据。 - **面板 bundle 的源入库**:`client/client.js` 是唯一真源,构建时复制为 `lib/client.js`。此前它只存在于开发机的 `lib/` 里,导致从源码构建出的包里没有面板。 - **测试夹具最小化**:6 个站点夹具从 614 KB 压到约 90 KB(只保留解析器读取的结构,解析结果与整页原文一致);整页快照移出仓库。 - 构建脚本的 tsc 探测优先用仓库自己的 `node_modules/.bin/tsc`,CI 里不再依赖外部 checkout。 ## [0.1.0] - 2026-10-16 首个公开版本。 ### 新增 - 五站榜单采集:起点(移动端签约榜 × 15 分类)/ 起点图(首订榜、三江·推荐效果)/ 刺猬猫(点击榜、新书榜、首订约)/ 番茄(男频新书榜 × 8 分类)/ 菠萝包(新书榜、轻小说热榜、VIP 热销榜)。 - 面板四页签(概览 / 当前榜单 / 我的书签 / 抓什么):可拖动可缩放的浮窗,位置、尺寸、页签与「正在看哪天」都在刷新后恢复。 - 派生榜「番茄在读周榜(候选池内)」:由已落盘快照本地计算,0 额外请求。 - 变化集(新入榜 / 回榜 / 上升 / 下降 / 退榜、在榜天数、基准日)与状态五态;缺失一律 `null`,不补 0。 - 按需补全(enrich):起点精确字数与收藏、番茄干净书名/作者、刺猬猫与菠萝包字数与收藏,就地覆盖当天快照,可重复补。 - 定时扫描:按站分时,默认开启,安装当天不跑,用户的开关与时刻跨重载保留。 - 书签:收藏作品、备注夹、回收站、导出。 - 版本区与一键更新:走 dsh-market 公开的更新 API,探测不到能力时只读降级。 ### 修复 - 起点图历史日期直查返回空:URL 里的日期未补零,站点对该路径返回 200 + 空页;统一走 `ymd()` 补零。 - 起点图历史日期直查没有按日期请求:读取的日期字段在整个仓库里从未被赋值,改用当前目标日期推导。 - 首订页「作者」列恒为空:原实现只认 `/author/` 链接,而该页没有这种链接;改为从行内单元格取值,链接只作退路。 - 「抓取并存入本地」后跳回最新:存盘后未同步日期下拉状态。 - 番茄「分类」列恒为空:行里存的是分类 id、列读的是分类文本;新增纯函数在宿主侧解析映射。 - 番茄派生榜排序完全失效:派生分支提前返回,通用排序从未被执行。 - 「变化」列在番茄显示的是在读差:改用名次差,与「在读变化」列不再重复。 - 起点图「收订比」显示空:前端缺对应渲染分支;站点用于表示缺失的伪造值一律按缺失显示。 - 三江「每日增量」挤在一格:拆成 7 个独立列。 - 「在榜天数」列时有时无:列出现条件与历史来源都取错了(历史改为按该榜自身快照累积,且独立于变化集)。 - 排序一律倒序,并把缺失值压到末尾(原先缺失值会窜到榜首)。 - 菠萝包去掉「作品评分」列与相关排序项。 - 面板「看原始页」点了没反应:链接打开函数被单参数调用,形参恒为 undefined 而静默返回。 - 日期下拉串站:日期列表从全局改为「该榜自己有快照的日期」。 - 定时扫描「重启即重扫」:把「今天跑过没」落盘,启动宽限期从 5 分钟收紧到 60 秒,并写定时诊断日志。 - 定时开关被反复关闭:旧迁移的判据与新写入的版本号互相冲突,导致每次启动都重置用户开关;迁移已删除,只有面板接口能写这个键。 - 客户端 bundle 语法错误会让整个左侧栏入口消失:`node --check` 检查不到这种 bundle,新增解析与结构双重闸门。 - 面板首次自动弹窗后不再重复弹:自动弹出改成只做一次并记住用户的开关。 ### 口径 - 番茄派生榜改自然周(周一~周日)口径,与三江共用「同一期首日 + 期内累加」的可比性做法。 - 周期榜换期:三江当期无数据自动回退上一期(最多 2 期);**换期当天变化列判为不可比**并标注「新期」,非周期榜行为不变。 - 「期累计」基准日:期首有快照就用期首,期首缺快照退回本期内最早有数据的日期,并在说明行显式标注。 - 「已结算天数」= 本地真有数据的天数,不是从期首起算的日历天数。 - 跨源请求一律拒绝:宿主的 `/api/rank-scan/*` 不做鉴权,插件自加来源闸。 ## 0.1.0 之前(内部迭代) - **v11.1** 起点图历史日期补零;首订页作者列;存盘后日期状态。 - **v11** 起点图历史日期直查按日期请求;三江补字数(只写字数,不覆盖起点图口径的期初收藏);定时宽限期收紧。 - **v10.5** 番茄分类列按 id 解析;**v10.4** 派生榜排序与字数;三江无字数字段(数据源限制)。 - **v10.3** 期累计基准日退回并标注;**v10.2** 列精简、番茄周榜逐日 7 列、面板界面记忆。 - **v10.1** 「已结算天数」语义澄清;三江补「期累计」与排序项;**v10** 派生榜合并为在读周榜(自然周)。 - **v9.6** 「在榜天数」口径统一;**v9.5** 直查日期横幅与排序倒序;**v9.4** 变化列改用名次差、列口径收进纯函数。 - **v9.3** 客户端 bundle 闸门;**v9.2** 收订比与三江每日增量列;**v9.1** 链接打开与日期下拉隔离;**v9** 定时三条硬约束与首次自动弹窗。 - **v6 / v7** 面板入口与浮窗、POST 必须带 JSON body、番茄字体反爬映射、扫描范围、起点条数上限与书页缓存。