diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 06fbb1b0..36bb4f1c 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -63,7 +63,7 @@ jobs: continue-on-error: true - name: Upload artifact - uses: actions/upload-pages-artifact@v3 + uses: actions/upload-pages-artifact@v5 with: path: ./site diff --git a/.gitignore b/.gitignore index c53c2817..ed5349ee 100644 --- a/.gitignore +++ b/.gitignore @@ -117,3 +117,6 @@ node_modules/ # Frontend build artifacts (generated by Vite — do not track in git) semantica/static/ + +# Local graph explorer test datasets +demo_out/ diff --git a/Dockerfile b/Dockerfile index a69e072c..988064d1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:20-alpine AS frontend-builder +FROM node:25-alpine AS frontend-builder WORKDIR /app/semantica-explorer @@ -13,7 +13,7 @@ COPY semantica-explorer/ ./ RUN npm run build -FROM python:3.12-slim AS runtime +FROM python:3.14-slim AS runtime WORKDIR /app diff --git a/explorer/src/workspaces/GraphWorkspace/GraphWorkspace.tsx b/explorer/src/workspaces/GraphWorkspace/GraphWorkspace.tsx index d7afbcbd..6484fee0 100644 --- a/explorer/src/workspaces/GraphWorkspace/GraphWorkspace.tsx +++ b/explorer/src/workspaces/GraphWorkspace/GraphWorkspace.tsx @@ -923,6 +923,7 @@ export function GraphWorkspace() { sampleNodeIds?: string[]; } | undefined; + const anchorNodeId = communityGroup?.anchorNodeId || communityGroup?.sampleNodeIds?.[0] || ""; if (anchorNodeId && graph.hasNode(anchorNodeId)) { return { @@ -1792,6 +1793,7 @@ export function GraphWorkspace() { return groups; }, [ + canActivateFocusedMode, displayState.groupedViewAvailable, displayState.groupedViewReason, handlePluginAction, diff --git a/explorer/src/workspaces/GraphWorkspace/graphSceneState.ts b/explorer/src/workspaces/GraphWorkspace/graphSceneState.ts index 54f6470f..c954babd 100644 --- a/explorer/src/workspaces/GraphWorkspace/graphSceneState.ts +++ b/explorer/src/workspaces/GraphWorkspace/graphSceneState.ts @@ -1925,6 +1925,7 @@ export function resolveDisplayGraph( options?: { aggregationEnabled?: boolean; collapsedNeighborhoodNodeIds?: Iterable; + groupedViewAvailable?: boolean; }, ): GraphDisplayResult { const aggregationEnabled = options?.aggregationEnabled ?? true; @@ -1934,6 +1935,7 @@ export function resolveDisplayGraph( const displayState = resolveDisplayStateSnapshot(selectedNodeId, activePath, viewMode, { aggregationEnabled, collapsedNeighborhoodNodeIds, + groupedViewAvailable: options?.groupedViewAvailable, }); const isFocusedView = viewMode === "focused" && Boolean(selectedNodeId) && graph.hasNode(selectedNodeId); const isGroupedView = viewMode === "grouped"; diff --git a/plugins/.claude-plugin/README.md b/plugins/.claude-plugin/README.md index bdf90fcb..6fa56eef 100644 --- a/plugins/.claude-plugin/README.md +++ b/plugins/.claude-plugin/README.md @@ -91,7 +91,8 @@ claude --plugin-dir ./plugins Or inside a session: ```bash -/plugin install ./plugins +/plugin marketplace add ./plugins +/plugin install semantica@semantica-local ``` Verify: diff --git a/plugins/.claude-plugin/marketplace.json b/plugins/.claude-plugin/marketplace.json index a4e48a56..cbe8b924 100644 --- a/plugins/.claude-plugin/marketplace.json +++ b/plugins/.claude-plugin/marketplace.json @@ -1,5 +1,9 @@ { "name": "semantica-local", + "owner": { + "name": "Hawksight AI", + "url": "https://github.com/Hawksight-AI/semantica" + }, "plugins": [ { "name": "semantica", diff --git a/plugins/.claude-plugin/plugin.json b/plugins/.claude-plugin/plugin.json index 2f21a77d..fd5d35e7 100644 --- a/plugins/.claude-plugin/plugin.json +++ b/plugins/.claude-plugin/plugin.json @@ -25,6 +25,5 @@ "mcp" ], "skills": "./skills", - "agents": "./agents", - "hooks": "./hooks/hooks.json" + "agents": "./agents" } diff --git a/plugins/agents/decision-advisor/AGENT.md b/plugins/agents/decision-advisor.md similarity index 100% rename from plugins/agents/decision-advisor/AGENT.md rename to plugins/agents/decision-advisor.md diff --git a/plugins/agents/explainability/AGENT.md b/plugins/agents/explainability.md similarity index 100% rename from plugins/agents/explainability/AGENT.md rename to plugins/agents/explainability.md diff --git a/plugins/agents/kg-assistant/AGENT.md b/plugins/agents/kg-assistant.md similarity index 100% rename from plugins/agents/kg-assistant/AGENT.md rename to plugins/agents/kg-assistant.md