Move the ~30 module-scope pure functions out of the 3.5k-line project.tsx into
three focused lib modules, with identical names and signatures. No behavior
change; project.tsx imports them back.
- canvas-node-factory.ts: createCanvasNode, *Metadata builders, referenceUrl,
applyNodeConfigPatch.
- canvas-node-geometry.ts: nodeBounds, group drop/snap, connection anchors,
normalizeConnection, hidden-batch checks.
- canvas-generation-helpers.ts: generation config/inputs, reference hydration,
retry-source lookup, angle prompt builders, misc pure helpers.
project.tsx drops from 3536 to ~3230 lines. Also removes imports that were only
used by the moved helpers.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>