Skip to content

Releases: EastMG/gacha-calendar-extension

v0.2.30

Choose a tag to compare

@EastMG EastMG released this 21 Oct 13:33

二游日历 v0.2.30

28 款二次元手游的当期卡池与活动起止一览,点浏览器工具栏图标即可查看。


本次更新:通读排查后的清理

对最近二十来版改动做了一次通读,没有发现功能性 bug,但清出一批"改了 UI 没跟上"的残留。

代码清理

项目 处理
注释里的旧名「留白卡」 9 处 → 统一为「近期卡片」
「刷新失败 → 底部横条 + 重试」等过期注释 改为「并进常驻底栏」(横条早在 v0.2.18 已删)
底栏那段重复写了两遍的注释 合并成一份
panel.js 里"popup 每批 3 条"的过期说明 更正为"默认 2 条、面板只有 popup 一种宿主"
死 CSS:.gacha-cal-sched-failbar / -retry / -failtext 全删(JS 里 0 引用,约 580 字节)

一个边界加固

panel.js 里若读到 gameColors 不是字符串(历史数据/异常),原来会直接当 {} 处理 ——
等于把用户自定义的颜色全丢掉。现在改成按已解析的对象回写一份,覆盖色不会丢。

本轮核对过的内容(均正常)

  • 三界面冒烟(新面板 popup / 设置页 / 旧 popup):控制台与页面错误 0 条
  • 失败态:底栏 ⚠ + 明细 单处显示、无残留横条、警示图标 12px、橙色正常
  • 颜色口径:设置页 28 个色块 vs 面板 23 行 --g —— 23/23 一致
  • 网格一致性:表头 / 刻度 / 行三处游戏列宽都 = 152px
  • core 下发的颜色:全部是标准 6 位 HEX,取色器不会出现"取不到色"的灰色占位
  • 权限面:storage + declarativeNetRequestWithHostAccess;host 49 条、无 <all_urls>
  • DNR 规则:真实加载扩展实测 CDN 返回 200(1,000,714 B)
  • 产物:19 个文件;dist 构建前清空,无 panel.html 残留

仍然存在的已知限制(非 bug)

  • popup 每次打开滚动位置回顶部(浏览器 popup 无状态)
  • GameKee CDN 靠 api-cdn.gamekee.com 的 DNR 规则注入 Referer;若对方换域名会静默失效
  • bwiki 连续刷新会触发源站风控(HTTP 567),需等一会儿

下载与安装

下载本 Release 附件里的 gacha-calendar-extension-0.2.30.zip,解压到任意目录
(解压后 manifest.json 在第一层),然后:

Edge:edge://extensions → 打开开发人员模式 → 加载解压缩的扩展 → 选中目录
Chrome:chrome://extensions,步骤相同

数据来源

各游戏官方公告与社区 Wiki(Bwiki / PRTS / FZ Wiki / GameKee / GameTora 等)。
所有请求由浏览器直接发往来源站;不收集任何个人数据、不上传任何内容、不含统计与广告代码。

抓取核心 gacha-calendar-core 0.12.5,
构建时已内联,运行时不加载任何外部脚本。

本次构建的校验结果

校验 结果
静态校验 / DNR 规则集 / 来源域名覆盖 通过
域名守卫自测 5/5
设置页行为自测 / 商店文案 / 来源名口径 通过
三界面冒烟(控制台错误) 0 条
失败态渲染 底栏单处失败提示,无残留横条
zip 自校验 19/19 条目 CRC 通过

v0.2.29

Choose a tag to compare

@EastMG EastMG released this 21 Oct 13:27

二游日历 v0.2.29

28 款二次元手游的当期卡池与活动起止一览,点浏览器工具栏图标即可查看。


本次更新:颜色悬停只显示色值

上一版色块的悬停提示是:

出厂色 #3FA9A0(点击修改)

太啰嗦。本版改成只显示颜色本身:

#3FA9A0
  • 自定义后同理,显示 #FF3366(不再区分"出厂色/自定义"字样)
  • 语义信息没丢:aria-label 仍是「出厂色 #3FA9A0」/「自定义颜色 #FF3366」,屏幕阅读器照旧
  • 是否自定义仍一眼可辨:自定义过的行右侧有 ↺ 按钮

