Comfy-Org / Comfy-Org/ComfyUI_frontend
Node replacement ignores DynamicCombo child mappings with dot notation
- Dominant language
- TypeScript
- Stars
- 2k
- Forks
- 699
- Avg merge
- 1d 7h
- Merged PRs (30d)
- 490
Description
### Prerequisites
- [x] I am running the latest version of ComfyUI
- [x] I have custom nodes enabled
### What happened?
When replacing a missing node using NodeReplace, mappings that target DynamicCombo child fields (dot notation) are not applied.
Example mappings like:
- {"new_id": "operation.operand_a", "old_id": "mode_settings.value_a"}
- {"new_id": "operation.operand_b", "old_id": "mode_settings.value_b"}
do not transfer values, even though the replacement is otherwise executed (node is replaced, non-nested mappings may work, outputs may remap).
This appears inconsistent with docs/core examples that use dot notation for complex inputs (e.g. resize_type.multiplier).
Mapping between two nodes with DynamicCombo that has different child widget count also seem to not work as expected.
### Steps to Reproduce
**1. Create an old node with a mode widget + numeric widgets (or old DynamicCombo fields), e.g.:**
- mode_settings
- mode_settings.value_a
- mode_settings.value_b
**2. Create a new node using io.DynamicCombo.Input("operation", ...) with child fields:**
- operation.operand_a
- operation.operand_b
**3. Register a replacement with dot-notation child mappings, e.g.:**
- operation <- mode_settings
- operation.operand_a <- mode_settings.value_a
- operation.operand_b <- mode_settings.value_b
**4. Load a workflow containing the old node as missing, then click Replace.**
**5. Observe the replaced node:**
- parent mode may transfer
- child fields (operand_a, operand_b) remain defaults instead of transferred values.
### How is this affecting you?
Feature doesn't work as expected
### ComfyUI Frontend Version
1.42.10
### Browser
Chrome/Chromium
### Console Errors
```javascript
```
### Logs
```shell
```
### Additional Context
_No response_
┆Issue is synchronized with this [Notion page](https://www.notion.so/Issue-11185-Node-replacement-ignores-DynamicCombo-child-mappings-with-dot-notation-3416d73d365081a591cbf17ae688a65e) by [Unito](https://www.unito.io)
Contributor guide
Research direction
Start at the NodeReplace replacement-mapping logic and trace how DynamicCombo inputs and dot-notation child fields are handled. Reproduce the workflow with operation.operand_a/operand_b mapped from mode_settings.value_a/value_b; done means the parent and child values transfer correctly, including when the DynamicCombo child counts differ.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- frontend
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100