* Fuse and strip the Flux2 VAE through comfy-kitchen
* Support the fused Flux2 VAE path on ROCm RDNA3+
* Drop the redundant fused_norm term from the Flux2 decode estimate
* [Partner Nodes] feat(Meshy): add Meshy T2.5 Smart Topology text and image to model nodes
Signed-off-by: bigcat88 <bigcat88@icloud.com>
* [Partner Nodes] fix(HeyGen): switch HeyGen Voice Turbo price badge to list price on Nov 1
Signed-off-by: bigcat88 <bigcat88@icloud.com>
* [Partner Nodes] fix(Meshy): return Smart Topology 3D files without saving them to the output directory
Signed-off-by: bigcat88 <bigcat88@icloud.com>
---------
Signed-off-by: bigcat88 <bigcat88@icloud.com>
Co-authored-by: Purz <97489706+purzbeats@users.noreply.github.com>
* Sync offload streams before stealing a pin
_steal_pin hands another weight's pinned buffer to the new weight, which
the caller overwrites right away. A host-to-device copy queued from that
buffer for its previous owner may not have run yet, so the GPU could
upload the new weight's bytes in its place. Steals only happen under pin
pressure, so wait for the offload streams there instead of tracking
every copy.
Verify every MTP step as a tree of fixed capacity (4 or 8 rows): a draft chain plus runner-up siblings, with fixed depths 2-5 as single-child trees. Attention merges the verify rows into the committed prefix with a per-row ancestor mask, the DeltaNet recurrence runs the tree program through the deferred control vector, and the accepted path is committed in place. The auto mode reallocates the draft rows between depth and siblings from conditional rank hits and measured step cost.
Gemma 4 31B's global (full-attention) layers use attention_k_eq_v with
num_global_key_value_heads=4, as in google/gemma-4-31B-it's config.json.
Gemma4_31B_Config inherited the base defaults (k_eq_v off, 16 KV heads),
so every 31B checkpoint logged 'Missing weight ... v_proj' for layers
5, 11, ..., 59 and failed in generation with
"shape '[1, N, 8192]' is invalid" in the global layers' k_proj.
* Load the optional local agent through comfy-agent's v1 host
Add --enable-agent. When set, ComfyUI discovers the "v1" entry point in
the comfyui.agent group, creates the host, lets it mount its own routes
on the aiohttp app during route registration, starts it once the server
is listening and stops it on shutdown. The host's state is published as
the `agent` server feature flag and an `agent_status` websocket message.
Any failure in the package (missing, outdated protocol, a raising
entry point, register or start) disables the agent and is reported
through the flag; it never stops ComfyUI from starting.
* Pin comfy-agent in agent_requirements.txt to its published version
* Keep a failing agent from escaping startup or leaving a stale flag
A host whose status() raises SystemExit no longer ends ComfyUI startup
when load() publishes the flag, and a register() failure now republishes
the agent flag as failed instead of leaving it at "starting".
* Disable an agent host whose status() exits
load() reads status() to publish the flag. A host that raises SystemExit
there is now disabled, so register() and start() skip it, matching the
"failed" flag it reports.
* Run startup callbacks from a list of hooks
The browser launch and the agent start each append a named hook, and
call_on_start runs them in order, instead of the agent block wrapping
whatever call_on_start was before it.
* Start the agent from a named call_on_start, like the browser launch
* Renew partner-node sign-in tokens in API nodes
Read exp from tokens with the comfy-partner-node audience, renew them
shortly before expiry or after a 401 from comfy-api, keep the renewed
token in memory per session id, share one in-flight renewal per session,
and resend a 401-rejected request once. Workspace tokens and API keys
are unchanged.
---------
Signed-off-by: bigcat88 <bigcat88@icloud.com>
Co-authored-by: Alexander Piskun <bigcat88@icloud.com>
Co-authored-by: Alexander Piskun <13381981+bigcat88@users.noreply.github.com>
* Make NAF neighborhood attention work per LR cell
K/V are nearest-upsampled by exactly the dilation, so every HR query in an LR
cell attends the same window of the zero-padded LR grid. Attend once per cell
with two small GEMMs instead of unfolding a window per HR position: Pixal3D's
three NAF upsamples go from ~2.1 s to ~0.05 s on a 5090, same result in fp32,
lower fp16/bf16 error and peak memory.
* Count all live temporaries in the NAF chunk budget