From 945ffca32e4d6c05d6f1bf37101601a30318b396 Mon Sep 17 00:00:00 2001 From: Robin Huang Date: Tue, 11 Aug 2026 23:21:08 -0700 Subject: [PATCH 1/3] chore: replace api nodes -> partner nodes in README (#15519) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1721cefa5..c4dfc8be1 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ ComfyUI is the AI creation engine for visual professionals who demand control over every model, every parameter, and every output. Its powerful and modular node graph interface empowers creatives to generate images, videos, 3D models, audio, and more... - ComfyUI natively supports the latest open-source state of the art models. -- API nodes provide access to the best closed source models such as Nano Banana, Seedance, Hunyuan3D, etc. +- [Partner nodes](https://docs.comfy.org/tutorials/partner-nodes/overview#partner-nodes) provide access to the best closed source models such as Nano Banana, Seedance, Hunyuan3D, etc. - It is available on Windows, Linux, and macOS, locally with our [desktop application](https://www.comfy.org/download), our [portable install](#installing) or on our [cloud](https://www.comfy.org/cloud). - The most sophisticated workflows can be exposed through a simple UI thanks to App Mode. - It integrates seamlessly into production pipelines with our API endpoints. From 26d7f8556822d9d08c2d3e1878636ac3b4969af9 Mon Sep 17 00:00:00 2001 From: Christian Byrne Date: Tue, 11 Aug 2026 23:42:35 -0700 Subject: [PATCH 2/3] Fix PreviewAny escaping non-ASCII text in dict and list previews (#15513) --- comfy_extras/nodes_preview_any.py | 2 +- .../nodes_preview_any_test.py | 30 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 tests-unit/comfy_extras_test/nodes_preview_any_test.py diff --git a/comfy_extras/nodes_preview_any.py b/comfy_extras/nodes_preview_any.py index d985f3287..18bf7c1cd 100644 --- a/comfy_extras/nodes_preview_any.py +++ b/comfy_extras/nodes_preview_any.py @@ -29,7 +29,7 @@ class PreviewAny(): value = str(source) elif source is not None: try: - value = json.dumps(source, indent=4) + value = json.dumps(source, indent=4, ensure_ascii=False) except Exception: try: value = str(source) diff --git a/tests-unit/comfy_extras_test/nodes_preview_any_test.py b/tests-unit/comfy_extras_test/nodes_preview_any_test.py new file mode 100644 index 000000000..563c1f1b0 --- /dev/null +++ b/tests-unit/comfy_extras_test/nodes_preview_any_test.py @@ -0,0 +1,30 @@ +from unittest.mock import patch, MagicMock + +mock_nodes = MagicMock() +mock_nodes.MAX_RESOLUTION = 16384 +mock_server = MagicMock() + +with patch.dict("sys.modules", {"nodes": mock_nodes, "server": mock_server}): + from comfy_extras.nodes_preview_any import PreviewAny + + +class TestPreviewAnyMain: + @staticmethod + def _exec(source) -> dict: + return PreviewAny().main(source) + + def test_dict_keeps_non_ascii(self): + result = self._exec({"greeting": "你好"}) + assert "你好" in result["ui"]["text"][0] + assert "\\u" not in result["ui"]["text"][0] + assert result["result"][0] == result["ui"]["text"][0] + + def test_list_keeps_non_ascii(self): + result = self._exec(["你好", "こんにちは"]) + assert "こんにちは" in result["result"][0] + assert "\\u" not in result["result"][0] + + def test_string_passthrough(self): + result = self._exec("你好") + assert result["ui"]["text"][0] == "你好" + assert result["result"][0] == "你好" From bd34f338ac505ea79e43968753968a464060e609 Mon Sep 17 00:00:00 2001 From: comfyanonymous <121283862+comfyanonymous@users.noreply.github.com> Date: Wed, 12 Aug 2026 00:55:08 -0700 Subject: [PATCH 3/3] Fix float64 device in ltx diffusion decoder. (#15516) --- comfy/ldm/lightricks/vae/na_diffusion_decoder.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/comfy/ldm/lightricks/vae/na_diffusion_decoder.py b/comfy/ldm/lightricks/vae/na_diffusion_decoder.py index 8a172e101..ec539c665 100644 --- a/comfy/ldm/lightricks/vae/na_diffusion_decoder.py +++ b/comfy/ldm/lightricks/vae/na_diffusion_decoder.py @@ -22,6 +22,7 @@ import torch import torch.nn.functional as F from einops import rearrange from torch import nn +import comfy.model_management from comfy.ldm.lightricks.model import get_timestep_embedding from .causal_video_autoencoder import Encoder, processor @@ -74,8 +75,12 @@ def default_rope_dim_split(head_dim): def rope_inv_freqs(dim, base=10000.0, device=None): + out_device = device + if not comfy.model_management.supports_fp64(device): + device = torch.device("cpu") + exponents = torch.arange(0, dim, 2, dtype=torch.float64, device=device) / dim - return (1.0 / torch.pow(torch.tensor(float(base), dtype=torch.float64, device=device), exponents)).to(torch.float32) + return (1.0 / torch.pow(torch.tensor(float(base), dtype=torch.float64, device=device), exponents)).to(dtype=torch.float32, device=out_device) def _rope_tables(lengths, inv_freqs, device):