Comfy-Org / Comfy-Org/ComfyUI_frontend

Extract shared helper for promoted widget error-clearing orchestration

Open
#13,173 1 comment 1 reaction 0 assignees View on GitHub
area:widgets developer experience
Dominant language
TypeScript
Stars
2k
Forks
704
Avg merge
1d 8h
Merged PRs (30d)
512

Description

## Summary

The promoted-widget error-clearing flow currently duplicates the same "clear source scope, then clear host scope" orchestration across multiple UI and graph surfaces. This was intentionally left local in #13059 to keep that PR focused, but it should be extracted into a shared helper to reduce drift and make the source-vs-host option contract explicit.

## Background

PR #13059 updated promoted missing-model handling so host/promoted widgets clear both:
- the promoted source scope, and
- the host widget scope

That sequence now exists in multiple places:
- `src/renderer/extensions/vueNodes/composables/useProcessedWidgets.ts`
- `src/components/rightSidePanel/parameters/SectionWidgets.vue`
- `src/composables/graph/useErrorClearingHooks.ts`

There is also a minor contract inconsistency today: the source-scope clear currently receives the host widget's `{ min, max }` options. This is harmless for the promoted model combo/asset paths covered by #13059, but the helper should define whether source clears use source options, host options, or a normalized contract.

## Requested change

Extract the shared promoted-widget error-clearing orchestration into a reusable helper and update the three call sites to use it.

The helper should:
- encapsulate the "clear source scope, then clear host scope" sequence
- make the source-vs-host widget-name/option contract explicit
- preserve the current promoted missing-model behavior introduced in #13059
- avoid widening behavior unintentionally for unrelated widget flows

## Affected areas

- `src/renderer/extensions/vueNodes/composables/useProcessedWidgets.ts`
- `src/components/rightSidePanel/parameters/SectionWidgets.vue`
- `src/composables/graph/useErrorClearingHooks.ts`

Potentially related logic:
- `src/core/graph/subgraph/resolvePromotedWidgetSource.ts`
- `src/stores/executionErrorStore.ts`

## Acceptance criteria

- A shared helper is introduced for promoted-widget related error clearing.
- The helper is used by the node body, parameter panel, and graph hook surfaces listed above.
- The helper documents or encodes the intended source-vs-host `{ min, max }` option behavior.
- Existing promoted missing-model tests continue to pass, and any necessary unit coverage is added for the extracted helper behavior.

## Backlinks

- PR: https://github.com/Comfy-Org/ComfyUI_frontend/pull/13059
- Review comment: https://github.com/Comfy-Org/ComfyUI_frontend/pull/13059#discussion_r3479446410

Requested by: @jaeone94

Contributor guide

Open the contributing guide

Research direction

Read the existing promoted-widget clearing logic in src/renderer/extensions/vueNodes/composables/useProcessedWidgets.ts, src/components/rightSidePanel/parameters/SectionWidgets.vue, and src/composables/graph/useErrorClearingHooks.ts, then review resolvePromotedWidgetSource.ts and executionErrorStore.ts as needed. Run the existing promoted missing-model tests first. Done means one shared helper is used by all three surfaces, its source-versus-host { min, max } contract is explicit, and relevant coverage passes.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
frontend
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.