From bc96386260fbaf2f169e4fc038228e48c2b990b5 Mon Sep 17 00:00:00 2001 From: Alessandro <155005371+3clyp50@users.noreply.github.com> Date: Thu, 9 Jul 2026 13:20:48 +0200 Subject: [PATCH] Add External Services plugin settings section Expose plugins that declare the external settings section from the External Services settings page. Wire the sidebar item, subsection mount, and settings DOX contract so plugin sections use matching tab IDs. --- webui/components/settings/AGENTS.md | 1 + .../components/settings/external/external-settings.html | 9 +++++++++ webui/components/settings/settings-store.js | 1 + 3 files changed, 11 insertions(+) diff --git a/webui/components/settings/AGENTS.md b/webui/components/settings/AGENTS.md index 463462a05..1a9b30223 100644 --- a/webui/components/settings/AGENTS.md +++ b/webui/components/settings/AGENTS.md @@ -14,6 +14,7 @@ ## Local Contracts - Keep settings payloads synchronized with backend APIs and plugin settings contracts. +- Settings tabs that expose plugin `settings_sections` must mount `settings/plugins/plugins-subsection.html` with matching `data-tab` and sidebar/nav section IDs. - Do not store secrets in localStorage, URLs, or console output. - Preserve Store Gating and modal footer conventions in settings components. - MCP manager tool toggles write `disabled_tools` into the draft JSON and require Apply before changing the running MCP tool set. diff --git a/webui/components/settings/external/external-settings.html b/webui/components/settings/external/external-settings.html index a9d7416dd..8eca3d8d0 100644 --- a/webui/components/settings/external/external-settings.html +++ b/webui/components/settings/external/external-settings.html @@ -45,6 +45,12 @@ Remote Control +
  • + + + Plugins + +
  • @@ -67,6 +73,9 @@
    +
    + +
    diff --git a/webui/components/settings/settings-store.js b/webui/components/settings/settings-store.js index 94a865504..fae2905ec 100644 --- a/webui/components/settings/settings-store.js +++ b/webui/components/settings/settings-store.js @@ -49,6 +49,7 @@ const TAB_ITEMS = Object.freeze([ { id: "section-auth", label: "Authentication", icon: "passkey" }, { id: "section-external-api", label: "External API", icon: "api" }, { id: "section-tunnel", label: "Remote Control", icon: "share" }, + { id: "section-external-plugins", label: "Plugins", icon: "extension" }, ], }, {