- | {{ p.name }} |
+ {{ p.displayname || p.name }} |
{{ p.version }} |
{{ p.description || '-' }} |
diff --git a/plugins/geenforce/manifest.json b/plugins/geenforce/manifest.json
index 3829823..35e50bf 100644
--- a/plugins/geenforce/manifest.json
+++ b/plugins/geenforce/manifest.json
@@ -1,5 +1,6 @@
{
"name": "geenforce",
+ "display_name": "GE-Enforce",
"version": "0.1.0",
"description": "GE-Enforce manifest store. Owns imaging PC-type scopes and their install manifests (apps, scripts, files, registry, version gates) as shopdb data, served to the GE-Enforce client as JSON. Requires GE-Enforce lib >= 2.6 on target PCs (the _CmmVersion gate).",
"author": "ShopDB Team",
diff --git a/plugins/knowledgebase/manifest.json b/plugins/knowledgebase/manifest.json
index 3a34973..46dfb51 100644
--- a/plugins/knowledgebase/manifest.json
+++ b/plugins/knowledgebase/manifest.json
@@ -1,5 +1,6 @@
{
"name": "knowledgebase",
+ "display_name": "Knowledge Base",
"version": "1.0.0",
"description": "Knowledge Base articles linking to external resources",
"author": "ShopDB Team",
diff --git a/plugins/measuringtools/manifest.json b/plugins/measuringtools/manifest.json
index 8b5f200..f61c03e 100644
--- a/plugins/measuringtools/manifest.json
+++ b/plugins/measuringtools/manifest.json
@@ -1,5 +1,6 @@
{
"name": "measuringtools",
+ "display_name": "Measuring Tools",
"version": "1.0.0",
"description": "Metrology and inspection instruments (gauges, calipers, thread gages, bore gages) with a calibration lifecycle and derived calibration status.",
"author": "ShopDB Team",
diff --git a/plugins/usb/manifest.json b/plugins/usb/manifest.json
index 94173df..5b595c3 100644
--- a/plugins/usb/manifest.json
+++ b/plugins/usb/manifest.json
@@ -1,5 +1,6 @@
{
"name": "usb",
+ "display_name": "USB",
"version": "1.0.0",
"description": "USB device checkout management",
"author": "ShopDB Team",
diff --git a/shopdb/plugins/__init__.py b/shopdb/plugins/__init__.py
index 2cca4fb..1729ab2 100644
--- a/shopdb/plugins/__init__.py
+++ b/shopdb/plugins/__init__.py
@@ -155,6 +155,11 @@ class PluginManager:
manifest = self.loader.load_manifest(name)
available.append({
'name': meta.name,
+ # Human label for UIs. Manifest display_name wins; else
+ # title-case the machine name (right for most, e.g.
+ # "computers" -> "Computers").
+ 'displayname': (manifest.get('display_name')
+ or meta.name.replace('_', ' ').title()),
'version': meta.version,
'description': meta.description,
'author': meta.author,
|