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.
Alessandro committed
Jul 9, 2026 at 13:20 UTC
bc96386260fbaf2f169e4fc038228e48c2b990b5
3 files changed
+11
webui/components/settings/AGENTS.md
+1
@@ -14,6 +14,7 @@
14
## Local Contracts
15
16
- Keep settings payloads synchronized with backend APIs and plugin settings contracts.
17
+- Settings tabs that expose plugin `settings_sections` must mount `settings/plugins/plugins-subsection.html` with matching `data-tab` and sidebar/nav section IDs.
18
- Do not store secrets in localStorage, URLs, or console output.
19
- Preserve Store Gating and modal footer conventions in settings components.
20
- MCP manager tool toggles write `disabled_tools` into the draft JSON and require Apply before changing the running MCP tool set.
webui/components/settings/external/external-settings.html
+9
@@ -45,6 +45,12 @@
45
<span>Remote Control</span>
46
</a>
47
</li>
48
+ <li>
49
+ <a href="#section-external-plugins">
50
+ <span class="material-symbols-outlined" aria-hidden="true">extension</span>
51
+ <span>Plugins</span>
52
+ </a>
53
+ </li>
54
</ul>
55
</nav>
56
@@ -67,6 +73,9 @@
73
<div id="section-tunnel" class="section">
74
<x-component path="settings/tunnel/tunnel-section.html"></x-component>
75
</div>
76
+ <div id="section-external-plugins" class="section">
77
+ <x-component path="settings/plugins/plugins-subsection.html" data-tab="external"></x-component>
78
+ </div>
79
</div>
80
</template>
81
</div>
webui/components/settings/settings-store.js
+1
@@ -49,6 +49,7 @@ const TAB_ITEMS = Object.freeze([
49
{ id: "section-auth", label: "Authentication", icon: "passkey" },
50
{ id: "section-external-api", label: "External API", icon: "api" },
51
{ id: "section-tunnel", label: "Remote Control", icon: "share" },
52
+ { id: "section-external-plugins", label: "Plugins", icon: "extension" },
53
],
54
},
55
{