Skip to content

stack-report: dedupe dependency graph nodes by name - #3

Merged
luhenry merged 3 commits into
mainfrom
dependency-graph
Sep 6, 2026
Merged

luhenry merged 3 commits into
mainfrom
dependency-graph

Conversation

@luhenry

@luhenry luhenry commented Sep 5, 2026

Copy link
Copy Markdown
Member

No description provided.

buildGraphJson previously assigned one graph node per scope-spec instance,
so a package listed under two per-product layers (e.g. MariaDB Connector/C
under both MySQL and MariaDB) rendered as two separate boxes. Node identity
is now the normalized name: instances sharing a name merge into one node,
with criticality taking the highest-priority value seen and edges from
every instance attaching to the single merged node.

Regenerated databases.graph.json from its existing classification/edge
data (221->218 nodes, 477->458 edges); sample and agentic-ai-cpu had no
duplicate names and are unchanged.
@github-actions

github-actions Bot commented Sep 5, 2026 •

Copy link
Copy Markdown
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-09-06 15:09 UTC

@luhenry luhenry changed the title Dependency graph stack-report: dedupe dependency graph nodes by name Sep 6, 2026
Uses dagre-d3's experimental clusters feature (compound graph +
setParent) to draw a labeled box around every group of nodes sharing a
`column` (product), one cluster per product per redraw so it stays
correct under focus/external-toggle. Nodes with no column (shared or
external) are left unparented, outside any cluster.
Replaces the layered dagre-d3 renderer with a d3-force simulation
(link + charge + collision, synchronously settled) so dense stacks
spread out radially instead of cramming into a few wide horizontal
ranks with heavily overlapping edges. Drops the dagre-d3 CDN script
tag, no longer needed.

Per-product clustering (dagre-d3 compound nodes) was tried and then
removed in favor of plain force-directed distribution. Edges are now
thin, light lines (read as texture rather than competing with labels)
that switch to a black, fully-opaque line and arrowhead when their
node is hovered. A node with zero edges gets a small centering pull so
it doesn't drift arbitrarily far from charge repulsion alone.

Also default "Show external dependencies" to unchecked, so a report
opens showing only in-scope nodes.
@luhenry
luhenry merged commit 73c9345 into main Sep 6, 2026
2 checks passed
@luhenry
luhenry deleted the dependency-graph branch November 4, 2026 00:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant