Compare commits

..

5 Commits

Author SHA1 Message Date
59c199d8e5 Mark deprecated cloud-runtime endpoints in openapi.yaml
Add five cloud-runtime FE-facing endpoints to the OSS spec with
deprecated: true and standardized description prefixes:

- GET /api/history_v2 — superseded by GET /api/jobs
- GET /api/history_v2/{prompt_id} — superseded by GET /api/jobs/{prompt_id}
- GET /api/logs — returns static placeholder; no real log data
- GET /api/viewvideo — alias of GET /api/view for legacy video playback
- GET /api/job/{job_id}/status — superseded by GET /api/jobs/{job_id}

Each endpoint is tagged x-runtime: [cloud] and follows the same
deprecation convention established for /api/history endpoints.

Co-authored-by: Matt Miller <MillerMedia@users.noreply.github.com>
2026-05-07 18:10:11 +00:00
25757a53c9 chore: update workflow templates to v0.9.72 (#13732)
Co-authored-by: Jedrzej Kosinski <kosinkadink1@gmail.com>
2026-05-07 00:28:18 -07:00
1b25f1289e [Partner Nodes] add grok-imagine-image-quality model (#13725)
* feat(api-nodes): add grok-imagine-image-quality model

Signed-off-by: bigcat88 <bigcat88@icloud.com>

* fixed price badges

Signed-off-by: bigcat88 <bigcat88@icloud.com>

* fix: adjust price badges

Signed-off-by: bigcat88 <bigcat88@icloud.com>

---------

Signed-off-by: bigcat88 <bigcat88@icloud.com>
Co-authored-by: Jedrzej Kosinski <kosinkadink1@gmail.com>
2026-05-06 23:45:59 -07:00
e35348aa53 Add .comfy_environment to portable. (#13746) 2026-05-06 22:51:01 -04:00
cd8c7a2306 Throttle dynamic VRAM prepare logging (#13704) 2026-05-07 10:41:13 +08:00
6 changed files with 225 additions and 16 deletions

View File

@ -145,6 +145,8 @@ jobs:
cp -r ComfyUI/.ci/windows_${{ inputs.rel_name }}_base_files/* ./
cp ../update_comfyui_and_python_dependencies.bat ./update/
echo 'local-portable' > ComfyUI/.comfy_environment
cd ..
"C:\Program Files\7-Zip\7z.exe" a -t7z -m0=lzma2 -mx=9 -mfb=128 -md=768m -ms=on -mf=BCJ2 ComfyUI_windows_portable.7z ComfyUI_windows_portable

View File

@ -1,9 +1,2 @@
# Admins
* @comfyanonymous @kosinkadink @guill @alexisrolland @rattus128 @kijai
# Partner nodes team maintains API nodes
/comfy_api_nodes/ @Comfy-Org/partner-nodes-mergers
# Frontend team maintains `comfyui-frontend-package`
# Go to market team maintains `comfyui-workflow-templates` and `comfyui-embedded-docs`
/requirements.txt @Comfy-Org/frontend-team @Comfy-Org/gtm-team

View File

@ -26,6 +26,7 @@ import uuid
from typing import Callable, Optional
import torch
import tqdm
import comfy.float
import comfy.hooks
@ -1651,7 +1652,11 @@ class ModelPatcherDynamic(ModelPatcher):
self.model.model_loaded_weight_memory += casted_buf.numel() * casted_buf.element_size()
force_load_stat = f" Force pre-loaded {len(self.backup)} weights: {self.model.model_loaded_weight_memory // 1024} KB." if len(self.backup) > 0 else ""
logging.info(f"Model {self.model.__class__.__name__} prepared for dynamic VRAM loading. {allocated_size // (1024 ** 2)}MB Staged. {num_patches} patches attached.{force_load_stat}")
log_key = (self.patches_uuid, allocated_size, num_patches, len(self.backup), self.model.model_loaded_weight_memory)
in_loop = bool(getattr(tqdm.tqdm, "_instances", None))
level = logging.DEBUG if in_loop and getattr(self, "_last_prepare_log_key", None) == log_key else logging.INFO
self._last_prepare_log_key = log_key
logging.log(level, f"Model {self.model.__class__.__name__} prepared for dynamic VRAM loading. {allocated_size // (1024 ** 2)}MB Staged. {num_patches} patches attached.{force_load_stat}")
self.model.device = device_to
self.model.current_weight_patches_uuid = self.patches_uuid

View File

@ -54,7 +54,12 @@ class GrokImageNode(IO.ComfyNode):
inputs=[
IO.Combo.Input(
"model",
options=["grok-imagine-image-pro", "grok-imagine-image", "grok-imagine-image-beta"],
options=[
"grok-imagine-image-quality",
"grok-imagine-image-pro",
"grok-imagine-image",
"grok-imagine-image-beta",
],
),
IO.String.Input(
"prompt",
@ -111,10 +116,12 @@ class GrokImageNode(IO.ComfyNode):
],
is_api_node=True,
price_badge=IO.PriceBadge(
depends_on=IO.PriceBadgeDepends(widgets=["model", "number_of_images"]),
depends_on=IO.PriceBadgeDepends(widgets=["model", "number_of_images", "resolution"]),
expr="""
(
$rate := $contains(widgets.model, "pro") ? 0.07 : 0.02;
$rate := widgets.model = "grok-imagine-image-quality"
? (widgets.resolution = "1k" ? 0.05 : 0.07)
: ($contains(widgets.model, "pro") ? 0.07 : 0.02);
{"type":"usd","usd": $rate * widgets.number_of_images}
)
""",
@ -167,7 +174,12 @@ class GrokImageEditNode(IO.ComfyNode):
inputs=[
IO.Combo.Input(
"model",
options=["grok-imagine-image-pro", "grok-imagine-image", "grok-imagine-image-beta"],
options=[
"grok-imagine-image-quality",
"grok-imagine-image-pro",
"grok-imagine-image",
"grok-imagine-image-beta",
],
),
IO.Image.Input("image", display_name="images"),
IO.String.Input(
@ -228,11 +240,19 @@ class GrokImageEditNode(IO.ComfyNode):
],
is_api_node=True,
price_badge=IO.PriceBadge(
depends_on=IO.PriceBadgeDepends(widgets=["model", "number_of_images"]),
depends_on=IO.PriceBadgeDepends(widgets=["model", "number_of_images", "resolution"]),
expr="""
(
$rate := $contains(widgets.model, "pro") ? 0.07 : 0.02;
{"type":"usd","usd": 0.002 + $rate * widgets.number_of_images}
$isQualityModel := widgets.model = "grok-imagine-image-quality";
$isPro := $contains(widgets.model, "pro");
$rate := $isQualityModel
? (widgets.resolution = "1k" ? 0.05 : 0.07)
: ($isPro ? 0.07 : 0.02);
$base := $isQualityModel ? 0.01 : 0.002;
$output := $rate * widgets.number_of_images;
$isPro
? {"type":"usd","usd": $base + $output}
: {"type":"range_usd","min_usd": $base + $output, "max_usd": 3 * $base + $output}
)
""",
),

View File

@ -336,6 +336,35 @@ paths:
"404":
description: Job not found
/api/job/{job_id}/status:
get:
operationId: getJobStatus
tags: [queue]
summary: Get job status (legacy singular path)
x-runtime: [cloud]
deprecated: true
description: |
**Deprecated.** This endpoint is superseded by `GET /api/jobs/{job_id}`.
Clients should migrate; the endpoint is retained for backward
compatibility but will be removed in a future release.
parameters:
- name: job_id
in: path
description: The job ID to fetch status for.
required: true
schema:
type: string
format: uuid
responses:
"200":
description: Job status
content:
application/json:
schema:
$ref: "#/components/schemas/JobDetailResponse"
"404":
description: Job not found
# ---------------------------------------------------------------------------
# History
# ---------------------------------------------------------------------------
@ -423,6 +452,75 @@ paths:
additionalProperties:
$ref: "#/components/schemas/HistoryEntry"
/api/history_v2:
get:
operationId: getHistoryV2
tags: [history]
summary: Get execution history (v2 format)
x-runtime: [cloud]
deprecated: true
description: |
**Deprecated.** This endpoint is superseded by `GET /api/jobs`.
Clients should migrate; the endpoint is retained for backward
compatibility but will be removed in a future release.
parameters:
- $ref: "#/components/parameters/ComfyUserHeader"
- name: limit
in: query
schema:
type: integer
description: Maximum number of history entries to return
- name: offset
in: query
schema:
type: integer
default: 0
description: Pagination offset
responses:
"200":
description: History entries
content:
application/json:
schema:
type: object
properties:
items:
type: array
items:
$ref: "#/components/schemas/HistoryEntry"
pagination:
$ref: "#/components/schemas/PaginationInfo"
/api/history_v2/{prompt_id}:
get:
operationId: getHistoryV2ByPromptId
tags: [history]
summary: Get v2 history for a specific prompt
x-runtime: [cloud]
deprecated: true
description: |
**Deprecated.** This endpoint is superseded by `GET /api/jobs/{prompt_id}`.
Clients should migrate; the endpoint is retained for backward
compatibility but will be removed in a future release.
parameters:
- $ref: "#/components/parameters/ComfyUserHeader"
- name: prompt_id
in: path
description: The prompt ID to fetch history for.
required: true
schema:
type: string
format: uuid
responses:
"200":
description: Single history entry
content:
application/json:
schema:
$ref: "#/components/schemas/HistoryEntry"
"404":
description: Prompt not found
# ---------------------------------------------------------------------------
# Upload
# ---------------------------------------------------------------------------
@ -579,6 +677,71 @@ paths:
"404":
description: File not found
/api/viewvideo:
get:
operationId: viewVideo
tags: [view]
summary: View or download a video file (legacy alias)
x-runtime: [cloud]
deprecated: true
description: |
**Deprecated.** This endpoint is an alias of `GET /api/view` added for
legacy history-queue video playback. Callers should use `/api/view`
directly; the endpoint is retained for backward compatibility but will
be removed in a future release.
parameters:
- name: filename
in: query
required: true
schema:
type: string
description: Name of the file to view
- name: type
in: query
schema:
type: string
enum: [input, output, temp]
default: output
description: Directory type
- name: subfolder
in: query
schema:
type: string
description: Subfolder within the directory
- name: preview
in: query
schema:
type: string
description: Preview format hint (e.g. "webp;90")
- name: channel
in: query
schema:
type: string
enum: [rgba, rgb, a]
description: Channel extraction mode
responses:
"200":
description: File content
content:
image/*:
schema:
type: string
format: binary
video/*:
schema:
type: string
format: binary
audio/*:
schema:
type: string
format: binary
application/octet-stream:
schema:
type: string
format: binary
"404":
description: File not found
/api/view_metadata/{folder_name}:
get:
operationId: viewMetadata
@ -679,6 +842,32 @@ paths:
x-runtime: [cloud]
description: "[cloud-only] How the templates version was resolved. Local ComfyUI returns null."
/api/logs:
get:
operationId: getLogs
tags: [system]
summary: Get server logs (placeholder)
x-runtime: [cloud]
deprecated: true
description: |
**Deprecated.** This endpoint returns a static placeholder response and
provides no real log data. It is retained only to avoid breaking clients
that still call it. Clients should remove their dependency; the endpoint
will be removed in a future release.
responses:
"200":
description: Static placeholder log response
content:
application/json:
schema:
type: object
properties:
logs:
type: array
items:
type: string
description: Log lines (always empty in current implementation)
# ---------------------------------------------------------------------------
# Node / Object Info
# ---------------------------------------------------------------------------

View File

@ -1,5 +1,5 @@
comfyui-frontend-package==1.43.17
comfyui-workflow-templates==0.9.69
comfyui-workflow-templates==0.9.72
comfyui-embedded-docs==0.4.4
torch
torchsde