Problem
Decision routing is authored in two disconnected places: the Branches editor on the decision node defines each branch (label + CEL expression), while the target (which node a branch routes to) is bound separately on the canvas / in FlowEdgeInspector (the per-edge Branch picker added in #1930). There's no single place to say "branch X → node Y".
Proposal
Add a Target column to the decision Branches editor: for each branch, a node-reference dropdown picking the downstream node. Selecting it creates / updates the matching out-edge with the branch's condition + label (or marks isDefault for a true/empty branch). This mirrors Salesforce Flow Decision Outcomes (each outcome = label + condition + connector), and lets a business user define the whole decision — conditions and destinations — in one table.
Complements #1930 (which made the binding explicit on the edge side); this completes it on the node side, which is the more intuitive entry point.
Acceptance criteria
Pointers
Problem
Decision routing is authored in two disconnected places: the Branches editor on the decision node defines each branch (
label+ CELexpression), while the target (which node a branch routes to) is bound separately on the canvas / inFlowEdgeInspector(the per-edge Branch picker added in #1930). There's no single place to say "branch X → node Y".Proposal
Add a Target column to the decision Branches editor: for each branch, a node-reference dropdown picking the downstream node. Selecting it creates / updates the matching out-edge with the branch's
condition+label(or marksisDefaultfor atrue/empty branch). This mirrors Salesforce Flow Decision Outcomes (each outcome = label + condition + connector), and lets a business user define the whole decision — conditions and destinations — in one table.Complements #1930 (which made the binding explicit on the edge side); this completes it on the node side, which is the more intuitive entry point.
Acceptance criteria
FlowEdgeInspectorBranch picker (feat(studio/flow): context-aware Start trigger fields + explicit decision-branch binding #1930) — editing in either place round-trips.Pointers
inspectors/flow-node-config.ts—decisiongroup; add aFlowConfigColumnofkind: 'reference'withref.kind: 'node'(the picker source already supportsnode).inspectors/FlowNodeInspector.tsx—setFieldalready mirrorsconfig.conditions→edges by order (fix(studio/flow): wire decision branches to edges, expand screen config, align simulator #1927); extend it to honor an explicit per-branch target.inspectors/FlowEdgeInspector.tsx— the reciprocal per-edge Branch picker (feat(studio/flow): context-aware Start trigger fields + explicit decision-branch binding #1930).