Skip to content

Releases: EastMG/dsh-gacha-calendar

v0.12.5

Choose a tag to compare

@EastMG EastMG released this 20 Oct 21:49

fix: v0.12.5 数据源大修(大陆可达优先)+ 三个解析器纠错 + 时区口径按用户定义落地

v0.12.4 ~ v0.12.5

  • 数据源(大陆可达优先)

    • ba-global 默认源 Nexon → GameKee(Nexon 在大陆 275 节点里 269 个 403),并把「当期卡池」收敛成单源 2 请求、角色名从 GameKee 内容表取回(旬(泳装)、妃姬(泳装))。
    • uma-global 卡池默认换成 GameTora(静态 JSON,itdog 大陆实测电信 90/90、移动 94/94;档期与官方公告逐秒吻合);GachaTracker(数据已陈旧)与官网(曾按 IP 封)降级为备选。
    • pjsk 新增「Sekai World 卡池表/活动表(代理)」并设为默认(gh-proxy.com 包裹 raw.githubusercontent),原 GitHub Pages 直连降级为备选;电信成功率 74% → 99%+。
    • 失败原因透出真实 HTTP 状态码(此前一律显示"代理响应异常",403 被吞);刷新超时 12s → 20s;赛马娘 POST 改走注入 transport(非浏览器宿主不再 Failed to parse URL)。
  • 解析器纠错

    • 异环(nte):公告改用「【更新内容】」分节后,解析器仍按 一、 找段落 ⇒ 卡池+活动同时误报"未公布" ✗ → 双锚点 + 翻页深度 3→12 + 40 天回看(修后:明音凛 / 10-15 11:00 ~ 11-05 05:59)。
    • 绝区零:频段起点原来拿公告排期上线时间当锚点(3.3 偏差 −2 天)→ 改用正文【版本更新时间】的维护开始时刻;顺带补空档期显示下一期。
    • 终末地:卡池抓取 20 → 7 请求、中位耗时 1205ms → 178ms(并发 + 早停;已确认该站无可用 JSON API)。
    • 蔚蓝档案·国服:解析改为通用「■ 标签 + 起止时间」块解析 + 三层优先级链(维护公告 → 预告 → 兜底),零额外请求;活动名改为连类别一起显示;补 eventHover 列出全部当期活动 + 源级主活动判断(剧情正篇优先,不碰共享规则)。
  • 时区口径(用户定义):悬停 = 源站墙钟原文、面板外显 = 本机时区换算(此前正好相反);新增三道守卫(悬停调用必须带 tz / 定义不许给默认值 / 渲染接线检查)。

  • UI:图标全部换到白名单高清源(mzstatic 20 × 512 + moegirl 8 × 512)+ decoding="async" + 空闲预热;侧栏入口按钮与其它项对齐;面板顶部一行上下留白配平;README 补新版面板说明/整块面板图/4 枚徽章 + powered_by_dsh。

兼容性

  • 无破坏性变更:面板结构、设置键、gacha-calendar-core 接口均未变;新增的 altSources 只是多一个可选项。
  • 时区口径变化属行为修正:非 +08 用户首次会看到外显时间与之前不同(现在按本机时区换算 ✓)。
  • 公共加速代理(pjsk)无 SLA,挂掉时该游戏会显示抓取失败(0.12.2 起的失败文案已能显示真实原因)。
  • 升级后重启 DSH 才会加载新的 lib/。

验证

  • build.mjs --check exit 0;测试套件 1915 通过 / 0 失败,且在 TZ=UTC 与本地 +08 两种环境下都全绿;CI(verify)在 main 上 success。
  • 真实网络:engine.selfCheck() 对比 HEAD,改动前后状态变化逐项记录(ba-global / uma-global / nte / endfield / zzq / ba-cn 均按预期变好,其余逐字相同)。
  • 大陆可达性一律以 itdog 多节点实测为准(含电信/联通/移动分线路成功率与 p50/p90)。

v0.12.4

Choose a tag to compare

@EastMG EastMG released this 18 Oct 22:51

