Files
navop/docs/extension-resource-plugins
胡飞 7815ce5a28 perf(deps): gpui-component 升级到 resvg 0.46,去掉重复的 usvg/tiny-skia
component fork 的 Windows 原生菜单固定 resvg 0.45.1,gpui-pre 用 0.46.0,
每个下游二进制都链两份 usvg/tiny-skia。fork 侧 6df86ef8 把 resvg 提到 0.46.0,
navop 侧 rev 跟到 6df86ef8(含 rquickjs)。

同时清掉脚本/文档里改名前的 gpui-ce 标识:
- sync-gpui-component.sh 的 -p 包名(原值实跑报 did not match any packages)
- update_gpui_component_revision.py 的包名映射
- gpui-component-external.md 的旧仓库地址与 rev
- gpui-shell-extension-design.md / home-theme-sidebar-refinement.md 的旧包名与 rev

验证:Cargo.lock 里 resvg/usvg/tiny-skia/tiny-skia-path 各只剩 1 个版本;
cargo check -p main 通过;resvg 调用序列探针对 0.46.0 编译通过。
未跑 Windows 构建:唯一调用点是 native_menu/windows.rs(Windows 专用)。
已知遗留:update_gpui_component_revision.py 仍不能跑(依赖行需含
gpui-component.git + version =,SHELL_VERSION_FILES 锚点已不存在)。
2026-09-17 15:51:15 +08:00
..

Universal Resource Plugins

当前底层机制保持 headless;MVP 已在其上接入一个最小 gpui-shell embedded UI

  • extension.json 声明 native IPC runtime
  • 宿主按 namespaced runtime id 惰性启动和监督 provider
  • provider 通过稳定 RPC 提供 resource、job、event stream、blob 能力;
  • 权限、进程生命周期、重启代数和 host blob 均由宿主管理;
  • shell view 由 gpui-shell 加载,所有脚本组件统一来自 gpui-component-shellgpui-component moduleprovider 仍不返回 UI tree。

扩展连接复用标准 StoredConnection、工作区、首页和侧边栏生命周期。 contributes.connections 声明宿主表单、IPC runtime 和可选 shellViewId:有 UI 时打开 connection-scoped shell tab,无 UI 时打开宿主 headless 状态 tab。job/event/blob、热更新 drain 和 permission facade 均复用同一 provider runtime。

后续 UI 统一由 gpui-shell 承载。gpui-shell 将复用本层的 runtime activation 和 typed client,不重新引入第三方 UI 协议。

Runtime 生命周期

  1. ExtensionRuntimeCatalog 解析 runtime.ipc
  2. ActivationManager::activate_runtime 启动或复用 runtime,并返回 activation lease。
  3. 调用方通过 ManagedUniversalPluginClient 使用 resource/job/event/blob 方法。
  4. 调用方释放 lease;最后一个 lease 释放后 provider 关闭。
  5. RuntimeMonitor 检查健康状态并按 manifest 策略执行有限重启。

当前边界

  • 不解析 contributes.declarativePanels
  • 不提供 ui/actionui/dialogui/window
  • 不提供 WASM open-viewhandle-view-action
  • DB tree extension action 仍可执行无 UI WASM action。
  • extension_view 继续作为 Navop 的扩展安装/管理页面,与插件 UI 无关。

gpui-shell 接入点

详细设计见 gpui-shell-extension-design.md

后续 ShellPluginHost 负责:

  • 根据 extension.json 中的新 shell contribution 定位脚本入口;
  • 先注册 navop.* HostModule,再实例化脚本视图;
  • 通过 UniversalPluginService::activate_runtime 获取 provider lease
  • 把 resource/job/event/blob/db capability 暴露给脚本;
  • unload 时释放 host module、脚本 view 和 activation lease。