From e7442972d1dff35c47f5917d00c58d851dacbfcf Mon Sep 17 00:00:00 2001 From: Mikhail Chusavitin Date: Thu, 18 Jun 2026 17:52:19 +0300 Subject: [PATCH] Move session-scoped LiveCD tools from Tools to Settings Tools page now contains only NVMe Block Format and Supermicro - DMI. Moved to Settings (7): - System Install (Install to RAM + Install to Disk) - Support Bundle + USB Black-Box - Tool Check - NVIDIA Self Heal (replaces simple NVIDIA Recovery card) - Network - Services Update TestToolsPageRendersNvidiaSelfHealSection to assert the moved cards on /settings instead of /tools. Co-Authored-By: Claude Sonnet 4.6 --- audit/internal/webui/page_export_tools.go | 91 +--------------------- audit/internal/webui/page_settings.go | 93 +++++++++++++++++------ audit/internal/webui/server_test.go | 60 +++++++++------ 3 files changed, 106 insertions(+), 138 deletions(-) diff --git a/audit/internal/webui/page_export_tools.go b/audit/internal/webui/page_export_tools.go index ac27339..e8558ed 100644 --- a/audit/internal/webui/page_export_tools.go +++ b/audit/internal/webui/page_export_tools.go @@ -402,96 +402,9 @@ loadNvidiaSelfHeal(); } func renderTools() string { - return `
-
System Install
-
-
-
Install to RAM
-

Detecting boot source...

-

Checking...

- -
-
-
Install to Disk
` + - renderInstallInline() + ` -
-
-
- + return renderNVMeFormatCard() + ` -
Support Bundle
-

Downloads a tar.gz archive of all audit files, SAT results, and logs.

-` + renderSupportBundleInline() + ` -
-
USB Black-Box
- ` + renderUSBExportInline() + ` -
-
- -
Tool Check
-

Checking...

- -
NVIDIA Self Heal
` + - renderNvidiaSelfHealInline() + `
- -
Network
` + - renderNetworkInline() + `
- -
Services
` + - renderServicesInline() + `
- -` + renderNVMeFormatCard() + ` - -` + renderSAADMICard() + ` - -` +` + renderSAADMICard() } func renderExportIndex(exportDir string) (string, error) { diff --git a/audit/internal/webui/page_settings.go b/audit/internal/webui/page_settings.go index dba08c7..839aadc 100644 --- a/audit/internal/webui/page_settings.go +++ b/audit/internal/webui/page_settings.go @@ -7,12 +7,79 @@ func renderSettings(opts HandlerOptions) string { if version == "" { version = "dev" } - return `
+ return `
+
System Install
+
+
+
Install to RAM
+

Detecting boot source...

+

Checking...

+ +
+
+
Install to Disk
` + + renderInstallInline() + ` +
+
+
+ + +
Support Bundle
+

Downloads a tar.gz archive of all audit files, SAT results, and logs.

+` + renderSupportBundleInline() + ` +
+
USB Black-Box
+ ` + renderUSBExportInline() + ` +
+
+ +
Tool Check
+

Checking...

+ + +
NVIDIA Self Heal
` + + renderNvidiaSelfHealInline() + `
+ +
Network
` + + renderNetworkInline() + `
+ +
Services
` + + renderServicesInline() + `
Blackbox Logging
-

Continuous hardware monitoring that writes a rolling log of sensor readings to the export directory. Useful for capturing thermal or power anomalies during long runs.

+

Continuous hardware monitoring that writes a rolling log of sensor readings to the export directory.

@@ -22,19 +89,6 @@ func renderSettings(opts HandlerOptions) string {
-
NVIDIA Recovery
-
-

Reset NVIDIA GPU driver state. Use when nvidia-smi reports errors or GPUs appear stuck after a failed test.

-
- - -
-
-
- -
- -
Build Info
@@ -64,14 +118,5 @@ function blackboxToggle(action) { .then(d => { if (el) el.textContent = d.enabled ? 'Enabled' : 'Disabled'; }) .catch(err => { if (el) el.textContent = 'Error: ' + err.message; }); } -function nvidiaReset() { - var el = document.getElementById('nvidia-reset-status'); - if (!confirm('Reset NVIDIA driver? This will interrupt any running GPU tasks.')) return; - if (el) el.textContent = 'Resetting...'; - fetch('/api/gpu/nvidia-reset', {method:'POST', cache:'no-store'}) - .then(r => r.json()) - .then(d => { if (el) el.textContent = d.error ? ('Error: ' + d.error) : 'Done — driver reset.'; }) - .catch(err => { if (el) el.textContent = 'Error: ' + err.message; }); -} ` } diff --git a/audit/internal/webui/server_test.go b/audit/internal/webui/server_test.go index a1ae2b9..ab6f746 100644 --- a/audit/internal/webui/server_test.go +++ b/audit/internal/webui/server_test.go @@ -666,41 +666,51 @@ func TestTasksPageRendersOpenLinksAndPaginationControls(t *testing.T) { func TestToolsPageRendersNvidiaSelfHealSection(t *testing.T) { handler := NewHandler(HandlerOptions{}) - rec := httptest.NewRecorder() - handler.ServeHTTP(rec, httptest.NewRequest(http.MethodGet, "/tools", nil)) - if rec.Code != http.StatusOK { - t.Fatalf("status=%d", rec.Code) + + // /tools: only NVMe Block Format and Supermicro DMI remain + recTools := httptest.NewRecorder() + handler.ServeHTTP(recTools, httptest.NewRequest(http.MethodGet, "/tools", nil)) + if recTools.Code != http.StatusOK { + t.Fatalf("tools status=%d", recTools.Code) } - body := rec.Body.String() - if !strings.Contains(body, `NVIDIA Self Heal`) { - t.Fatalf("tools page missing nvidia self heal section: %s", body) + toolsBody := recTools.Body.String() + if !strings.Contains(toolsBody, `NVMe Block Format`) { + t.Fatalf("tools page missing nvme block format section: %s", toolsBody) } - if !strings.Contains(body, `Restart GPU Drivers`) { - t.Fatalf("tools page missing restart gpu drivers button: %s", body) + if !strings.Contains(toolsBody, `/api/tools/nvme-formats`) || !strings.Contains(toolsBody, `/api/tools/nvme-format/run`) { + t.Fatalf("tools page missing nvme format api usage: %s", toolsBody) } - if !strings.Contains(body, `nvidiaRestartDrivers()`) { - t.Fatalf("tools page missing nvidiaRestartDrivers action: %s", body) + + // /settings: system install, support bundle, tool check, nvidia self heal, network, services + recSettings := httptest.NewRecorder() + handler.ServeHTTP(recSettings, httptest.NewRequest(http.MethodGet, "/settings", nil)) + if recSettings.Code != http.StatusOK { + t.Fatalf("settings status=%d", recSettings.Code) } - if !strings.Contains(body, `/api/gpu/nvidia-status`) { - t.Fatalf("tools page missing nvidia status api usage: %s", body) + settingsBody := recSettings.Body.String() + if !strings.Contains(settingsBody, `NVIDIA Self Heal`) { + t.Fatalf("settings page missing nvidia self heal section: %s", settingsBody) } - if !strings.Contains(body, `nvidiaResetGPU(`) { - t.Fatalf("tools page missing nvidiaResetGPU action: %s", body) + if !strings.Contains(settingsBody, `Restart GPU Drivers`) { + t.Fatalf("settings page missing restart gpu drivers button: %s", settingsBody) } - if !strings.Contains(body, `id="boot-source-text"`) { - t.Fatalf("tools page missing boot source field: %s", body) + if !strings.Contains(settingsBody, `nvidiaRestartDrivers()`) { + t.Fatalf("settings page missing nvidiaRestartDrivers action: %s", settingsBody) } - if !strings.Contains(body, `USB Black-Box`) { - t.Fatalf("tools page missing usb black-box section: %s", body) + if !strings.Contains(settingsBody, `/api/gpu/nvidia-status`) { + t.Fatalf("settings page missing nvidia status api usage: %s", settingsBody) } - if !strings.Contains(body, `/api/blackbox/status`) { - t.Fatalf("tools page missing black-box status api usage: %s", body) + if !strings.Contains(settingsBody, `nvidiaResetGPU(`) { + t.Fatalf("settings page missing nvidiaResetGPU action: %s", settingsBody) } - if !strings.Contains(body, `NVMe Block Format`) { - t.Fatalf("tools page missing nvme block format section: %s", body) + if !strings.Contains(settingsBody, `id="boot-source-text"`) { + t.Fatalf("settings page missing boot source field: %s", settingsBody) } - if !strings.Contains(body, `/api/tools/nvme-formats`) || !strings.Contains(body, `/api/tools/nvme-format/run`) { - t.Fatalf("tools page missing nvme format api usage: %s", body) + if !strings.Contains(settingsBody, `USB Black-Box`) { + t.Fatalf("settings page missing usb black-box section: %s", settingsBody) + } + if !strings.Contains(settingsBody, `/api/blackbox/status`) { + t.Fatalf("settings page missing black-box status api usage: %s", settingsBody) } }