fix(webui): flatten redundant components/admin/config/icons/config/ + repair engine logos

The config-category icons sat at admin/config/icons/CONFIG/ — the inner config/
duplicates the subsystem name; they belong in the icons root. Moved all 6
(backup, features, general, network, security, webui) up to
components/admin/config/icons/ and updated the two consumers (config-manager.js
header icon, config-sidebar.js category icons).

Also fixed the backup-engine logos: scripts/backup/engines/{restic,kopia,borg}
.json pointed 'logo' at /icons/config/backup.svg — a path that 404'd on two
counts (missing the components/admin/config prefix AND the now-removed config/
nesting), so the engine-details modal logo silently hid. Repointed to the real
served path /components/admin/config/icons/backup.svg.

(Left the meaningful icon groupings alone — admin/system/icons/{cpu,os} and
apps/core/icons/vpn are vendor/OS/provider logo sets, not redundant nesting.
The backup engines borrowing an admin-config icon is a minor smell; a dedicated
backup-engine icon could replace it later if wanted.)

Signed-off-by: librelad <librelad@digitalangels.vip>
This commit is contained in:
librelad 2026-05-31 00:07:49 +01:00
parent a0db2776d6
commit 5cf5b88b16
11 changed files with 5 additions and 5 deletions

View File

@ -216,7 +216,7 @@ if (typeof window.ConfigManager === 'undefined') {
var catIcon = catMeta.icon || category; var catIcon = catMeta.icon || category;
var headerHTML = var headerHTML =
'<div class="page-header config-page-header">' + '<div class="page-header config-page-header">' +
'<img class="page-header-icon" src="/components/admin/config/icons/config/' + catIcon + '.svg" alt="" onerror="this.style.display=\'none\'">' + '<img class="page-header-icon" src="/components/admin/config/icons/' + catIcon + '.svg" alt="" onerror="this.style.display=\'none\'">' +
'<div class="page-header-title">' + '<div class="page-header-title">' +
'<div class="admin-breadcrumb">Config</div>' + '<div class="admin-breadcrumb">Config</div>' +
'<h1>' + catTitle + '</h1>' + '<h1>' + catTitle + '</h1>' +

View File

@ -88,7 +88,7 @@ class ConfigSidebar {
// Use correct icon from our new structure // Use correct icon from our new structure
const iconName = category.icon || category.id; const iconName = category.icon || category.id;
const iconPath = '/components/admin/config/icons/config/' + iconName + '.svg'; const iconPath = '/components/admin/config/icons/' + iconName + '.svg';
categoryItem.innerHTML = '<img src="' + iconPath + '" alt="' + category.title + '" style="width: 20px; height: 20px; margin-right: 8px;"/> ' + category.title; categoryItem.innerHTML = '<img src="' + iconPath + '" alt="' + category.title + '" style="width: 20px; height: 20px; margin-right: 8px;"/> ' + category.title;

View File

@ -2,7 +2,7 @@
"id": "borg", "id": "borg",
"name": "BorgBackup", "name": "BorgBackup",
"tagline": "Encrypted, deduplicated, compressed — the original.", "tagline": "Encrypted, deduplicated, compressed — the original.",
"logo": "/icons/config/backup.svg", "logo": "/components/admin/config/icons/backup.svg",
"supported_types": ["local", "sftp"], "supported_types": ["local", "sftp"],
"properties": [ "properties": [
{"label": "Encryption", "value": "AES-256-CTR + HMAC-SHA-256"}, {"label": "Encryption", "value": "AES-256-CTR + HMAC-SHA-256"},

View File

@ -2,7 +2,7 @@
"id": "kopia", "id": "kopia",
"name": "Kopia", "name": "Kopia",
"tagline": "Modern fast backup with policies-as-data and built-in maintenance.", "tagline": "Modern fast backup with policies-as-data and built-in maintenance.",
"logo": "/icons/config/backup.svg", "logo": "/components/admin/config/icons/backup.svg",
"supported_types": ["local", "sftp"], "supported_types": ["local", "sftp"],
"properties": [ "properties": [
{"label": "Encryption", "value": "AES-256-GCM or ChaCha20-Poly1305"}, {"label": "Encryption", "value": "AES-256-GCM or ChaCha20-Poly1305"},

View File

@ -2,7 +2,7 @@
"id": "restic", "id": "restic",
"name": "Restic", "name": "Restic",
"tagline": "Modern encrypted backup with native deduplication.", "tagline": "Modern encrypted backup with native deduplication.",
"logo": "/icons/config/backup.svg", "logo": "/components/admin/config/icons/backup.svg",
"supported_types": ["local", "sftp", "rest", "s3", "b2", "gs", "azure", "rclone"], "supported_types": ["local", "sftp", "rest", "s3", "b2", "gs", "azure", "rclone"],
"properties": [ "properties": [
{"label": "Encryption", "value": "AES-256-CTR + Poly1305-AES authentication"}, {"label": "Encryption", "value": "AES-256-CTR + Poly1305-AES authentication"},