下载与安装

下载本 Release 附件里的 gacha-calendar-extension-0.2.29.zip,解压到任意目录
(解压后 manifest.json 在第一层),然后:

Edge:edge://extensions → 打开开发人员模式 → 加载解压缩的扩展 → 选中目录
Chrome:chrome://extensions,步骤相同

数据来源

各游戏官方公告与社区 Wiki(Bwiki / PRTS / FZ Wiki / GameKee / GameTora 等)。
所有请求由浏览器直接发往来源站;不收集任何个人数据、不上传任何内容、不含统计与广告代码。

抓取核心 gacha-calendar-core 0.12.5,
构建时已内联,运行时不加载任何外部脚本。

本次构建的校验结果

校验 结果
静态校验 / DNR 规则集 / 来源域名覆盖 通过
设置页行为自测 通过
悬停提示实测 出厂色态 title = "#3FA9A0";自定义后 title = "#FF3366";aria-label 保留语义
zip 自校验 19/19 条目 CRC 通过

已知事项

  • bwiki 限流:连续频繁刷新会触发源站风控(HTTP 567),间隔一段时间自行恢复。
  • 目前只提供未打包版本(需开发人员模式加载);商店版待 0.2.6 审核结束后随版本更新推送。

v0.2.28

Choose a tag to compare

@EastMG EastMG released this 21 Oct 13:24

二游日历 v0.2.28

28 款二次元手游的当期卡池与活动起止一览,点浏览器工具栏图标即可查看。


本次修复:设置页的色块现在显示「面板里实际在用的颜色」

v0.2.27 加的取色器,默认态画的是一个灰块 + 虚线边框(想表达"未自定义/用出厂色")。
问题很直接:用户根本看不出这块游戏在面板里是什么颜色 —— 等于前后端各说各的。

根因

出厂色不是"按名字哈希算"就完事:

层 颜色来源
core SOURCE_COLORS 表 → 写进每条的 entry.color
面板 mergeGames() 从 sourceTable(engine) 取 src.color
设置页(改前) 没有这条链路,只能拿名字哈希 → 与面板不一致

也就是说,光看 listGames() 拿不到颜色(它只返回 UI 字段),必须走 sourceTable。

修法

  1. 抽出共享模块 src/game-color.js:gameColor(条目, 覆盖表) 统一决定颜色
    (用户覆盖 → entry.color → 名字哈希兜底),面板与设置页都调它;
    面板原先自己那份实现删除,改为复用。
  2. 设置页改用 sourceTable(engine)(entry-meta.js,与面板同一份)拿出厂色;
  3. 色块永远显示真实颜色,去掉虚线/灰块;悬停提示写清是「出厂色 #xxxxxx」还是「自定义颜色」;
    只有自定义过的行才出现 ↺ 恢复按钮。

实测对账

同一份设置下,把设置页 28 个色块与面板 23 行的 --g 逐条比对:

可比对 23 条 / 不一致 0 条
原神 #3fa9a0 · 崩坏:星穹铁道 #6c6fe0 · 绝区零 #e0a93b · 崩坏3 #35a9d8 …

改造前是 23/23 全不一致(设置页显示的是名字哈希色)。

下载与安装

下载本 Release 附件里的 gacha-calendar-extension-0.2.28.zip,解压到任意目录
(解压后 manifest.json 在第一层),然后:

Edge:edge://extensions → 打开开发人员模式 → 加载解压缩的扩展 → 选中目录
Chrome:chrome://extensions,步骤相同

数据来源

各游戏官方公告与社区 Wiki(Bwiki / PRTS / FZ Wiki / GameKee / GameTora 等)。
所有请求由浏览器直接发往来源站;不收集任何个人数据、不上传任何内容、不含统计与广告代码。

抓取核心 gacha-calendar-core 0.12.5,
构建时已内联,运行时不加载任何外部脚本。

本次构建的校验结果

校验 结果
静态校验 / DNR 规则集 / 来源域名覆盖 通过
设置页行为自测 通过
颜色口径对账(设置页 vs 面板 --g) 23/23 一致,0 不一致
取色器读写 设色后 gameColors 落盘为 JSON 字符串;↺ 清回默认
zip 自校验 19/19 条目 CRC 通过

