From d1592b84c7fb9a2529e81f5398a098a93b9f9363 Mon Sep 17 00:00:00 2001 From: Cam Proudlock Date: Sat, 18 Jul 2026 23:56:32 -0400 Subject: [PATCH] ADR-013 Phase 4: all 13 plugin frontends relocated + staging machinery --- frontend/package.json | 1 + frontend/vitest.config.js | 2 ++ .../applications/frontend/routes.js | 8 ++++---- .../frontend/views}/ApplicationDetail.vue | 4 ++-- .../frontend/views}/ApplicationForm.vue | 4 ++-- .../frontend/views}/ApplicationsList.vue | 4 ++-- .../computers/frontend/routes.js | 14 +++++++------- .../frontend/views}/AccessProtocolsList.vue | 2 +- .../frontend/views}/OperatingSystemsList.vue | 8 ++++---- .../computers/frontend/views}/PCDetail.vue | 14 +++++++------- .../computers/frontend/views}/PCForm.vue | 14 +++++++------- .../computers/frontend/views}/PCTypesList.vue | 6 +++--- .../computers/frontend/views}/PCsList.vue | 4 ++-- .../geenforce/frontend/routes.js | 6 +++--- .../frontend/views}/EnforcementReports.vue | 2 +- .../frontend/views}/GeEnforceLayout.vue | 0 .../geenforce/frontend/views}/ManifestEditor.vue | 2 +- .../geenforce/frontend/views}/entryForm.js | 0 .../geenforce/frontend/views}/entryForm.spec.js | 0 .../knowledgebase/frontend/routes.js | 8 ++++---- .../frontend/views}/KnowledgeBaseDetail.vue | 2 +- .../frontend/views}/KnowledgeBaseForm.vue | 4 ++-- .../frontend/views}/KnowledgeBaseList.vue | 4 ++-- .../machines/frontend/routes.js | 8 ++++---- .../machines/frontend/views}/MachineDetail.vue | 14 +++++++------- .../machines/frontend/views}/MachineForm.vue | 14 +++++++------- .../machines/frontend/views}/MachinesList.vue | 4 ++-- .../measuringtools/frontend/routes.js | 14 +++++++------- .../frontend/views}/CalibrationReport.vue | 2 +- .../frontend/views}/MeasuringToolDetail.vue | 10 +++++----- .../frontend/views}/MeasuringToolForm.vue | 8 ++++---- .../frontend/views}/MeasuringToolTypesList.vue | 6 +++--- .../frontend/views}/MeasuringToolsList.vue | 4 ++-- .../network/frontend/routes.js | 14 +++++++------- .../frontend/views}/NetworkDeviceDetail.vue | 16 ++++++++-------- .../frontend/views}/NetworkDeviceForm.vue | 8 ++++---- .../frontend/views}/NetworkDevicesList.vue | 4 ++-- .../network/frontend/views}/NetworkHub.vue | 0 .../network/frontend/views}/SubnetDetail.vue | 0 .../network/frontend/views}/SubnetsBrowse.vue | 0 .../network/frontend/views}/SubnetsList.vue | 8 ++++---- .../network/frontend/views}/VLANsList.vue | 8 ++++---- .../notifications/frontend/routes.js | 12 ++++++------ .../frontend}/views/CalendarView.vue | 0 .../frontend/views}/NotificationForm.vue | 2 +- .../frontend/views}/NotificationTypesList.vue | 2 +- .../frontend/views}/NotificationsList.vue | 2 +- .../printers/frontend/routes.js | 16 ++++++++-------- .../frontend/views}/ModelSuppliesList.vue | 2 +- .../printers/frontend/views}/PrinterDetail.vue | 14 +++++++------- .../frontend/views}/PrinterDriversList.vue | 6 +++--- .../printers/frontend/views}/PrinterForm.vue | 16 ++++++++-------- .../printers/frontend/views}/PrinterQRBatch.vue | 4 ++-- .../printers/frontend/views}/PrinterQRSingle.vue | 4 ++-- .../printers/frontend/views}/PrintersList.vue | 4 ++-- .../slides/frontend/routes.js | 2 +- .../slides/frontend}/views/TVDashboard.vue | 0 .../usb.js => plugins/usb/frontend/routes.js | 10 +++++----- .../usb/frontend/views}/USBDetail.vue | 8 ++++---- .../usb/frontend/views}/USBForm.vue | 2 +- .../usb/frontend/views}/USBLabelBatch.vue | 2 +- .../usb/frontend/views}/USBList.vue | 12 ++++++------ .../warranty/frontend/routes.js | 4 ++-- .../warranty/frontend/views}/WarrantiesList.vue | 6 +++--- .../warranty/frontend/views}/WarrantyReport.vue | 4 ++-- scripts/stage-frontend.mjs | 10 +++++----- 66 files changed, 201 insertions(+), 198 deletions(-) rename frontend/src/router/routes/applications.js => plugins/applications/frontend/routes.js (54%) rename {frontend/src/views/applications => plugins/applications/frontend/views}/ApplicationDetail.vue (95%) rename {frontend/src/views/applications => plugins/applications/frontend/views}/ApplicationForm.vue (98%) rename {frontend/src/views/applications => plugins/applications/frontend/views}/ApplicationsList.vue (98%) rename frontend/src/router/routes/computers.js => plugins/computers/frontend/routes.js (66%) rename {frontend/src/views/settings => plugins/computers/frontend/views}/AccessProtocolsList.vue (99%) rename {frontend/src/views/settings => plugins/computers/frontend/views}/OperatingSystemsList.vue (97%) rename {frontend/src/views/pcs => plugins/computers/frontend/views}/PCDetail.vue (96%) rename {frontend/src/views/pcs => plugins/computers/frontend/views}/PCForm.vue (97%) rename {frontend/src/views/settings => plugins/computers/frontend/views}/PCTypesList.vue (97%) rename {frontend/src/views/pcs => plugins/computers/frontend/views}/PCsList.vue (98%) rename frontend/src/router/routes/geenforce.js => plugins/geenforce/frontend/routes.js (78%) rename {frontend/src/views/geenforce => plugins/geenforce/frontend/views}/EnforcementReports.vue (99%) rename {frontend/src/views/geenforce => plugins/geenforce/frontend/views}/GeEnforceLayout.vue (100%) rename {frontend/src/views/geenforce => plugins/geenforce/frontend/views}/ManifestEditor.vue (99%) rename {frontend/src/views/geenforce => plugins/geenforce/frontend/views}/entryForm.js (100%) rename {frontend/src/views/geenforce => plugins/geenforce/frontend/views}/entryForm.spec.js (100%) rename frontend/src/router/routes/knowledgebase.js => plugins/knowledgebase/frontend/routes.js (62%) rename {frontend/src/views/knowledgebase => plugins/knowledgebase/frontend/views}/KnowledgeBaseDetail.vue (94%) rename {frontend/src/views/knowledgebase => plugins/knowledgebase/frontend/views}/KnowledgeBaseForm.vue (97%) rename {frontend/src/views/knowledgebase => plugins/knowledgebase/frontend/views}/KnowledgeBaseList.vue (94%) rename frontend/src/router/routes/machines.js => plugins/machines/frontend/routes.js (62%) rename {frontend/src/views/machines => plugins/machines/frontend/views}/MachineDetail.vue (96%) rename {frontend/src/views/machines => plugins/machines/frontend/views}/MachineForm.vue (98%) rename {frontend/src/views/machines => plugins/machines/frontend/views}/MachinesList.vue (97%) rename frontend/src/router/routes/measuringtools.js => plugins/measuringtools/frontend/routes.js (71%) rename {frontend/src/views/reports => plugins/measuringtools/frontend/views}/CalibrationReport.vue (98%) rename {frontend/src/views/measuringtools => plugins/measuringtools/frontend/views}/MeasuringToolDetail.vue (96%) rename {frontend/src/views/measuringtools => plugins/measuringtools/frontend/views}/MeasuringToolForm.vue (98%) rename {frontend/src/views/settings => plugins/measuringtools/frontend/views}/MeasuringToolTypesList.vue (97%) rename {frontend/src/views/measuringtools => plugins/measuringtools/frontend/views}/MeasuringToolsList.vue (98%) rename frontend/src/router/routes/network.js => plugins/network/frontend/routes.js (66%) rename {frontend/src/views/network => plugins/network/frontend/views}/NetworkDeviceDetail.vue (96%) rename {frontend/src/views/network => plugins/network/frontend/views}/NetworkDeviceForm.vue (98%) rename {frontend/src/views/network => plugins/network/frontend/views}/NetworkDevicesList.vue (98%) rename {frontend/src/views/network => plugins/network/frontend/views}/NetworkHub.vue (100%) rename {frontend/src/views/network => plugins/network/frontend/views}/SubnetDetail.vue (100%) rename {frontend/src/views/network => plugins/network/frontend/views}/SubnetsBrowse.vue (100%) rename {frontend/src/views/settings => plugins/network/frontend/views}/SubnetsList.vue (98%) rename {frontend/src/views/settings => plugins/network/frontend/views}/VLANsList.vue (98%) rename frontend/src/router/routes/notifications.js => plugins/notifications/frontend/routes.js (62%) rename {frontend/src => plugins/notifications/frontend}/views/CalendarView.vue (100%) rename {frontend/src/views/notifications => plugins/notifications/frontend/views}/NotificationForm.vue (99%) rename {frontend/src/views/notifications => plugins/notifications/frontend/views}/NotificationTypesList.vue (99%) rename {frontend/src/views/notifications => plugins/notifications/frontend/views}/NotificationsList.vue (95%) rename frontend/src/router/routes/printers.js => plugins/printers/frontend/routes.js (64%) rename {frontend/src/views/settings => plugins/printers/frontend/views}/ModelSuppliesList.vue (99%) rename {frontend/src/views/printers => plugins/printers/frontend/views}/PrinterDetail.vue (97%) rename {frontend/src/views/settings => plugins/printers/frontend/views}/PrinterDriversList.vue (97%) rename {frontend/src/views/printers => plugins/printers/frontend/views}/PrinterForm.vue (97%) rename {frontend/src/views/print => plugins/printers/frontend/views}/PrinterQRBatch.vue (96%) rename {frontend/src/views/print => plugins/printers/frontend/views}/PrinterQRSingle.vue (95%) rename {frontend/src/views/printers => plugins/printers/frontend/views}/PrintersList.vue (97%) rename frontend/src/router/routes/slides.js => plugins/slides/frontend/routes.js (62%) rename {frontend/src => plugins/slides/frontend}/views/TVDashboard.vue (100%) rename frontend/src/router/routes/usb.js => plugins/usb/frontend/routes.js (63%) rename {frontend/src/views/usb => plugins/usb/frontend/views}/USBDetail.vue (97%) rename {frontend/src/views/usb => plugins/usb/frontend/views}/USBForm.vue (98%) rename {frontend/src/views/print => plugins/usb/frontend/views}/USBLabelBatch.vue (99%) rename {frontend/src/views/usb => plugins/usb/frontend/views}/USBList.vue (96%) rename frontend/src/router/routes/warranty.js => plugins/warranty/frontend/routes.js (62%) rename {frontend/src/views/warranty => plugins/warranty/frontend/views}/WarrantiesList.vue (99%) rename {frontend/src/views/reports => plugins/warranty/frontend/views}/WarrantyReport.vue (98%) diff --git a/frontend/package.json b/frontend/package.json index b6d303c0..49b9aca8 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -10,6 +10,7 @@ "prebuild": "npm run stage", "build": "vite build", "preview": "vite preview", + "pretest": "npm run stage", "test": "vitest run", "test:watch": "vitest" }, diff --git a/frontend/vitest.config.js b/frontend/vitest.config.js index 0f2577e4..f40201ae 100644 --- a/frontend/vitest.config.js +++ b/frontend/vitest.config.js @@ -14,6 +14,8 @@ export default defineConfig({ test: { environment: 'jsdom', globals: true, + // Core specs plus plugin-frontend specs, which the pretest stage copies + // into src/.plugins-staged/ (under root, so this glob finds them). include: ['src/**/*.spec.js'], }, }) diff --git a/frontend/src/router/routes/applications.js b/plugins/applications/frontend/routes.js similarity index 54% rename from frontend/src/router/routes/applications.js rename to plugins/applications/frontend/routes.js index 754aacc5..9c1ea751 100644 --- a/frontend/src/router/routes/applications.js +++ b/plugins/applications/frontend/routes.js @@ -5,23 +5,23 @@ export default [ { path: 'applications', name: 'applications', - component: () => import('../../views/applications/ApplicationsList.vue') + component: () => import('./views/ApplicationsList.vue') }, { path: 'applications/new', name: 'application-new', - component: () => import('../../views/applications/ApplicationForm.vue'), + component: () => import('./views/ApplicationForm.vue'), meta: { requiresAuth: true } }, { path: 'applications/:id', name: 'application-detail', - component: () => import('../../views/applications/ApplicationDetail.vue') + component: () => import('./views/ApplicationDetail.vue') }, { path: 'applications/:id/edit', name: 'application-edit', - component: () => import('../../views/applications/ApplicationForm.vue'), + component: () => import('./views/ApplicationForm.vue'), meta: { requiresAuth: true } } ] diff --git a/frontend/src/views/applications/ApplicationDetail.vue b/plugins/applications/frontend/views/ApplicationDetail.vue similarity index 95% rename from frontend/src/views/applications/ApplicationDetail.vue rename to plugins/applications/frontend/views/ApplicationDetail.vue index 1f93ab34..f2c6fae0 100644 --- a/frontend/src/views/applications/ApplicationDetail.vue +++ b/plugins/applications/frontend/views/ApplicationDetail.vue @@ -156,8 +156,8 @@