Skip to content

Conversation

@camielvs
Copy link
Collaborator

@camielvs camielvs commented Sep 19, 2025

Description

Separates the NodeData types for IO Nodes vs Task Nodes. This allows stricter and more easily-followed type definitions for data within nodes. e.g. IO Nodes will no longer receive pointless amounts of task-node data such as isGhost or callbacks.

taskNode type file and hintNode type file have also been co-located together into a singular nodes type file.

No change to app functionality.

Related Issue and Pull requests

Closes https://github.com/Shopify/oasis-frontend/issues/327

Type of Change

  • Cleanup/Refactor

Checklist

  • I have tested this does not break current pipelines / runs functionality
  • I have tested the changes on staging

Screenshots (if applicable)

Test Instructions

Task Nodes

  1. Create a task node
  • Drag a component from the library onto the canvas
  • Verify the node renders correctly with all task information
  1. Edit task node arguments
  • Click on a task node
  • Modify arguments in the context panel
  • Verify changes are saved correctly
  1. Delete a task node
  • Select a task node and delete it
  • Verify the node is removed from the canvas and graph
  1. Duplicate a task node
  • Select a task node and duplicate it
  • Verify the duplicate appears with a unique ID

Input/Output Nodes

  1. Create input and output nodes
  • Add an input node to the canvas
  • Add an output node to the canvas
  • Verify both render with correct labels and type information
  1. Edit IO node properties
  • Click on an input/output node
  • Modify its properties in the context panel (name, type, default value)
  • Verify changes are reflected in the node
  1. Connect IO nodes
  • Connect an input node to a task node input
  • Connect a task node output to an output node
  • Verify connections work correctly

General Operations

  1. Copy and paste nodes
  • Select multiple nodes (mix of task, input, output)
  • Copy and paste them
  • Verify all node types paste correctly with proper data

(note some existing copy + paste functionality does not work with IO nodes)

  1. Undo/redo operations
  • Perform various operations on different node types
  • Test undo/redo functionality
  • Verify all node types maintain correct state
  1. Save and reload
  • Make changes to a component with various node types
  • Save the component
  • Reload and verify all nodes retain their data correctly

Additional Comments

@camielvs camielvs mentioned this pull request Sep 19, 2025
3 tasks
Copy link
Collaborator Author

camielvs commented Sep 19, 2025

Warning

This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

This stack of pull requests is managed by Graphite. Learn more about stacking.

@camielvs camielvs force-pushed the 09-19-stricter_typing_on_nodes branch from ae98a84 to 9a5b19a Compare September 19, 2025 23:23
@camielvs camielvs force-pushed the 09-19-refactor_tasknode_callback_generation branch from 103acce to 9596f63 Compare September 19, 2025 23:23
@camielvs camielvs force-pushed the 09-19-stricter_typing_on_nodes branch from 9a5b19a to 36694ff Compare September 19, 2025 23:28
@camielvs camielvs force-pushed the 09-19-refactor_tasknode_callback_generation branch from 9596f63 to 35a7502 Compare September 19, 2025 23:28
@camielvs camielvs force-pushed the 09-19-stricter_typing_on_nodes branch from 36694ff to 4fc8990 Compare September 19, 2025 23:42
@camielvs camielvs force-pushed the 09-19-refactor_tasknode_callback_generation branch from 35a7502 to 0b3349b Compare September 19, 2025 23:42
@camielvs camielvs changed the title Stricter Typing on Nodes Add IONodeData Type Sep 19, 2025
@camielvs camielvs force-pushed the 09-19-stricter_typing_on_nodes branch from 4fc8990 to 34238bb Compare September 19, 2025 23:57
@camielvs camielvs changed the title Add IONodeData Type Separate IONodeData type from TaskNodeData type Sep 19, 2025
This was referenced Sep 20, 2025
@camielvs camielvs force-pushed the 09-19-stricter_typing_on_nodes branch from 34238bb to 11d5dce Compare September 20, 2025 00:31
@camielvs camielvs force-pushed the 09-19-refactor_tasknode_callback_generation branch from 0b3349b to 87e51db Compare September 20, 2025 00:31
@camielvs camielvs force-pushed the 09-19-stricter_typing_on_nodes branch from 11d5dce to 7dcc9ba Compare September 29, 2025 19:44
@camielvs camielvs force-pushed the 09-19-refactor_tasknode_callback_generation branch from 87e51db to b50521d Compare September 29, 2025 19:44
@camielvs camielvs force-pushed the 09-19-stricter_typing_on_nodes branch from 7dcc9ba to eae31b0 Compare September 29, 2025 20:08
@camielvs camielvs force-pushed the 09-19-stricter_typing_on_nodes branch from eae31b0 to 9511aeb Compare October 1, 2025 23:16
@camielvs camielvs force-pushed the 09-19-refactor_tasknode_callback_generation branch from b50521d to 770419a Compare October 1, 2025 23:16
@camielvs camielvs force-pushed the 09-19-refactor_tasknode_callback_generation branch from 770419a to cbcb1f5 Compare October 7, 2025 22:53
@camielvs camielvs force-pushed the 09-19-stricter_typing_on_nodes branch from 9511aeb to a6337e1 Compare October 7, 2025 22:53
This was referenced Oct 7, 2025
@camielvs camielvs force-pushed the 09-19-refactor_tasknode_callback_generation branch from 3bdcabb to c426542 Compare October 22, 2025 20:18
@camielvs camielvs force-pushed the 09-19-stricter_typing_on_nodes branch 2 times, most recently from 9b4de42 to fbab826 Compare October 22, 2025 22:19
Copy link
Collaborator Author

