Skip to content

Commit e9d082a

Browse files
authored
Merge branch 'master' into offloader-maifee
2 parents 7602203 + b353a7c commit e9d082a

File tree

414 files changed

+544386
-4670
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

414 files changed

+544386
-4670
lines changed

.coderabbit.yaml

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
2+
language: "en-US"
3+
early_access: false
4+
tone_instructions: "Only comment on issues introduced by this PR's changes. Do not flag pre-existing problems in moved, re-indented, or reformatted code."
5+
6+
reviews:
7+
profile: "chill"
8+
request_changes_workflow: false
9+
high_level_summary: false
10+
poem: false
11+
review_status: false
12+
review_details: false
13+
commit_status: true
14+
collapse_walkthrough: true
15+
changed_files_summary: false
16+
sequence_diagrams: false
17+
estimate_code_review_effort: false
18+
assess_linked_issues: false
19+
related_issues: false
20+
related_prs: false
21+
suggested_labels: false
22+
auto_apply_labels: false
23+
suggested_reviewers: false
24+
auto_assign_reviewers: false
25+
in_progress_fortune: false
26+
enable_prompt_for_ai_agents: true
27+
28+
path_filters:
29+
- "!comfy_api_nodes/apis/**"
30+
- "!**/generated/*.pyi"
31+
- "!.ci/**"
32+
- "!script_examples/**"
33+
- "!**/__pycache__/**"
34+
- "!**/*.ipynb"
35+
- "!**/*.png"
36+
- "!**/*.bat"
37+
38+
path_instructions:
39+
- path: "**"
40+
instructions: |
41+
IMPORTANT: Only comment on issues directly introduced by this PR's code changes.
42+
Do NOT flag pre-existing issues in code that was merely moved, re-indented,
43+
de-indented, or reformatted without logic changes. If code appears in the diff
44+
only due to whitespace or structural reformatting (e.g., removing a `with:` block),
45+
treat it as unchanged. Contributors should not feel obligated to address
46+
pre-existing issues outside the scope of their contribution.
47+
- path: "comfy/**"
48+
instructions: |
49+
Core ML/diffusion engine. Focus on:
50+
- Backward compatibility (breaking changes affect all custom nodes)
51+
- Memory management and GPU resource handling
52+
- Performance implications in hot paths
53+
- Thread safety for concurrent execution
54+
- path: "comfy_api_nodes/**"
55+
instructions: |
56+
Third-party API integration nodes. Focus on:
57+
- No hardcoded API keys or secrets
58+
- Proper error handling for API failures (timeouts, rate limits, auth errors)
59+
- Correct Pydantic model usage
60+
- Security of user data passed to external APIs
61+
- path: "comfy_extras/**"
62+
instructions: |
63+
Community-contributed extra nodes. Focus on:
64+
- Consistency with node patterns (INPUT_TYPES, RETURN_TYPES, FUNCTION, CATEGORY)
65+
- No breaking changes to existing node interfaces
66+
- path: "comfy_execution/**"
67+
instructions: |
68+
Execution engine (graph execution, caching, jobs). Focus on:
69+
- Caching correctness
70+
- Concurrent execution safety
71+
- Graph validation edge cases
72+
- path: "nodes.py"
73+
instructions: |
74+
Core node definitions (2500+ lines). Focus on:
75+
- Backward compatibility of NODE_CLASS_MAPPINGS
76+
- Consistency of INPUT_TYPES return format
77+
- path: "alembic_db/**"
78+
instructions: |
79+
Database migrations. Focus on:
80+
- Migration safety and rollback support
81+
- Data preservation during schema changes
82+
83+
auto_review:
84+
enabled: true
85+
auto_incremental_review: true
86+
drafts: false
87+
ignore_title_keywords:
88+
- "WIP"
89+
- "DO NOT REVIEW"
90+
- "DO NOT MERGE"
91+
92+
finishing_touches:
93+
docstrings:
94+
enabled: false
95+
unit_tests:
96+
enabled: false
97+
98+
tools:
99+
ruff:
100+
enabled: false
101+
pylint:
102+
enabled: false
103+
flake8:
104+
enabled: false
105+
gitleaks:
106+
enabled: true
107+
shellcheck:
108+
enabled: false
109+
markdownlint:
110+
enabled: false
111+
yamllint:
112+
enabled: false
113+
languagetool:
114+
enabled: false
115+
github-checks:
116+
enabled: true
117+
timeout_ms: 90000
118+
ast-grep:
119+
essential_rules: true
120+
121+
chat:
122+
auto_reply: true
123+
124+
knowledge_base:
125+
opt_out: false
126+
learnings:
127+
scope: "auto"

