From dfd4ffa268132759eff8b8cee5b02b847094c8f3 Mon Sep 17 00:00:00 2001 From: librelad Date: Mon, 1 Jun 2026 00:10:30 +0100 Subject: [PATCH] feat(webui): drop Updates & Backups top-nav items; fold into App Center MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The fleet Overview area (Overview · Updates · Improvements · Backups) and the backup center now live under App Center, so the standalone top-nav items are redundant. Top nav is now Dashboard · App Center · Admin · Tasks. - Remove the Backups and Updates anchors from topbar.html. - Remove the nav{} blocks from updater/backup feature.json + manifest (so they don't resurface when the nav kernel lands). - Highlight App Center for /overview and /backup; drop the dead /updater branch. Co-Authored-By: Claude Opus 4.8 --- .../frontend/components/backup/feature.json | 1 - .../frontend/components/manifest.dev.json | 8 -------- .../frontend/components/updater/feature.json | 1 - .../libreportal/frontend/core/kernel/js/spa.js | 8 +++----- .../frontend/core/topbar/html/topbar.html | 17 ----------------- .../frontend/core/topbar/js/topbar.js | 9 +++------ 6 files changed, 6 insertions(+), 38 deletions(-) diff --git a/containers/libreportal/frontend/components/backup/feature.json b/containers/libreportal/frontend/components/backup/feature.json index 344dda9..c727332 100644 --- a/containers/libreportal/frontend/components/backup/feature.json +++ b/containers/libreportal/frontend/components/backup/feature.json @@ -4,6 +4,5 @@ "module": "/components/backup/index.js", "handler": "handleBackup", "navId": "nav-backup", - "nav": { "label": "Backups", "order": 50 }, "order": 50 } diff --git a/containers/libreportal/frontend/components/manifest.dev.json b/containers/libreportal/frontend/components/manifest.dev.json index bc3283a..fa2e39e 100644 --- a/containers/libreportal/frontend/components/manifest.dev.json +++ b/containers/libreportal/frontend/components/manifest.dev.json @@ -74,10 +74,6 @@ ], "module": "/components/updater/index.js", "navId": "nav-updater", - "nav": { - "label": "Updates", - "order": 30 - }, "order": 30 }, { @@ -89,10 +85,6 @@ "module": "/components/backup/index.js", "handler": "handleBackup", "navId": "nav-backup", - "nav": { - "label": "Backups", - "order": 50 - }, "order": 50 } ] diff --git a/containers/libreportal/frontend/components/updater/feature.json b/containers/libreportal/frontend/components/updater/feature.json index 39ba73a..5daccdc 100644 --- a/containers/libreportal/frontend/components/updater/feature.json +++ b/containers/libreportal/frontend/components/updater/feature.json @@ -3,7 +3,6 @@ "routes": ["/updater", "/updater*"], "module": "/components/updater/index.js", "navId": "nav-updater", - "nav": { "label": "Updates", "order": 30 }, "order": 30, "note": "App Updater — per-app version tracking, CVE/security scanning, and disaster-recovery (snapshot-before-update + rollback). New feature (no legacy handler); routed via its module. Actions go through libreportal updater tasks." } diff --git a/containers/libreportal/frontend/core/kernel/js/spa.js b/containers/libreportal/frontend/core/kernel/js/spa.js index 9833535..ab61a81 100755 --- a/containers/libreportal/frontend/core/kernel/js/spa.js +++ b/containers/libreportal/frontend/core/kernel/js/spa.js @@ -575,16 +575,14 @@ class LibrePortalSPAClean { let activeId = 'nav-dashboard'; // default - if (path.startsWith('/app') || path.startsWith('/apps')) { + // Overview + the backup center live under the App Center umbrella now; + // /updater is redirected to /overview, so it never resolves here. + if (path.startsWith('/app') || path.startsWith('/apps') || path.startsWith('/overview') || path.startsWith('/backup')) { activeId = 'nav-app-center'; } else if (path.startsWith('/admin') || path.startsWith('/config') || path.startsWith('/ssh')) { activeId = 'nav-config'; } else if (path.startsWith('/tasks')) { activeId = 'nav-tasks'; - } else if (path.startsWith('/backup')) { - activeId = 'nav-backup'; - } else if (path.startsWith('/updater')) { - activeId = 'nav-updater'; } else if (path === '/' || path === '/dashboard') { activeId = 'nav-dashboard'; } diff --git a/containers/libreportal/frontend/core/topbar/html/topbar.html b/containers/libreportal/frontend/core/topbar/html/topbar.html index 620eacb..e88f472 100755 --- a/containers/libreportal/frontend/core/topbar/html/topbar.html +++ b/containers/libreportal/frontend/core/topbar/html/topbar.html @@ -57,23 +57,6 @@ Tasks - - - - - - - Backups - - - - - - - - - Updates -
diff --git a/containers/libreportal/frontend/core/topbar/js/topbar.js b/containers/libreportal/frontend/core/topbar/js/topbar.js index 7852dfa..fe67825 100755 --- a/containers/libreportal/frontend/core/topbar/js/topbar.js +++ b/containers/libreportal/frontend/core/topbar/js/topbar.js @@ -429,17 +429,14 @@ class TopbarComponent { let activeNavId; - // PRIMARY: Use path-based detection only (most reliable) - if (path.startsWith('/app') || path.startsWith('/apps')) { + // PRIMARY: Use path-based detection only (most reliable). Overview + the + // backup center live under App Center now; /updater redirects to /overview. + if (path.startsWith('/app') || path.startsWith('/apps') || path.startsWith('/overview') || path.startsWith('/backup')) { activeNavId = 'nav-app-center'; } else if (path.startsWith('/admin') || path.startsWith('/config') || path.startsWith('/ssh')) { activeNavId = 'nav-config'; // Admin area (config + SSH live here) } else if (path.startsWith('/tasks')) { activeNavId = 'nav-tasks'; - } else if (path.startsWith('/backup')) { - activeNavId = 'nav-backup'; - } else if (path.startsWith('/updater')) { - activeNavId = 'nav-updater'; } else if (path === '/' || path === '/dashboard') { activeNavId = 'nav-dashboard'; } else {