已知事项

  • bwiki 限流:连续频繁刷新会触发源站风控(HTTP 567),间隔一段时间自行恢复。
  • 目前只提供未打包版本(需开发人员模式加载);商店版待 0.2.6 审核结束后随版本更新推送。

v0.2.27

Choose a tag to compare

@EastMG EastMG released this 21 Oct 13:19

二游日历 v0.2.27

28 款二次元手游的当期卡池与活动起止一览,点浏览器工具栏图标即可查看。


本次更新:设置页新增「颜色」取色器

之前 gameColors 这个设置项只在面板侧被读取(每款游戏的强调色),
但设置页没有任何入口能改它 —— 等于写死了。本版补上。

用法

设置页 → 「条目」列表 → 新增的颜色列:

  • 点色块 → 打开系统取色器 → 选完立即生效并保存
  • 默认态是虚线框(表示"用出厂色")
  • 自定义后右侧出现 ↺ 按钮,点一下恢复出厂色

设置页

生效范围

强调色会用在面板里该款游戏的所有着色点:

  • 游戏表里该行的 14 天迷你进度条填充色
  • 顶部「近期卡片」的进度环与背景渐变
  • 表格行的强调色变量(--g / --gf)

实测:把「原神」设为 #ff3366 后,面板该行 --g = #ff3366、迷你条实际渲染色
rgb(255, 51, 102)。

存储

gameColors 存为 JSON 字符串,形如 {"genshin":"#ff3366"};
没有该键 = 用 core 按游戏名哈希算出的出厂色。删除键即恢复默认。

下载与安装

下载本 Release 附件里的 gacha-calendar-extension-0.2.27.zip,解压到任意目录
(解压后 manifest.json 在第一层),然后:

Edge:edge://extensions → 打开开发人员模式 → 加载解压缩的扩展 → 选中目录
Chrome:chrome://extensions,步骤相同

数据来源

各游戏官方公告与社区 Wiki(Bwiki / PRTS / FZ Wiki / GameKee / GameTora 等)。
所有请求由浏览器直接发往来源站;不收集任何个人数据、不上传任何内容、不含统计与广告代码。

抓取核心 gacha-calendar-core 0.12.5,
构建时已内联,运行时不加载任何外部脚本。

本次构建的校验结果

校验 结果
静态校验 / DNR 规则集 / 来源域名覆盖 通过
设置页行为自测 通过
取色器实机验证 表头 6 列含「颜色」、28 个色块;设色后存储 {"hsr":"#ff3366"}(字符串)、出现 ↺;点 ↺ 后存储 {}、色块回虚线
面板应用验证 行上 --g=#ff3366,迷你条 rgb(255,51,102)
zip 自校验 19/19 条目 CRC 通过

已知事项

  • bwiki 限流:连续频繁刷新会触发源站风控(HTTP 567),间隔一段时间自行恢复。
  • 目前只提供未打包版本(需开发人员模式加载);商店版待 0.2.6 审核结束后随版本更新推送。

v0.2.26

Choose a tag to compare

@EastMG EastMG released this 21 Oct 13:13

二游日历 v0.2.26

28 款二次元手游的当期卡池与活动起止一览,点浏览器工具栏图标即可查看。


本次更新:新面板改为默认开启,默认顶部样式为「近期卡片」

默认弹窗形态

改动

设置项 改前默认 改后默认
新日程面板 关闭(点工具栏是原小面板) 开启(点工具栏直接弹日程面板)
顶部区域 近期列表 近期卡片

说明

  • 新用户/首次安装:直接就是新面板 + 近期卡片,不需要先去设置页勾选。
  • 老用户:之前显式关掉过新面板的人,仍保持关闭(只有明确存了「关闭」才回落原小面板)——
    这个判断用 newPanel === false 而不是 !== true,避免把"从没设置过"当成"用户选了关闭"。
  • 顶部区域同理:只有显式选过「近期列表」才用列表,否则用「近期卡片」。
  • 想回到原小面板:设置页 → 实验特性 → 取消勾选「新日程面板」。

默认形态下能看到的更多

