diff --git a/README.md b/README.md index 428301c..0cdcc3e 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,12 @@ active View. Configure mode supports adding, removing, ordering, sizing, and widget-specific settings. Existing browser-only layouts are used as a migration fallback until the first server save. +The Dashboard's **Active interface modules** metric and widget count only +tenant-enabled modules whose WebUI is loaded in the current browser session. +The Administration module catalogue has a different operator-facing scope: it +also includes discovered backend-only and headless module manifests. The two +figures therefore need not match. + Widget providers can declare supported sizes and a small configuration schema: ```ts diff --git a/src/govoplan_dashboard/backend/manifest.py b/src/govoplan_dashboard/backend/manifest.py index 18dd192..cc2af44 100644 --- a/src/govoplan_dashboard/backend/manifest.py +++ b/src/govoplan_dashboard/backend/manifest.py @@ -115,7 +115,7 @@ manifest = ModuleManifest( id="dashboard.widget.installed-modules", module_id="dashboard", kind="section", - label="Installed modules widget", + label="Active interface modules widget", parent_id="dashboard.grid", order=10, ), @@ -129,7 +129,9 @@ manifest = ModuleManifest( body=( "Core only provides a minimal fallback home when the dashboard module is absent. " "Dashboard widgets must be contributed through core contracts, not by importing sibling module components directly. " - "Personal layouts are stored per tenant, account, and active View." + "Personal layouts are stored per tenant, account, and active View. The active interface-module count includes only " + "tenant-enabled modules whose WebUI loaded in the current browser session. It intentionally differs from the " + "Administration package catalogue, which includes discovered backend-only and headless module manifests." ), layer="configured", documentation_types=("admin", "user"), diff --git a/webui/src/features/dashboard/DashboardPage.tsx b/webui/src/features/dashboard/DashboardPage.tsx index 1647c76..79499df 100644 --- a/webui/src/features/dashboard/DashboardPage.tsx +++ b/webui/src/features/dashboard/DashboardPage.tsx @@ -505,7 +505,7 @@ export default function DashboardPage({
No interface modules are active.
; const maxItems = clampNumber(configuration.maxItems, 1, 50, 8); const showVersions = configuration.showVersions !== false; const sortBy = configuration.sortBy === "label" ? "label" : "module"; @@ -37,7 +37,7 @@ export default function InstalledModulesWidget({+{remaining} more active modules
} + {remaining > 0 &&+{remaining} more active interface modules
} >); } diff --git a/webui/src/i18n/generatedTranslations.ts b/webui/src/i18n/generatedTranslations.ts index 17743fd..730ce2a 100644 --- a/webui/src/i18n/generatedTranslations.ts +++ b/webui/src/i18n/generatedTranslations.ts @@ -6,7 +6,7 @@ const en = { "i18n:govoplan-dashboard.library": "Widget library", "i18n:govoplan-dashboard.grid": "Dashboard grid", "i18n:govoplan-dashboard.widget_settings": "Widget settings", - "i18n:govoplan-dashboard.installed_modules_widget": "Installed modules widget", + "i18n:govoplan-dashboard.installed_modules_widget": "Active interface modules widget", "i18n:govoplan-dashboard.loading_reason": "The saved Dashboard layout is still loading.", "i18n:govoplan-dashboard.saving_reason": "The Dashboard layout is still being saved.", "i18n:govoplan-dashboard.no_changes_reason": "There are no unsaved Dashboard changes.", @@ -21,7 +21,7 @@ const en = { "Cancel": "Cancel", "Save layout": "Save layout", "Saving...": "Saving...", - "Installed modules": "Installed modules", + "Active interface modules": "Active interface modules", "Available widgets": "Available widgets", "On dashboard": "On dashboard", "Layout": "Layout", @@ -41,7 +41,7 @@ const de: Record