Skip to content

Entari WebUI 1.1.0

Choose a tag to compare

@RF-Tar-Railt RF-Tar-Railt released this 20 Oct 16:28
· 8 commits to main since this release

新增独立的插件管理页,补齐子插件独立控制、内置插件生命周期和商店包删除能力,并让配置页与管理页共享三态插件显示过滤。

升级要求

  • 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/unloaded
  • POST /api/plugins/load
  • POST /api/plugins/{id}/unload
  • POST /api/plugins/{id}/uninstall
  • POST /api/market/builtins/{name}/unload
  • POST /api/market/builtins/{name}/load
  • GET /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