近期卡片比近期列表矮得多(216px vs 约 460px),弹窗首屏因此能多看约 1.5 行游戏表。

下载与安装

下载本 Release 附件里的 gacha-calendar-extension-0.2.26.zip,解压到任意目录
(解压后 manifest.json 在第一层),然后:

Edge:edge://extensions → 打开开发人员模式 → 加载解压缩的扩展 → 选中目录
Chrome:chrome://extensions,步骤相同

数据来源

各游戏官方公告与社区 Wiki(Bwiki / PRTS / FZ Wiki / GameKee / GameTora 等)。
所有请求由浏览器直接发往来源站;不收集任何个人数据、不上传任何内容、不含统计与广告代码。

抓取核心 gacha-calendar-core 0.12.5,
构建时已内联,运行时不加载任何外部脚本。

本次构建的校验结果

校验 结果
静态校验 / DNR 规则集 / 来源域名覆盖 通过
设置页行为自测 通过
默认态实机验证(设置页) newPanel=true、panelTop=slot、下拉可选、显示「近期卡片」
默认态实机验证(popup) 顶部区域为 --slot(卡片 460×216),近期列表隐藏
商店文案 / 来源名口径自测 通过
zip 自校验 19/19 条目 CRC 通过

已知事项

  • bwiki 限流:连续频繁刷新会触发源站风控(HTTP 567),间隔一段时间自行恢复。
  • 目前只提供未打包版本(需开发人员模式加载);商店版待 0.2.6 审核结束后随版本更新推送。

v0.2.25

Choose a tag to compare

@EastMG EastMG released this 21 Oct 13:10

二游日历 v0.2.25

28 款二次元手游的当期卡池与活动起止一览,点浏览器工具栏图标即可查看。


本次更新:设置页文案调整

改动

位置 改前 改后
「新日程面板」说明 开启后,点工具栏图标将弹出日程面板(520 × 600:整块日程表 + 顶部区域),替代原小面板。内容在面板内滚动,底栏常驻。 实验性新版UI,开发中
顶部区域选项 留白卡 近期卡片
「顶部区域」说明 新日程面板顶部同一个位置显示哪一块:「近期列表」是按紧迫度排序的在期条目;「留白卡」是当前最紧迫那一条的大卡片。二选一,默认近期列表。 新日程面板顶部区域展示样式
禁用提示 需先开启上方「新日程面板」。 需开启「新日程面板」(保留原橙色强调)

另一个逻辑修正

「需开启「新日程面板」」这句只在禁用态显示 —— 勾选「新日程面板」后它自动消失,
否则就成了"已经开启了还在提示要开启"的假提示。

面板整体也统一叫近期卡片(原「留白卡」);README / 开发文档里的同名概念一并更新。

下载与安装

下载本 Release 附件里的 gacha-calendar-extension-0.2.25.zip,解压到任意目录
(解压后 manifest.json 在第一层),然后:

Edge:edge://extensions → 打开开发人员模式 → 加载解压缩的扩展 → 选中目录
Chrome:chrome://extensions,步骤相同

数据来源

各游戏官方公告与社区 Wiki(Bwiki / PRTS / FZ Wiki / GameKee / GameTora 等)。
所有请求由浏览器直接发往来源站;不收集任何个人数据、不上传任何内容、不含统计与广告代码。

抓取核心 gacha-calendar-core 0.12.5,
构建时已内联,运行时不加载任何外部脚本。

本次构建的校验结果

校验 结果
静态校验 / DNR 规则集 / 来源域名覆盖 通过
设置页行为自测 通过
文案实机核对 「实验性新版UI,开发中」/ 选项「近期列表 · 近期卡片」/ 说明「新日程面板顶部区域展示样式 需开启「新日程面板」」
提示强调色 rgb(180, 83, 9)(原橙色,保留)
联动 未开启:提示可见 + 下拉禁用;开启:提示自动消失 + 下拉可选
zip 自校验 19/19 条目 CRC 通过

已知事项

  • bwiki 限流:连续频繁刷新会触发源站风控(HTTP 567),间隔一段时间自行恢复。
  • 目前只提供未打包版本(需开发人员模式加载);商店版待 0.2.6 审核结束后随版本更新推送。

v0.2.24

Choose a tag to compare

