librelad e30c20fde6 refactor(webui): remove leftover redirect components; one working kernel redirect
config-redirect/, peers/, ssh/ were redirect-only shim components (just a
feature.json each) whose handlers re-entered navigate() and were silently
no-op'd by the isLoading guard — i.e. the legacy /config /peers /ssh URLs were
broken, and nothing in the UI links to them. Replace all three with a single
_legacyRedirect() at the top of navigate() (before the guard, so it actually
works) that rewrites them to the canonical /admin/* path. Removed the 3
folders, their manifest entries, the 3 dead spa.js handlers, and their
setupRoutes() lines. components/ is now exactly the 6 real pages; the real
SSH/Peers pages live (as before) under admin/ssh and admin/peers.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: librelad <librelad@digitalangels.vip>
2026-05-30 15:47:37 +01:00

92 lines
2.2 KiB
JSON

{
"version": 1,
"note": "Phase-0 hand-committed manifest (to be replaced by the generated /data/webui/generated/features.json once the scan generator lands — see docs/frontend-modularization.md). 'module' is the feature's self-registering index.js; the kernel loads these from here so they no longer need <script> tags in index.html. 'handler' names the LibrePortalSPAClean method kept as the fallback during the strangler migration; 'navId' is the topbar element id for active-state highlighting.",
"features": [
{
"id": "dashboard",
"routes": [
"/",
"/dashboard"
],
"module": "/components/dashboard/index.js",
"handler": "handleDashboard",
"navId": "nav-dashboard",
"nav": {
"label": "Dashboard",
"order": 10
}
},
{
"id": "apps",
"routes": [
"/apps",
"/apps*",
"/app",
"/app*"
],
"module": "/components/apps/index.js",
"handler": "handleApps",
"navId": "nav-app-center",
"nav": {
"label": "App Center",
"order": 20
}
},
{
"id": "admin",
"routes": [
"/admin",
"/admin*"
],
"module": "/components/admin/index.js",
"handler": "handleAdmin",
"navId": "nav-config",
"nav": {
"label": "Admin",
"order": 40
}
},
{
"id": "tasks",
"routes": [
"/tasks",
"/tasks*"
],
"module": "/components/tasks/index.js",
"handler": "handleTasks",
"navId": "nav-tasks",
"nav": {
"label": "Tasks",
"order": 60
}
},
{
"id": "updater",
"routes": [
"/updater",
"/updater*"
],
"module": "/components/updater/index.js",
"navId": "nav-updater",
"nav": {
"label": "Updates",
"order": 30
}
},
{
"id": "backup",
"routes": [
"/backup",
"/backup*"
],
"module": "/components/backup/index.js",
"handler": "handleBackup",
"navId": "nav-backup",
"nav": {
"label": "Backups",
"order": 50
}
}
]
}