From ed43937a5eb0c6b1af5d06f710a27583e73d0652 Mon Sep 17 00:00:00 2001 From: abccodes Date: Fri, 19 Jun 2026 18:55:20 -0700 Subject: [PATCH] [aidan] fix/workflows-hub: load workflows on hub mount so calendar fills at launch --- .../src/app/pages/Dashboard/canvas/DashboardCanvas.tsx | 1 + .../app/pages/Dashboard/canvas/DashboardCardLayer.tsx | 3 +++ frontend/src/app/pages/Workflows/WorkflowsHubCard.tsx | 9 ++++++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/frontend/src/app/pages/Dashboard/canvas/DashboardCanvas.tsx b/frontend/src/app/pages/Dashboard/canvas/DashboardCanvas.tsx index a449a853..06821c35 100644 --- a/frontend/src/app/pages/Dashboard/canvas/DashboardCanvas.tsx +++ b/frontend/src/app/pages/Dashboard/canvas/DashboardCanvas.tsx @@ -244,6 +244,7 @@ const DashboardCanvas: React.FC = ({ {/* Tether lines between branched cards */} ; viewCards: Record; browserCards: Record; @@ -66,6 +67,7 @@ interface DashboardCardLayerProps { } const DashboardCardLayer: React.FC = ({ + dashboardId, cards, viewCards, browserCards, @@ -270,6 +272,7 @@ const DashboardCardLayer: React.FC = ({ ))} {workflowsHub && ( }[] = [ ]; interface Props { + dashboardId: string; cardX: number; cardY: number; cardWidth: number; @@ -126,6 +127,7 @@ function TimeSavedBadge() { } const WorkflowsHubCard: React.FC = ({ + dashboardId, cardX, cardY, cardWidth, cardHeight, cardZOrder = 0, zoom = 1, panX = 0, panY = 0, isSelected = false, isHighlighted = false, multiDragDelta = null, @@ -138,6 +140,11 @@ const WorkflowsHubCard: React.FC = ({ const defaultModel = useAppSelector((s) => s.settings.data.default_model); useEffect(() => { dispatch(fetchPausedState()); }, [dispatch]); + // The hub is the signal "user is looking at workflows now", so load them + // eagerly here instead of waiting on the dashboard's deferred idle fetch + // (which left the calendar blank for ~2s). The thunk's !loading condition + // dedups against that idle dispatch. + useEffect(() => { dispatch(fetchWorkflows(dashboardId)); }, [dashboardId, dispatch]); const togglePaused = useCallback(() => { dispatch(setPausedAll(!paused));