perf: v0.12.4 游戏图标统一换到中国大陆可快速访问的高清源(mzstatic 512×512 / moegirl 512)+ decoding=async + 空闲预热

v0.12.3 ~ v0.12.4

  • 图标糊:28 个图标里有 13 个是 64×64 的源(萌娘百科 !/fw/64 × 9、Google Play =s64 × 3、蓝档案 OSS resize,w_64 × 1),
    而右侧卡片的大图标渲染到 86px(DPR2 需 ~172 设备像素)⇒ 明显发糊。另有一个源已是 404(崩坏 3 的 BH3_icon.png)。
    ⇒ 全部换到 512×512:20 个 is1-ssl.mzstatic.com(App Store 图标 512)+ 8 个 storage.moegirl.org.cn(!/fw/64 → !/fw/512);
    10 个境外/不可达/404 的源整条换掉。现在最小 432×432、全部 ≥256×256。

  • 图标加载慢:原来每次打开面板要请求 10+ 个不同域名(含 Google Play、日本官网、dailygn 等跨境 CDN)。
    ⇒ 域名收敛到 2 个,并新增:

    • GameIcon 的 <img> 加 decoding="async"(解码不阻塞首屏合成);
    • 空闲预热 prewarmGameIcons() / scheduleIconPrewarm():requestIdleCallback(兜底 setTimeout)里取 SOURCES 已登记的图标 URL,
      用 new Image() 预热进浏览器缓存,并发 6、总预算 10s、失败不重试、卸载可清理 ⇒ 面板打开时图标已在缓存里。
    • 加载失败仍走原有字母兜底方块。
  • 国内可达性实测(不用本机代理结论):用 itdog.cn 的 320 个自建检测点(电信 86 / 联通 92 / 移动 96 / 港澳台+海外 46)验证:

    • is1-ssl.mzstatic.com:320/320 成功,电信中位 0.075–0.121s、联通 0.096–0.141s、移动 0.099–0.175s;
    • storage.moegirl.org.cn:319/320(唯一失败是"中国香港"节点),中国大陆 274/274 全成功,中位 0.084–0.229s。
    • 同时否掉了两个方案:check-host.net(节点里只有香港、无中国大陆节点,不能当证据);bwiki Special:FilePath(320/320 可达但中位 0.57–0.67s,
      比 mzstatic 慢 3–6 倍,且会 302 到 patchwiki.biligame.com、返回的是 wiki 素材而非 App 图标)。

兼容性

  • 无破坏性变更:只改图标 URL 与渲染层(decoding + 预热),面板/设置/数据链路均未变;gacha-calendar-core 接口不变。
  • 图标仍是外链,未本地化、未打包、未用插件路由代发(版权与分发约束保持原样)。
  • mzstatic 的 hash 会随 App 版本更新;失效时走字母兜底,重跑一次取图即可。
  • 升级后重启 DSH 才会加载新的 lib/。

