Skip to content

chore(release): 0.14.25 - #1182

Merged
artokun merged 1 commit into
mainfrom
release/0.14.25
Aug 13, 2026
Merged

chore(release): 0.14.25#1182
artokun merged 1 commit into
mainfrom
release/0.14.25

Conversation

@artokun

@artokun artokun commented Aug 13, 2026

Copy link
Copy Markdown
Owner

Releases the #1161 fix merged in #1179.

Setting a widget no longer hangs for 30 seconds after a ComfyUI restart (#1161)

Once ComfyUI had been restarted mid-session, panel_set_widget timed out on every node, every time, while every other panel command answered instantly. Setting a widget is the one action that reads the backend's node definitions before it writes, and a restart can leave the browser holding a connection that never answers and never fails — so that read waited forever.

The panel already had a second way to ask: the raw GET /object_info route added by #982 for exactly this failure, and the very request the original reporter ran by hand to prove their backend was fine. It was never reached, because nothing gave up on the first one.

Each transport is now bounded against one shared budget, so a route that stops answering falls through to the one that does and the write simply succeeds. graph_remove_widget and graph_get_object_info are fixed by the same change — the latter calls the oracle directly, with no cache in front.

Verified

Live against a 4304-type install with the real payload, using the production call shape:

client route fallback issued elapsed types
healthy 0 729ms 4304
throws 1 367ms 4304
hangs (the P1) 1 11.3s 4304

Unit suite 4130 pass / 0 fail; typecheck and scope check clean.

Known and documented

  • The budget's reclaim believes a clock that advances, which performance.now() guarantees; a stub clock that under-reports is reachable only through the injected test seam.
  • A client route that filters deliberately AND is slower than its share can be overridden by the raw route. Deliberate, recorded in the module header, with the exposure window stated as the client route's share rather than the whole budget.
  • graph_add_node and panel_refresh_nodes still hang on the same half-open socket — filed as graph_add_node and panel_refresh_nodes still hang on the half-open socket #1161 fixed for set_widget #1180, deliberately not folded in here because add_node uses a per-class route set_widget structurally cannot.

Setting a widget no longer hangs for 30 seconds after a ComfyUI restart (#1161).

Once ComfyUI had been restarted mid-session, setting any widget on any node timed
out every time, while every other panel command answered instantly. Setting a
widget is the one action that reads the backend's node definitions before it
writes, and a restart can leave the browser holding a connection that never
answers and never fails, so that read waited forever.

The panel already had a second way to ask -- the raw HTTP route added by #982 for
exactly this failure -- but it was never reached, because nothing gave up on the
first one. Each transport is now bounded against one shared budget, so a route
that stops answering falls through to the one that does and the write succeeds.

Verified live against a 4304-type install: a hung client route recovers the full
schema in ~11s where it previously hung to the caller's 30s timeout, and the
healthy path still costs no second request.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings August 13, 2026 12:23

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@artokun
artokun merged commit 5d4907a into main Aug 13, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants