fix: resolve ImageCrop input image through subgraph nodes#8899
fix: resolve ImageCrop input image through subgraph nodes#8899christian-byrne merged 2 commits intomainfrom
Conversation
📝 WalkthroughWalkthroughThe Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Poem
🚥 Pre-merge checks | ✅ 3 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches
🧪 Generate unit tests (beta)
No actionable comments were generated in the recent review. 🎉 Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
🎨 Storybook Build Status✅ Build completed successfully! ⏰ Completed at: 02/15/2026, 03:38:36 PM UTC 🔗 Links🎉 Your Storybook is ready for review! |
|
Playwright: ✅ 516 passed, 0 failed · 5 flaky 📊 Browser Reports
|
Bundle Size ReportSummary
Category Glance Per-category breakdownApp Entry Points — 21.7 kB (baseline 21.7 kB) • ⚪ 0 BMain entry bundles and manifests
Status: 1 added / 1 removed Graph Workspace — 886 kB (baseline 886 kB) • ⚪ 0 BGraph editor runtime, canvas, workflow orchestration
Status: 1 added / 1 removed Views & Navigation — 68.9 kB (baseline 68.9 kB) • ⚪ 0 BTop-level views, pages, and routed surfaces
Status: 9 added / 9 removed Panels & Settings — 427 kB (baseline 427 kB) • ⚪ 0 BConfiguration panels, inspectors, and settings screens
Status: 10 added / 10 removed User & Accounts — 16.1 kB (baseline 16.1 kB) • ⚪ 0 BAuthentication, profile, and account management bundles
Status: 5 added / 5 removed Editors & Dialogs — 785 B (baseline 785 B) • ⚪ 0 BModals, dialogs, drawers, and in-app editors
Status: 1 added / 1 removed UI Components — 36.6 kB (baseline 36.6 kB) • ⚪ 0 BReusable component library chunks
Status: 5 added / 5 removed Data & Services — 2.16 MB (baseline 2.16 MB) • ⚪ 0 BStores, services, APIs, and repositories
Status: 13 added / 13 removed Utilities & Hooks — 237 kB (baseline 237 kB) • ⚪ 0 BHelpers, composables, and utility bundles
Status: 13 added / 13 removed Vendor & Third-Party — 8.69 MB (baseline 8.69 MB) • ⚪ 0 BExternal libraries and shared vendor chunks
Other — 7.32 MB (baseline 7.32 MB) • 🔴 +280 BBundles that do not match a named category
Status: 51 added / 51 removed |
## Summary When ImageCrop's input comes from a subgraph node, getInputNode returns the subgraph node itself which has no image outputs. Use resolveSubgraphOutputLink to trace through to the actual source node (e.g. LoadImage) inside the subgraph. Use canvas.graph (the currently active graph/subgraph) as the primary lookup, falling back to rootGraph. When the ImageCrop node is inside a subgraph, rootGraph cannot find it since it only contains root-level nodes. ## Screenshots (if applicable) before https://github.com/user-attachments/assets/c3995f7c-6bcd-41fe-bc41-cfd87f9be94a after https://github.com/user-attachments/assets/ac660f58-6e6a-46ad-a441-84c7b88d28e2 ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-8899-fix-resolve-ImageCrop-input-image-through-subgraph-nodes-3086d73d36508172a759d7747190591f) by [Unito](https://www.unito.io)
## Summary When ImageCrop's input comes from a subgraph node, getInputNode returns the subgraph node itself which has no image outputs. Use resolveSubgraphOutputLink to trace through to the actual source node (e.g. LoadImage) inside the subgraph. Use canvas.graph (the currently active graph/subgraph) as the primary lookup, falling back to rootGraph. When the ImageCrop node is inside a subgraph, rootGraph cannot find it since it only contains root-level nodes. ## Screenshots (if applicable) before https://github.com/user-attachments/assets/c3995f7c-6bcd-41fe-bc41-cfd87f9be94a after https://github.com/user-attachments/assets/ac660f58-6e6a-46ad-a441-84c7b88d28e2 ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-8899-fix-resolve-ImageCrop-input-image-through-subgraph-nodes-3086d73d36508172a759d7747190591f) by [Unito](https://www.unito.io)
…aph nodes (#8946) Backport of #8899 to `core/1.39` Automatically created by backport workflow. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-8946-backport-core-1-39-fix-resolve-ImageCrop-input-image-through-subgraph-nodes-30b6d73d36508154a57cd063bb68a174) by [Unito](https://www.unito.io) Co-authored-by: Terry Jia <terryjia88@gmail.com>
…raph nodes (#8947) Backport of #8899 to `cloud/1.39` Automatically created by backport workflow. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-8947-backport-cloud-1-39-fix-resolve-ImageCrop-input-image-through-subgraph-nodes-30b6d73d3650814abba4dd6db0567756) by [Unito](https://www.unito.io) Co-authored-by: Terry Jia <terryjia88@gmail.com>
Summary
When ImageCrop's input comes from a subgraph node, getInputNode returns the subgraph node itself which has no image outputs.
Use resolveSubgraphOutputLink to trace through to the actual source node (e.g. LoadImage) inside the subgraph.
Use canvas.graph (the currently active graph/subgraph) as the primary lookup, falling back to rootGraph. When the ImageCrop node is inside a subgraph, rootGraph cannot find it since it only contains root-level nodes.
Screenshots (if applicable)
before
2026-02-15.10-30-29.mp4
after
2026-02-15.10-29-39.mp4
┆Issue is synchronized with this Notion page by Unito