@EastMG EastMG released this 21 Oct 13:04

二游日历 v0.2.24

28 款二次元手游的当期卡池与活动起止一览,点浏览器工具栏图标即可查看。


本次更新:设置页「实验特性」两处调整

① 两行调换顺序

「新日程面板」移到上面,「顶部区域」移到下面 —— 先开总开关,再选细节,阅读顺序更自然。

改前 改后
顶部区域 / 新日程面板 新日程面板 / 顶部区域

② 「顶部区域」在未启用新面板时不可选

未开启「新日程面板」时,「顶部区域」这个下拉置灰禁用:

  • disabled + aria-disabled="true",点不动、键盘也选不了
  • 整行变淡(opacity 0.55),提示文字补一句「需先开启上方「新日程面板」」
  • 勾选「新日程面板」后立刻恢复可选;取消勾选又立刻禁用

为什么这样做:未启用新面板时这个选项对新面板毫无作用(工具栏还是原来那个小面板),
但看起来像是"改了就会生效",容易让人误以为设置没起作用。

顺带修正文案

「新日程面板」的说明还写着"直接打开「日程视图」独立页面……无法放进弹出窗口" ——
那是 v0.2.13 之前的行为,现已改为 popup。文案更新为:

开启后,点工具栏图标将弹出日程面板(520 × 600:整块日程表 + 顶部区域),
替代原小面板。内容在面板内滚动,底栏常驻。

下载与安装

下载本 Release 附件里的 gacha-calendar-extension-0.2.24.zip,解压到任意目录
(解压后 manifest.json 在第一层),然后:

Edge:edge://extensions → 打开开发人员模式 → 加载解压缩的扩展 → 选中目录
Chrome:chrome://extensions,步骤相同

数据来源

各游戏官方公告与社区 Wiki(Bwiki / PRTS / FZ Wiki / GameKee / GameTora 等)。
所有请求由浏览器直接发往来源站;不收集任何个人数据、不上传任何内容、不含统计与广告代码。

抓取核心 gacha-calendar-core 0.12.5,
构建时已内联,运行时不加载任何外部脚本。

本次构建的校验结果

校验 结果
静态校验 / DNR 规则集 / 来源域名覆盖 通过
设置页行为自测(来源下拉 / 删除 / 恢复 / 自定义地址) 通过
设置页联动实机验证 未勾选 → disabled=true、aria=true、整行变淡;勾选 → 恢复可选;取消 → 再次禁用
商店文案 / 来源名口径自测 通过
zip 自校验 19/19 条目 CRC 通过

已知事项

  • bwiki 限流:连续频繁刷新会触发源站风控(HTTP 567),间隔一段时间自行恢复。
  • 目前只提供未打包版本(需开发人员模式加载);商店版待 0.2.6 审核结束后随版本更新推送。

v0.2.23

Choose a tag to compare

@EastMG EastMG released this 21 Oct 12:57

二游日历 v0.2.23

28 款二次元手游的当期卡池与活动起止一览,点浏览器工具栏图标即可查看。


本次更新:删掉没有入口的「独立页面」宿主

背景:v0.2.13 把新面板改成工具栏 popup 后,旧的 panel.html(520 × 不定高的独立页面)
就没有任何入口了 —— 工具栏只会弹 popup,action.onClicked 也永远不会触发。
它一直躺在代码里,文档还写着"可在独立页面打开",容易误解。本版删掉。

清理内容

项目 处理
src/panel.html 删除(唯一宿主是 popup-panel.html)
background.js 的 PANEL_PAGE + action.onClicked → tabs.create 删除(popup 永不为空,这条分支是死代码)
build.mjs 的产品清单、verify.mjs 的产物校验 去掉 panel.html
assets/panel-new.png(独立页面截图) 删除,README 只保留 popup 截图
README_Dev 宿主说明 改为「唯一宿主 = popup」,并注明旧页面为何删除
tools/make-store-assets.mjs 不再生成 panel-new 夹具

顺带修一个构建隐患

build.mjs 之前不清空 dist:删掉 src/panel.html 后,dist/panel.html 仍会残留
(虽然不在打包清单里,但很容易被误认为还在用)。

现在构建前会 rm -rf dist 再写入。产物实测:13 个文件,不含 panel.html。