验证

  • build.mjs --check exit 0;测试套件 1698 通过 / 0 失败;CI(verify)在 main 上 success。
  • 28 个新 URL 逐个实际下载校验:HTTP 200 + content-type: image/* + 解析真实宽高(均 ≥256×256);
    且逐个肉眼核对为各游戏自己的 App 图标。
  • 预热逻辑:从构建产物中抽出实现配 Image 桩验证——去重后 8 张唯一 URL 全部发出、峰值并发 6、stop() 后不再发请求。

备注:本次 lib/ 变化为 28 行 icon: URL + decoding="async" + 预热函数与一处 ctx.effect 挂载。

v0.12.3

Choose a tag to compare

@EastMG EastMG released this 18 Oct 12:13

fix: v0.12.3 面板顶部一行上下留白配平(head 下内边距 8px → 2px)

v0.12.2 ~ v0.12.3

  • 面板顶部那一行(24 小时内 N 条 · 7 天内 M 条 + 右侧日期胶囊)上下留白不对称:
    原来文字上方 12px(卡片 padding-top:10px + head 上内边距 2px)、下方只有 8px(head 下内边距 8px),
    看上去这一行偏上。现把 head 下内边距改为 2px,并配合「近期」区原有的 margin-top:10px
    ⇒ 上方 12px / 下方 12px 对称。
    注释里写明这三个值(卡片上内边距 / head 上下内边距 / 近期区上外边距)互相牵连,改一个要同步另外的。

兼容性

  • 纯 CSS 调整,无破坏性变更;新面板仍是可选项(newPanel 默认 false);设置键无变化、无迁移。
  • 升级后重启 DSH 才会加载新的 lib/。

验证

  • build.mjs --check exit 0;测试套件 1698 通过 / 0 失败;CI(GitHub Actions verify)在 main 上 success。
  • 真机:顶部这一行上下留白一致;面板 23 行、右侧留白卡、探头悬停对齐、动画不变。

备注:本次 lib/ 的变化仅此一处 CSS 声明 + 版本号常量。

v0.12.2

Choose a tag to compare

@EastMG EastMG released this 18 Oct 11:54

fix: v0.12.2 侧栏入口按钮与其它侧栏项对齐(去掉 2px 外扩);README 补新版面板说明与整块面板图、加 4 枚徽章 + 官方 powered_by_dsh;package.json 声明 engines

v0.12.1 ~ v0.12.2

  • 侧栏入口按钮对齐:.gacha-cal-btn 原为 width:calc(100% + 4px) + margin:4px -2px(左右各外扩 2px)
    ⇒ 图标与文字比侧栏其它项左移 2px(用户 2026-10-18 拉直线量出来的)。改为 width:100% + margin:4px 0
    ⇒ 内容起点 = 容器左缘 + padding-left:8px,与「插件 / 插件市场 / 自动化任务」等项对齐;hover 高亮底也随之对齐。

  • README 补新版面板:新增「新版面板(实验)」一节(默认关闭,设置 → 二游日历 → 勾选「实验:新日程面板视图」即可开启,
    取消勾选退回原表格面板、无数据迁移),并配一张整块面板实图 assets/screenshot-4.png(900×1164)。

  • README 加徽章:标题下 4 枚 —— verify(CI 门禁) / npm 版本 / GitHub Release / License(MIT);
    文末按官方规范补 powered_by_dsh(shields.io 官方 URL,链接到 deepseek-harness,未改色/logo/文案)。
    刻意不加:core 子包版本、stars、downloads、node/platform(信息量低)。

  • package.json 增 engines: { "node": ">=20" }:代码用了现代语法,此前未声明最低 Node。

  • 仓库工程项(不进 npm 包):新增 .github/workflows/verify.yml(push/PR 跑两条门禁)、
    夹具(12MB 抓包存档)改为入库(干净克隆可跑全量测试)、test/run.mjs 补时间注入、AGENTS.md 门禁描述订正。

兼容性

  • 无破坏性变更:gacha-calendar-core 的 createEngine({ transport, storage, now }) 签名与返回结构不变。
  • 新面板仍是可选项(newPanel 默认 false);设置键无新增/无迁移。
  • 升级后重启 DSH 才会加载新的 lib/。

验证

  • build.mjs --check exit 0;测试套件 1698 通过 / 0 失败;CI(GitHub Actions verify)在 main 上 success。
  • 干净克隆(17.5MB,含夹具)内跑同一套门禁:--check 0 + 1698 通过 / 0 失败。
  • 真机:侧栏按钮图标左缘与其它侧栏项对齐;面板 23 行、右侧留白卡、探头悬停逐像素对齐、动画分层与 backwards 行为不变。

备注:侧栏按钮对齐属纯 CSS 调整(padding/圆角/字号/图标尺寸未动);本次 lib/ 的代码变化仅此一处 + 版本号常量。

v0.12.1

Choose a tag to compare

@EastMG EastMG released this 16 Oct 22:00

fix: v0.12.1 面板顶部总览改为 24 小时内 N 条 · 7 天内 M 条(去掉"来源失败"),并删掉面板内标题、总览与日期胶囊合成一行

v0.12.0 ~ v0.12.1

面板顶部那行原来显示 今天 0 条到期 · 0 条即将开始 · 40 条在期 —— 三个数里通常两个是 0、第三个几乎不变,扫一眼得不到信息。现改为:

  • 24 小时内 N 条 · 7 天内 M 条:两个时间窗都照常显示(N 为 0 也显示)。
    • N = 未来 24 小时内有开始或结束的外显条目数;
    • M = 与「近期」列表底部「展开全部 N 条」同一个数(同一份数据、同一套 7 天判定,没有第二套条件)。
  • 去掉原来的「N 个来源刷新失败」(失败仍由底栏横幅呈现);去掉"两段都为 0 时"的兜底句。

头部布局:

  • 删掉面板内的标题「二游日历」(侧栏入口按钮不动),头部只剩日期胶囊;
  • 总览上移,与日期胶囊同一行(左总览、右胶囊),不再另起一行;窄宽度下不折行,总览文字自身省略。
  • 随之把 nth-child(n+7) 改为 n+6 —— body 少了一个兄弟节点会让表格行的入场延迟从 .28s 掉到 .25s,改后与改动前逐值相同;head .04s → glance .09s 的分层照旧。

兼容性

  • 纯 UI 调整,无破坏性变更;设置键、数据结构、core 接口均未动。
  • 新面板仍是可选项(newPanel 默认 false)。
  • 升级后重启 DSH 才会加载新的 lib/。

验证

  • build.mjs --check exit 0;测试 1698 通过 / 0 失败。
  • 真机:头部文本 24 小时内 0 条 · 7 天内 21 条,与「近期」按钮的 21 相等;总览与胶囊 top 差 1.93px(同一行)、胶囊仍贴右端;窄宽到 200px 仍不折行、头部高度恒定。
  • 不回归:23 行、右侧留白卡在、探头悬停逐像素对齐、收起态 27 个探头高度全 12px、探头祖先链无 transform/clip-path/filter/contain、动画仍全部 backwards、console 0 error。

v0.12.0

Choose a tag to compare

@EastMG EastMG released this 16 Oct 19:57

feat: v0.12.0 新版 UI(实验 · 默认关闭):启动动画与进度条动效、每游戏主题色、设置页重做、订阅式刷新 + 写入节流、渲染性能优化;修 PLUGIN_VERSION 热重载掉线

v0.11.3 ~ v0.12.0

新版 UI 默认关闭(newPanel=false)。不打开它就是原来的表格面板;设置里「实验:新日程面板视图」打开才生效,取消勾选即退回,无数据迁移。设置页本身的改动新旧面板都生效。

新版 UI

  • 启动动画分层浮现;迷你条按格从左到右出现,卡片大环与「再往后两件」小环依次淡入。
  • 每游戏主题色取色器(设置行尾 + 自定义条目表单)。覆盖色并进条目的 color,表格行 / 留白卡 / 设置页一致。
  • 「近期」展开时右侧卡片不再被拉长;探头收起态盒子 14px → 12px(可见部分不变)。

设置页

  • 列宽固定、页宽不再溢出;「展示」只留复选框;方形图标按钮 + 长方形文字按钮;来源与刷新时间选择器自绘箭头、文字左对齐。
  • 数据源改订阅宿主 store。此前只在挂载时取一次快照,写入后受控控件被旧值覆盖(表现为「调完变回去」「点了没反应」)。
  • 取色器写入 120ms 节流、松手即落盘;连拖 12 次合并为 1 次。

性能

  • 面板空闲 8 秒长任务 2875ms → 189ms;12 次拖色 2738ms → 97ms,JSON.parse 2316 → 79。
  • 做法是 memo 缓存重算结果 + 按值依赖键(宿主每次写入都会换掉 value 对象图,用引用当依赖会白失效)。

修复

  • PLUGIN_VERSION 原声明在脚本顶层(全局词法作用域),DSH 重载时会再声明一次报 SyntaxError,整段不执行、插件掉线。已移进模块工厂,并加构建守卫 ORDER[0] 必须是 00-head.js。
  • 「展示」快速连点导致 UI 与落盘不一致;动画 fill-mode 由 both 改 backwards(both 让表格行获得独立合成层、盖住探头);设置页 marquee 与刷新转圈未受 prefers-reduced-motion 关闭。
  • 门禁时间依赖:ournotes / P5X / GF2 / FGO 四个抓取器支持注入 now(默认 nowMs(),生产路径不变),用例注入固定基准;时钟平移 ±90 天仍 1698/0。

兼容性

  • 无破坏性变更:core 的 createEngine({ transport, storage, now }) 签名与返回结构不变。
  • 新增设置键 gameColors(默认 "{}"),旧配置直接升级,无需迁移。
  • 升级后重启 DSH 才会加载新的 lib/。

验证

  • build.mjs --check exit 0;测试 1698 通过 / 0 失败;时钟平移 ±90 天仍 1698/0。
  • 真机巡检 29 项与代码声明逐条对照;热重载后控制台 0 error、typeof PLUGIN_VERSION 为 undefined。

遗留:取色器节流的极端竞态未能复现;test/run.mjs 不在门禁内,单独跑仍用真实时钟。

v0.11.3

Choose a tag to compare

@EastMG EastMG released this 06 Oct 16:31

chore: v0.11.3 赛马娘国际服换可用源;Game8 标注不可靠;来源名批量规范化;README 拆分

v0.11.2 ~ v0.11.3

  • 赛马娘国际服卡池恢复:官网 umamusume.com 整站按出口 IP/地域封锁 —— 首页与 API 都返回 403,
    换 browser/curl/无 UA、加 Referer / X-Requested-With / Accept-Language 全无效,
    而同机访问日服 umamusume.jp 是 200(与请求头无关)。当天早些时候审计还是「失败 0」,
    属新出现。卡池默认源改为 GachaTracker(英文) —— 实测 200,当期为
    Pretty Derby Scout / Vodka (Unfreezable Firewater)、Daiwa Scarlet (Scarlet Nuit Étoilée) / 09-28 ~ 10-11;
    官方源降级为备选并标注不可靠。

    活动侧保留官方默认(同样标注不可靠):没有可用替代 —— GachaTracker 的活动数据站点层面就残缺
    (全站仅 9 条、停在 2025-08),Game8 返回 202、Prydwen 返回 403 Cloudflare 挑战。

  • Game8 备选标注不可靠:game8.co 现返回 HTTP 202(2KB 机器人挑战页)→
    终末地活动备选标签加后缀。全仓排查确认只有这一处用 Game8 做来源;赛马娘因读不到页面
    无法为其写解析器,故未添加 Game8 源。

  • 来源名批量规范化(7 类):(英文)(不可靠)→(英文︱不可靠);Bestdori 两条去掉
    「(社区数据库)」;官方公告(BHK)→BHK官方公告;Bwiki 卡池信息(台架测试占位)连源删除
    (含测试侧快照与断言反转);Bwiki 简中卡池(社区推算,非官方)→Bwiki 简中社区推算卡池;
    umapyoi(第三方,无卡池名)→umapyoi(无卡池名);Bwiki 活动(往期归档)→Bwiki 活动往期归档。
    带后缀的来源名 20 条 → 13 条。

  • README 拆成两份:用户版 README.md(181 → 93 行:截图 / 功能 / 数据来源 / 安装 / 致谢 /
    免责声明 / License)与开发者版 README_Dev.md(新建,91 行:构建 / 两个 npm 包 / 插件结构)。
    结构树与段数守卫改为读 README_Dev.md;开发者文档不进 npm 包(files 未改,
    实测打包仍是 8 个文件)。

兼容性

  • 无破坏性变更:DSH 侧插件接口不变,gacha-calendar-core 的 createEngine({ transport, storage, now })
    签名与返回结构不变。
  • 升级后重启 DSH 才会加载新的 lib/。

验证

build.mjs --check ✓ / 测试套件 1698 通过 / 0 失败(基线 1699 → 1698:删掉一个备选源后,
all.mjs 里「备选抓取器已登记」那条循环少跑一次,不是丢用例)/ 插件门禁 22 套全绿 /
真实网络复核 成功 60 · null 11 · 抓取失败 3 · 悬停违规 0。

余下 3 条失败均为已知且已在来源名上标注:uma-global·主源活动(无可用替代)、
uma-global·备选[official](官网被墙)、endfield·备选[game8](Game8 挑战页)。

v0.11.2

Choose a tag to compare

@EastMG EastMG released this 05 Oct 06:03

chore: v0.11.2 清单里的 peer 范围合并为单段(插件商店不再显示又长又重复的那串)

v0.11.1 ~ v0.11.2

  • peerDependencies 里 8 条 @deepseek-ai/dsh* 的双段 OR 合并为单段:

    - "@deepseek-ai/dsh": ">=0.1.1-rc.2 <0.2.0-0 || >=0.2.0-rc.1 <0.3.0-0"   ← 范围 47 字符
    + "@deepseek-ai/dsh": ">=0.1.1-rc.2 <0.3.0"                              ← 范围 19 字符
    

    起因:插件商店显示的 peer 版本太长。同机对比 —— DSH 自带插件只写一条 cordis: ~4.0.4,
    第三方 dsh-image-gen 只写 cordis/schemastery/react,dsh-mcp-manager-plus 只写一条
    @deepseek-ai/dsh;我们 9 条里 8 条都是双段 OR(为同时支持 0.1.x 与 0.2.x 两条运行时线)。

    用 DSH 自己的判定函数实测(dsh-app-boot 的 evaluatePluginCompatibility):

    运行时版本 旧(双段 OR) 新(单段)
    0.1.1-rc.1 不兼容 不兼容
    0.1.1-rc.2 / 0.1.5 OK OK
    0.2.0-alpha.1 不兼容 OK ← 唯一差异
    0.2.0-rc.1 / 0.2.0-rc.2 / 0.2.9 OK OK
    0.3.0 / 0.3.1 不兼容 不兼容

    上下界都保住,只把 0.2.0-alpha.* 这类预发布由「拒绝」放宽为「接受」。

  • 没有删减 peer:仓库自己的「清单诚实性守卫」要求「插件 inject 的每个能力都必须在
    peerDependencies 里声明」(DSH 0.1.7 删具名导出那次事故后加的),删掉会触发它的「漏报」断言。
    所以本版只缩短、不删减 —— 保留对 dsh-settings / dsh-host-webserver / dsh-client-*
    的版本校验能力。

兼容性

  • 无破坏性变更,不涉及任何运行时代码(只改 package.json 的 peer 范围与 README 说明)。
  • 升级后重启 DSH 才会加载新的 lib/。

验证

build.mjs --check ✓ / 测试套件 1699 通过 / 0 失败 / 插件门禁 22 套全绿
(含 _batch4 的 peer 守卫与 _readme_verify 的 README 一致性)/
真实网络复核 成功 63 · null 11 · 抓取失败 0 · 悬停违规 0。

v0.11.1

Choose a tag to compare

@EastMG EastMG released this 04 Oct 09:14

fix: v0.11.1 终末地默认活动源(FZ Wiki)从 null 恢复为真实数据

v0.11.0 ~ v0.11.1

  • 终末地活动列恢复显示:fz.wiki 把「活动」页的数据从页面 HTML/RSC 搬到了 REST API ——
    页面仍返回 200(10 万字符),但解析器依赖的标记 endfieldCardActivityIndex / wikiCardItem
    在该页已是 0 处,页面只剩导航外壳。结果:默认配置下终末地活动列恒显示「未公布」,
    而且这种 null 被定义为「未公布」、不算抓取失败 → 门禁与真实网络复核都不会报警(静默失效)。

    数据现在在:
    https://api.fz.wiki/api/v1/articles/by-title?ns=0&title=活动&withRevision=1
    → revision.contentJson.content[] → endfieldCardActivityIndex → wikiCardItem.attrs.data
    (name / tags / timeRanges)—— 结构与原 RSC payload 完全一致。

    改法两处:extractFzContentJson 增加「输入本来就是 JSON」的分支(旧 RSC 格式保留,
    页面若改回去或旧夹具照样能用);fetchFzWikiEndfield 改请求 API,
    条目里的 eventUrl 仍是给人看的页面地址(设置页显示它),标题由该地址路径推出。

    实测:endfield·主源活动 → 雾隐冬梦深林中 09-02 07:00 ~ 10-15 06:00,
    悬停列出 8 行并行活动(集成援助·泡泡出击 09-16 12:00 ~ 10-07 04:00 …)。

  • 顺手改准一句过期注释:外显不是「结束最早的那条」,而是 pickEventPrimary(叙事/挑战类优先)。

兼容性

  • 无破坏性变更:DSH 侧插件接口不变,gacha-calendar-core 的 createEngine({ transport, storage, now })
    签名与返回结构不变。
  • 升级后重启 DSH 才会加载新的 lib/。

验证

build.mjs --check ✓ / 测试套件 1699 通过 / 0 失败 / 插件门禁 22 套全绿 /
真实网络复核 成功 63 · null 11 · 抓取失败 0 · 悬停违规 0。

已知而非本次修复:终末地的卡池备选 GachaTracker 目前返回 null —— 查证为站点数据不覆盖当前
(该页最新一条是 Winter Hunt 2026-09-01 ~ 09-30,且像国际服口径),不是解析器问题,故不改。

v0.11.0

Choose a tag to compare

@EastMG EastMG released this 03 Oct 16:44

chore: v0.11.0 源码按厂商重组(28 款一视同仁);默认展示顺序按厂商;p5x 出厂可见

v0.10.9 ~ v0.11.0

  • 源码按厂商/系列重组(本版主线):src/client/ 现在 32 个文件 ——
    20-source-core.js(来源容器 SOURCES + registerSource)、21-fetcher-tables.js(两张抓取器表)、
    22-fetcher-core.js(抓取公共设施)、25-parser-shared.js(共用判定/悬停/解码/时间),
    以及 30-game-*.js ×14:每款/每组游戏一个自包含文件(条目 + 解析器 + 抓取器 + 登记都在里面)。
    20-sources.js / 30-parsers.js / 40-fetchers.js 与 10 个 42-parsers-*.js 全部拆掉。
    符号名一个都没改 —— 导出表、注册表与全部用例的引用都不受影响;文件层面不再有「内置 11 款 /
    另外 17 款」的分层。

  • 默认展示顺序完全按厂商:原神 → 星穹铁道 → 绝区零 → 崩坏3 → 鸣潮 → 明日方舟 → 终末地 → 蔚蓝档案(国服/国际服/日服) → BanG Dream(手游/OurNotes 日服/国际服) → 物华弥新 → 战双 → 卡厄斯 → 雪松 → 嘟嘟脸 → 闪耀优俊少女 → 赛马娘(日服/国际服) → 女神异闻录 → 异环 → 少女前线2 → FGO → 初音未来 → 星塔旅人 → 重返未来1999。

  • p5x(女神异闻录:夜幕魅影)改为出厂可见:此前需在设置页手动勾选才会抓取。
    出厂默认隐藏的条目现在只剩 5 条:卡厄斯梦境 / OurNotes 日服 / OurNotes 国际服 / 嘟嘟脸恶作剧 / 崩坏3。

  • 28 条来源统一显式声明 defaultHidden,字段位置一致(紧跟 id),便于核对。

  • 刷新语义未变:缓存沿用、失败计数、悬停排版、解析器自检口径均与 0.10.9 一致 ——
    真实网络复核结果为 成功 63 / null 11 / 抓取失败 0 / 悬停违规 0,与上一版逐项相同。

兼容性

  • 无破坏性变更:DSH 侧仍是同一个插件接口,gacha-calendar-core 的 createEngine({ transport, storage, now })
    签名与返回结构未变(内部文件重组,覆盖范围仍是 28 款)。
  • 升级后重启 DSH 才会加载新的 lib/。

验证

build.mjs --check ✓ / 测试套件 1699 通过 / 0 失败 / 插件门禁 22 套全绿 /
真实网络复核 成功 63 · null 11 · 失败 0 · 悬停违规 0。