diff --git a/steward/settings/routes.py b/steward/settings/routes.py index 64d623c..69e3c0e 100644 --- a/steward/settings/routes.py +++ b/steward/settings/routes.py @@ -505,6 +505,13 @@ def _build_plugin_cfg_from_form(plugin: dict, form) -> dict: # ── Plugins list ────────────────────────────────────────────────────────────── +# Bundled plugins that are really built-in *host/monitoring capabilities* (facets +# of a host), not discrete vendor integrations. Presentation-only split — they +# still load through the normal plugin mechanism. A plugin.yaml may set +# kind: capability|integration to override. +CAPABILITY_PLUGINS = {"host_agent", "http", "snmp", "docker"} + + @settings_bp.get("/plugins/") @require_role(UserRole.admin) async def plugins(): @@ -512,9 +519,14 @@ async def plugins(): settings = await get_all_settings(db) discovered = _discover_plugins() _merge_plugin_config(discovered, to_plugins_cfg(settings)) + for p in discovered: + p["_kind"] = p.get("kind") or ( + "capability" if p["_dir"] in CAPABILITY_PLUGINS else "integration") repos = _get_plugin_repos(settings) return await render_template( "settings/plugins.html", + capabilities=[p for p in discovered if p["_kind"] == "capability"], + integrations=[p for p in discovered if p["_kind"] != "capability"], discovered_plugins=discovered, repos=repos, settings=settings, diff --git a/steward/templates/base.html b/steward/templates/base.html index 2e81c39..49dff1f 100644 --- a/steward/templates/base.html +++ b/steward/templates/base.html @@ -209,7 +209,6 @@ textarea { resize: vertical; } Dashboard Status Hosts - Uptime Ping DNS Alerts diff --git a/steward/templates/settings/plugins.html b/steward/templates/settings/plugins.html index 60bd70d..1116d3d 100644 --- a/steward/templates/settings/plugins.html +++ b/steward/templates/settings/plugins.html @@ -10,72 +10,81 @@ {# ── Restart banner ────────────────────────────────────────────────────────── #}
-{# ── Installed Plugins ─────────────────────────────────────────────────────── #} -+ Built-in ways to monitor your hosts (agent metrics, HTTP/uptime, SNMP, Docker). These are + facets of a host — you'll see their data in the Hosts and + Status sections, not as separate areas. On by default. +
+{% if capabilities %} ++ External systems Steward pulls data from (e.g. Traefik, UniFi). Enable and configure each one + to surface its own dashboard. Off until you set them up. +
+{% if integrations %}