From 7eb6cebeb5266e0cdd39bb0c67ac58203770c033 Mon Sep 17 00:00:00 2001 From: cproudlock Date: Sun, 12 Jul 2026 17:22:49 -0400 Subject: [PATCH] Add GE-Enforce P3 manifest editor UI (Settings > Imaging PC Types) The imaging-PC-type manifest editor, contributed as an ADR-010 settings card (Integrations group) and an ADR-009 plugin-gated route (/settings/imagingpctypes, hidden when geenforce is disabled). - Scope list: every imaging PC type with phase, entry count, and published version (or "unpublished"). New PC Type button. - Scope detail: ComputerType/MeasuringToolType mapping + description; Publish, Versions (with per-version Roll Back), Preview (draft JSON), Delete. - Entry table: ordered with Move Up/Down (the ordering contract, not drag), Name/Type/Detection/Filters, Edit/Delete. Add Entry opens a typed modal whose fields switch on entry Type (MSI/EXE/... vs PS1 vs File vs Registry), with a detection block, comma-separated targeting filters, CMM version gate, payload source, and an Advanced disclosure for the inert ApplyMode/UpdateWindow and InUseCheck. RegValue is typed by RegType (DWord/QWord -> number). - Simulator: "what would a PC get" - enter a machine profile, see which entries apply and which filter excluded the rest. Verified live: CMM version 2019 -> applies 2019 + untagged, filters 2016/2026 by _CmmVersion. Uses the P2 admin API; JWT+admin gated. Frontend build + naming green; full backend suite 876 green. Co-Authored-By: Claude Opus 4.8 --- frontend/src/router/routes/geenforce.js | 15 + .../src/views/settings/ImagingPCTypes.vue | 512 ++++++++++++++++++ plugins/geenforce/plugin.py | 15 + 3 files changed, 542 insertions(+) create mode 100644 frontend/src/router/routes/geenforce.js create mode 100644 frontend/src/views/settings/ImagingPCTypes.vue diff --git a/frontend/src/router/routes/geenforce.js b/frontend/src/router/routes/geenforce.js new file mode 100644 index 0000000..5d0d9d3 --- /dev/null +++ b/frontend/src/router/routes/geenforce.js @@ -0,0 +1,15 @@ +/** + * GE-Enforce plugin routes. + * + * The imaging-PC-type manifest editor lives under /settings. meta.plugin = + * 'geenforce' so the ADR-009 router guard hides it when the plugin is disabled. + * Admin-only, like the other settings pages. + */ +export default [ + { + path: 'settings/imagingpctypes', + name: 'imagingpctypes', + component: () => import('../../views/settings/ImagingPCTypes.vue'), + meta: { requiresAuth: true, requiresAdmin: true, plugin: 'geenforce' } + } +] diff --git a/frontend/src/views/settings/ImagingPCTypes.vue b/frontend/src/views/settings/ImagingPCTypes.vue new file mode 100644 index 0000000..89ec701 --- /dev/null +++ b/frontend/src/views/settings/ImagingPCTypes.vue @@ -0,0 +1,512 @@ +