行为影响

无。工具栏点开仍是 popup(520×600),关闭「新日程面板」时仍是原来的小面板。
本次只删死代码与陈旧文档。

下载与安装

下载本 Release 附件里的 gacha-calendar-extension-0.2.23.zip,解压到任意目录
(解压后 manifest.json 在第一层),然后:

Edge:edge://extensions → 打开开发人员模式 → 加载解压缩的扩展 → 选中目录
Chrome:chrome://extensions,步骤相同

数据来源

各游戏官方公告与社区 Wiki(Bwiki / PRTS / FZ Wiki / GameKee / GameTora 等)。
所有请求由浏览器直接发往来源站;不收集任何个人数据、不上传任何内容、不含统计与广告代码。

抓取核心 gacha-calendar-core 0.12.5,
构建时已内联,运行时不加载任何外部脚本。

本次构建的校验结果

校验 结果
静态校验(manifest / 零远程代码 / 权限最小化 / 图标 / 版本一致) 通过
DNR 规则集(产物 manifest / 权限 / 规则内容) 通过
来源域名覆盖 48 个 core 域名全部授权
域名守卫自测 5/5
商店文案 / 设置页 / 来源名口径自测 通过
产物清单 13 个文件,无 panel.html
zip 自校验 19/19 条目 CRC 通过

已知事项

  • bwiki 限流:连续频繁刷新会触发源站风控(HTTP 567),间隔一段时间自行恢复。
  • 目前只提供未打包版本(需开发人员模式加载);商店版待 0.2.6 审核结束后随版本更新推送。

v0.2.22

Choose a tag to compare

@EastMG EastMG released this 21 Oct 12:53

二游日历 v0.2.22

28 款二次元手游的当期卡池与活动起止一览,点浏览器工具栏图标即可查看。


本次修复:popup 四角圆角 vs 方正的边沿阴影

现象

popup 里卡片是 12px 圆角,但四边却有一圈方方正正的阴影,圆角处还漏出底色。

原因

面板卡片在插件里是「浮起来的卡」:

.gacha-cal-sched {
  border: 1px solid …;
  border-radius: 12px;
  box-shadow: 0 8px 30px rgba(0, 0, 0, .25);
}

但在 popup 里它铺满整个窗口(520×600) —— 投影没有地方落,只能沿着窗口四边画在窗口内沿,
就成了"方正的一圈阴影";圆角处则露出 body 底色。

修法

popup 的外框由浏览器窗口本身负责,卡片改为满铺:

属性 插件/独立页面 popup(本次)
border-radius 12px 0
box-shadow 0 8px 30px rgba(0,0,0,.25) none
border 1px none
body 底色 — 与卡片同色(避免任何缝隙)

独立页面(panel.html)不受影响:仍是带圆角与阴影的浮卡(实测 radius 12px / shadow 保留)。

实测

页面 border-radius box-shadow 尺寸
popup 0px none 0,0 → 520×600(无溢出)
panel 页 12px 0 8px 30px rgba(0,0,0,.25) 保持不变

下载与安装

下载本 Release 附件里的 gacha-calendar-extension-0.2.22.zip,解压到任意目录
(解压后 manifest.json 在第一层),然后:

Edge:edge://extensions → 打开开发人员模式 → 加载解压缩的扩展 → 选中目录
Chrome:chrome://extensions,步骤相同

数据来源

各游戏官方公告与社区 Wiki(Bwiki / PRTS / FZ Wiki / GameKee / GameTora 等)。
所有请求由浏览器直接发往来源站;不收集任何个人数据、不上传任何内容、不含统计与广告代码。

抓取核心 gacha-calendar-core 0.12.5,
构建时已内联,运行时不加载任何外部脚本。

本次构建的校验结果

校验 结果
静态校验(manifest / 零远程代码 / 权限最小化 / 图标 / 版本一致) 通过
DNR 规则集(产物 manifest / 权限 / 规则内容) 通过
来源域名覆盖 48 个 core 域名全部授权
域名守卫自测 5/5
商店文案 / 设置页 / 来源名口径自测 通过
popup 外框实测 radius 0 / shadow none / 520×600 无溢出
zip 自校验 21/21 条目 CRC 通过

