Skip to content

Commit 3bcf4d1

Browse files
author
Paul C
committed
v25.2.47: Network Map — theme colours + tree/flow diagram + icon fix
2 parents 894dc6e + d145993 commit 3bcf4d1

5 files changed

Lines changed: 142 additions & 87 deletions

File tree

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "wolfstack"
3-
version = "25.2.46"
3+
version = "25.2.47"
44
edition = "2024"
55
authors = ["Wolf Software Systems Ltd"]
66
description = "Server management platform for the Wolf software suite"

web/css/style.css

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4956,3 +4956,69 @@ body.learn-drawer-open #task-log-footer { right: var(--learn-drawer-w) !importan
49564956
grid-column: 1 / -1 !important;
49574957
}
49584958
}
4959+
4960+
/* ═══════════════════════════════════════════════════════════════
4961+
Network Map — observed, read-only cluster network view.
4962+
Theme-driven: every colour comes from a CSS variable so it tracks
4963+
the active theme (dark / light / trek). No hardcoded hex.
4964+
═══════════════════════════════════════════════════════════════ */
4965+
.nm-legend { display:flex; flex-wrap:wrap; gap:16px; align-items:center; margin-bottom:14px;
4966+
padding:10px 14px; background:var(--bg-tertiary); border:1px solid var(--border);
4967+
border-radius:var(--radius-sm); font-size:11px; color:var(--text-secondary); }
4968+
.nm-legend-item { display:inline-flex; align-items:center; gap:6px; }
4969+
.nm-legend .dot { width:9px; height:9px; border-radius:50%; display:inline-block; }
4970+
4971+
.nm-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(460px, 1fr)); gap:16px; align-items:start; }
4972+
.nm-node { background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius); padding:16px 18px; }
4973+
.nm-node-head { display:flex; align-items:center; gap:9px; margin-bottom:12px; }
4974+
.nm-node-head .dot { width:10px; height:10px; border-radius:50%; flex-shrink:0; }
4975+
.nm-node-name { font-weight:700; font-size:15px; color:var(--text-primary); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
4976+
.nm-tag { font-size:10px; padding:1px 6px; border-radius:4px; background:var(--bg-tertiary); color:var(--text-muted); flex-shrink:0; }
4977+
.nm-wn-chip { margin-left:auto; font-size:11px; padding:2px 8px; border-radius:999px; background:var(--bg-tertiary); color:var(--accent); border:1px solid var(--accent); white-space:nowrap; }
4978+
4979+
/* Internet-path chain: 🌐 Internet ▸ gateway ▸ WAN nic ▸ ● node */
4980+
.nm-edge { display:flex; flex-wrap:wrap; align-items:center; gap:6px; margin-bottom:10px; }
4981+
.nm-edge .arrow { color:var(--text-muted); font-size:13px; line-height:1; }
4982+
.nm-pill { display:inline-flex; align-items:center; gap:6px; padding:4px 10px; border-radius:var(--radius-sm);
4983+
border:1px solid var(--border); background:var(--bg-tertiary); font-size:12px; color:var(--text-primary); }
4984+
.nm-pill.wan { border-color:var(--warning); }
4985+
.nm-pill.host { background:var(--bg-secondary); font-weight:600; }
4986+
.nm-pill .sub { color:var(--text-secondary); }
4987+
4988+
/* Tree: a spine down the node's fabric with a branch to each bridge / overlay / interface group */
4989+
.nm-tree { position:relative; margin-left:5px; padding-left:20px; }
4990+
.nm-tree::before { content:""; position:absolute; left:0; top:3px; bottom:16px; width:2px; background:var(--border); border-radius:2px; }
4991+
.nm-branch { position:relative; margin-bottom:12px; }
4992+
.nm-branch:last-child { margin-bottom:0; }
4993+
.nm-branch::before { content:""; position:absolute; left:-20px; top:16px; width:18px; height:2px; background:var(--border); border-radius:2px; }
4994+
4995+
.nm-zone { border:1px solid var(--border); border-left:3px solid var(--zaccent, var(--info));
4996+
border-radius:var(--radius-sm); background:var(--bg-tertiary); padding:10px 12px; }
4997+
.nm-zone.lan { --zaccent: var(--info); }
4998+
.nm-zone.overlay { --zaccent: var(--accent); }
4999+
.nm-zone-head { display:flex; align-items:center; gap:8px; font-weight:700; font-size:13px; color:var(--text-primary); }
5000+
.nm-zone-head .ip { margin-left:auto; font-size:11px; color:var(--text-secondary); font-variant-numeric:tabular-nums; font-weight:400; }
5001+
.nm-zone-body { display:flex; flex-direction:column; gap:5px; margin-top:8px; }
5002+
.nm-zone-empty { font-size:12px; color:var(--text-muted); margin-top:6px; }
5003+
5004+
.nm-label { font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:0.5px; color:var(--text-muted); margin-bottom:6px; }
5005+
5006+
.nm-dev { display:flex; align-items:center; gap:7px; padding:5px 9px; border-radius:var(--radius-sm);
5007+
background:var(--bg-card); border:1px solid var(--border); font-size:12px; }
5008+
.nm-dev .name { font-weight:600; color:var(--text-primary); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
5009+
.nm-dev .ip { margin-left:auto; flex-shrink:0; color:var(--text-secondary); font-variant-numeric:tabular-nums; }
5010+
.nm-dev .ip.none { color:var(--text-muted); }
5011+
.nm-managed { color:var(--success); font-size:11px; flex-shrink:0; }
5012+
5013+
.nm-iface { display:flex; align-items:center; gap:7px; padding:5px 9px; border-radius:var(--radius-sm);
5014+
background:var(--bg-card); border:1px solid var(--border); border-left:3px solid var(--raccent, var(--info)); font-size:12px; }
5015+
.nm-iface .name { font-weight:600; color:var(--text-primary); }
5016+
.nm-iface .role { font-size:10px; text-transform:uppercase; letter-spacing:0.4px; color:var(--raccent, var(--info)); }
5017+
.nm-iface .addr { margin-left:auto; color:var(--text-secondary); font-variant-numeric:tabular-nums; }
5018+
.nm-iface.wan { --raccent: var(--warning); }
5019+
.nm-iface.lan { --raccent: var(--info); }
5020+
.nm-iface.wolfnet { --raccent: var(--accent); }
5021+
.nm-iface.management { --raccent: var(--info); }
5022+
.nm-iface.unused { --raccent: var(--text-muted); }
5023+
.nm-down { color:var(--danger); font-size:10px; }
5024+
.nm-stub { padding:18px; text-align:center; color:var(--text-muted); font-size:13px; background:var(--bg-tertiary); border-radius:var(--radius-sm); }

web/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1835,7 +1835,7 @@ <h3>Functions</h3>
18351835
<div style="display:flex; align-items:center; gap:18px;">
18361836
<div
18371837
style="width:56px; height:56px; background:linear-gradient(135deg,#3b82f6,#10b981); border-radius:14px; display:flex; align-items:center; justify-content:center; font-size:28px; box-shadow:0 4px 20px rgba(59,130,246,0.3);">
1838-
<span class="ws-icon-clean-wrap" data-icon="map"></span></div>
1838+
<span class="ws-icon-clean-wrap" data-icon="share-2"></span></div>
18391839
<div>
18401840
<h2 style="font-size:22px; margin-bottom:4px; color:var(--text-primary); font-weight:700;">
18411841
Network Map <span id="network-map-cluster-label"

0 commit comments

Comments
 (0)