Add dashboard 3D fleet map, matrix stream overlay, and PWA support.

Integrates React Three Fiber topology view and a live matrix stream modal on the dashboard. Adds vite-plugin-pwa with AetherForge manifest and three.js dependencies.
This commit is contained in:
drjones
2026-05-28 22:28:26 -07:00
parent c95a4373de
commit 20eb5a3ba4
8 changed files with 4977 additions and 71 deletions

View File

@@ -10,6 +10,8 @@ import { FleetPipelineStatus, ActivityPulse } from '../components/Visual/VisualC
import { AlertBanner, PoolStatusPanel, AIActivityPanel, EarningsEstimator } from '../components/Fleet/FleetPanels';
import AgentRemoteActions from '../components/Fleet/AgentRemoteActions';
import FleetToolbar from '../components/Fleet/FleetToolbar';
import FleetTopologyMap from '../components/Visual/3D/FleetTopologyMap';
import MatrixStreamOverlay from '../components/Visual/MatrixStreamOverlay';
import {
DEFAULT_FLEET_FILTERS,
filterFleetAgents,
@@ -34,6 +36,7 @@ export default function DashboardPage() {
const [filters, setFilters] = useState<FleetFilterState>(DEFAULT_FLEET_FILTERS);
const [selectedIds, setSelectedIds] = useState<Set<string>>(new Set());
const [bulkBusy, setBulkBusy] = useState(false);
const [showMatrix, setShowMatrix] = useState(false);
useEffect(() => {
api.getRecentShares(20).then(setShares).catch(console.error);
api.listBuilds().then((b) => setHasBuilds(b.length > 0)).catch(console.error);
@@ -148,6 +151,9 @@ export default function DashboardPage() {
<span className="font-tech live-label">{isConnected ? 'SIGNAL LOCKED' : 'RECONNECTING'}</span>
<span className="live-sub">{agents.length} nodes registered</span>
</div>
<button className="button matrix-toggle-btn" onClick={() => setShowMatrix(true)} style={{ marginLeft: '1rem', background: 'transparent', border: '1px solid #0f0', color: '#0f0', fontFamily: 'monospace' }}>
[RAW_STREAM]
</button>
</div>
</header>
@@ -239,6 +245,10 @@ export default function DashboardPage() {
<ActivityPulse items={activityItems} />
</NeonCard>
<section className="section">
<FleetTopologyMap agents={agents} />
</section>
<section className="section">
<h2 className="section-title font-display">
<span className="section-ornament"></span> Machine Roster
@@ -354,6 +364,7 @@ export default function DashboardPage() {
</table>
</NeonCard>
</section>
<MatrixStreamOverlay active={showMatrix} onClose={() => setShowMatrix(false)} />
<footer style={{ marginTop: '3rem', paddingTop: '1rem', borderTop: '1px solid #333', textAlign: 'center', color: '#ff4444', fontSize: '0.85rem', fontFamily: 'monospace' }}>
DISCLAIMER: Use only on personal machines on your own network. Anything else is a crime.
</footer>