Plan: .agents/plans/2026-07-04-detach-canvas-pipeline.md (WS-4)
Replace custom div+CSS+iframe canvas with @xyflow/react.
- DesignIteration -> custom DesignFrameNode (iframe renderer)
- GenerationGroup -> ParentNode
- Replace CanvasArea.tsx viewport + use-canvas pan/zoom -> ReactFlow + useReactFlow + useViewport
- Rubber-band selection -> RF SelectionMode
FULL REWRITE (per decision 2026-07-05). Sequenced AFTER WS-1 (canvas detach) to avoid double-rewrite risk.
Effort: L (~3d). Depends on WS-1.
Plan: .agents/plans/2026-07-04-detach-canvas-pipeline.md (WS-4)
Replace custom div+CSS+iframe canvas with @xyflow/react.
FULL REWRITE (per decision 2026-07-05). Sequenced AFTER WS-1 (canvas detach) to avoid double-rewrite risk.
Effort: L (~3d). Depends on WS-1.