Repository navigation
Entari WebUI 1.1.0
新增独立的插件管理页,补齐子插件独立控制、内置插件生命周期和商店包删除能力,并让配置页与管理页共享三态插件显示过滤。
升级要求
- Python >= 3.11
- arclet-entari >= 0.19.1
- entari-plugin-database >= 0.4.2
新增
插件管理页
- 新增
/plugins插件管理页,采用左侧列表 + 右侧详情布局。 - 支持插件启用、禁用、重载、卸载、重新加载、查看详情和跳转配置编辑。
- 顶层插件卸载后配置保留为
?key:- 同一进程内仍显示在“已卸载”列表,可直接重新加载;
- 重启后从
?key配置重建已卸载列表,仍可加载。
- 子插件支持独立启用/禁用和重载:
- 禁用状态写入父配置的嵌套
.child: {$disable: true}; - 子插件不提供单独卸载。
- 禁用状态写入父配置的嵌套
- 市场安装的插件支持“卸载并删除包”:先卸载插件并保留配置,再调用包管理器删除 Python 包。
- 内置插件面板从插件市场迁移到插件管理页。
三态插件显示
- 管理页和配置页共用同一个三态开关:
- 仅顶层
- 有元数据/配置(默认)
- 全部子插件
- 偏好写入
localStorage["webui.pluginDisplayMode"],两页实时共享。 - 根基础插件及其子插件始终显示。
- 内置插件任何模式下都只显示顶层,内置子插件不显示。
- 当前正在查看的子插件即使被过滤,也会保留其祖先链,直接打开配置链接不会出现空白。
无 metadata 插件支持
- 插件列表不再丢弃没有 metadata 的插件和子插件。
- 无 metadata 插件支持正常启停、卸载、查看详情和配置编辑。
- 无 metadata 子插件可以拥有自己的 schema fragment:
- 子插件配置页只应用属于该子插件的 fragment;
- 不会错误嵌套
.bar; $defs/$ref保持可解析。
配置页
- 插件头部启停开关改为“管理”按钮,点击跳转到
/plugins?plugin=<id>。 - 配置页侧栏接入同一三态过滤。
- 配置页在菜单中的名称由“设置”改为“配置”。
- 侧栏搜索现在同时匹配名称、插件 ID 和配置键。
API
新增或调整:
GET /api/plugins/unloadedPOST /api/plugins/loadPOST /api/plugins/{id}/unloadPOST /api/plugins/{id}/uninstallPOST /api/market/builtins/{name}/unloadPOST /api/market/builtins/{name}/loadGET /api/plugins仅返回当前已加载插件- 插件详情增加
market信息
行为变更
- 内置插件的“关闭”语义修正为禁用:写入
~::name并调用插件disable(),不再把插件从运行时卸载。 - 需要彻底从运行时移除内置插件时,请使用“卸载”;卸载写入
?::name,配置保留。 - 顶层插件的禁用、卸载、加载三种 YAML 状态互斥,不会产生
?~key。 - 旧配置中同时存在
$disable和$optional的条目,会在下次写入时归一化,并优先保留$optional语义。 - 菜单新增“插件管理”,顺序为:仪表盘、配置、插件管理、插件市场、实时日志、聊天室。
修复
- 修复禁用插件以
~key形式保存后,重新启用或卸载时丢失配置的问题。 - 修复条件禁用表达式被错误显示为“已禁用”的问题,
state现在按实际求值结果报告。 - 修复子插件配置 schema 错误嵌套
.bar、$defs/$ref失效的问题。 - 修复根基础插件被错误套用子插件 schema 的问题。
- 修复前端 history 路由刷新后 404 的问题。
- 修复嵌套 schema
$ref无法解析的问题。
Full Changelog: v1.0.3...v1.1.0