Repository navigation
Add Tab-Pass Node for cross-tab signal routing - #37
Conversation
Co-authored-by: lunarcloud <1565970+lunarcloud@users.noreply.github.com>
|
@copilot three notes:
|
Co-authored-by: lunarcloud <1565970+lunarcloud@users.noreply.github.com>
Done in commit
Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
|
@copilot two notes:
|
Co-authored-by: lunarcloud <1565970+lunarcloud@users.noreply.github.com>
Fixed in commit Context menu: Right-clicking now always works. The right-click tunnel handler captures Node name sync: Added a
Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
|
@copilot can we keep "internal name" hidden from the properties editor and automatically set it to like "{pairName}.1" and "{pairName}.2" |
…erties panel Co-authored-by: lunarcloud <1565970+lunarcloud@users.noreply.github.com>
Done in commit The "Internal name" and "Paired with" fields are now hidden from the properties panel. The internal name is auto-set to
Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
Adds a new "Tab Pass" node type that lets connections flow between tabs. Creating one node automatically creates a linked sibling; connectors are mirrored (input on one ↔ output on the other), and the two nodes stay in sync as slots are added, removed, or renamed.
New types
TabPassConnectorSlot— named connector slot with direction (IsInput) relative to its owner nodeTabPassNode— paired node with sharedPairId(Guid),PairIndex(1 or 2), transientPairreference, observableConnectorSlots, and sharedPairLabeldisplay nameBehavior
AddNodeAt("Tab Pass", ...)creates two linked nodes side-by-side with default slotsIn 1(input) andOut 1(output); the sibling has the mirrorsAddConnectorSlot(name, isInput)propagates a mirrored slot to the sibling automatically; removal syncs back and cleans up connections across all tabsConnectorViewModelon the same node and to the mirrored slot and connector on the paired nodePairLabeldisplay name. Editing it on either node automatically updates the other. The node header on the canvas showsPairLabel(via theDisplayNamevirtual property onNodeViewModel). The unique internalNameis auto-generated as{PairLabel}.1and{PairLabel}.2(usingPairIndex) and is never shown to the userTextBoxfields so connector names can be changed inline+ Input/+ Outputbuttons and per-slot ✕ remove buttonsPairIdand no inherited pair labelSerialization
NodeDatagainspairId,pairLabel,pairIndex, andslotsfields. After all tabs are deserialized,LinkTabPassPairs()reconnects siblings by matchingPairIdacross tabs.Undo/redo
Three new actions:
AddTabPassPairAction,AddTabPassSlotAction,RemoveTabPassSlotAction. Slot undo/redo usesRemoveTabPassSlotCore(bypasses recording) to avoid stack corruption when the undo action itself would re-enqueue a new undo entry.UI
New Utilities gallery group in the Nodes ribbon tab. Properties panel shows:
PairLabel; changes propagate to the paired node and auto-update both nodes' internal names to{PairLabel}.1/{PairLabel}.2Context menu fix
Right-click node context menu options (Delete, Move To Tab, Rename, Properties) now reliably work. The tunnel pointer handler captures
_contextMenuTargetNodebefore NodifyEditor can deselect nodes. ARestoreContextMenuTargetSelection()helper is called at the start of every menu item click handler to restoreIsSelectedandSelectedNode, ensuring commands always have a valid target regardless of NodifyEditor's deselection behavior.Original prompt
💬 Send tasks to Copilot coding agent from Slack and Teams to turn conversations into code. Copilot posts an update in your thread when it's finished.