Good catch - Fixed!

@camielvs camielvs requested a review from Mbeaulne October 22, 2025 22:20
Copy link
Collaborator

@Mbeaulne Mbeaulne left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Screenshot 2025-10-23 at 10.25.32 AM.png

inputs and outputs are now registering as output nodes

Copy link
Collaborator

@Mbeaulne Mbeaulne left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Screenshot 2025-10-23 at 10.25.32 AM.png

inputs and outputs are now registering as output nodes

@camielvs camielvs force-pushed the 09-19-stricter_typing_on_nodes branch from fbab826 to 95162d3 Compare October 23, 2025 16:35
@camielvs camielvs force-pushed the 09-19-refactor_tasknode_callback_generation branch from c426542 to 7bcc36b Compare October 23, 2025 16:35
Copy link
Collaborator Author

camielvs commented Oct 23, 2025

Fixed - it appears we don't have enough info for the new isInputSpec method to infer whether a node is an Input or Output. I've now added a secondary check via node.type.

@camielvs camielvs requested a review from Mbeaulne October 23, 2025 16:38
@camielvs camielvs force-pushed the 09-19-refactor_tasknode_callback_generation branch from 7bcc36b to d9b0b7a Compare October 23, 2025 19:34
@camielvs camielvs force-pushed the 09-19-stricter_typing_on_nodes branch from 95162d3 to 7d73c7d Compare October 23, 2025 19:34
@camielvs camielvs force-pushed the 09-19-stricter_typing_on_nodes branch from 7d73c7d to 44c3648 Compare October 23, 2025 23:23
@camielvs camielvs force-pushed the 09-19-refactor_tasknode_callback_generation branch from d9b0b7a to 5d5a668 Compare October 23, 2025 23:23
Copy link
Collaborator

@maxy-shpfy maxy-shpfy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Small regression (compared to staging - at the end of the video):

  1. create Input node. It is marked as "INVALID" at 3 places (pipeline validation, canvas node, context panel).
  2. input value. Validation now passed.
  3. remove value. Validation fails again. But now the node is Marked as INVALID just in 2 places (canvas node skipped). --- BUG

Screen Recording 2025-10-23 at 4.24.47 PM.mov (uploaded via Graphite)

@camielvs camielvs force-pushed the 09-19-stricter_typing_on_nodes branch from 44c3648 to b69aa27 Compare October 24, 2025 00:15
Copy link
Collaborator Author

Fixed!

@camielvs camielvs requested a review from maxy-shpfy October 24, 2025 00:18
@camielvs camielvs force-pushed the 09-19-stricter_typing_on_nodes branch from b69aa27 to 68e7ba2 Compare October 28, 2025 21:04
@camielvs camielvs force-pushed the 09-19-refactor_tasknode_callback_generation branch from 5d5a668 to 0c9c20e Compare October 28, 2025 21:04
@maxy-shpfy maxy-shpfy marked this pull request as draft October 30, 2025 16:55
@camielvs camielvs force-pushed the 09-19-stricter_typing_on_nodes branch from 68e7ba2 to de75893 Compare October 30, 2025 19:10
@camielvs camielvs force-pushed the 09-19-refactor_tasknode_callback_generation branch from 0c9c20e to 8a86e79 Compare October 30, 2025 19:10
@camielvs camielvs force-pushed the 09-19-stricter_typing_on_nodes branch from de75893 to 8b5a1d0 Compare October 30, 2025 19:44
@camielvs camielvs force-pushed the 09-19-stricter_typing_on_nodes branch from 8b5a1d0 to c5ed11d Compare October 31, 2025 00:23
@camielvs camielvs force-pushed the 09-19-refactor_tasknode_callback_generation branch from 8a86e79 to 9e0dc05 Compare October 31, 2025 00:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants