- 表单下拉框不再用 label 包裹,改为 div + aria-label,避免点击后 下拉面板瞬间关闭 - Provider 卡片新增「从上游获取模型」和「修改」入口,支持编辑 base URL、API Key 与 api_mode,凭据写入对应的环境变量 - 服务端抽出 provider-model-discovery 统一不同 api_mode 的模型发现, 旧的 custom_providers 与新的 providers 字典结构都能正确更新 - Agent Bridge 改为后台启动,HTTP 接口在 Python 运行时就绪前即可用; worker 连接被拒时按类型重试,不重放可能已产生副作用的请求 - 断线重连后恢复 profiles、models 与会话列表,健康检查改为自调度 的 setTimeout,离线时 2 秒后重试 - 批量删除确认文案改用 Popconfirm content,避免变成侧栏触发器文本
27 lines
1.4 KiB
Markdown
27 lines
1.4 KiB
Markdown
---
|
|
date: 2026-10-22
|
|
feature: HTTP startup and session reload after backend restart
|
|
impact: Keep session APIs available during bridge startup and recover failed initial loads
|
|
---
|
|
|
|
PR/commit: pending.
|
|
|
|
The HTTP listener, Web UI stores, routes and Socket.IO handlers are initialized
|
|
before starting the managed Agent Bridge in the background. Bridge readiness
|
|
continues to be checked by the existing chat handlers; the chat-run protocol is
|
|
unchanged. The bridge manager is registered with shutdown before starting it.
|
|
|
|
A failed session-list request no longer marks the list loaded or discards a
|
|
route-selected session. Offline health polling retries after two seconds;
|
|
reconnection reloads profiles, models and sessions. An already loaded session
|
|
list retains its state on request failure. Chat, global-agent and history views
|
|
handle reconnection. Batch-delete confirmation text uses Popconfirm content
|
|
rather than becoming part of the sidebar trigger.
|
|
|
|
Validation: app-store and session-order Vitest coverage; Playwright startup
|
|
recovery (base route and direct session route), deletion confirmation and history
|
|
deep links; build and harness checks. A real isolated built-server smoke check
|
|
used a fake Python executable sleeping for 60 seconds and confirmed /health
|
|
responded with status=ok before the bridge became ready. State, uploads and
|
|
bridge endpoint were isolated under a temporary directory.
|