diff --git a/apps/x/apps/renderer/src/App.css b/apps/x/apps/renderer/src/App.css
index 0c265b76..adc0c59f 100644
--- a/apps/x/apps/renderer/src/App.css
+++ b/apps/x/apps/renderer/src/App.css
@@ -174,9 +174,9 @@
content: '';
position: absolute;
inset: 0;
- background-image: radial-gradient(var(--border) 0.6px, transparent 0.6px);
- background-size: 22px 22px;
- opacity: 0.45;
+ background-image: radial-gradient(#1f2937 1px, transparent 1px);
+ background-size: 40px 40px;
+ opacity: 1;
pointer-events: none;
}
diff --git a/apps/x/apps/renderer/src/components/graph-view.tsx b/apps/x/apps/renderer/src/components/graph-view.tsx
index 494e19e3..04a76557 100644
--- a/apps/x/apps/renderer/src/components/graph-view.tsx
+++ b/apps/x/apps/renderer/src/components/graph-view.tsx
@@ -489,6 +489,24 @@ export function GraphView({ nodes, edges, isLoading, error, onSelectNode }: Grap
onWheel={handleWheel}
>
+
+ {Array.from(new Set(nodes.map((n) => n.color))).map((color) => (
+
+
+
+
+
+
+
+ ))}
+
{edgeList.map((edge, index) => {
const source = displayPositions.get(edge.source)
@@ -497,19 +515,23 @@ export function GraphView({ nodes, edges, isLoading, error, onSelectNode }: Grap
const isActiveEdge = activeNodeId
? edge.source === activeNodeId || edge.target === activeNodeId
: false
- const strokeOpacity = activeNodeId ? (isActiveEdge ? 0.9 : 0.08) : 0.38
- const strokeWidth = activeNodeId ? (isActiveEdge ? 1.6 : 0.7) : 1
- const stroke = 'var(--foreground)'
+ const strokeOpacity = activeNodeId ? (isActiveEdge ? 0.8 : 0.1) : 0.4
+ const strokeWidth = activeNodeId ? (isActiveEdge ? 2 : 1) : 1
+ const activeNode = activeNodeId ? nodes.find((n) => n.id === activeNodeId) : null
+ const stroke = isActiveEdge && activeNode ? activeNode.color : '#333'
+ const dx = target.x - source.x
+ const dy = target.y - source.y
+ const dr = Math.sqrt(dx * dx + dy * dy) * 1.5
+ const pathD = `M${source.x},${source.y}A${dr},${dr} 0 0,1 ${target.x},${target.y}`
return (
-
)
})}
@@ -520,6 +542,7 @@ export function GraphView({ nodes, edges, isLoading, error, onSelectNode }: Grap
const isConnected = connectedNodes ? connectedNodes.has(node.id) : true
const isPrimary = activeNodeId === node.id
const nodeOpacity = activeNodeId ? (isConnected ? 1 : 0.3) : 1
+ const glowFilterId = `glow-${node.color.replace('#', '')}`
return (
setHoveredNodeId(node.id)}
onPointerLeave={() => setHoveredNodeId(null)}
onPointerDown={(event) => startDragNode(event, node.id)}
+ style={{ transition: 'opacity 0.2s' }}
opacity={nodeOpacity}
>
+
{node.label}