Skip to content

Dashboard & Topology Rework + Panel Polish#112

Merged
GyulyVGC merged 9 commits into
NullNet-ai:mainfrom
antoncxx:review-fixes
Jun 25, 2026
Merged

Dashboard & Topology Rework + Panel Polish#112
GyulyVGC merged 9 commits into
NullNet-ai:mainfrom
antoncxx:review-fixes

Conversation

@antoncxx

@antoncxx antoncxx commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

UI: Dashboard & Topology Rework + Panel Polish

Summary

This PR consolidates the Dashboard and Topology pages into a single view, fixes a VNI label bug on chain edges, and adds several UX improvements to the side panels and data tables.


Changes

Dashboard / Topology merge

  • Merged Topology into Dashboard. The separate Topology page was a near-duplicate of the dashboard graph card. Dashboard now owns the full interactive topology experience via TopologyProvider — click-to-inspect nodes and edges, client focus, and the slide-in panel all work directly from the dashboard.
  • Removed Topology from the nav and deleted the page. The /topology route, Topology.tsx, and its nav entry are all gone.
  • Removed "Recent Sessions" and "Services" sections from the old Dashboard. Sessions have a dedicated tab; the services table added noise without value on the overview page.

Active Connections card

  • Extracted into its own collapsible card above the topology graph (previously embedded inside the topology card).
  • The card is always visible — when there are no edges it shows an empty state instead of disappearing.
  • Stats folded into the card header as a compact inline strip (12 sessions · 3 nodes · 5 edges · 2.1% pool), replacing the four large stat boxes that dominated the top of the page.
  • Added Client Net and Server Net columns (overlay network CIDRs from the matching session).

Edge panel (side drawer)

  • Each session card now shows client and server overlay network IPs (client_net / server_net) pulled from the sessions API by matching network_id.

VNI badge on chain edges

  • Fixed: when a client is focused, only the proxy→entry-service edge showed a VNI badge. Chain hop edges (service→service after the proxy) were skipped because their net_id values don't appear in focusedSessions (proxy-level sessions only).
  • Fix derives focusedNetId directly from the graph edge when no session match exists, so all edges in the chain get a VNI label. The proxy edge keeps its full VNI + CIDR display; chain edges get a compact VNI-only badge.

Side panels — resizable

  • Both the Topology side panel and the Nodes detail panel (.dp) are now resizable by dragging the left edge.
  • New useDragResize hook captures startX / startWidth on mousedown, updates width via document mousemove, and restores cursor on mouseup. Width is clamped to [200, 560]px.
  • A 4 px drag handle sits on the left edge of each panel with a subtle hover highlight.
  • Panel title <span> elements have a title attribute for truncated-text tooltips.

Internet panel

  • Dropped subnet grouping (groupBySubnet, expanded state, expand/collapse per group).
  • Now a flat list sorted newest-first. Subnet re-grouping can be revisited later with a better UX.

Replica counts in service node panel

  • The N active / M paused / P total string is now rendered as a mini table with aligned column headers (ACTIVE, PAUSED, TOTAL). Paused count turns amber when non-zero.

antoncxx added 9 commits June 24, 2026 17:07
Previously only the proxy→entry-service edge rendered a VNI block,
because the session lookup matched against focusedSessions (proxy-level
sessions filtered by client IP). Chain hop edges have different net_ids
that don't appear in those sessions, so `session` was always null for
them and the badge was skipped.

Fix: derive focusedNetId directly from the graph edge when no session
match is found, so chain edges still get a VNI label (compact, without
CIDR rows). The proxy edge keeps its full VNI + src/dst CIDR display.
Adds a useDragResize hook that tracks mousedown/mousemove/mouseup on
document to resize panels without cursor flicker. TopologyPanel and the
Nodes detail panel (.dp) both get a 4px drag handle on their left edge
with a subtle hover highlight. Width is constrained to [200, 560]px on
both panels.
Dashboard now hosts the full topology experience via TopologyProvider:
compact 4-stat header row (sessions, nodes, edges, pool), full-width
topology card with the active connections table pinned above the graph,
and the interactive side panel. Removed Recent Sessions and Services
sections (services have a dedicated tab). Removed Topology from nav.
@antoncxx antoncxx changed the title Review fixes Dashboard & Topology Rework + Panel Polish Jun 25, 2026
@antoncxx antoncxx marked this pull request as ready for review June 25, 2026 03:50
@GyulyVGC GyulyVGC added the enhancement New feature or request label Jun 25, 2026
@GyulyVGC GyulyVGC merged commit a2109e5 into NullNet-ai:main Jun 25, 2026
4 checks passed
@antoncxx antoncxx deleted the review-fixes branch June 25, 2026 15:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants