diff --git a/understand-anything-plugin/packages/dashboard/src/App.tsx b/understand-anything-plugin/packages/dashboard/src/App.tsx index 1d95f42..2bab64e 100644 --- a/understand-anything-plugin/packages/dashboard/src/App.tsx +++ b/understand-anything-plugin/packages/dashboard/src/App.tsx @@ -83,6 +83,10 @@ function Dashboard({ accessToken }: { accessToken: string }) { const [graphIssues, setGraphIssues] = useState([]); const [showKeyboardHelp, setShowKeyboardHelp] = useState(false); const [metaTheme, setMetaTheme] = useState(null); + const viewMode = useDashboardStore((s) => s.viewMode); + const setViewMode = useDashboardStore((s) => s.setViewMode); + const domainGraph = useDashboardStore((s) => s.domainGraph); + const setDomainGraph = useDashboardStore((s) => s.setDomainGraph); useEffect(() => { fetch(tokenUrl("/meta.json", accessToken)) @@ -264,6 +268,24 @@ function Dashboard({ accessToken }: { accessToken: string }) { }); }, [setDiffOverlay]); + useEffect(() => { + fetch(tokenUrl("/domain-graph.json", accessToken)) + .then((res) => { + if (!res.ok) return null; + return res.json(); + }) + .then((data: unknown) => { + if (!data) return; + const result = validateGraph(data); + if (result.success && result.data) { + setDomainGraph(result.data); + } + }) + .catch(() => { + // Silently ignore — domain graph is optional + }); + }, [setDomainGraph]); + // Determine sidebar content // NodeInfo always takes priority when a node is selected. // Learn mode adds LearnPanel below it; otherwise ProjectOverview shows when idle. @@ -288,6 +310,33 @@ function Dashboard({ accessToken }: { accessToken: string }) {
+ {graph && domainGraph && ( + <> +
+
+ + +
+ + )}
{/* Middle — scrollable legends */}