diff --git a/ui/client-app/src/pages/NodesPage.js b/ui/client-app/src/pages/NodesPage.js
index 75362a5..cf1d679 100644
--- a/ui/client-app/src/pages/NodesPage.js
+++ b/ui/client-app/src/pages/NodesPage.js
@@ -1,7 +1,6 @@
import React, { useState, useEffect, useCallback } from 'react';
import {
getAdminNodes, adminCreateNode, adminUpdateNode, adminDeleteNode,
- adminGrantNodeAccess, adminRevokeNodeAccess,
adminDownloadNodeBundle, getUserAccessibleNodes,
getAdminGroups, getNodeStreamUrl
} from '../services/apiService';
@@ -9,7 +8,6 @@
import FileSystemNavigator from '../components/FileSystemNavigator';
const NodesPage = ({ user }) => {
- const [activeTab, setActiveTab] = useState(user?.role === 'admin' ? 'manage' : 'status');
const [nodes, setNodes] = useState([]);
const [groups, setGroups] = useState([]);
const [loading, setLoading] = useState(true);
@@ -70,7 +68,6 @@
});
setMeshStatus(statusMap);
} else if (['task_start', 'task_complete', 'task_error', 'info'].includes(msg.event)) {
- // Add to recent events log
setRecentEvents(prev => [msg, ...prev].slice(0, 50));
}
};
@@ -128,7 +125,8 @@
};
const NodeHealthMetrics = ({ nodeId, stats, compact = false }) => {
- const isOnline = meshStatus[nodeId]?.status === 'online' || meshStatus[nodeId]?.status === 'idle' || meshStatus[nodeId]?.status === 'busy';
+ const live = meshStatus[nodeId];
+ const isOnline = live?.status === 'online' || live?.status === 'idle' || live?.status === 'busy';
if (!isOnline && compact) return null;
const cpu = stats?.cpu_usage_percent || 0;
@@ -199,24 +197,6 @@
)}
-
- {/* Tabs */}
-
- {isAdmin && (
-
- )}
-
-
{/* Main Content */}
@@ -229,47 +209,48 @@
Error: {error}
- ) : activeTab === 'manage' ? (
- /* ADMIN MANAGEMENT VIEW */
-
+ ) : (
+
{nodes.map(node => (
{/* Top Row: Basic Info & Actions */}
-
-
+
+
+
+
+ {meshStatus[node.node_id]?.status || node.last_status || 'offline'}
+
+
{node.display_name}
-
-
- {node.is_active ? 'Active' : 'Disabled'}
-
-
•
-
{node.node_id}
+
+ ID: {node.node_id}
-
-
+
+ {/* Active Toggle Switch */}
+
+
+
+
+