Skip to content

v1.2.9 - 独立 WebUI 旧监听器接管热修复

Choose a tag to compare

@MengBad MengBad released this 10 Jun 01:36

v1.2.9 - 独立 WebUI 旧监听器接管热修复

本版修复 v1.2.8 部署后可能出现的“ AstrBot 插件页已经更新,但独立端口 2718 仍由旧 WebUI 监听器提供服务”的半热更新状态。该状态会导致 /api/state 可用,但 /api/webui_manifest、/api/state_inspector、dashboard/capability-tree fallback 等新路由仍然 404。

主要改动

  • 为独立 WebUI 监听器新增 route_version 版本戳,用于识别当前端口上运行的路由表是否来自新版代码。
  • start_webui_background() 发现旧 _server_task 仍存活但 route_version 不一致时,会主动取消旧 aiohttp task,并在清理完成后重启监听器。
  • stdlib fallback listener 同步支持 route_version 检查;旧线程版本不一致时会主动 shutdown、server_close 并重新绑定。
  • WebUILifecycle.start_if_enabled() 不再仅凭已有 task/thread 就跳过启动,只有监听器版本与当前代码一致时才复用。
  • /api/webui_manifest 返回 route_version,方便确认当前独立端口是否已经完成新代码接管。
  • AstrBot 插件页探测逻辑会识别 HTTP 200 但正文为 AstrBot 默认 404 Not found 的响应,避免误判共享 WebAPI 可用。

验证

  • py -m py_compile anima/sylanne_alpha/webui_server.py anima/sylanne_alpha/webui_routes.py plugin_api.py
  • py -m pytest -q
  • 全量测试通过:409 passed, 50 warnings

部署后检查

安装或更新到 v1.2.9 后,建议访问:

http://你的服务器:2718/api/webui_manifest?token=你的token

确认返回 JSON,并检查:

  • route_version 是否为 1.2.9-webui-route-manifest
  • pages.dashboard.index_exists
  • pages.capability-tree.index_exists
  • routes 中是否包含 /api/state_inspector