已知事项

  • bwiki 限流:连续频繁刷新会触发源站风控(HTTP 567),间隔一段时间自行恢复。
  • 目前只提供未打包版本(需开发人员模式加载);商店版待 0.2.6 审核结束后随版本更新推送。

v0.2.21

Choose a tag to compare

@EastMG EastMG released this 21 Oct 12:49

二游日历 v0.2.21

28 款二次元手游的当期卡池与活动起止一览,点浏览器工具栏图标即可查看。


本次修复:GameKee 报 HTTP 567

接上一版(host-not-allowed 已修)之后,蔚蓝档案·国际服的 GameKee 卡池仍然失败,
但错误变成了 GameKee 内容接口失败(content CDN:http-567)。

原因(两层)

① GameKee 的 CDN 只认特定 Referer

api-cdn.gamekee.com 的 WAF 对 Referer 极其挑,实测矩阵:

Referer 结果
https://www.gamekee.com/(纯 origin) ✅ 200
带路径(/ba/huodong/15) ❌ 567
扩展自身(chrome-extension://…) ❌ 567
不带 Referer ❌ 567

而浏览器里 fetch() 会丢弃禁止头 Referer —— 后台代发也设不上去。
所以请求发出去时是"无 Referer",必然 567。

② build.mjs 把 manifest 字段丢了

正确的解法是用 declarativeNetRequest 的 modifyHeaders 在请求发出前注入 Referer。
但 build.mjs 写 manifest 时用的是字段白名单,没把 declarative_net_request 加进去 ⇒
规则文件虽然进了产物,规则集却没被加载,等于没生效。

修法

  • 新增 src/dnr.json:给 api-cdn.gamekee.com 的请求注入
    Referer: https://www.gamekee.com/
  • manifest 申请 declarativeNetRequestWithHostAccess(只对已授权域名生效,
    不是"拦截全站请求"的 declarativeNetRequest)+ 声明规则集
  • build.mjs 的 manifest 白名单补上 declarative_net_request
  • verify.mjs 新增产物级校验:产物 manifest 必须真的带上该字段(防白名单再丢)
  • 权限断言更新为「只允许 storage + 该 DNR 权限」

实测验证(真实加载扩展)

用 headless 浏览器加载构建产物,在扩展的 service worker 里直接请求该 CDN:

{
  "version": "0.2.21",
  "hasDnrApi": true,
  "rulesets": ["gamekee-cdn-referer"],
  "cdn": { "status": 200, "len": 1000714 }
}

规则集已启用,CDN 返回 200 / 1,000,714 字节(修复前是 567 或直接失败)。

下载与安装

下载本 Release 附件里的 gacha-calendar-extension-0.2.21.zip,解压到任意目录
(解压后 manifest.json 在第一层),然后:

Edge:edge://extensions → 打开开发人员模式 → 加载解压缩的扩展 → 选中目录
Chrome:chrome://extensions,步骤相同

数据来源

各游戏官方公告与社区 Wiki(Bwiki / PRTS / FZ Wiki / GameKee / GameTora 等)。
所有请求由浏览器直接发往来源站;不收集任何个人数据、不上传任何内容、不含统计与广告代码。

抓取核心 gacha-calendar-core 0.12.5,
构建时已内联,运行时不加载任何外部脚本。

本次构建的校验结果

校验 结果
静态校验(manifest / 零远程代码 / 权限最小化 / 图标 / 版本一致) 通过
DNR 规则集(产物 manifest / 权限 / 规则内容) 3 项通过
来源域名覆盖 48 个 core 域名全部授权
域名守卫自测 5/5
商店文案 / 设置页 / 来源名口径自测 通过
真机实测(headless + 扩展 SW) CDN 200,1,000,714 B
zip 自校验 21/21 条目 CRC 通过

已知事项

  • 升级后浏览器可能提示新增权限(declarativeNetRequestWithHostAccess),属正常 —— 它只对已授权域名生效。
  • bwiki 限流:连续频繁刷新会触发源站风控(HTTP 567),间隔一段时间自行恢复。
  • 目前只提供未打包版本(需开发人员模式加载);商店版待 0.2.6 审核结束后随版本更新推送。