Add HDFS browser, SSH terminal, presentation editor, lab health panel

- HDFS WebHDFS file browser (api/hdfs_api.py + HdfsView)
- In-browser SSH terminal via paramiko WebSocket bridge (api/ssh_terminal.py + SshTerminal, xterm.js)
- Presentation deck editor (text + image upload) and CRUD endpoints
- Collapsible GPU matrix + new LabHealthPanel in SideNav
- Topology fixes (edge alignment, Hadoop node, compact nodes)
- nginx ws timeout bump for long-lived SSH sessions
This commit is contained in:
mo
2026-06-26 00:47:49 +00:00
parent fefe3016ad
commit 46b51a891c
21 changed files with 1957 additions and 328 deletions
+10 -5
View File
@@ -87,14 +87,14 @@
}
.topo-edge-idle {
stroke: rgba(100, 140, 180, 0.45);
stroke-width: 2;
stroke: rgba(100, 140, 180, 0.35);
stroke-width: 1.5;
stroke-dasharray: 4 8;
fill: none;
}
.topo-edge-live {
stroke-width: 2.5;
stroke-width: 2;
stroke-dasharray: 8 12;
fill: none;
animation: flow-dash 1.2s linear infinite;
@@ -129,8 +129,13 @@
box-shadow: 0 0 12px rgba(245, 158, 11, 0.25), var(--topo-node-shadow);
}
.topo-node-hadoop {
border-color: rgba(57, 255, 20, 0.45) !important;
box-shadow: 0 0 12px rgba(57, 255, 20, 0.2), var(--topo-node-shadow);
}
.topo-node {
@apply mx-auto w-[84%] rounded-md border px-1.5 py-1 text-left transition-all;
@apply mx-auto w-[72%] max-w-[104px] rounded border px-1.5 py-1 text-left transition-all;
background: var(--topo-node-bg);
border-color: var(--topo-node-border);
box-shadow: var(--topo-node-shadow);
@@ -146,7 +151,7 @@
}
.topo-stage-col {
@apply flex min-w-0 flex-1 flex-col px-0.5 py-1 last:border-r-0;
@apply flex min-w-[100px] flex-1 flex-col px-1 py-1.5 last:border-r-0;
border-right: 1px dashed var(--topo-stage-border);
}