From 53c087176a0a63ea5e2a4cc9631936e4ff5a5260 Mon Sep 17 00:00:00 2001 From: Benjamin Lu Date: Fri, 6 Feb 2026 16:56:59 -0800 Subject: [PATCH 1/5] Automate ComfyUI release bump workflow --- .../workflows/auto_bump_comfyui_release.yml | 165 ++++++++++++++++++ scripts/recompileRequirementsFromHeaders.sh | 68 ++++++++ scripts/regenerateCoreRequirementsPatch.sh | 44 +++++ 3 files changed, 277 insertions(+) create mode 100644 .github/workflows/auto_bump_comfyui_release.yml create mode 100755 scripts/recompileRequirementsFromHeaders.sh create mode 100755 scripts/regenerateCoreRequirementsPatch.sh diff --git a/.github/workflows/auto_bump_comfyui_release.yml b/.github/workflows/auto_bump_comfyui_release.yml new file mode 100644 index 000000000..0d8c9fd2d --- /dev/null +++ b/.github/workflows/auto_bump_comfyui_release.yml @@ -0,0 +1,165 @@ +name: Auto Bump ComfyUI Release + +on: + repository_dispatch: + types: [comfyui_release_published] + workflow_dispatch: + inputs: + comfyui_version: + description: 'Optional ComfyUI version or tag (e.g. 0.12.3 or v0.12.3)' + required: false + type: string + +permissions: + contents: write + pull-requests: write + +concurrency: + group: auto-bump-comfyui-release + cancel-in-progress: true + +jobs: + bump-comfyui: + runs-on: ubuntu-latest + steps: + - name: Checkout desktop repository + uses: actions/checkout@v6 + with: + fetch-depth: 0 + + - name: Resolve target ComfyUI version + id: version + env: + GITHUB_TOKEN: ${{ github.token }} + INPUT_COMFYUI_VERSION: ${{ github.event.inputs.comfyui_version || '' }} + EVENT_NAME: ${{ github.event_name }} + PAYLOAD_TAG: ${{ github.event.client_payload.release_tag || '' }} + PAYLOAD_URL: ${{ github.event.client_payload.release_url || '' }} + run: | + set -euo pipefail + + if [ "$EVENT_NAME" = "repository_dispatch" ]; then + if [ -z "${PAYLOAD_TAG:-}" ]; then + echo "repository_dispatch missing client_payload.release_tag" >&2 + exit 1 + fi + + TARGET_VERSION="${PAYLOAD_TAG#v}" + TARGET_TAG="v${TARGET_VERSION}" + + if [ -n "${PAYLOAD_URL:-}" ]; then + TARGET_RELEASE_URL="${PAYLOAD_URL}" + else + TARGET_RELEASE_URL="https://github.com/Comfy-Org/ComfyUI/releases/tag/${TARGET_TAG}" + fi + elif [ -n "${INPUT_COMFYUI_VERSION:-}" ]; then + TARGET_VERSION="${INPUT_COMFYUI_VERSION#v}" + TARGET_TAG="v${TARGET_VERSION}" + TARGET_RELEASE_URL="https://github.com/Comfy-Org/ComfyUI/releases/tag/${TARGET_TAG}" + else + RELEASE_JSON="$(curl -fsSL \ + -H "Authorization: Bearer ${GITHUB_TOKEN}" \ + -H "Accept: application/vnd.github+json" \ + https://api.github.com/repos/Comfy-Org/ComfyUI/releases/latest)" + + TARGET_TAG="$(echo "$RELEASE_JSON" | jq -r '.tag_name')" + TARGET_RELEASE_URL="$(echo "$RELEASE_JSON" | jq -r '.html_url')" + if [ -z "$TARGET_TAG" ] || [ "$TARGET_TAG" = "null" ]; then + echo "Could not resolve ComfyUI latest release tag" >&2 + exit 1 + fi + + TARGET_VERSION="${TARGET_TAG#v}" + fi + + CURRENT_VERSION="$(jq -r '.config.comfyUI.version' package.json)" + + { + echo "target_tag=${TARGET_TAG}" + echo "target_version=${TARGET_VERSION}" + echo "target_release_url=${TARGET_RELEASE_URL}" + echo "current_version=${CURRENT_VERSION}" + } >> "$GITHUB_OUTPUT" + + if [ "$TARGET_VERSION" = "$CURRENT_VERSION" ]; then + echo "should_update=false" >> "$GITHUB_OUTPUT" + echo "ComfyUI version already at ${CURRENT_VERSION}; skipping." + else + echo "should_update=true" >> "$GITHUB_OUTPUT" + echo "Will bump ComfyUI from ${CURRENT_VERSION} to ${TARGET_VERSION}." + fi + + - name: Update package.json ComfyUI version + if: steps.version.outputs.should_update == 'true' + env: + TARGET_VERSION: ${{ steps.version.outputs.target_version }} + run: | + set -euo pipefail + TMP_FILE="$(mktemp)" + jq --arg version "$TARGET_VERSION" '.config.comfyUI.version = $version' package.json > "$TMP_FILE" + mv "$TMP_FILE" package.json + + - name: Checkout target ComfyUI release + if: steps.version.outputs.should_update == 'true' + uses: actions/checkout@v6 + with: + repository: Comfy-Org/ComfyUI + ref: ${{ steps.version.outputs.target_tag }} + path: assets/ComfyUI + + - name: Regenerate core requirements patch + if: steps.version.outputs.should_update == 'true' + run: | + set -euo pipefail + bash scripts/regenerateCoreRequirementsPatch.sh + + - name: Apply core requirements patch + if: steps.version.outputs.should_update == 'true' + run: | + set -euo pipefail + cd assets/ComfyUI + patch -p1 < ../../scripts/core-requirements.patch + + - name: Install uv + if: steps.version.outputs.should_update == 'true' + run: | + set -euo pipefail + curl -LsSf https://astral.sh/uv/install.sh | sh + echo "$HOME/.local/bin" >> "$GITHUB_PATH" + "$HOME/.local/bin/uv" --version + + - name: Recompile pre-shipped requirements + if: steps.version.outputs.should_update == 'true' + run: | + set -euo pipefail + bash scripts/recompileRequirementsFromHeaders.sh + + - name: Clean generated ComfyUI checkout + if: steps.version.outputs.should_update == 'true' + run: rm -rf assets/ComfyUI + + - name: Create pull request + if: steps.version.outputs.should_update == 'true' + uses: peter-evans/create-pull-request@v6 + with: + token: ${{ github.token }} + branch: automated/bump-comfyui-v${{ steps.version.outputs.target_version }} + delete-branch: true + commit-message: Bump ComfyUI to v${{ steps.version.outputs.target_version }} + title: Bump ComfyUI to v${{ steps.version.outputs.target_version }} + body: | + ## Summary + - bump `config.comfyUI.version` from `${{ steps.version.outputs.current_version }}` to `${{ steps.version.outputs.target_version }}` + - regenerate `scripts/core-requirements.patch` from upstream ComfyUI requirements + - recompile pre-shipped requirements in `assets/requirements/*.compiled` using `uv pip compile` commands stored in file headers + + ## Upstream Release + - ${{ steps.version.outputs.target_release_url }} + + ## Testing + - workflow regenerated compiled requirements and patch artifacts + labels: dependencies + add-paths: | + package.json + scripts/core-requirements.patch + assets/requirements/*.compiled diff --git a/scripts/recompileRequirementsFromHeaders.sh b/scripts/recompileRequirementsFromHeaders.sh new file mode 100755 index 000000000..70839bbe2 --- /dev/null +++ b/scripts/recompileRequirementsFromHeaders.sh @@ -0,0 +1,68 @@ +#!/usr/bin/env bash +set -euo pipefail + +usage() { + cat <<'USAGE' +Re-run uv compile commands embedded in assets/requirements/*.compiled headers. + +Usage: + scripts/recompileRequirementsFromHeaders.sh [--dry-run] [compiled-file ...] + +Examples: + scripts/recompileRequirementsFromHeaders.sh --dry-run + scripts/recompileRequirementsFromHeaders.sh + scripts/recompileRequirementsFromHeaders.sh assets/requirements/macos.compiled +USAGE +} + +dry_run=0 +compiled_files=() + +for argument in "$@"; do + case "$argument" in + --dry-run) + dry_run=1 + ;; + -h|--help) + usage + exit 0 + ;; + *) + compiled_files+=("$argument") + ;; + esac +done + +if [[ ! -f "package.json" || ! -d "assets/requirements" ]]; then + echo "Run this script from the desktop repository root." >&2 + exit 1 +fi + +if [[ ${#compiled_files[@]} -eq 0 ]]; then + mapfile -t compiled_files < <(find assets/requirements -maxdepth 1 -type f -name '*.compiled' | sort) +fi + +if [[ ${#compiled_files[@]} -eq 0 ]]; then + echo "No compiled requirements files found." >&2 + exit 1 +fi + +for compiled_file in "${compiled_files[@]}"; do + if [[ ! -f "$compiled_file" ]]; then + echo "Missing file: $compiled_file" >&2 + exit 1 + fi + + compile_command="$(sed -n '2s/^#[[:space:]]*//p' "$compiled_file")" + if [[ -z "$compile_command" ]]; then + echo "Could not extract compile command from line 2 of $compiled_file" >&2 + exit 1 + fi + + echo "[$compiled_file]" + echo "$compile_command" + + if [[ $dry_run -eq 0 ]]; then + bash -lc "$compile_command" + fi +done diff --git a/scripts/regenerateCoreRequirementsPatch.sh b/scripts/regenerateCoreRequirementsPatch.sh new file mode 100755 index 000000000..f587ed59a --- /dev/null +++ b/scripts/regenerateCoreRequirementsPatch.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash +set -euo pipefail + +requirements_path="${1:-assets/ComfyUI/requirements.txt}" +output_patch="${2:-scripts/core-requirements.patch}" + +if [[ ! -f "$requirements_path" ]]; then + echo "Requirements file not found: $requirements_path" >&2 + exit 1 +fi + +tmp_dir="$(mktemp -d)" +trap 'rm -rf "$tmp_dir"' EXIT + +original_requirements="$tmp_dir/requirements.original.txt" +patched_requirements="$tmp_dir/requirements.patched.txt" + +cp "$requirements_path" "$original_requirements" + +if ! grep -q '^comfyui-frontend-package==' "$original_requirements"; then + echo "Missing comfyui-frontend-package pin in: $requirements_path" >&2 + exit 1 +fi + +grep -v '^comfyui-frontend-package==' "$original_requirements" > "$patched_requirements" + +if cmp -s "$original_requirements" "$patched_requirements"; then + echo "No changes detected after removing comfyui-frontend-package from $requirements_path" >&2 + exit 1 +fi + +diff_body="$(diff -u --label a/requirements.txt --label b/requirements.txt "$original_requirements" "$patched_requirements" || true)" + +if [[ -z "$diff_body" ]]; then + echo "Failed to generate patch body for $requirements_path" >&2 + exit 1 +fi + +{ + echo "diff --git a/requirements.txt b/requirements.txt" + echo "$diff_body" +} > "$output_patch" + +echo "Wrote $output_patch from $requirements_path" From 9eccdce854592c88ef4dc82d848b34f9c9ee4280 Mon Sep 17 00:00:00 2001 From: Benjamin Lu Date: Fri, 6 Feb 2026 16:59:23 -0800 Subject: [PATCH 2/5] Harden release bump workflow inputs and scripts --- .../workflows/auto_bump_comfyui_release.yml | 25 ++++++++++- scripts/recompileRequirementsFromHeaders.sh | 42 ++++++++++++++++++- scripts/regenerateCoreRequirementsPatch.sh | 5 ++- 3 files changed, 66 insertions(+), 6 deletions(-) diff --git a/.github/workflows/auto_bump_comfyui_release.yml b/.github/workflows/auto_bump_comfyui_release.yml index 0d8c9fd2d..742a34983 100644 --- a/.github/workflows/auto_bump_comfyui_release.yml +++ b/.github/workflows/auto_bump_comfyui_release.yml @@ -38,13 +38,20 @@ jobs: run: | set -euo pipefail + normalize_version() { + local raw_version="$1" + raw_version="${raw_version#refs/tags/}" + raw_version="${raw_version#v}" + echo "$raw_version" + } + if [ "$EVENT_NAME" = "repository_dispatch" ]; then if [ -z "${PAYLOAD_TAG:-}" ]; then echo "repository_dispatch missing client_payload.release_tag" >&2 exit 1 fi - TARGET_VERSION="${PAYLOAD_TAG#v}" + TARGET_VERSION="$(normalize_version "$PAYLOAD_TAG")" TARGET_TAG="v${TARGET_VERSION}" if [ -n "${PAYLOAD_URL:-}" ]; then @@ -53,7 +60,7 @@ jobs: TARGET_RELEASE_URL="https://github.com/Comfy-Org/ComfyUI/releases/tag/${TARGET_TAG}" fi elif [ -n "${INPUT_COMFYUI_VERSION:-}" ]; then - TARGET_VERSION="${INPUT_COMFYUI_VERSION#v}" + TARGET_VERSION="$(normalize_version "$INPUT_COMFYUI_VERSION")" TARGET_TAG="v${TARGET_VERSION}" TARGET_RELEASE_URL="https://github.com/Comfy-Org/ComfyUI/releases/tag/${TARGET_TAG}" else @@ -72,6 +79,20 @@ jobs: TARGET_VERSION="${TARGET_TAG#v}" fi + if [[ -z "$TARGET_VERSION" || ! "$TARGET_VERSION" =~ ^[0-9A-Za-z._-]+$ ]]; then + echo "Invalid ComfyUI version: ${TARGET_VERSION}" >&2 + exit 1 + fi + + TAG_STATUS="$(curl -fsSL -o /dev/null -w '%{http_code}' \ + -H "Authorization: Bearer ${GITHUB_TOKEN}" \ + -H "Accept: application/vnd.github+json" \ + "https://api.github.com/repos/Comfy-Org/ComfyUI/git/ref/tags/${TARGET_TAG}")" + if [ "$TAG_STATUS" != "200" ]; then + echo "ComfyUI tag not found: ${TARGET_TAG}" >&2 + exit 1 + fi + CURRENT_VERSION="$(jq -r '.config.comfyUI.version' package.json)" { diff --git a/scripts/recompileRequirementsFromHeaders.sh b/scripts/recompileRequirementsFromHeaders.sh index 70839bbe2..97b73cb74 100755 --- a/scripts/recompileRequirementsFromHeaders.sh +++ b/scripts/recompileRequirementsFromHeaders.sh @@ -53,9 +53,47 @@ for compiled_file in "${compiled_files[@]}"; do exit 1 fi - compile_command="$(sed -n '2s/^#[[:space:]]*//p' "$compiled_file")" + compile_command="$( + awk ' + /^#/ { + line = $0 + sub(/^#[[:space:]]*/, "", line) + if (line ~ /^uv[[:space:]]+pip[[:space:]]+compile([[:space:]]|$)/) { + print line + exit + } + } + ' "$compiled_file" + )" if [[ -z "$compile_command" ]]; then - echo "Could not extract compile command from line 2 of $compiled_file" >&2 + echo "Could not extract uv pip compile command from header comments in $compiled_file" >&2 + exit 1 + fi + + output_path="$(printf '%s\n' "$compile_command" | awk '{ + for (i = 1; i <= NF; i++) { + if ($i == "-o" && i < NF) { + print $(i + 1) + exit + } + } + }')" + if [[ -z "$output_path" ]]; then + echo "Could not find output path (-o) in compile command for $compiled_file" >&2 + exit 1 + fi + + output_path="${output_path%\"}" + output_path="${output_path#\"}" + output_path="${output_path%\'}" + output_path="${output_path#\'}" + + normalized_compiled_file="${compiled_file#./}" + normalized_output_path="${output_path#./}" + if [[ "$normalized_output_path" != "$normalized_compiled_file" ]]; then + echo "Compile command output path mismatch for $compiled_file" >&2 + echo "Expected: $normalized_compiled_file" >&2 + echo "Found: $normalized_output_path" >&2 exit 1 fi diff --git a/scripts/regenerateCoreRequirementsPatch.sh b/scripts/regenerateCoreRequirementsPatch.sh index f587ed59a..74939bde1 100755 --- a/scripts/regenerateCoreRequirementsPatch.sh +++ b/scripts/regenerateCoreRequirementsPatch.sh @@ -14,15 +14,16 @@ trap 'rm -rf "$tmp_dir"' EXIT original_requirements="$tmp_dir/requirements.original.txt" patched_requirements="$tmp_dir/requirements.patched.txt" +frontend_pattern='^[[:space:]]*comfyui-frontend-package(\[[^]]+\])?([[:space:]]*([<>=!~].*)?)?$' cp "$requirements_path" "$original_requirements" -if ! grep -q '^comfyui-frontend-package==' "$original_requirements"; then +if ! grep -Eq "$frontend_pattern" "$original_requirements"; then echo "Missing comfyui-frontend-package pin in: $requirements_path" >&2 exit 1 fi -grep -v '^comfyui-frontend-package==' "$original_requirements" > "$patched_requirements" +grep -Ev "$frontend_pattern" "$original_requirements" > "$patched_requirements" if cmp -s "$original_requirements" "$patched_requirements"; then echo "No changes detected after removing comfyui-frontend-package from $requirements_path" >&2 From 842c772f82d805554c10223338fa04e159019576 Mon Sep 17 00:00:00 2001 From: Benjamin Lu Date: Fri, 6 Feb 2026 17:08:54 -0800 Subject: [PATCH 3/5] Use manual workflow dispatch only for ComfyUI bumps --- .../workflows/auto_bump_comfyui_release.yml | 21 +------------------ 1 file changed, 1 insertion(+), 20 deletions(-) diff --git a/.github/workflows/auto_bump_comfyui_release.yml b/.github/workflows/auto_bump_comfyui_release.yml index 742a34983..7da356af8 100644 --- a/.github/workflows/auto_bump_comfyui_release.yml +++ b/.github/workflows/auto_bump_comfyui_release.yml @@ -1,8 +1,6 @@ name: Auto Bump ComfyUI Release on: - repository_dispatch: - types: [comfyui_release_published] workflow_dispatch: inputs: comfyui_version: @@ -32,9 +30,6 @@ jobs: env: GITHUB_TOKEN: ${{ github.token }} INPUT_COMFYUI_VERSION: ${{ github.event.inputs.comfyui_version || '' }} - EVENT_NAME: ${{ github.event_name }} - PAYLOAD_TAG: ${{ github.event.client_payload.release_tag || '' }} - PAYLOAD_URL: ${{ github.event.client_payload.release_url || '' }} run: | set -euo pipefail @@ -45,21 +40,7 @@ jobs: echo "$raw_version" } - if [ "$EVENT_NAME" = "repository_dispatch" ]; then - if [ -z "${PAYLOAD_TAG:-}" ]; then - echo "repository_dispatch missing client_payload.release_tag" >&2 - exit 1 - fi - - TARGET_VERSION="$(normalize_version "$PAYLOAD_TAG")" - TARGET_TAG="v${TARGET_VERSION}" - - if [ -n "${PAYLOAD_URL:-}" ]; then - TARGET_RELEASE_URL="${PAYLOAD_URL}" - else - TARGET_RELEASE_URL="https://github.com/Comfy-Org/ComfyUI/releases/tag/${TARGET_TAG}" - fi - elif [ -n "${INPUT_COMFYUI_VERSION:-}" ]; then + if [ -n "${INPUT_COMFYUI_VERSION:-}" ]; then TARGET_VERSION="$(normalize_version "$INPUT_COMFYUI_VERSION")" TARGET_TAG="v${TARGET_VERSION}" TARGET_RELEASE_URL="https://github.com/Comfy-Org/ComfyUI/releases/tag/${TARGET_TAG}" From 982b9b54ba43abde40bc32235d14dc4d2910c99e Mon Sep 17 00:00:00 2001 From: Benjamin Lu Date: Tue, 10 Feb 2026 14:03:12 -0800 Subject: [PATCH 4/5] Handle release repository_dispatch in auto bump workflow --- .../workflows/auto_bump_comfyui_release.yml | 29 +++++++++++++++++-- scripts/recompileRequirementsFromHeaders.sh | 7 ++++- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/.github/workflows/auto_bump_comfyui_release.yml b/.github/workflows/auto_bump_comfyui_release.yml index 7da356af8..f9d167baf 100644 --- a/.github/workflows/auto_bump_comfyui_release.yml +++ b/.github/workflows/auto_bump_comfyui_release.yml @@ -1,6 +1,8 @@ name: Auto Bump ComfyUI Release on: + repository_dispatch: + types: [comfyui_release_published] workflow_dispatch: inputs: comfyui_version: @@ -30,6 +32,9 @@ jobs: env: GITHUB_TOKEN: ${{ github.token }} INPUT_COMFYUI_VERSION: ${{ github.event.inputs.comfyui_version || '' }} + EVENT_NAME: ${{ github.event_name }} + PAYLOAD_TAG: ${{ github.event.client_payload.release_tag || '' }} + PAYLOAD_URL: ${{ github.event.client_payload.release_url || '' }} run: | set -euo pipefail @@ -40,7 +45,21 @@ jobs: echo "$raw_version" } - if [ -n "${INPUT_COMFYUI_VERSION:-}" ]; then + if [ "$EVENT_NAME" = "repository_dispatch" ]; then + if [ -z "${PAYLOAD_TAG:-}" ]; then + echo "repository_dispatch missing client_payload.release_tag" >&2 + exit 1 + fi + + TARGET_VERSION="$(normalize_version "$PAYLOAD_TAG")" + TARGET_TAG="v${TARGET_VERSION}" + + if [ -n "${PAYLOAD_URL:-}" ]; then + TARGET_RELEASE_URL="${PAYLOAD_URL}" + else + TARGET_RELEASE_URL="https://github.com/Comfy-Org/ComfyUI/releases/tag/${TARGET_TAG}" + fi + elif [ -n "${INPUT_COMFYUI_VERSION:-}" ]; then TARGET_VERSION="$(normalize_version "$INPUT_COMFYUI_VERSION")" TARGET_TAG="v${TARGET_VERSION}" TARGET_RELEASE_URL="https://github.com/Comfy-Org/ComfyUI/releases/tag/${TARGET_TAG}" @@ -65,7 +84,7 @@ jobs: exit 1 fi - TAG_STATUS="$(curl -fsSL -o /dev/null -w '%{http_code}' \ + TAG_STATUS="$(curl -sSL -o /dev/null -w '%{http_code}' \ -H "Authorization: Bearer ${GITHUB_TOKEN}" \ -H "Accept: application/vnd.github+json" \ "https://api.github.com/repos/Comfy-Org/ComfyUI/git/ref/tags/${TARGET_TAG}")" @@ -122,6 +141,12 @@ jobs: cd assets/ComfyUI patch -p1 < ../../scripts/core-requirements.patch + - name: Setup Python + if: steps.version.outputs.should_update == 'true' + uses: actions/setup-python@v5 + with: + python-version: '3.12' + - name: Install uv if: steps.version.outputs.should_update == 'true' run: | diff --git a/scripts/recompileRequirementsFromHeaders.sh b/scripts/recompileRequirementsFromHeaders.sh index 97b73cb74..ae9119dc0 100755 --- a/scripts/recompileRequirementsFromHeaders.sh +++ b/scripts/recompileRequirementsFromHeaders.sh @@ -27,6 +27,11 @@ for argument in "$@"; do usage exit 0 ;; + --*) + echo "Unknown option: $argument" >&2 + usage >&2 + exit 1 + ;; *) compiled_files+=("$argument") ;; @@ -101,6 +106,6 @@ for compiled_file in "${compiled_files[@]}"; do echo "$compile_command" if [[ $dry_run -eq 0 ]]; then - bash -lc "$compile_command" + bash -c "$compile_command" fi done From 519d391316557614e9740c5f30dee5bed88ad04a Mon Sep 17 00:00:00 2001 From: Benjamin Lu Date: Tue, 10 Feb 2026 18:10:49 -0800 Subject: [PATCH 5/5] Use specific token --- .github/workflows/auto_bump_comfyui_release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/auto_bump_comfyui_release.yml b/.github/workflows/auto_bump_comfyui_release.yml index f9d167baf..3b52d100c 100644 --- a/.github/workflows/auto_bump_comfyui_release.yml +++ b/.github/workflows/auto_bump_comfyui_release.yml @@ -169,7 +169,7 @@ jobs: if: steps.version.outputs.should_update == 'true' uses: peter-evans/create-pull-request@v6 with: - token: ${{ github.token }} + token: ${{ secrets.GH_APP_TOKEN }} branch: automated/bump-comfyui-v${{ steps.version.outputs.target_version }} delete-branch: true commit-message: Bump ComfyUI to v${{ steps.version.outputs.target_version }}