Comfy-Org / Comfy-Org/ComfyUI_frontend
Run (on change) still re-queues when orbiting the Load3D preview camera
- Dominant language
- TypeScript
- Stars
- 2k
- Forks
- 699
- Avg merge
- 1d 7h
- Merged PRs (30d)
- 490
Description
Follow-up to #14041 (merged). This was the one review item from that PR that did not land.
## Problem / Goal
`nonExecutionNodeProperties` in `src/scripts/changeTracker.ts` omits `pos`, `size`, `flags`, `order`, `color`, `bgcolor`, `boxcolor`, `shape`, `showAdvanced` and `title` — but not `properties`, which is where ComfyUI nodes persist per-node UI state.
`src/composables/useLoad3d.ts:534` writes `nodeRef.value.properties['Camera Config']`, including the camera `state`. Orbiting the 3D preview camera therefore mutates `properties`, the execution-graph projection sees a diff, `executionGraphChanged` fires, and the workflow re-queues.
That is exactly the bug class #14041 was written to fix (presentation-only edits triggering execution), still live for a node shipped in this repo. No third-party node required.
**Repro**
1. Enable Run (on change)
2. Add a Preview3D / Load3D node
3. Orbit the preview camera without touching any widget
4. A prompt is queued
**Second-order case:** `useLoad3d.ts:987` performs the same write during serialization, so in change mode: queue → camera state written into `properties` → next capture sees a `properties` diff → queue again. Same family as the `control_after_generate` loop documented as out of scope in #14041.
## Proposed Solution
Adding `properties` to the omission set wholesale would be wrong. It carries genuinely prompt-relevant keys — `Node name for S&R`, `cnr_id`, `aux_id`, `ver`, `models` — so stripping all of it creates false negatives, where a real execution-relevant change silently fails to queue. That is worse than the current false positive.
Two workable shapes:
- omit the known-presentational keys *within* `properties`, mirroring how slots are handled via `nonExecutionSlotProperties`; or
- invert to an allowlist of the schema-declared prompt-relevant keys
## Acceptance Criteria
- [ ] Orbiting the Load3D / Preview3D camera with Run (on change) enabled does not queue a prompt
- [ ] Changing a prompt-relevant key under `properties` (e.g. `Node name for S&R`, `models`) still queues a prompt
- [ ] The serialization-time write at `useLoad3d.ts:987` does not produce a self-triggering queue loop in change mode
- [ ] Negative and positive test cases added to the `changeTracker` projection suite, in the style of the slot/boundary omission tests added by #14041
---
Raised in review of #14041 (rounds 2 through 4) and confirmed still present on merged `main`.
Contributor guide
Assessment
This issue has not been assessed yet.