diff --git a/audit/internal/webui/pages.go b/audit/internal/webui/pages.go
index 558b4f9..09b0979 100644
--- a/audit/internal/webui/pages.go
+++ b/audit/internal/webui/pages.go
@@ -1013,7 +1013,7 @@ func renderNetwork() string {
// ── Services ──────────────────────────────────────────────────────────────────
func renderServicesInline() string {
- return `
Output
@@ -1054,6 +1054,9 @@ function svcAction(name, action) {
setTimeout(loadServices, 1000);
});
}
+function restartGPUDrivers() {
+ svcAction('bee-nvidia', 'restart');
+}
loadServices();
`
}
diff --git a/audit/internal/webui/server_test.go b/audit/internal/webui/server_test.go
index 6978f82..61b688a 100644
--- a/audit/internal/webui/server_test.go
+++ b/audit/internal/webui/server_test.go
@@ -378,6 +378,22 @@ func TestTasksPageRendersLogModalAndPaginationControls(t *testing.T) {
}
}
+func TestToolsPageRendersRestartGPUDriversButton(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)
+ }
+ body := rec.Body.String()
+ if !strings.Contains(body, `Restart GPU Drivers`) {
+ t.Fatalf("tools page missing restart gpu drivers button: %s", body)
+ }
+ if !strings.Contains(body, `svcAction('bee-nvidia', 'restart')`) {
+ t.Fatalf("tools page missing bee-nvidia restart action: %s", body)
+ }
+}
+
func TestViewerRendersLatestSnapshot(t *testing.T) {
dir := t.TempDir()
path := filepath.Join(dir, "audit.json")