Two thirds of the conf was unreachable from the UI, and an empty Config block said nothing about why

This commit is contained in:
Gmer4Lfe
2026-08-06 23:08:49 -04:00
parent 9be6055113
commit 4989486f45
3 changed files with 47 additions and 4 deletions
+5
View File
@@ -359,6 +359,11 @@ body.vv-fullscreen #displaybox { padding-left: 1rem !important; padding-top: .5r
background-origin: content-box; background-attachment: local; } background-origin: content-box; background-attachment: local; }
.vv-cf-array:focus { outline: none; } .vv-cf-array:focus { outline: none; }
.vv-cf-empty { color: #555; font-size: 13px; font-style: italic; padding: 20px 4px; text-align: center; margin: 0; } .vv-cf-empty { color: #555; font-size: 13px; font-style: italic; padding: 20px 4px; text-align: center; margin: 0; }
/* "No user adjustable settings" — a stated fact, not an empty region. Tagged rather than greyed
out, because the thing being communicated is that nothing is missing. */
.vv-cf-none { color: #9a8f6a; font-size: 12px; margin: 0; padding: 8px 10px;
background: #1c1a12; border: 1px solid #33301f; border-left: 3px solid #7a6a3a;
border-radius: 3px; }
.vv-custom-empty { color: #666; font-size: 13px; padding: 8px 4px; margin: 0; font-style: italic; } .vv-custom-empty { color: #666; font-size: 13px; padding: 8px 4px; margin: 0; font-style: italic; }
.vv-custom-count { font-size: 12px; color: #666; margin-left: 8px; flex-shrink: 0; } .vv-custom-count { font-size: 12px; color: #666; margin-left: 8px; flex-shrink: 0; }
.vv-section-sep { font-size: 11px; font-weight: bold; color: #666; text-transform: uppercase; .vv-section-sep { font-size: 11px; font-weight: bold; color: #666; text-transform: uppercase;
+33 -4
View File
@@ -55,7 +55,7 @@ const VV_SCRIPT_CONF_SECTIONS = [
'Orchestrators/daily_sync_maintenance.sh' => ['Daily Sync Maintenance', 'Daily Sync Shares'], 'Orchestrators/daily_sync_maintenance.sh' => ['Daily Sync Maintenance', 'Daily Sync Shares'],
'Orchestrators/weekly_sync_maintenance.sh' => ['Weekly Sync Maintenance', 'Weekly Sync Shares'], 'Orchestrators/weekly_sync_maintenance.sh' => ['Weekly Sync Maintenance', 'Weekly Sync Shares'],
'Orchestrators/monthly_maintenance.sh' => ['Monthly Maintenance'], 'Orchestrators/monthly_maintenance.sh' => ['Monthly Maintenance'],
'Orchestrators/transcode_management.sh' => ['Transcode Manager', 'Transcode Server Array', 'Transcodes'], 'Orchestrators/transcode_management.sh' => ['Transcode Management', 'Transcode Manager', 'Transcode Server Array'],
// Docker Essentials // Docker Essentials
'Docker_Essentials/docker_daily_restart.sh' => ['Docker Daily Restart'], 'Docker_Essentials/docker_daily_restart.sh' => ['Docker Daily Restart'],
'Docker_Essentials/docker_weekly_restart.sh' => ['Docker Weekly Restart'], 'Docker_Essentials/docker_weekly_restart.sh' => ['Docker Weekly Restart'],
@@ -63,14 +63,13 @@ const VV_SCRIPT_CONF_SECTIONS = [
'Docker_Essentials/downloaders_reset.sh' => ['Downloaders Reset', 'Downloaders'], 'Docker_Essentials/downloaders_reset.sh' => ['Downloaders Reset', 'Downloaders'],
// Watchdogs // Watchdogs
'Watchdogs/docker_watchdog.sh' => ['Docker Watchdog'], 'Watchdogs/docker_watchdog.sh' => ['Docker Watchdog'],
'Watchdogs/resource_watchdog.sh' => ['Pressure Levels'], 'Watchdogs/resource_watchdog.sh' => ['Pressure Thresholds'],
'Watchdogs/System/network_watchdog.sh' => ['Network Watchdog'], 'Watchdogs/System/network_watchdog.sh' => ['Network Watchdog'],
'Plugin/unraid/Watchdogs/System/webgui_watchdog.sh' => ['WebGUI Watchdog'], 'Plugin/unraid/Watchdogs/System/webgui_watchdog.sh' => ['WebGUI Watchdog'],
// Media // Media
'Media/media_cleaner.sh' => ['Media Cleaner'], 'Media/media_cleaner.sh' => ['Media Cleaner'],
'Media/media_shares_permissions.sh' => ['Media Permissions'], 'Media/media_shares_permissions.sh' => ['Media Permissions'],
// Arrs Stack // Arrs Stack
'Arrs_Stack/arrs_failed_stalled_recovery.sh' => ['Arr Failed/Stalled Recovery'],
'Arrs_Stack/radarr_cleanup.sh' => ['Arr Cleanup'], 'Arrs_Stack/radarr_cleanup.sh' => ['Arr Cleanup'],
'Arrs_Stack/lidarr_cleanup.sh' => ['Arr Cleanup'], 'Arrs_Stack/lidarr_cleanup.sh' => ['Arr Cleanup'],
'Arrs_Stack/sonarr_cleanup.sh' => ['Arr Cleanup'], 'Arrs_Stack/sonarr_cleanup.sh' => ['Arr Cleanup'],
@@ -80,7 +79,37 @@ const VV_SCRIPT_CONF_SECTIONS = [
'Monitors/smart_health.sh' => ['SMART Health'], 'Monitors/smart_health.sh' => ['SMART Health'],
'Monitors/bandwidth_monitor.sh' => ['Bandwidth Monitor'], 'Monitors/bandwidth_monitor.sh' => ['Bandwidth Monitor'],
'Monitors/emby_session_report.sh' => ['Emby Session Report'], 'Monitors/emby_session_report.sh' => ['Emby Session Report'],
'Monitors/zfs_memory_snapshot.sh' => ['ZFS Report'], 'Monitors/zfs_memory_snapshot.sh' => ['ZFS Report', 'ZFS Memory Snapshot'],
'Monitors/weekly_health_digest.sh' => ['Health Digest'],
'Monitors/system_tuning_monitor.sh' => ['System Tuning Monitor'],
// ── Added after auditing the conf against this map ────────────────────────────────────────
// 99 named subsections existed; 35 were reachable. The rest were configured and documented in
// the script headers, but the Info & Settings view rendered no Config block at all — which
// reads as "this script has no settings" rather than "nobody mapped it". Only sections that
// unambiguously belong to one script are listed: a wrong mapping puts someone else's settings
// under a script and is worse than the gap it closes.
'Arrs_Stack/arr_download_orphan_cleaner.sh' => ['Download Orphan Cleaner (arr_download_orphan_cleaner.sh)'],
'Arrs_Stack/radarr_classification_scan.sh' => ['Arr Content Classification (radarr/sonarr_classification_scan.sh)'],
'Arrs_Stack/sonarr_classification_scan.sh' => ['Arr Content Classification (radarr/sonarr_classification_scan.sh)'],
'Arrs_Stack/arr_full_rescan.sh' => ['Arr Full Library Rescan'],
'Arrs_Stack/arr_corruption_scan.sh' => ['Corruption Scan'],
'Arrs_Stack/arrs_failed_stalled_recovery.sh' => ['Arr Failed/Stalled Recovery', 'Arr Recovery Toggles'],
'Media/play_state_sync.sh' => ['Play State Sync', 'Play State Sync — Handback'],
'Orchestrators/sunday_morning_coffee_report.sh' => ['Sunday Morning Coffee Report'],
'Fallback/fallback_test.sh' => ['Failover Test'],
'Rsync/rsync.sh' => ['Rsync Enable/Disable', 'Rsync Defaults',
'Rsync Profile System', 'Rsync Merge Auto-Promote'],
'System_Essentials/server_reboot.sh' => ['Reboot'],
'System_Essentials/clear_logs.sh' => ['Clear Logs'],
'System_Essentials/inotify_tuning.sh' => ['inotify Tuning'],
'System_Essentials/docker_syslog_filter.sh' => ['Syslog Filter'],
'Plugin/unraid/System_Essentials/mover_stop.sh' => ['Mover'],
'Plugin/unraid/System_Essentials/php_fpm_max_children.sh' => ['PHP-FPM'],
'Watchdogs/stability_watchdog.sh' => ['Strike and Reboot Loop Settings',
'RAM Reboot Threshold', 'OOM Bypass Settings'],
'AI/ai_index.sh' => ['AI Retrieval Index', 'AI Master Switch'],
'AI/ai_query.sh' => ['AI Retrieval Index', 'AI Master Switch'],
'AI/ai_token_sync.sh' => ['AI Feature Toggles'],
]; ];
function vv_conf_has_sections(string $id): bool { function vv_conf_has_sections(string $id): bool {
+9
View File
@@ -4358,6 +4358,15 @@ function vvShowScriptInfoMode(name, hdr, id) {
vvConfId = id; vvConfId = id;
document.getElementById('vv-cancel-edit-btn').style.display = ''; document.getElementById('vv-cancel-edit-btn').style.display = '';
document.getElementById('vv-save-conf-btn').style.display = ''; document.getElementById('vv-save-conf-btn').style.display = '';
} else {
// Say so rather than showing nothing. An absent Config block is ambiguous — it reads the
// same whether the script genuinely has no settings or nobody ever mapped it, and that
// ambiguity hid 15 scripts' settings until the conf was audited against the map.
html += '<div class="vv-sinfo-block">'
+ '<div class="vv-sinfo-lbl">Config</div>'
+ '<p class="vv-cf-none">No user adjustable settings — this script is driven by its '
+ 'own logic and the values it inherits.</p>'
+ '</div>';
} }
si.innerHTML = html || '<p class="vv-cf-empty">No additional information found.</p>'; si.innerHTML = html || '<p class="vv-cf-empty">No additional information found.</p>';