v1.2.9 - 独立 WebUI 旧监听器接管热修复
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.pypy -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-manifestpages.dashboard.index_existspages.capability-tree.index_existsroutes中是否包含/api/state_inspector