Skip to content

Topology: full proxy chain highlighting + node text clipping#107

Merged
GyulyVGC merged 6 commits into
NullNet-ai:mainfrom
antoncxx:feature/topology-chain-highlighting
Jun 18, 2026
Merged

Topology: full proxy chain highlighting + node text clipping#107
GyulyVGC merged 6 commits into
NullNet-ai:mainfrom
antoncxx:feature/topology-chain-highlighting

Conversation

@antoncxx

@antoncxx antoncxx commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

Problem

Clicking a client in the topology view only highlighted the direct proxy
hop (Internet → Proxy → S1). Any downstream service-to-service
dependencies (S1 → S2 → …) stayed dimmed, making it impossible to
trace a request's full path through the graph.

Additionally, long service names overflowed the node rectangle,
overlapping adjacent nodes and edges.

Changes

Backend — GET /api/chains/{stack}

New endpoint that, for each live proxy session, walks the service's
proxy_deps branches transitively and returns the full set of net IDs
involved in the chain:

[
  { "proxy_net_id": 100, "all_net_ids": [100, 200, 300] }
]

The lookup is replica-precise: service-to-service clients are keyed
by source replica IP, so two proxy clients landing on different replicas
of the same service each get their own independent dep chain. Clients
sharing a replica share the same downstream tunnels and are represented
correctly.

Frontend — accurate chain highlight

TopologyContext fetches /api/chains/{stack} and uses it to expand focusedNetIds when a client is
clicked. The existing graph-traversal highlight logic then lights up
every edge in the chain, not just the proxy hop.

Frontend — chain net IDs in all three places

All three locations that display net IDs now show the full chain for
proxy sessions (e.g. nets 100, 200) instead of the single proxy net
ID:

  • Active Connections table — Net ID column
  • Edge panel (side drawer, session cards)
  • Internet panel (side drawer, per-client row)

Direct service-to-service edges retain their own single net ID display
unchanged.

Frontend — node text clipping

Each service and proxy node now defines an inline SVG <clipPath> that
matches its bounding box (4 px inset). Text lines are rendered inside a
<g clipPath="…"> so long names are clipped cleanly at the node edge.
Background rect, status dot, and selection outline are outside the clip
and render normally. Service nodes also carry a <title> so the full
name is visible on hover.

antoncxx added 3 commits June 17, 2026 20:10
Add GET /api/chains/{stack} endpoint that, for each live proxy session,
walks the service's proxy_deps transitively and collects the net_ids of
all downstream service-to-service tunnels. The lookup is replica-precise:
clients are keyed by source replica IP, so two proxy clients on different
replicas get independent dep chains.

Frontend uses the chain data to expand focusedNetIds when a client is
clicked, so I → P → S1 → S2 all highlight correctly instead of stopping
at S1. The Active Connections table also shows the full comma-separated
chain of net_ids for proxy rows instead of just the single proxy net_id.
EdgePanel and InternetPanel now expand proxy sessions to show all net IDs
in the chain (e.g. "nets 100, 200") instead of just the proxy net ID.
Falls back to singular "net N" when no downstream deps exist.
Add an inline clipPath per node so long service names and status lines
no longer overflow the node rectangle. Background rect, status dot, and
selection outline are unaffected. Service nodes also get a <title> so
the full name is visible on hover when clipped.
@antoncxx antoncxx changed the title Feature/topology chain highlighting Topology: full proxy chain highlighting + node text clipping Jun 18, 2026
@antoncxx antoncxx marked this pull request as ready for review June 18, 2026 01:00
@GyulyVGC GyulyVGC added the enhancement New feature or request label Jun 18, 2026
@GyulyVGC GyulyVGC merged commit 243b0bc into NullNet-ai:main Jun 18, 2026
4 checks passed
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