Skip to content

multi2api v1.9.16

Choose a tag to compare

@Practice019 Practice019 released this 21 Oct 02:13
· 80 commits to master since this release

v1.9.16

修一个用户可见的功能中断:渠道页「新增渠道 → 保存」什么都不发生。


修了什么

控制台里是这句:

Uncaught (in promise) ReferenceError: key is not defined
    at save (channels:1595)

webui-channels.html 的 save() 里有这么一行:

if (!editing && !key) { err.textContent = 'API Key 必填(新增时)'; return; }

key 从来没有声明过 —— 它本该判上面刚解析出来的 rawKeys 数组。从 T6 首次落地
(29bb9c4)起就这样。

为什么一直没被发现:编辑已有渠道时 !editing 短路为 false,这一行根本不执行;
只有新建渠道才会走到。而 verify_inline_script_syntax 只证明"能被解析"
(语法本身是对的),任何静态断言也看不见"运行期才炸的未定义标识符" ⇒
典型的"点了没反应"。

现在改判 !rawKeys.length,并把来龙去脉写进代码注释。


新增回归判据

tests/frontend/verify_channels_save.js(已注册进 run_frontend_suites 的 PROBES):
自己起隔离实例 → 建管理员 → 打开 /ui/channels → 点「新增渠道」→ 填 name/base/key →
点「保存」,断言 8 条:

  • 全程零未捕获异常(ReferenceError 就是这条缺陷的指纹)
  • 弹窗关闭、空态行被真实数据行替换、名字出现在表格、表单无残留错误
  • 后端 /admin/channels 确实多了一条

(写这条探针时我自己还踩了个假红:拿"行数 +1"当判据 —— 空池时 tbody 里那一行是
空态行,保存成功后它被真实行替换,行数仍是 1。改成判"空态文案消失"。)


升级提示

页面走 go:embed,升级后 Ctrl+F5 硬刷新;渠道页是 iframe,必要时右键「重新加载框架」。