.github/ISSUE_TEMPLATE/bug-report.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ body:
1616
1717
## Very Important
1818
19-
Please make sure that you post ALL your ComfyUI logs in the bug report. A bug report without logs will likely be ignored.
19+
Please make sure that you post ALL your ComfyUI logs in the bug report **even if there is no crash**. Just paste everything. The startup log (everything before "To see the GUI go to: ...") contains critical information to developers trying to help. For a performance issue or crash, paste everything from "got prompt" to the end, including the crash. More is better - always. A bug report without logs will likely be ignored.
2020
- type: checkboxes
2121
id: custom-nodes-test
2222
attributes:
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
#!/usr/bin/env bash
2+
# Checks pull request commits for AI agent Co-authored-by trailers.
3+
# Exits non-zero when any are found and prints fix instructions.
4+
set -euo pipefail
5+
6+
base_sha="${1:?usage: check-ai-co-authors.sh <base_sha> <head_sha>}"
7+
head_sha="${2:?usage: check-ai-co-authors.sh <base_sha> <head_sha>}"
8+
9+
# Known AI coding-agent trailer patterns (case-insensitive).
10+
# Each entry is an extended-regex fragment matched against Co-authored-by lines.
11+
AGENT_PATTERNS=(
12+
# Anthropic — Claude Code / Amp
13+
'noreply@anthropic\.com'
14+
# Cursor
15+
'cursoragent@cursor\.com'
16+
# GitHub Copilot
17+
'copilot-swe-agent\[bot\]'
18+
'copilot@github\.com'
19+
# OpenAI Codex
20+
'noreply@openai\.com'
21+
'codex@openai\.com'
22+
# Aider
23+
'aider@aider\.chat'
24+
# Google — Gemini / Jules
25+
'gemini@google\.com'
26+
'jules@google\.com'
27+
# Windsurf / Codeium
28+
'@codeium\.com'
29+
# Devin
30+
'devin-ai-integration\[bot\]'
31+
'devin@cognition\.ai'
32+
'devin@cognition-labs\.com'
33+
# Amazon Q Developer
34+
'amazon-q-developer'
35+
'@amazon\.com.*[Qq].[Dd]eveloper'
36+
# Cline
37+
'cline-bot'
38+
'cline@cline\.ai'
39+
# Continue
40+
'continue-agent'
41+
'continue@continue\.dev'
42+
# Sourcegraph
43+
'noreply@sourcegraph\.com'
44+
# Generic catch-alls for common agent name patterns
45+
'Co-authored-by:.*\b[Cc]laude\b'
46+
'Co-authored-by:.*\b[Cc]opilot\b'
47+
'Co-authored-by:.*\b[Cc]ursor\b'
48+
'Co-authored-by:.*\b[Cc]odex\b'
49+
'Co-authored-by:.*\b[Gg]emini\b'
50+
'Co-authored-by:.*\b[Aa]ider\b'
51+
'Co-authored-by:.*\b[Dd]evin\b'
52+
'Co-authored-by:.*\b[Ww]indsurf\b'
53+
'Co-authored-by:.*\b[Cc]line\b'
54+
'Co-authored-by:.*\b[Aa]mazon Q\b'
55+
'Co-authored-by:.*\b[Jj]ules\b'
56+
'Co-authored-by:.*\bOpenCode\b'
57+
)
58+
59+
# Build a single alternation regex from all patterns.
60+
regex=""
61+
for pattern in "${AGENT_PATTERNS[@]}"; do
62+
if [[ -n "$regex" ]]; then
63+
regex="${regex}|${pattern}"
64+
else
65+
regex="$pattern"
66+
fi
67+
done
68+
69+
# Collect Co-authored-by lines from every commit in the PR range.
70+
violations=""
71+
while IFS= read -r sha; do
72+
message="$(git log -1 --format='%B' "$sha")"
73+
matched_lines="$(echo "$message" | grep -iE "^Co-authored-by:" || true)"
74+
if [[ -z "$matched_lines" ]]; then
75+
continue
76+
fi
77+
78+
while IFS= read -r line; do
79+
if echo "$line" | grep -iqE "$regex"; then
80+
short="$(git log -1 --format='%h' "$sha")"
81+
violations="${violations} ${short}: ${line}"$'\n'
82+
fi
83+
done <<< "$matched_lines"
84+
done < <(git rev-list "${base_sha}..${head_sha}")
85+
86+
if [[ -n "$violations" ]]; then
87+
echo "::error::AI agent Co-authored-by trailers detected in PR commits."
88+
echo ""
89+
echo "The following commits contain Co-authored-by trailers from AI coding agents:"
90+
echo ""
91+
echo "$violations"
92+
echo "These trailers should be removed before merging."
93+
echo ""
94+
echo "To fix, rewrite the commit messages with:"
95+
echo " git rebase -i ${base_sha}"
96+
echo ""
97+
echo "and remove the Co-authored-by lines, then force-push your branch."
98+
echo ""
99+
echo "If you believe this is a false positive, please open an issue."
100+
exit 1
101+
fi
102+
103+
echo "No AI agent Co-authored-by trailers found."
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
name: Check AI Co-Authors
2+
3+
on:
4+
pull_request:
5+
branches: ['*']
6+
7+
jobs:
8+
check-ai-co-authors:
9+
name: Check for AI agent co-author trailers
10+
runs-on: ubuntu-latest
11+
12+
steps:
13+
- name: Checkout code
14+
uses: actions/checkout@v4
15+
with:
16+
fetch-depth: 0
17+
18+
- name: Check commits for AI co-author trailers
19+
run: bash .github/scripts/check-ai-co-authors.sh "${{ github.event.pull_request.base.sha }}" "${{ github.event.pull_request.head.sha }}"

