From 01915bcb45815356b8c8a85fb4018b151d847e68 Mon Sep 17 00:00:00 2001 From: Mondo Diaz Date: Mon, 2 Feb 2026 20:31:46 -0600 Subject: [PATCH] Fix circular dependency detection and hide empty graph modal - Add artifact-level self-dependency check (skip if dep resolves to same artifact) - Close dependency graph modal if package has no dependencies to show (only root package with no children and no missing deps) --- backend/app/dependencies.py | 5 +++++ frontend/src/components/DependencyGraph.tsx | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/backend/app/dependencies.py b/backend/app/dependencies.py index e8912e8..13bb686 100644 --- a/backend/app/dependencies.py +++ b/backend/app/dependencies.py @@ -791,6 +791,11 @@ def resolve_dependencies( continue dep_artifact_id, dep_version, dep_size = resolved_dep + + # Skip if resolved to same artifact (self-dependency at artifact level) + if dep_artifact_id == artifact_id: + continue + _resolve_recursive( dep_artifact_id, dep.dependency_project, diff --git a/frontend/src/components/DependencyGraph.tsx b/frontend/src/components/DependencyGraph.tsx index 89e52dd..cdfb866 100644 --- a/frontend/src/components/DependencyGraph.tsx +++ b/frontend/src/components/DependencyGraph.tsx @@ -117,6 +117,14 @@ function DependencyGraph({ projectName, packageName, tagName, onClose }: Depende try { const result = await resolveDependencies(projectName, packageName, tagName); + + // If only the root package (no dependencies) and no missing deps, close the modal + const hasDeps = result.artifact_count > 1 || (result.missing && result.missing.length > 0); + if (!hasDeps) { + onClose(); + return; + } + setResolution(result); const graph = await buildGraph(result);