From b7f0df6d2a2a4950fdf63827a79a87c24fe0eb6e Mon Sep 17 00:00:00 2001 From: Emperiusm Date: Wed, 15 Apr 2026 15:26:44 -0400 Subject: [PATCH 1/7] fix: show rebuild button on global chain when findings exist but no relations --- packages/web/frontend/src/views/GlobalChainView.vue | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/web/frontend/src/views/GlobalChainView.vue b/packages/web/frontend/src/views/GlobalChainView.vue index d0c46e0..a69ef64 100644 --- a/packages/web/frontend/src/views/GlobalChainView.vue +++ b/packages/web/frontend/src/views/GlobalChainView.vue @@ -57,6 +57,7 @@ const { data: subgraphData, isLoading, refetch } = useQuery({ const graphData = computed(() => subgraphData.value?.graph ?? { nodes: [], links: [] }) const meta = computed(() => subgraphData.value?.meta ?? { total_findings: 0, rendered_findings: 0, filtered: false, generation: 0, engagements: [] }) const isEmpty = computed(() => !isLoading.value && meta.value.total_findings === 0) +const hasNoRelations = computed(() => !isLoading.value && meta.value.total_findings > 0 && graphData.value.links.length === 0 && graphData.value.nodes.length === 0) const ENGAGEMENT_COLORS = [ '#3b82f6', '#ef4444', '#10b981', '#f59e0b', '#8b5cf6', @@ -183,7 +184,7 @@ function toggleLayout() { -
+
Date: Wed, 15 Apr 2026 15:28:36 -0400 Subject: [PATCH 2/7] fix: deep-clone graph data before passing to force-graph (Vue reactivity conflict) --- packages/web/frontend/src/components/ForceGraphCanvas.vue | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/web/frontend/src/components/ForceGraphCanvas.vue b/packages/web/frontend/src/components/ForceGraphCanvas.vue index 152d71f..819b79e 100644 --- a/packages/web/frontend/src/components/ForceGraphCanvas.vue +++ b/packages/web/frontend/src/components/ForceGraphCanvas.vue @@ -130,8 +130,10 @@ function countConnections(nodeId: string): number { function initGraph() { if (!container.value) return + // Deep-clone to strip Vue reactivity — force-graph mutates nodes (vx, vy, x, y) + const rawData = JSON.parse(JSON.stringify(props.data)) graph = new ForceGraph(container.value) - .graphData(props.data) + .graphData(rawData) .nodeId('id') .linkSource('source') .linkTarget('target') @@ -438,7 +440,8 @@ function updateData(newData: GraphData) { } } - graph.graphData(newData) + // Deep-clone to strip Vue reactivity + graph.graphData(JSON.parse(JSON.stringify(newData))) } watch(() => props.data, (newData) => { From cc05d1eff16470a63d7055702387a89fadd382a1 Mon Sep 17 00:00:00 2001 From: Emperiusm Date: Wed, 15 Apr 2026 16:45:41 -0400 Subject: [PATCH 3/7] feat: modernize UI with dark theme consistency across all pages Apply PrimeVue dark theme variables (--p-surface-*) to CypherEditor, QueryResultsPane, InlineQueryPanel, ChainLegend, ChainQueryView, and ScanView task grid so all pages are visually consistent on Aura Dark. Co-Authored-By: Claude Sonnet 4.6 --- .../frontend/src/components/ChainLegend.vue | 26 +++++----- .../frontend/src/components/CypherEditor.vue | 15 +++--- .../src/components/InlineQueryPanel.vue | 21 +++++---- .../src/components/QueryResultsPane.vue | 16 +++---- .../web/frontend/src/views/ChainQueryView.vue | 47 +++++++++++++------ packages/web/frontend/src/views/ScanView.vue | 14 ++++-- 6 files changed, 86 insertions(+), 53 deletions(-) diff --git a/packages/web/frontend/src/components/ChainLegend.vue b/packages/web/frontend/src/components/ChainLegend.vue index f04f703..f8b8527 100644 --- a/packages/web/frontend/src/components/ChainLegend.vue +++ b/packages/web/frontend/src/components/ChainLegend.vue @@ -1,30 +1,32 @@