.github/workflows/release-stable-all.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
git_tag: ${{ inputs.git_tag }}
2121
cache_tag: "cu130"
2222
python_minor: "13"
23-
python_patch: "9"
23+
python_patch: "11"
2424
rel_name: "nvidia"
2525
rel_extra_name: ""
2626
test_release: true
@@ -65,11 +65,11 @@ jobs:
6565
contents: "write"
6666
packages: "write"
6767
pull-requests: "read"
68-
name: "Release AMD ROCm 7.1.1"
68+
name: "Release AMD ROCm 7.2"
6969
uses: ./.github/workflows/stable-release.yml
7070
with:
7171
git_tag: ${{ inputs.git_tag }}
72-
cache_tag: "rocm711"
72+
cache_tag: "rocm72"
7373
python_minor: "12"
7474
python_patch: "10"
7575
rel_name: "amd"

.github/workflows/release-webhook.yml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ on:
77
jobs:
88
send-webhook:
99
runs-on: ubuntu-latest
10+
env:
11+
DESKTOP_REPO_DISPATCH_TOKEN: ${{ secrets.DESKTOP_REPO_DISPATCH_TOKEN }}
1012
steps:
1113
- name: Send release webhook
1214
env:
@@ -106,3 +108,37 @@ jobs:
106108
--fail --silent --show-error
107109
108110
echo "✅ Release webhook sent successfully"
111+
112+
- name: Send repository dispatch to desktop
113+
env:
114+
DISPATCH_TOKEN: ${{ env.DESKTOP_REPO_DISPATCH_TOKEN }}
115+
RELEASE_TAG: ${{ github.event.release.tag_name }}
116+
RELEASE_URL: ${{ github.event.release.html_url }}
117+
run: |
118+
set -euo pipefail
119+
120+
if [ -z "${DISPATCH_TOKEN:-}" ]; then
121+
echo "::error::DESKTOP_REPO_DISPATCH_TOKEN is required but not set."
122+
exit 1
123+
fi
124+
125+
PAYLOAD="$(jq -n \
126+
--arg release_tag "$RELEASE_TAG" \
127+
--arg release_url "$RELEASE_URL" \
128+
'{
129+
event_type: "comfyui_release_published",
130+
client_payload: {
131+
release_tag: $release_tag,
132+
release_url: $release_url
133+
}
134+
}')"
135+
136+
curl -fsSL \
137+
-X POST \
138+
-H "Accept: application/vnd.github+json" \
139+
-H "Content-Type: application/json" \
140+
-H "Authorization: Bearer ${DISPATCH_TOKEN}" \
141+
https://api.github.com/repos/Comfy-Org/desktop/dispatches \
142+
-d "$PAYLOAD"
143+
144+
echo "✅ Dispatched ComfyUI release ${RELEASE_TAG} to Comfy-Org/desktop"

