e7f733c393
What: Replace ELK layout engine with a hand-written spine layout that topologically sorts nodes into a vertical main path with feedback edges routed to the right side. Why: ELK's layered algorithm spreads the graph too wide when handling feedback (back) edges, causing fitView to shrink nodes until text is unreadable. Our workflow graphs are predominantly linear pipelines with feedback loops — a custom layout handles this topology much better. Changes: - packages/workflow-dashboard/src/components/workflow-graph/use-layout.ts: rewrite from async ELK to synchronous spine layout — topo-sort extracts main path, nodes stack vertically, feedback edges get right-side routing - packages/workflow-dashboard/src/components/workflow-graph/condition-edge.tsx: add custom SVG path for feedback edges (right-side arc with Q curves), use typed isFeedback/isSelfLoop fields from ConditionEdgeData - packages/workflow-dashboard/src/components/workflow-graph/types.ts: rename elkLabelX/Y to labelX/Y, add isFeedback and isSelfLoop fields - packages/workflow-dashboard/src/components/workflow-graph/workflow-graph.tsx: remove ReactFlowProvider/useReactFlow/useEffect fitView workaround (no longer needed — layout is synchronous), simplify component - packages/workflow-dashboard/package.json: remove elkjs and dagre deps
@uncaged/workflow-dashboard
Web dashboard for the Uncaged Workflow engine. Connects to the local
uncaged-workflow serve API to display threads, workflows, and CAS data.
Development
# Start the local API server (in another terminal)
uncaged-workflow serve
# Start the dashboard dev server
bun run dev
Opens at http://localhost:5173. Vite proxies /api/* to localhost:7860.
Build
bun run build
Output goes to dist/ — static files ready for CF Pages or any host.