From 212165befd0818c418ecbd0efbeecaa08a887219 Mon Sep 17 00:00:00 2001 From: cproudlock Date: Sun, 19 Jul 2026 12:25:10 -0400 Subject: [PATCH] Lean build: gate Shopfloor Dashboard on the notifications plugin Shopfloor Dashboard is a core view but its content is entirely notificationsApi.getShopfloor() + the calendar (both owned by the notifications plugin). Without notifications the display is empty, so gate the Displays link on the notifications/calendar route being staged. On a site without it the link - and the Displays header when nothing else is present - drops. --- frontend/src/views/AppLayout.vue | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/frontend/src/views/AppLayout.vue b/frontend/src/views/AppLayout.vue index dd247a7..05a0021 100644 --- a/frontend/src/views/AppLayout.vue +++ b/frontend/src/views/AppLayout.vue @@ -25,7 +25,7 @@ - Shopfloor Dashboard + Shopfloor Dashboard TV Slideshow Parts Kiosk @@ -124,7 +124,12 @@ const authStore = useAuthStore() // report for a plugin that was never staged. const stagedRoutePaths = new Set(router.getRoutes().map(r => r.path)) const hasRoute = (path) => stagedRoutePaths.has(path) -const showDisplays = ['/shopfloor', '/tv', '/parts-kiosk'].some(hasRoute) +// Shopfloor Dashboard is a core view but runs entirely on the notifications +// plugin (notificationsApi.getShopfloor + the calendar); without it the display +// is empty, so gate the link on the notifications plugin being in this build. +const showShopfloor = hasRoute('/shopfloor') + && (hasRoute('/notifications') || hasRoute('/calendar')) +const showDisplays = showShopfloor || hasRoute('/tv') || hasRoute('/parts-kiosk') const routeViewKey = computed(() => route.path.startsWith('/settings') ? '/settings' : route.path )