.github/workflows/test-launch.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
- name: Checkout ComfyUI
1414
uses: actions/checkout@v4
1515
with:
16-
repository: "comfyanonymous/ComfyUI"
16+
repository: "Comfy-Org/ComfyUI"
1717
path: "ComfyUI"
1818
- uses: actions/setup-python@v4
1919
with:
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
name: "CI: Update CI Container"
2+
3+
on:
4+
release:
5+
types: [published]
6+
workflow_dispatch:
7+
inputs:
8+
version:
9+
description: 'ComfyUI version (e.g., v0.7.0)'
10+
required: true
11+
type: string
12+
13+
jobs:
14+
update-ci-container:
15+
runs-on: ubuntu-latest
16+
# Skip pre-releases unless manually triggered
17+
if: github.event_name == 'workflow_dispatch' || !github.event.release.prerelease
18+
steps:
19+
- name: Get version
20+
id: version
21+
run: |
22+
if [ "${{ github.event_name }}" = "release" ]; then
23+
VERSION="${{ github.event.release.tag_name }}"
24+
else
25+
VERSION="${{ inputs.version }}"
26+
fi
27+
echo "version=$VERSION" >> $GITHUB_OUTPUT
28+
29+
- name: Checkout comfyui-ci-container
30+
uses: actions/checkout@v4
31+
with:
32+
repository: comfy-org/comfyui-ci-container
33+
token: ${{ secrets.CI_CONTAINER_PAT }}
34+
35+
- name: Check current version
36+
id: current
37+
run: |
38+
CURRENT=$(grep -oP 'ARG COMFYUI_VERSION=\K.*' Dockerfile || echo "unknown")
39+
echo "current_version=$CURRENT" >> $GITHUB_OUTPUT
40+
41+
- name: Update Dockerfile
42+
run: |
43+
VERSION="${{ steps.version.outputs.version }}"
44+
sed -i "s/^ARG COMFYUI_VERSION=.*/ARG COMFYUI_VERSION=${VERSION}/" Dockerfile
45+
46+
- name: Create Pull Request
47+
id: create-pr
48+
uses: peter-evans/create-pull-request@v7
49+
with:
50+
token: ${{ secrets.CI_CONTAINER_PAT }}
51+
branch: automation/comfyui-${{ steps.version.outputs.version }}
52+
title: "chore: bump ComfyUI to ${{ steps.version.outputs.version }}"
53+
body: |
54+
Updates ComfyUI version from `${{ steps.current.outputs.current_version }}` to `${{ steps.version.outputs.version }}`
55+
56+
**Triggered by:** ${{ github.event_name == 'release' && format('[Release {0}]({1})', github.event.release.tag_name, github.event.release.html_url) || 'Manual workflow dispatch' }}
57+
58+
labels: automation
59+
commit-message: "chore: bump ComfyUI to ${{ steps.version.outputs.version }}"

0 commit comments

Comments
 (0)