Skip to content

v2.1.1 — 修掉两个用户看得见的 bug

Choose a tag to compare

@XDTrees XDTrees released this 16 Oct 01:19
· 4 commits to main since this release

一个让你在插件清单里看到一条失败的红条目,一个让你的账单上「使用端」是空的。都是 2.1.0 之前就存在的,这一版一起收掉。

插件清单里那条 failed 的 billion-context,没有了

现象:装了 billion-context 的用户会在插件清单里看到两条指向同一模块的 entry——bili-native(正常)和 billion-context-xdpool(fiber failed)。不影响功能,但那条 failed 是用户看得见的,而且没人能解释它为什么在那。
根因:2.0.0 想让没装压缩器的用户也能用 billion 页,于是插入了那条挂载行。但 billion-context 会在 cordis 里注册自己的服务,同一个服务注册第二次会被宿主直接拒绝——先到先得,后来那条的 fiber 就地死亡。2.0.0 的注释里写的是「宿主会禁用重复行」,实测不会。
修法:这条挂载行整个撤了(改成 disabled: true 留个可寻址的记号),billion-mount.ts 里的运行时 create() 也一并删除——两处只删一处,另一处还会打架。billion-context 同时从 dependencies 挪到 optionalDependencies,兑现注释里一直写着的承诺:装不装压缩器,是用户的决定,不是池子替用户做。
billion 页本身不变:没装显示「没装」,装了显示数据——三个状态本来就是分开的。
顺带修的两个判断错误(改判断逻辑时暴露的):

  • loader.entries() 会返回被禁用的行,宿主只是不启动它们,不是丢弃。不排除的话,没装 billion-context 的用户会被我们自己那条 disabled 行误报成「已安装」
  • fiber 为空的 entry(正在导入)以前被当成「不存在」——那是在「我们负责挂载」的前提下才对;现在只读状态,它就是「已安装」

账单后台的「使用端」不再是空的

现象:从 1.8.4 起,插件发的聊天请求在账单后台的「使用端」一列是空的;同一个账号在 WorkBuddy 桌面端聊天就显示「WorkBuddy」。积分照扣,纯归因展示问题。
根因:网关按请求头里的 X-IDE-* 识别客户端。桌面端带,我们没有——而插件自己的积分自动化链路(openConversation)早就带了,这就是为什么只有主聊天链路归因不出来。
修法:把三个头(X-IDE-Name/Type/Version)提成一个常量,主聊天的两条路径(completeChat/chatStream)和 openConversation 共用同一份——以后不会再漂移。没有放进共享的 chatHeaders():那个函数还被积分自动化的任务接口共用,那些不是聊天接口,乱带身份头有归因风险。

其他

  • README 换掉一张 1.8.x 时代的旧截图,补一张账号积分详情
  • 账单里合计积分和各积分包的数字改成和「每日 +100 积分」一致的亮绿(以前是灰色,看起来像已花掉)
  • 下载量徽章换成静态快照(shields 的实时 npm 徽章被上游限流,时好时坏)