diff --git a/.github/workflows/api-update-electron-api-types.yaml b/.github/workflows/api-update-electron-api-types.yaml index c25742118..b7c5bce71 100644 --- a/.github/workflows/api-update-electron-api-types.yaml +++ b/.github/workflows/api-update-electron-api-types.yaml @@ -1,5 +1,5 @@ +# Description: When upstream electron API is updated, click dispatch to update the TypeScript type definitions in this repo name: 'Api: Update Electron API Types' -description: 'When upstream electron API is updated, click dispatch to update the TypeScript type definitions in this repo' on: workflow_dispatch: diff --git a/.github/workflows/api-update-manager-api-types.yaml b/.github/workflows/api-update-manager-api-types.yaml index c6469326d..a709baecf 100644 --- a/.github/workflows/api-update-manager-api-types.yaml +++ b/.github/workflows/api-update-manager-api-types.yaml @@ -1,5 +1,5 @@ +# Description: When upstream ComfyUI-Manager API is updated, click dispatch to update the TypeScript type definitions in this repo name: 'Api: Update Manager API Types' -description: 'When upstream ComfyUI-Manager API is updated, click dispatch to update the TypeScript type definitions in this repo' on: # Manual trigger diff --git a/.github/workflows/api-update-registry-api-types.yaml b/.github/workflows/api-update-registry-api-types.yaml index 41a3d0a7a..5ae701dc2 100644 --- a/.github/workflows/api-update-registry-api-types.yaml +++ b/.github/workflows/api-update-registry-api-types.yaml @@ -1,5 +1,5 @@ +# Description: When upstream comfy-api is updated, click dispatch to update the TypeScript type definitions in this repo name: 'Api: Update Registry API Types' -description: 'When upstream comfy-api is updated, click dispatch to update the TypeScript type definitions in this repo' on: # Manual trigger diff --git a/.github/workflows/ci-json-validation.yaml b/.github/workflows/ci-json-validation.yaml index ae0359014..8c55705e7 100644 --- a/.github/workflows/ci-json-validation.yaml +++ b/.github/workflows/ci-json-validation.yaml @@ -1,5 +1,5 @@ +# Description: Validates JSON syntax in all tracked .json files (excluding tsconfig*.json) using jq name: "CI: JSON Validation" -description: "Validates JSON syntax in all tracked .json files (excluding tsconfig*.json) using jq" on: push: diff --git a/.github/workflows/ci-lint-format.yaml b/.github/workflows/ci-lint-format.yaml index 4221d5174..3ce6d6aa9 100644 --- a/.github/workflows/ci-lint-format.yaml +++ b/.github/workflows/ci-lint-format.yaml @@ -1,5 +1,5 @@ +# Description: Linting and code formatting validation for pull requests name: "CI: Lint Format" -description: "Linting and code formatting validation for pull requests" on: pull_request: diff --git a/.github/workflows/ci-python-validation.yaml b/.github/workflows/ci-python-validation.yaml index 2b8279236..1625ca29f 100644 --- a/.github/workflows/ci-python-validation.yaml +++ b/.github/workflows/ci-python-validation.yaml @@ -1,5 +1,5 @@ +# Description: Validates Python code in tools/devtools directory name: "CI: Python Validation" -description: "Validates Python code in tools/devtools directory" on: pull_request: diff --git a/.github/workflows/ci-tests-e2e-forks.yaml b/.github/workflows/ci-tests-e2e-forks.yaml index 7eadfa63a..c1828b7fb 100644 --- a/.github/workflows/ci-tests-e2e-forks.yaml +++ b/.github/workflows/ci-tests-e2e-forks.yaml @@ -1,5 +1,5 @@ +# Description: Deploys test results from forked PRs (forks can't access deployment secrets) name: "CI: Tests E2E (Deploy for Forks)" -description: "Deploys test results from forked PRs (forks can't access deployment secrets)" on: workflow_run: diff --git a/.github/workflows/ci-tests-e2e.yaml b/.github/workflows/ci-tests-e2e.yaml index 8d793e0fa..f4a770574 100644 --- a/.github/workflows/ci-tests-e2e.yaml +++ b/.github/workflows/ci-tests-e2e.yaml @@ -1,5 +1,5 @@ +# Description: End-to-end testing with Playwright across multiple browsers, deploys test reports to Cloudflare Pages name: "CI: Tests E2E" -description: "End-to-end testing with Playwright across multiple browsers, deploys test reports to Cloudflare Pages" on: push: diff --git a/.github/workflows/ci-tests-storybook-forks.yaml b/.github/workflows/ci-tests-storybook-forks.yaml index b6cad2060..e93b5bb90 100644 --- a/.github/workflows/ci-tests-storybook-forks.yaml +++ b/.github/workflows/ci-tests-storybook-forks.yaml @@ -1,5 +1,5 @@ +# Description: Deploys Storybook previews from forked PRs (forks can't access deployment secrets) name: "CI: Tests Storybook (Deploy for Forks)" -description: "Deploys Storybook previews from forked PRs (forks can't access deployment secrets)" on: workflow_run: diff --git a/.github/workflows/ci-tests-storybook.yaml b/.github/workflows/ci-tests-storybook.yaml index 5734f9980..8158787a2 100644 --- a/.github/workflows/ci-tests-storybook.yaml +++ b/.github/workflows/ci-tests-storybook.yaml @@ -1,10 +1,9 @@ +# Description: Builds Storybook and runs visual regression testing via Chromatic, deploys previews to Cloudflare Pages name: "CI: Tests Storybook" -description: "Builds Storybook and runs visual regression testing via Chromatic, deploys previews to Cloudflare Pages" on: workflow_dispatch: # Allow manual triggering pull_request: - branches: [main] jobs: # Post starting comment for non-forked PRs diff --git a/.github/workflows/ci-tests-unit.yaml b/.github/workflows/ci-tests-unit.yaml index 2f4417594..8a97a9128 100644 --- a/.github/workflows/ci-tests-unit.yaml +++ b/.github/workflows/ci-tests-unit.yaml @@ -1,5 +1,5 @@ +# Description: Unit and component testing with Vitest name: "CI: Tests Unit" -description: "Unit and component testing with Vitest" on: push: diff --git a/.github/workflows/ci-yaml-validation.yaml b/.github/workflows/ci-yaml-validation.yaml index 41c88ae2c..cf2a3b648 100644 --- a/.github/workflows/ci-yaml-validation.yaml +++ b/.github/workflows/ci-yaml-validation.yaml @@ -1,5 +1,5 @@ +# Description: Validates YAML syntax and style using yamllint with relaxed rules name: "CI: YAML Validation" -description: "Validates YAML syntax and style using yamllint with relaxed rules" on: push: diff --git a/.github/workflows/cloud-backport-tag.yaml b/.github/workflows/cloud-backport-tag.yaml new file mode 100644 index 000000000..c0edec170 --- /dev/null +++ b/.github/workflows/cloud-backport-tag.yaml @@ -0,0 +1,69 @@ +--- +name: Cloud Backport Tag + +on: + pull_request: + types: ['closed'] + branches: [cloud/*] + +jobs: + create-tag: + if: > + github.event.pull_request.merged == true && + contains(github.event.pull_request.labels.*.name, 'backport') + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: read + + steps: + - name: Checkout merge commit + uses: actions/checkout@v5 + with: + ref: ${{ github.event.pull_request.merge_commit_sha }} + + - name: Setup Node.js + uses: actions/setup-node@v5 + with: + node-version-file: '.nvmrc' + + - name: Create tag for cloud backport + id: tag + run: | + set -euo pipefail + + BRANCH="${{ github.event.pull_request.base.ref }}" + if [[ ! "$BRANCH" =~ ^cloud/([0-9]+)\.([0-9]+)$ ]]; then + echo "::error::Base branch '$BRANCH' is not a cloud/x.y branch" + exit 1 + fi + + MAJOR="${BASH_REMATCH[1]}" + MINOR="${BASH_REMATCH[2]}" + + VERSION=$(node -p "require('./package.json').version") + if [[ "$VERSION" =~ ^${MAJOR}\.${MINOR}\.([0-9]+)(-.+)?$ ]]; then + PATCH="${BASH_REMATCH[1]}" + SUFFIX="${BASH_REMATCH[2]:-}" + else + echo "::error::Version '${VERSION}' does not match cloud branch '${BRANCH}'" + exit 1 + fi + + TAG="cloud/v${VERSION}" + + if git ls-remote --tags origin "${TAG}" | grep -Fq "refs/tags/${TAG}"; then + echo "::notice::Tag ${TAG} already exists; skipping" + echo "tag=${TAG}" >> "$GITHUB_OUTPUT" + exit 0 + fi + + git tag "${TAG}" "${{ github.event.pull_request.merge_commit_sha }}" + git push origin "${TAG}" + echo "tag=${TAG}" >> "$GITHUB_OUTPUT" + { + echo "Created tag: ${TAG}" + echo "Branch: ${BRANCH}" + echo "Version: ${VERSION}" + echo "Commit: ${{ github.event.pull_request.merge_commit_sha }}" + } >> "$GITHUB_STEP_SUMMARY" diff --git a/.github/workflows/i18n-update-core.yaml b/.github/workflows/i18n-update-core.yaml index cb06e228a..a4e73f538 100644 --- a/.github/workflows/i18n-update-core.yaml +++ b/.github/workflows/i18n-update-core.yaml @@ -1,5 +1,5 @@ +# Description: Generates and updates translations for core ComfyUI components using OpenAI name: "i18n: Update Core" -description: "Generates and updates translations for core ComfyUI components using OpenAI" on: # Manual dispatch for urgent translation updates diff --git a/.github/workflows/pr-backport.yaml b/.github/workflows/pr-backport.yaml index c56126af4..69607d6fb 100644 --- a/.github/workflows/pr-backport.yaml +++ b/.github/workflows/pr-backport.yaml @@ -78,8 +78,7 @@ jobs: if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then LABELS=$(gh pr view ${{ inputs.pr_number }} --json labels | jq -r '.labels[].name') else - LABELS='${{ toJSON(github.event.pull_request.labels) }}' - LABELS=$(echo "$LABELS" | jq -r '.[].name') + LABELS=$(jq -r '.pull_request.labels[].name' "$GITHUB_EVENT_PATH") fi add_target() { @@ -237,8 +236,8 @@ jobs: PR_TITLE=$(echo "$PR_DATA" | jq -r '.title') MERGE_COMMIT=$(echo "$PR_DATA" | jq -r '.mergeCommit.oid') else - PR_TITLE="${{ github.event.pull_request.title }}" - MERGE_COMMIT="${{ github.event.pull_request.merge_commit_sha }}" + PR_TITLE=$(jq -r '.pull_request.title' "$GITHUB_EVENT_PATH") + MERGE_COMMIT=$(jq -r '.pull_request.merge_commit_sha' "$GITHUB_EVENT_PATH") fi for target in ${{ steps.filter-targets.outputs.pending-targets }}; do @@ -327,8 +326,8 @@ jobs: PR_TITLE=$(echo "$PR_DATA" | jq -r '.title') PR_AUTHOR=$(echo "$PR_DATA" | jq -r '.author.login') else - PR_TITLE="${{ github.event.pull_request.title }}" - PR_AUTHOR="${{ github.event.pull_request.user.login }}" + PR_TITLE=$(jq -r '.pull_request.title' "$GITHUB_EVENT_PATH") + PR_AUTHOR=$(jq -r '.pull_request.user.login' "$GITHUB_EVENT_PATH") fi for backport in ${{ steps.backport.outputs.success }}; do @@ -365,9 +364,9 @@ jobs: PR_AUTHOR=$(echo "$PR_DATA" | jq -r '.author.login') MERGE_COMMIT=$(echo "$PR_DATA" | jq -r '.mergeCommit.oid') else - PR_NUMBER="${{ github.event.pull_request.number }}" - PR_AUTHOR="${{ github.event.pull_request.user.login }}" - MERGE_COMMIT="${{ github.event.pull_request.merge_commit_sha }}" + PR_NUMBER=$(jq -r '.pull_request.number' "$GITHUB_EVENT_PATH") + PR_AUTHOR=$(jq -r '.pull_request.user.login' "$GITHUB_EVENT_PATH") + MERGE_COMMIT=$(jq -r '.pull_request.merge_commit_sha' "$GITHUB_EVENT_PATH") fi for failure in ${{ steps.backport.outputs.failed }}; do diff --git a/.github/workflows/pr-claude-review.yaml b/.github/workflows/pr-claude-review.yaml index e4684af07..ec4159c1c 100644 --- a/.github/workflows/pr-claude-review.yaml +++ b/.github/workflows/pr-claude-review.yaml @@ -1,5 +1,5 @@ +# Description: AI-powered code review triggered by adding the 'claude-review' label to a PR name: "PR: Claude Review" -description: "AI-powered code review triggered by adding the 'claude-review' label to a PR" permissions: contents: read diff --git a/.github/workflows/release-branch-create.yaml b/.github/workflows/release-branch-create.yaml index 88d7d53bc..3e7290fdf 100644 --- a/.github/workflows/release-branch-create.yaml +++ b/.github/workflows/release-branch-create.yaml @@ -148,10 +148,10 @@ jobs: done { - echo "results<<'EOF'" + echo "results<> $GITHUB_OUTPUT + } >> "$GITHUB_OUTPUT" - name: Ensure release labels if: steps.check_version.outputs.is_minor_bump == 'true' diff --git a/.github/workflows/release-version-bump.yaml b/.github/workflows/release-version-bump.yaml index 30254c6aa..766f5d406 100644 --- a/.github/workflows/release-version-bump.yaml +++ b/.github/workflows/release-version-bump.yaml @@ -1,5 +1,5 @@ +# Description: Manual workflow to increment package version with semantic versioning support name: "Release: Version Bump" -description: "Manual workflow to increment package version with semantic versioning support" on: workflow_dispatch: diff --git a/.github/workflows/release-weekly-comfyui.yaml b/.github/workflows/release-weekly-comfyui.yaml new file mode 100644 index 000000000..a46c55086 --- /dev/null +++ b/.github/workflows/release-weekly-comfyui.yaml @@ -0,0 +1,292 @@ +# Automated weekly workflow to bump ComfyUI frontend RC releases +name: "Release: Weekly ComfyUI" + +on: + # Schedule for Monday at 12:00 PM PST (20:00 UTC) + schedule: + - cron: '0 20 * * 1' + + # Allow manual triggering + workflow_dispatch: + inputs: + comfyui_fork: + description: 'ComfyUI fork to use for PR (e.g., Comfy-Org/ComfyUI)' + required: false + default: 'Comfy-Org/ComfyUI' + type: string + +jobs: + resolve-version: + runs-on: ubuntu-latest + outputs: + current_version: ${{ steps.resolve.outputs.current_version }} + target_version: ${{ steps.resolve.outputs.target_version }} + target_minor: ${{ steps.resolve.outputs.target_minor }} + target_branch: ${{ steps.resolve.outputs.target_branch }} + needs_release: ${{ steps.resolve.outputs.needs_release }} + diff_url: ${{ steps.resolve.outputs.diff_url }} + latest_patch_tag: ${{ steps.resolve.outputs.latest_patch_tag }} + + steps: + - name: Checkout ComfyUI_frontend + uses: actions/checkout@v5 + with: + fetch-depth: 0 + path: frontend + + - name: Checkout ComfyUI (sparse) + uses: actions/checkout@v5 + with: + repository: comfyanonymous/ComfyUI + sparse-checkout: | + requirements.txt + path: comfyui + + - name: Install pnpm + uses: pnpm/action-setup@v4 + with: + version: 10 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: lts/* + + - name: Install dependencies + working-directory: frontend + run: pnpm install --frozen-lockfile + + - name: Resolve release information + id: resolve + working-directory: frontend + run: | + set -euo pipefail + + # Run the resolver script + if ! RESULT=$(pnpm exec tsx scripts/cicd/resolve-comfyui-release.ts ../comfyui .); then + echo "Failed to resolve release information" + exit 1 + fi + + echo "Resolver output:" + echo "$RESULT" + + # Validate JSON output + if ! echo "$RESULT" | jq empty 2>/dev/null; then + echo "Invalid JSON output from resolver" + exit 1 + fi + + # Parse JSON output and set outputs + echo "current_version=$(echo "$RESULT" | jq -r '.current_version')" >> $GITHUB_OUTPUT + echo "target_version=$(echo "$RESULT" | jq -r '.target_version')" >> $GITHUB_OUTPUT + echo "target_minor=$(echo "$RESULT" | jq -r '.target_minor')" >> $GITHUB_OUTPUT + echo "target_branch=$(echo "$RESULT" | jq -r '.target_branch')" >> $GITHUB_OUTPUT + echo "needs_release=$(echo "$RESULT" | jq -r '.needs_release')" >> $GITHUB_OUTPUT + echo "diff_url=$(echo "$RESULT" | jq -r '.diff_url')" >> $GITHUB_OUTPUT + echo "latest_patch_tag=$(echo "$RESULT" | jq -r '.latest_patch_tag')" >> $GITHUB_OUTPUT + + - name: Summary + run: | + echo "## Release Information" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "- Current version: ${{ steps.resolve.outputs.current_version }}" >> $GITHUB_STEP_SUMMARY + echo "- Target version: ${{ steps.resolve.outputs.target_version }}" >> $GITHUB_STEP_SUMMARY + echo "- Target branch: ${{ steps.resolve.outputs.target_branch }}" >> $GITHUB_STEP_SUMMARY + echo "- Needs release: ${{ steps.resolve.outputs.needs_release }}" >> $GITHUB_STEP_SUMMARY + echo "- Diff: [${{ steps.resolve.outputs.current_version }}...${{ steps.resolve.outputs.target_version }}](${{ steps.resolve.outputs.diff_url }})" >> $GITHUB_STEP_SUMMARY + + trigger-release-if-needed: + needs: resolve-version + if: needs.resolve-version.outputs.needs_release == 'true' + runs-on: ubuntu-latest + + steps: + - name: Trigger release workflow + env: + GH_TOKEN: ${{ secrets.PR_GH_TOKEN }} + run: | + set -euo pipefail + + echo "Triggering release workflow for branch ${{ needs.resolve-version.outputs.target_branch }}" + + # Trigger the release-version-bump workflow + if ! gh workflow run release-version-bump.yaml \ + --repo Comfy-Org/ComfyUI_frontend \ + --ref main \ + --field version_type=patch \ + --field branch=${{ needs.resolve-version.outputs.target_branch }}; then + echo "Failed to trigger release workflow" + exit 1 + fi + + echo "Release workflow triggered successfully for ${{ needs.resolve-version.outputs.target_branch }}" + + - name: Summary + run: | + echo "## Release Workflow Triggered" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "- Branch: ${{ needs.resolve-version.outputs.target_branch }}" >> $GITHUB_STEP_SUMMARY + echo "- Target version: ${{ needs.resolve-version.outputs.target_version }}" >> $GITHUB_STEP_SUMMARY + echo "- [View workflow runs](https://github.com/Comfy-Org/ComfyUI_frontend/actions/workflows/release-version-bump.yaml)" >> $GITHUB_STEP_SUMMARY + + create-comfyui-pr: + needs: [resolve-version, trigger-release-if-needed] + if: always() && needs.resolve-version.result == 'success' + runs-on: ubuntu-latest + + steps: + - name: Checkout ComfyUI fork + uses: actions/checkout@v5 + with: + repository: ${{ inputs.comfyui_fork || 'Comfy-Org/ComfyUI' }} + token: ${{ secrets.PR_GH_TOKEN }} + path: comfyui + + - name: Sync with upstream + working-directory: comfyui + run: | + set -euo pipefail + + # Fetch latest upstream to base our branch on fresh code + # Note: This only affects the local checkout, NOT the fork's master branch + # We only push the automation branch, leaving the fork's master untouched + echo "Fetching upstream master..." + if ! git fetch https://github.com/comfyanonymous/ComfyUI.git master; then + echo "Failed to fetch upstream master" + exit 1 + fi + + echo "Checking out upstream master..." + if ! git checkout FETCH_HEAD; then + echo "Failed to checkout FETCH_HEAD" + exit 1 + fi + + echo "Successfully synced with upstream master" + + - name: Update requirements.txt + working-directory: comfyui + run: | + set -euo pipefail + + TARGET_VERSION="${{ needs.resolve-version.outputs.target_version }}" + echo "Updating comfyui-frontend-package to ${TARGET_VERSION}" + + # Update the comfyui-frontend-package version (POSIX-compatible) + sed -i.bak "s/comfyui-frontend-package==[0-9.][0-9.]*/comfyui-frontend-package==${TARGET_VERSION}/" requirements.txt + rm requirements.txt.bak + + # Verify the change was made + if ! grep -q "comfyui-frontend-package==${TARGET_VERSION}" requirements.txt; then + echo "Failed to update requirements.txt" + exit 1 + fi + + echo "Updated requirements.txt:" + grep comfyui-frontend-package requirements.txt + + - name: Build PR description + id: pr-body + run: | + BODY=$(cat <<'EOF' + Bumps frontend to ${{ needs.resolve-version.outputs.target_version }} + + Test quickly: + + ```bash + python main.py --front-end-version Comfy-Org/ComfyUI_frontend@${{ needs.resolve-version.outputs.target_version }} + ``` + + - Diff: [v${{ needs.resolve-version.outputs.current_version }}...v${{ needs.resolve-version.outputs.target_version }}](${{ needs.resolve-version.outputs.diff_url }}) + - PyPI: https://pypi.org/project/comfyui-frontend-package/${{ needs.resolve-version.outputs.target_version }}/ + - npm: https://www.npmjs.com/package/@comfyorg/comfyui-frontend-types/v/${{ needs.resolve-version.outputs.target_version }} + EOF + ) + + # Add release PR note if release was triggered + if [ "${{ needs.resolve-version.outputs.needs_release }}" = "true" ]; then + RELEASE_NOTE="⚠️ **Release PR must be merged first** - check [release workflow runs](https://github.com/Comfy-Org/ComfyUI_frontend/actions/workflows/release-version-bump.yaml)" + BODY=$''"${RELEASE_NOTE}"$'\n\n'"${BODY}" + fi + + # Save to file for later use + printf '%s\n' "$BODY" > pr-body.txt + cat pr-body.txt + + - name: Create PR to ComfyUI + working-directory: comfyui + env: + GH_TOKEN: ${{ secrets.PR_GH_TOKEN }} + COMFYUI_FORK: ${{ inputs.comfyui_fork || 'Comfy-Org/ComfyUI' }} + run: | + set -euo pipefail + + # Extract fork owner from repository name + FORK_OWNER=$(echo "$COMFYUI_FORK" | cut -d'/' -f1) + + echo "Creating PR from ${COMFYUI_FORK} to comfyanonymous/ComfyUI" + + # Configure git + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + + # Create/update branch (reuse same branch name each week) + BRANCH="automation/comfyui-frontend-bump" + git checkout -B "$BRANCH" + git add requirements.txt + + if ! git diff --cached --quiet; then + git commit -m "Bump comfyui-frontend-package to ${{ needs.resolve-version.outputs.target_version }}" + else + echo "No changes to commit" + exit 0 + fi + + # Force push to fork (overwrites previous week's branch) + # Note: This intentionally destroys branch history to maintain a single PR + # Any review comments or manual commits will need to be re-applied + if ! git push -f origin "$BRANCH"; then + echo "Failed to push branch to fork" + exit 1 + fi + + # Create draft PR from fork to upstream + PR_BODY=$(cat ../pr-body.txt) + + # Try to create PR, ignore error if it already exists + if ! gh pr create \ + --repo comfyanonymous/ComfyUI \ + --head "${FORK_OWNER}:${BRANCH}" \ + --base master \ + --title "Bump comfyui-frontend-package to ${{ needs.resolve-version.outputs.target_version }}" \ + --body "$PR_BODY" \ + --draft 2>&1; then + + # Check if PR already exists + set +e + EXISTING_PR=$(gh pr list --repo comfyanonymous/ComfyUI --head "${FORK_OWNER}:${BRANCH}" --json number --jq '.[0].number' 2>&1) + PR_LIST_EXIT=$? + set -e + + if [ $PR_LIST_EXIT -ne 0 ]; then + echo "Failed to check for existing PR: $EXISTING_PR" + exit 1 + fi + + if [ -n "$EXISTING_PR" ] && [ "$EXISTING_PR" != "null" ]; then + echo "PR already exists (#${EXISTING_PR}), updating branch will update the PR" + else + echo "Failed to create PR and no existing PR found" + exit 1 + fi + fi + + - name: Summary + run: | + echo "## ComfyUI PR Created" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "Draft PR created in comfyanonymous/ComfyUI" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "### PR Body:" >> $GITHUB_STEP_SUMMARY + cat pr-body.txt >> $GITHUB_STEP_SUMMARY diff --git a/.github/workflows/weekly-docs-check.yaml b/.github/workflows/weekly-docs-check.yaml index c67e4adcb..317e4d8fe 100644 --- a/.github/workflows/weekly-docs-check.yaml +++ b/.github/workflows/weekly-docs-check.yaml @@ -1,5 +1,5 @@ +# Description: Automated weekly documentation accuracy check and update via Claude name: "Weekly Documentation Check" -description: "Automated weekly documentation accuracy check and update via Claude" permissions: contents: write diff --git a/.i18nrc.cjs b/.i18nrc.cjs index 2efe5f966..53acf0546 100644 --- a/.i18nrc.cjs +++ b/.i18nrc.cjs @@ -9,7 +9,7 @@ module.exports = defineConfig({ entry: 'src/locales/en', entryLocale: 'en', output: 'src/locales', - outputLocales: ['zh', 'zh-TW', 'ru', 'ja', 'ko', 'fr', 'es', 'ar', 'tr'], + outputLocales: ['zh', 'zh-TW', 'ru', 'ja', 'ko', 'fr', 'es', 'ar', 'tr', 'pt-BR'], reference: `Special names to keep untranslated: flux, photomaker, clip, vae, cfg, stable audio, stable cascade, stable zero, controlnet, lora, HiDream. 'latent' is the short form of 'latent space'. 'mask' is in the context of image processing. diff --git a/.oxlintrc.json b/.oxlintrc.json index ee29da38b..66dd229c8 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -38,6 +38,7 @@ "typescript/no-redundant-type-constituents": "off", "typescript/restrict-template-expressions": "off", "typescript/unbound-method": "off", - "typescript/no-floating-promises": "error" + "typescript/no-floating-promises": "error", + "vue/no-import-compiler-macros": "error" } } \ No newline at end of file diff --git a/.storybook/main.ts b/.storybook/main.ts index 4c03c3a51..897094ade 100644 --- a/.storybook/main.ts +++ b/.storybook/main.ts @@ -64,7 +64,6 @@ const config: StorybookConfig = { deep: true, extensions: ['vue'] }) - // Note: Explicitly NOT including generateImportMapPlugin to avoid externalization ], server: { allowedHosts: true diff --git a/CODEOWNERS b/CODEOWNERS index d754859b1..922dc2cb2 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,8 +1,11 @@ +# Global Ownership +* @Comfy-org/comfy_frontend_devs + # Desktop/Electron -/apps/desktop-ui/ @webfiltered -/src/stores/electronDownloadStore.ts @webfiltered -/src/extensions/core/electronAdapter.ts @webfiltered -/vite.electron.config.mts @webfiltered +/apps/desktop-ui/ @benceruleanlu +/src/stores/electronDownloadStore.ts @benceruleanlu +/src/extensions/core/electronAdapter.ts @benceruleanlu +/vite.electron.config.mts @benceruleanlu # Common UI Components /src/components/chip/ @viva-jinyi @@ -31,10 +34,7 @@ /src/components/graph/selectionToolbox/ @Myestery # Minimap -/src/renderer/extensions/minimap/ @jtydhr88 - -# Assets -/src/platform/assets/ @arjansingh +/src/renderer/extensions/minimap/ @jtydhr88 @Myestery # Workflow Templates /src/platform/workflow/templates/ @Myestery @christian-byrne @comfyui-wiki @@ -53,11 +53,12 @@ /src/workbench/extensions/manager/ @viva-jinyi @christian-byrne @ltdrdata # Translations -/src/locales/ @Yorha4D @KarryCharon @shinshin86 @Comfy-Org/comfy_maintainer +/src/locales/ @Yorha4D @KarryCharon @shinshin86 @Comfy-Org/comfy_maintainer @Comfy-org/comfy_frontend_devs +/src/locales/pt-BR/ @JonatanAtila @Yorha4D @KarryCharon @shinshin86 # LLM Instructions (blank on purpose) .claude/ .cursor/ .cursorrules **/AGENTS.md -**/CLAUDE.md \ No newline at end of file +**/CLAUDE.md diff --git a/apps/desktop-ui/package.json b/apps/desktop-ui/package.json index 48a134872..b8962395a 100644 --- a/apps/desktop-ui/package.json +++ b/apps/desktop-ui/package.json @@ -1,6 +1,6 @@ { "name": "@comfyorg/desktop-ui", - "version": "0.0.3", + "version": "0.0.4", "type": "module", "nx": { "tags": [ diff --git a/apps/desktop-ui/src/components/common/LanguageSelector.vue b/apps/desktop-ui/src/components/common/LanguageSelector.vue index d8a5dc8cf..55703930c 100644 --- a/apps/desktop-ui/src/components/common/LanguageSelector.vue +++ b/apps/desktop-ui/src/components/common/LanguageSelector.vue @@ -59,7 +59,8 @@ const LOCALES = [ ['fr', 'Français'], ['es', 'Español'], ['ar', 'عربي'], - ['tr', 'Türkçe'] + ['tr', 'Türkçe'], + ['pt-BR', 'Português (BR)'] ] as const satisfies ReadonlyArray<[string, string]> type SupportedLocale = (typeof LOCALES)[number][0] diff --git a/apps/desktop-ui/src/components/common/StartupDisplay.vue b/apps/desktop-ui/src/components/common/StartupDisplay.vue index bd42c14e4..7bde5ec86 100644 --- a/apps/desktop-ui/src/components/common/StartupDisplay.vue +++ b/apps/desktop-ui/src/components/common/StartupDisplay.vue @@ -22,7 +22,11 @@

{{ title }}

-

+

{{ statusText }}

diff --git a/apps/desktop-ui/src/i18n.ts b/apps/desktop-ui/src/i18n.ts index 5f0739db7..350376ff7 100644 --- a/apps/desktop-ui/src/i18n.ts +++ b/apps/desktop-ui/src/i18n.ts @@ -40,7 +40,8 @@ const localeLoaders: Record< ru: () => import('@frontend-locales/ru/main.json'), tr: () => import('@frontend-locales/tr/main.json'), zh: () => import('@frontend-locales/zh/main.json'), - 'zh-TW': () => import('@frontend-locales/zh-TW/main.json') + 'zh-TW': () => import('@frontend-locales/zh-TW/main.json'), + 'pt-BR': () => import('@frontend-locales/pt-BR/main.json') } const nodeDefsLoaders: Record< @@ -55,7 +56,8 @@ const nodeDefsLoaders: Record< ru: () => import('@frontend-locales/ru/nodeDefs.json'), tr: () => import('@frontend-locales/tr/nodeDefs.json'), zh: () => import('@frontend-locales/zh/nodeDefs.json'), - 'zh-TW': () => import('@frontend-locales/zh-TW/nodeDefs.json') + 'zh-TW': () => import('@frontend-locales/zh-TW/nodeDefs.json'), + 'pt-BR': () => import('@frontend-locales/pt-BR/nodeDefs.json') } const commandsLoaders: Record< @@ -70,7 +72,8 @@ const commandsLoaders: Record< ru: () => import('@frontend-locales/ru/commands.json'), tr: () => import('@frontend-locales/tr/commands.json'), zh: () => import('@frontend-locales/zh/commands.json'), - 'zh-TW': () => import('@frontend-locales/zh-TW/commands.json') + 'zh-TW': () => import('@frontend-locales/zh-TW/commands.json'), + 'pt-BR': () => import('@frontend-locales/pt-BR/commands.json') } const settingsLoaders: Record< @@ -85,7 +88,8 @@ const settingsLoaders: Record< ru: () => import('@frontend-locales/ru/settings.json'), tr: () => import('@frontend-locales/tr/settings.json'), zh: () => import('@frontend-locales/zh/settings.json'), - 'zh-TW': () => import('@frontend-locales/zh-TW/settings.json') + 'zh-TW': () => import('@frontend-locales/zh-TW/settings.json'), + 'pt-BR': () => import('@frontend-locales/pt-BR/settings.json') } // Track which locales have been loaded diff --git a/browser_tests/fixtures/ComfyPage.ts b/browser_tests/fixtures/ComfyPage.ts index 376cf3239..9c1ebeb7a 100644 --- a/browser_tests/fixtures/ComfyPage.ts +++ b/browser_tests/fixtures/ComfyPage.ts @@ -557,7 +557,7 @@ export class ComfyPage { async dragAndDrop(source: Position, target: Position) { await this.page.mouse.move(source.x, source.y) await this.page.mouse.down() - await this.page.mouse.move(target.x, target.y) + await this.page.mouse.move(target.x, target.y, { steps: 100 }) await this.page.mouse.up() await this.nextFrame() } @@ -1651,7 +1651,10 @@ export const comfyPageFixture = base.extend<{ // Set tutorial completed to true to avoid loading the tutorial workflow. 'Comfy.TutorialCompleted': true, 'Comfy.SnapToGrid.GridSize': testComfySnapToGridGridSize, - 'Comfy.VueNodes.AutoScaleLayout': false + 'Comfy.VueNodes.AutoScaleLayout': false, + // Disable toast warning about version compatibility, as they may or + // may not appear - depending on upstream ComfyUI dependencies + 'Comfy.VersionCompatibility.DisableWarnings': true }) } catch (e) { console.error(e) diff --git a/browser_tests/fixtures/VueNodeHelpers.ts b/browser_tests/fixtures/VueNodeHelpers.ts index 86d715bfd..e6121b3c3 100644 --- a/browser_tests/fixtures/VueNodeHelpers.ts +++ b/browser_tests/fixtures/VueNodeHelpers.ts @@ -65,7 +65,9 @@ export class VueNodeHelpers { * Select a specific Vue node by ID */ async selectNode(nodeId: string): Promise { - await this.page.locator(`[data-node-id="${nodeId}"]`).click() + await this.page + .locator(`[data-node-id="${nodeId}"] .lg-node-header`) + .click() } /** @@ -77,11 +79,13 @@ export class VueNodeHelpers { // Select first node normally await this.selectNode(nodeIds[0]) - // Add additional nodes with Ctrl+click + // Add additional nodes with Ctrl+click on header for (let i = 1; i < nodeIds.length; i++) { - await this.page.locator(`[data-node-id="${nodeIds[i]}"]`).click({ - modifiers: ['Control'] - }) + await this.page + .locator(`[data-node-id="${nodeIds[i]}"] .lg-node-header`) + .click({ + modifiers: ['Control'] + }) } } diff --git a/browser_tests/tests/interaction.spec.ts-snapshots/dragged-node1-chromium-linux.png b/browser_tests/tests/interaction.spec.ts-snapshots/dragged-node1-chromium-linux.png index a3d7a8443..d59e9707a 100644 Binary files a/browser_tests/tests/interaction.spec.ts-snapshots/dragged-node1-chromium-linux.png and b/browser_tests/tests/interaction.spec.ts-snapshots/dragged-node1-chromium-linux.png differ diff --git a/browser_tests/tests/nodeSearchBox.spec.ts-snapshots/link-release-context-menu-chromium-linux.png b/browser_tests/tests/nodeSearchBox.spec.ts-snapshots/link-release-context-menu-chromium-linux.png index ade1f674d..a371964ba 100644 Binary files a/browser_tests/tests/nodeSearchBox.spec.ts-snapshots/link-release-context-menu-chromium-linux.png and b/browser_tests/tests/nodeSearchBox.spec.ts-snapshots/link-release-context-menu-chromium-linux.png differ diff --git a/browser_tests/tests/rightClickMenu.spec.ts-snapshots/right-click-menu-chromium-linux.png b/browser_tests/tests/rightClickMenu.spec.ts-snapshots/right-click-menu-chromium-linux.png index a73ca4c33..306ee8ebb 100644 Binary files a/browser_tests/tests/rightClickMenu.spec.ts-snapshots/right-click-menu-chromium-linux.png and b/browser_tests/tests/rightClickMenu.spec.ts-snapshots/right-click-menu-chromium-linux.png differ diff --git a/browser_tests/tests/rightClickMenu.spec.ts-snapshots/right-click-node-chromium-linux.png b/browser_tests/tests/rightClickMenu.spec.ts-snapshots/right-click-node-chromium-linux.png index 67190e335..a6d0ffdba 100644 Binary files a/browser_tests/tests/rightClickMenu.spec.ts-snapshots/right-click-node-chromium-linux.png and b/browser_tests/tests/rightClickMenu.spec.ts-snapshots/right-click-node-chromium-linux.png differ diff --git a/browser_tests/tests/rightClickMenu.spec.ts-snapshots/right-click-node-properties-panel-chromium-linux.png b/browser_tests/tests/rightClickMenu.spec.ts-snapshots/right-click-node-properties-panel-chromium-linux.png index 013a56f85..a77af5fc8 100644 Binary files a/browser_tests/tests/rightClickMenu.spec.ts-snapshots/right-click-node-properties-panel-chromium-linux.png and b/browser_tests/tests/rightClickMenu.spec.ts-snapshots/right-click-node-properties-panel-chromium-linux.png differ diff --git a/browser_tests/tests/rightClickMenu.spec.ts-snapshots/right-click-pinned-node-chromium-linux.png b/browser_tests/tests/rightClickMenu.spec.ts-snapshots/right-click-pinned-node-chromium-linux.png index 54b98eaec..c5855906d 100644 Binary files a/browser_tests/tests/rightClickMenu.spec.ts-snapshots/right-click-pinned-node-chromium-linux.png and b/browser_tests/tests/rightClickMenu.spec.ts-snapshots/right-click-pinned-node-chromium-linux.png differ diff --git a/browser_tests/tests/rightClickMenu.spec.ts-snapshots/right-click-unpinned-node-chromium-linux.png b/browser_tests/tests/rightClickMenu.spec.ts-snapshots/right-click-unpinned-node-chromium-linux.png index 67190e335..a6d0ffdba 100644 Binary files a/browser_tests/tests/rightClickMenu.spec.ts-snapshots/right-click-unpinned-node-chromium-linux.png and b/browser_tests/tests/rightClickMenu.spec.ts-snapshots/right-click-unpinned-node-chromium-linux.png differ diff --git a/browser_tests/tests/rightClickMenu.spec.ts-snapshots/right-click-unpinned-node-moved-chromium-linux.png b/browser_tests/tests/rightClickMenu.spec.ts-snapshots/right-click-unpinned-node-moved-chromium-linux.png index 700e9d2c5..7b75a5a3e 100644 Binary files a/browser_tests/tests/rightClickMenu.spec.ts-snapshots/right-click-unpinned-node-moved-chromium-linux.png and b/browser_tests/tests/rightClickMenu.spec.ts-snapshots/right-click-unpinned-node-moved-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/groups/groups.spec.ts-snapshots/vue-groups-create-group-chromium-linux.png b/browser_tests/tests/vueNodes/groups/groups.spec.ts-snapshots/vue-groups-create-group-chromium-linux.png index de010003e..e33066cc9 100644 Binary files a/browser_tests/tests/vueNodes/groups/groups.spec.ts-snapshots/vue-groups-create-group-chromium-linux.png and b/browser_tests/tests/vueNodes/groups/groups.spec.ts-snapshots/vue-groups-create-group-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/groups/groups.spec.ts-snapshots/vue-groups-fit-to-contents-chromium-linux.png b/browser_tests/tests/vueNodes/groups/groups.spec.ts-snapshots/vue-groups-fit-to-contents-chromium-linux.png index fc3ecdddb..2388f6e80 100644 Binary files a/browser_tests/tests/vueNodes/groups/groups.spec.ts-snapshots/vue-groups-fit-to-contents-chromium-linux.png and b/browser_tests/tests/vueNodes/groups/groups.spec.ts-snapshots/vue-groups-fit-to-contents-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/interactions/canvas/pan.spec.ts-snapshots/vue-nodes-paned-with-touch-mobile-chrome-linux.png b/browser_tests/tests/vueNodes/interactions/canvas/pan.spec.ts-snapshots/vue-nodes-paned-with-touch-mobile-chrome-linux.png index 19d61e102..26b69d8d6 100644 Binary files a/browser_tests/tests/vueNodes/interactions/canvas/pan.spec.ts-snapshots/vue-nodes-paned-with-touch-mobile-chrome-linux.png and b/browser_tests/tests/vueNodes/interactions/canvas/pan.spec.ts-snapshots/vue-nodes-paned-with-touch-mobile-chrome-linux.png differ diff --git a/browser_tests/tests/vueNodes/interactions/canvas/zoom.spec.ts-snapshots/zoomed-in-ctrl-shift-chromium-linux.png b/browser_tests/tests/vueNodes/interactions/canvas/zoom.spec.ts-snapshots/zoomed-in-ctrl-shift-chromium-linux.png index 4b9e4d1d5..9a1418b68 100644 Binary files a/browser_tests/tests/vueNodes/interactions/canvas/zoom.spec.ts-snapshots/zoomed-in-ctrl-shift-chromium-linux.png and b/browser_tests/tests/vueNodes/interactions/canvas/zoom.spec.ts-snapshots/zoomed-in-ctrl-shift-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts index 2da4b1122..09981ee3d 100644 --- a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts +++ b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts @@ -94,7 +94,7 @@ async function connectSlots( const fromLoc = slotLocator(page, from.nodeId, from.index, false) const toLoc = slotLocator(page, to.nodeId, to.index, true) await expectVisibleAll(fromLoc, toLoc) - await fromLoc.dragTo(toLoc) + await fromLoc.dragTo(toLoc, { force: true }) await nextFrame() } @@ -183,7 +183,7 @@ test.describe('Vue Node Link Interaction', () => { const inputSlot = slotLocator(comfyPage.page, clipNode.id, 0, true) await expectVisibleAll(outputSlot, inputSlot) - await outputSlot.dragTo(inputSlot) + await outputSlot.dragTo(inputSlot, { force: true }) await comfyPage.nextFrame() expect(await samplerOutput.getLinkCount()).toBe(0) @@ -210,7 +210,7 @@ test.describe('Vue Node Link Interaction', () => { const inputSlot = slotLocator(comfyPage.page, samplerNode.id, 3, true) await expectVisibleAll(outputSlot, inputSlot) - await outputSlot.dragTo(inputSlot) + await outputSlot.dragTo(inputSlot, { force: true }) await comfyPage.nextFrame() expect(await samplerOutput.getLinkCount()).toBe(0) @@ -828,55 +828,55 @@ test.describe('Vue Node Link Interaction', () => { }) test.describe('Release actions (Shift-drop)', () => { - test('Context menu opens and endpoint is pinned on Shift-drop', async ({ - comfyPage, - comfyMouse - }) => { - await comfyPage.setSetting( - 'Comfy.LinkRelease.ActionShift', - 'context menu' - ) + test.fixme( + 'Context menu opens and endpoint is pinned on Shift-drop', + async ({ comfyPage, comfyMouse }) => { + await comfyPage.setSetting( + 'Comfy.LinkRelease.ActionShift', + 'context menu' + ) - const samplerNode = (await comfyPage.getNodeRefsByType('KSampler'))[0] - expect(samplerNode).toBeTruthy() + const samplerNode = (await comfyPage.getNodeRefsByType('KSampler'))[0] + expect(samplerNode).toBeTruthy() - const outputCenter = await getSlotCenter( - comfyPage.page, - samplerNode.id, - 0, - false - ) + const outputCenter = await getSlotCenter( + comfyPage.page, + samplerNode.id, + 0, + false + ) - const dropPos = { x: outputCenter.x + 180, y: outputCenter.y - 140 } + const dropPos = { x: outputCenter.x + 180, y: outputCenter.y - 140 } - await comfyMouse.move(outputCenter) - await comfyPage.page.keyboard.down('Shift') - try { - await comfyMouse.drag(dropPos) - await comfyMouse.drop() - } finally { - await comfyPage.page.keyboard.up('Shift').catch(() => {}) + await comfyMouse.move(outputCenter) + await comfyPage.page.keyboard.down('Shift') + try { + await comfyMouse.drag(dropPos) + await comfyMouse.drop() + } finally { + await comfyPage.page.keyboard.up('Shift').catch(() => {}) + } + + // Context menu should be visible + const contextMenu = comfyPage.page.locator('.litecontextmenu') + await expect(contextMenu).toBeVisible() + + // Pinned endpoint should not change with mouse movement while menu is open + const before = await comfyPage.page.evaluate(() => { + const snap = window['app']?.canvas?.linkConnector?.state?.snapLinksPos + return Array.isArray(snap) ? [snap[0], snap[1]] : null + }) + expect(before).not.toBeNull() + + // Move mouse elsewhere and verify snap position is unchanged + await comfyMouse.move({ x: dropPos.x + 160, y: dropPos.y + 100 }) + const after = await comfyPage.page.evaluate(() => { + const snap = window['app']?.canvas?.linkConnector?.state?.snapLinksPos + return Array.isArray(snap) ? [snap[0], snap[1]] : null + }) + expect(after).toEqual(before) } - - // Context menu should be visible - const contextMenu = comfyPage.page.locator('.litecontextmenu') - await expect(contextMenu).toBeVisible() - - // Pinned endpoint should not change with mouse movement while menu is open - const before = await comfyPage.page.evaluate(() => { - const snap = window['app']?.canvas?.linkConnector?.state?.snapLinksPos - return Array.isArray(snap) ? [snap[0], snap[1]] : null - }) - expect(before).not.toBeNull() - - // Move mouse elsewhere and verify snap position is unchanged - await comfyMouse.move({ x: dropPos.x + 160, y: dropPos.y + 100 }) - const after = await comfyPage.page.evaluate(() => { - const snap = window['app']?.canvas?.linkConnector?.state?.snapLinksPos - return Array.isArray(snap) ? [snap[0], snap[1]] : null - }) - expect(after).toEqual(before) - }) + ) test('Context menu -> Search pre-filters by link type and connects after selection', async ({ comfyPage, @@ -897,7 +897,7 @@ test.describe('Vue Node Link Interaction', () => { 0, false ) - const dropPos = { x: outputCenter.x + 200, y: outputCenter.y - 120 } + const dropPos = { x: outputCenter.x + 200, y: outputCenter.y - 100 } await comfyMouse.move(outputCenter) await comfyPage.page.keyboard.down('Shift') diff --git a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-dragging-link-chromium-linux.png b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-dragging-link-chromium-linux.png index 022577b7f..659a1c778 100644 Binary files a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-dragging-link-chromium-linux.png and b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-dragging-link-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-input-drag-ctrl-alt-chromium-linux.png b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-input-drag-ctrl-alt-chromium-linux.png index 0c4c03692..7818c65ae 100644 Binary files a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-input-drag-ctrl-alt-chromium-linux.png and b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-input-drag-ctrl-alt-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-input-drag-reuses-origin-chromium-linux.png b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-input-drag-reuses-origin-chromium-linux.png index 103bd2422..0052e744d 100644 Binary files a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-input-drag-reuses-origin-chromium-linux.png and b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-input-drag-reuses-origin-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-reroute-input-drag-chromium-linux.png b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-reroute-input-drag-chromium-linux.png index a98cce0fa..4877aa8e2 100644 Binary files a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-reroute-input-drag-chromium-linux.png and b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-reroute-input-drag-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-reroute-output-shift-drag-chromium-linux.png b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-reroute-output-shift-drag-chromium-linux.png index 9cd1a4c6f..ff3fa60d0 100644 Binary files a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-reroute-output-shift-drag-chromium-linux.png and b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-reroute-output-shift-drag-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-shift-output-multi-link-chromium-linux.png b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-shift-output-multi-link-chromium-linux.png index 23c0d13f6..c0d1539dc 100644 Binary files a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-shift-output-multi-link-chromium-linux.png and b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-shift-output-multi-link-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-snap-to-node-chromium-linux.png b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-snap-to-node-chromium-linux.png index 87dbda65e..eba007e68 100644 Binary files a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-snap-to-node-chromium-linux.png and b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-snap-to-node-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-snap-to-slot-chromium-linux.png b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-snap-to-slot-chromium-linux.png index 59df59d94..dd741692a 100644 Binary files a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-snap-to-slot-chromium-linux.png and b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-snap-to-slot-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/interactions/node/move.spec.ts-snapshots/vue-node-moved-node-chromium-linux.png b/browser_tests/tests/vueNodes/interactions/node/move.spec.ts-snapshots/vue-node-moved-node-chromium-linux.png index cc0429086..c71dab3a4 100644 Binary files a/browser_tests/tests/vueNodes/interactions/node/move.spec.ts-snapshots/vue-node-moved-node-chromium-linux.png and b/browser_tests/tests/vueNodes/interactions/node/move.spec.ts-snapshots/vue-node-moved-node-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/interactions/node/move.spec.ts-snapshots/vue-node-moved-node-touch-mobile-chrome-linux.png b/browser_tests/tests/vueNodes/interactions/node/move.spec.ts-snapshots/vue-node-moved-node-touch-mobile-chrome-linux.png index fab8c03fb..07ae48d8d 100644 Binary files a/browser_tests/tests/vueNodes/interactions/node/move.spec.ts-snapshots/vue-node-moved-node-touch-mobile-chrome-linux.png and b/browser_tests/tests/vueNodes/interactions/node/move.spec.ts-snapshots/vue-node-moved-node-touch-mobile-chrome-linux.png differ diff --git a/browser_tests/tests/vueNodes/interactions/node/resize.spec.ts b/browser_tests/tests/vueNodes/interactions/node/resize.spec.ts new file mode 100644 index 000000000..7ea5bf965 --- /dev/null +++ b/browser_tests/tests/vueNodes/interactions/node/resize.spec.ts @@ -0,0 +1,54 @@ +import { + comfyExpect as expect, + comfyPageFixture as test +} from '../../../../fixtures/ComfyPage' + +test.describe('Vue Node Resizing', () => { + test.beforeEach(async ({ comfyPage }) => { + await comfyPage.setSetting('Comfy.VueNodes.Enabled', true) + await comfyPage.vueNodes.waitForNodes() + }) + + test('should resize node without position drift after selecting', async ({ + comfyPage + }) => { + // Get a Vue node fixture + const node = await comfyPage.vueNodes.getFixtureByTitle('Load Checkpoint') + const initialBox = await node.boundingBox() + if (!initialBox) throw new Error('Node bounding box not found') + + // Select the node first (this was causing the bug) + await node.header.click() + await comfyPage.page.waitForTimeout(100) // Brief pause after selection + + // Get position after selection + const selectedBox = await node.boundingBox() + if (!selectedBox) + throw new Error('Node bounding box not found after select') + + // Verify position unchanged after selection + expect(selectedBox.x).toBeCloseTo(initialBox.x, 1) + expect(selectedBox.y).toBeCloseTo(initialBox.y, 1) + + // Now resize from bottom-right corner + const resizeStartX = selectedBox.x + selectedBox.width - 5 + const resizeStartY = selectedBox.y + selectedBox.height - 5 + + await comfyPage.page.mouse.move(resizeStartX, resizeStartY) + await comfyPage.page.mouse.down() + await comfyPage.page.mouse.move(resizeStartX + 50, resizeStartY + 30) + await comfyPage.page.mouse.up() + + // Get final position and size + const finalBox = await node.boundingBox() + if (!finalBox) throw new Error('Node bounding box not found after resize') + + // Position should NOT have changed (the bug was position drift) + expect(finalBox.x).toBeCloseTo(initialBox.x, 1) + expect(finalBox.y).toBeCloseTo(initialBox.y, 1) + + // Size should have increased + expect(finalBox.width).toBeGreaterThan(initialBox.width) + expect(finalBox.height).toBeGreaterThan(initialBox.height) + }) +}) diff --git a/browser_tests/tests/vueNodes/nodeStates/bypass.spec.ts-snapshots/vue-node-bypassed-state-chromium-linux.png b/browser_tests/tests/vueNodes/nodeStates/bypass.spec.ts-snapshots/vue-node-bypassed-state-chromium-linux.png index 96af1ba8b..4b16b16a7 100644 Binary files a/browser_tests/tests/vueNodes/nodeStates/bypass.spec.ts-snapshots/vue-node-bypassed-state-chromium-linux.png and b/browser_tests/tests/vueNodes/nodeStates/bypass.spec.ts-snapshots/vue-node-bypassed-state-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/nodeStates/colors.spec.ts-snapshots/vue-node-custom-color-blue-chromium-linux.png b/browser_tests/tests/vueNodes/nodeStates/colors.spec.ts-snapshots/vue-node-custom-color-blue-chromium-linux.png index 8efc66a3a..feff6f46e 100644 Binary files a/browser_tests/tests/vueNodes/nodeStates/colors.spec.ts-snapshots/vue-node-custom-color-blue-chromium-linux.png and b/browser_tests/tests/vueNodes/nodeStates/colors.spec.ts-snapshots/vue-node-custom-color-blue-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/nodeStates/colors.spec.ts-snapshots/vue-node-custom-colors-dark-all-colors-chromium-linux.png b/browser_tests/tests/vueNodes/nodeStates/colors.spec.ts-snapshots/vue-node-custom-colors-dark-all-colors-chromium-linux.png index a8d65b20d..48319f687 100644 Binary files a/browser_tests/tests/vueNodes/nodeStates/colors.spec.ts-snapshots/vue-node-custom-colors-dark-all-colors-chromium-linux.png and b/browser_tests/tests/vueNodes/nodeStates/colors.spec.ts-snapshots/vue-node-custom-colors-dark-all-colors-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/nodeStates/colors.spec.ts-snapshots/vue-node-custom-colors-light-all-colors-chromium-linux.png b/browser_tests/tests/vueNodes/nodeStates/colors.spec.ts-snapshots/vue-node-custom-colors-light-all-colors-chromium-linux.png index b86072a83..98507102b 100644 Binary files a/browser_tests/tests/vueNodes/nodeStates/colors.spec.ts-snapshots/vue-node-custom-colors-light-all-colors-chromium-linux.png and b/browser_tests/tests/vueNodes/nodeStates/colors.spec.ts-snapshots/vue-node-custom-colors-light-all-colors-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/nodeStates/lod.spec.ts b/browser_tests/tests/vueNodes/nodeStates/lod.spec.ts deleted file mode 100644 index 884290227..000000000 --- a/browser_tests/tests/vueNodes/nodeStates/lod.spec.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { expect } from '@playwright/test' - -import { comfyPageFixture as test } from '../../../fixtures/ComfyPage' - -test.beforeEach(async ({ comfyPage }) => { - await comfyPage.setSetting('Comfy.UseNewMenu', 'Disabled') -}) - -test.describe('Vue Nodes - LOD', () => { - test.beforeEach(async ({ comfyPage }) => { - await comfyPage.setSetting('Comfy.VueNodes.Enabled', true) - await comfyPage.setSetting('LiteGraph.Canvas.MinFontSizeForLOD', 8) - await comfyPage.setup() - await comfyPage.loadWorkflow('default') - }) - - test('should toggle LOD based on zoom threshold', async ({ comfyPage }) => { - await comfyPage.vueNodes.waitForNodes() - - const initialNodeCount = await comfyPage.vueNodes.getNodeCount() - expect(initialNodeCount).toBeGreaterThan(0) - - await expect(comfyPage.canvas).toHaveScreenshot('vue-nodes-default.png') - - const vueNodesContainer = comfyPage.vueNodes.nodes - const textboxesInNodes = vueNodesContainer.getByRole('textbox') - const comboboxesInNodes = vueNodesContainer.getByRole('combobox') - - await expect(textboxesInNodes.first()).toBeVisible() - await expect(comboboxesInNodes.first()).toBeVisible() - - await comfyPage.zoom(120, 10) - await comfyPage.nextFrame() - - await expect(comfyPage.canvas).toHaveScreenshot('vue-nodes-lod-active.png') - - await expect(textboxesInNodes.first()).toBeHidden() - await expect(comboboxesInNodes.first()).toBeHidden() - - await comfyPage.zoom(-120, 10) - await comfyPage.nextFrame() - - await expect(comfyPage.canvas).toHaveScreenshot( - 'vue-nodes-lod-inactive.png' - ) - await expect(textboxesInNodes.first()).toBeVisible() - await expect(comboboxesInNodes.first()).toBeVisible() - }) -}) diff --git a/browser_tests/tests/vueNodes/nodeStates/lod.spec.ts-snapshots/vue-nodes-default-chromium-linux.png b/browser_tests/tests/vueNodes/nodeStates/lod.spec.ts-snapshots/vue-nodes-default-chromium-linux.png index df81fe75e..28ca11807 100644 Binary files a/browser_tests/tests/vueNodes/nodeStates/lod.spec.ts-snapshots/vue-nodes-default-chromium-linux.png and b/browser_tests/tests/vueNodes/nodeStates/lod.spec.ts-snapshots/vue-nodes-default-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/nodeStates/lod.spec.ts-snapshots/vue-nodes-lod-active-chromium-linux.png b/browser_tests/tests/vueNodes/nodeStates/lod.spec.ts-snapshots/vue-nodes-lod-active-chromium-linux.png index 9b4dcc6f8..f0d38ee0a 100644 Binary files a/browser_tests/tests/vueNodes/nodeStates/lod.spec.ts-snapshots/vue-nodes-lod-active-chromium-linux.png and b/browser_tests/tests/vueNodes/nodeStates/lod.spec.ts-snapshots/vue-nodes-lod-active-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/nodeStates/lod.spec.ts-snapshots/vue-nodes-lod-inactive-chromium-linux.png b/browser_tests/tests/vueNodes/nodeStates/lod.spec.ts-snapshots/vue-nodes-lod-inactive-chromium-linux.png index 6847ffa19..457fd36ee 100644 Binary files a/browser_tests/tests/vueNodes/nodeStates/lod.spec.ts-snapshots/vue-nodes-lod-inactive-chromium-linux.png and b/browser_tests/tests/vueNodes/nodeStates/lod.spec.ts-snapshots/vue-nodes-lod-inactive-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/nodeStates/mute.spec.ts-snapshots/vue-node-muted-state-chromium-linux.png b/browser_tests/tests/vueNodes/nodeStates/mute.spec.ts-snapshots/vue-node-muted-state-chromium-linux.png index b50ca8fbb..af64baa6c 100644 Binary files a/browser_tests/tests/vueNodes/nodeStates/mute.spec.ts-snapshots/vue-node-muted-state-chromium-linux.png and b/browser_tests/tests/vueNodes/nodeStates/mute.spec.ts-snapshots/vue-node-muted-state-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/widgets/load/uploadWidgets.spec.ts-snapshots/vue-nodes-upload-widgets-chromium-linux.png b/browser_tests/tests/vueNodes/widgets/load/uploadWidgets.spec.ts-snapshots/vue-nodes-upload-widgets-chromium-linux.png index d6cada8b9..db9fbd614 100644 Binary files a/browser_tests/tests/vueNodes/widgets/load/uploadWidgets.spec.ts-snapshots/vue-nodes-upload-widgets-chromium-linux.png and b/browser_tests/tests/vueNodes/widgets/load/uploadWidgets.spec.ts-snapshots/vue-nodes-upload-widgets-chromium-linux.png differ diff --git a/build/plugins/comfyAPIPlugin.ts b/build/plugins/comfyAPIPlugin.ts index 3e9a9e5b9..1a3b8d93d 100644 --- a/build/plugins/comfyAPIPlugin.ts +++ b/build/plugins/comfyAPIPlugin.ts @@ -88,12 +88,14 @@ export function comfyAPIPlugin(isDev: boolean): Plugin { if (result.exports.length > 0) { const projectRoot = process.cwd() - const relativePath = path.relative(path.join(projectRoot, 'src'), id) + const relativePath = path + .relative(path.join(projectRoot, 'src'), id) + .replace(/\\/g, '/') const shimFileName = relativePath.replace(/\.ts$/, '.js') let shimContent = `// Shim for ${relativePath}\n` - const fileKey = relativePath.replace(/\.ts$/, '').replace(/\\/g, '/') + const fileKey = relativePath.replace(/\.ts$/, '') const warningMessage = getWarningMessage(fileKey, shimFileName) if (warningMessage) { diff --git a/build/plugins/generateImportMapPlugin.ts b/build/plugins/generateImportMapPlugin.ts deleted file mode 100644 index bbbf14c2c..000000000 --- a/build/plugins/generateImportMapPlugin.ts +++ /dev/null @@ -1,154 +0,0 @@ -import glob from 'fast-glob' -import fs from 'fs-extra' -import { dirname, join } from 'node:path' -import { type HtmlTagDescriptor, type Plugin, normalizePath } from 'vite' - -interface ImportMapSource { - name: string - pattern: string | RegExp - entry: string - recursiveDependence?: boolean - override?: Record> -} - -const parseDeps = (root: string, pkg: string) => { - const pkgPath = join(root, 'node_modules', pkg, 'package.json') - if (fs.existsSync(pkgPath)) { - const content = fs.readFileSync(pkgPath, 'utf-8') - const pkg = JSON.parse(content) - return Object.keys(pkg.dependencies || {}) - } - return [] -} - -/** - * Vite plugin that generates an import map for vendor chunks. - * - * This plugin creates a browser-compatible import map that maps module specifiers - * (like 'vue' or 'primevue') to their actual file locations in the build output. - * This improves module loading in modern browsers and enables better caching. - * - * The plugin: - * 1. Tracks vendor chunks during bundle generation - * 2. Creates mappings between module names and their file paths - * 3. Injects an import map script tag into the HTML head - * 4. Configures manual chunk splitting for vendor libraries - * - * @param vendorLibraries - An array of vendor libraries to split into separate chunks - * @returns {Plugin} A Vite plugin that generates and injects an import map - */ -export function generateImportMapPlugin( - importMapSources: ImportMapSource[] -): Plugin { - const importMapEntries: Record = {} - const resolvedImportMapSources: Map = new Map() - const assetDir = 'assets/lib' - let root: string - - return { - name: 'generate-import-map-plugin', - - // Configure manual chunks during the build process - configResolved(config) { - root = config.root - - if (config.build) { - // Ensure rollupOptions exists - if (!config.build.rollupOptions) { - config.build.rollupOptions = {} - } - - for (const source of importMapSources) { - resolvedImportMapSources.set(source.name, source) - if (source.recursiveDependence) { - const deps = parseDeps(root, source.name) - - while (deps.length) { - const dep = deps.shift()! - const depSource = Object.assign({}, source, { - name: dep, - pattern: dep, - ...source.override?.[dep] - }) - resolvedImportMapSources.set(depSource.name, depSource) - - const _deps = parseDeps(root, depSource.name) - deps.unshift(..._deps) - } - } - } - - const external: (string | RegExp)[] = [] - for (const [, source] of resolvedImportMapSources) { - external.push(source.pattern) - } - config.build.rollupOptions.external = external - } - }, - - generateBundle(_options) { - for (const [, source] of resolvedImportMapSources) { - if (source.entry) { - const moduleFile = join(source.name, source.entry) - const sourceFile = join(root, 'node_modules', moduleFile) - const targetFile = join(root, 'dist', assetDir, moduleFile) - - importMapEntries[source.name] = - './' + normalizePath(join(assetDir, moduleFile)) - - const targetDir = dirname(targetFile) - if (!fs.existsSync(targetDir)) { - fs.mkdirSync(targetDir, { recursive: true }) - } - fs.copyFileSync(sourceFile, targetFile) - } - - if (source.recursiveDependence) { - const files = glob.sync(['**/*.{js,mjs}'], { - cwd: join(root, 'node_modules', source.name) - }) - - for (const file of files) { - const moduleFile = join(source.name, file) - const sourceFile = join(root, 'node_modules', moduleFile) - const targetFile = join(root, 'dist', assetDir, moduleFile) - - importMapEntries[normalizePath(join(source.name, dirname(file)))] = - './' + normalizePath(join(assetDir, moduleFile)) - - const targetDir = dirname(targetFile) - if (!fs.existsSync(targetDir)) { - fs.mkdirSync(targetDir, { recursive: true }) - } - fs.copyFileSync(sourceFile, targetFile) - } - } - } - }, - - transformIndexHtml(html) { - if (Object.keys(importMapEntries).length === 0) { - console.warn( - '[ImportMap Plugin] No vendor chunks found to create import map.' - ) - return html - } - - const importMap = { - imports: importMapEntries - } - - const importMapTag: HtmlTagDescriptor = { - tag: 'script', - attrs: { type: 'importmap' }, - children: JSON.stringify(importMap, null, 2), - injectTo: 'head' - } - - return { - html, - tags: [importMapTag] - } - } - } -} diff --git a/build/plugins/index.ts b/build/plugins/index.ts index f8c2d695c..f93f9fe32 100644 --- a/build/plugins/index.ts +++ b/build/plugins/index.ts @@ -1,2 +1 @@ export { comfyAPIPlugin } from './comfyAPIPlugin' -export { generateImportMapPlugin } from './generateImportMapPlugin' diff --git a/eslint.config.ts b/eslint.config.ts index 46a3d94d2..a720bb00a 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -191,6 +191,19 @@ export default defineConfig([ '@intlify/vue-i18n/no-raw-text': [ 'error', { + attributes: { + '/.+/': [ + 'aria-label', + 'aria-placeholder', + 'aria-roledescription', + 'aria-valuetext', + 'label', + 'placeholder', + 'title', + 'v-tooltip' + ], + img: ['alt'] + }, // Ignore strings that are: // 1. Less than 2 characters // 2. Only symbols/numbers/whitespace (no letters) @@ -200,24 +213,27 @@ export default defineConfig([ ignoreNodes: ['md-icon', 'v-icon', 'pre', 'code', 'script', 'style'], // Brand names and technical terms that shouldn't be translated ignoreText: [ - 'ComfyUI', - 'GitHub', - 'OpenAI', 'API', - 'URL', - 'JSON', - 'YAML', - 'GPU', - 'CPU', - 'RAM', - 'GB', - 'MB', - 'KB', - 'ms', - 'fps', - 'px', 'App Data:', - 'App Path:' + 'App Path:', + 'ComfyUI', + 'CPU', + 'fps', + 'GB', + 'GitHub', + 'GPU', + 'JSON', + 'KB', + 'LoRA', + 'MB', + 'ms', + 'OpenAI', + 'png', + 'px', + 'RAM', + 'URL', + 'YAML', + '1.2 MB' ] } ] diff --git a/knip.config.ts b/knip.config.ts index a77574f97..f2907a266 100644 --- a/knip.config.ts +++ b/knip.config.ts @@ -27,7 +27,7 @@ const config: KnipConfig = { project: ['src/**/*.{js,ts}'] } }, - ignoreBinaries: ['python3'], + ignoreBinaries: ['python3', 'gh'], ignoreDependencies: [ // Weird importmap things '@iconify/json', diff --git a/package.json b/package.json index fe86dce12..0f2a16eb5 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@comfyorg/comfyui-frontend", "private": true, - "version": "1.33.2", + "version": "1.34.5", "type": "module", "repository": "https://github.com/Comfy-Org/ComfyUI_frontend", "homepage": "https://comfy.org", @@ -79,6 +79,7 @@ "@vitest/coverage-v8": "catalog:", "@vitest/ui": "catalog:", "@vue/test-utils": "catalog:", + "@webgpu/types": "catalog:", "cross-env": "catalog:", "eslint": "catalog:", "eslint-config-prettier": "catalog:", @@ -116,6 +117,7 @@ "typescript": "catalog:", "typescript-eslint": "catalog:", "unplugin-icons": "catalog:", + "unplugin-typegpu": "catalog:", "unplugin-vue-components": "catalog:", "uuid": "^11.1.0", "vite": "catalog:", @@ -166,7 +168,6 @@ "es-toolkit": "^1.39.9", "extendable-media-recorder": "^9.2.27", "extendable-media-recorder-wav-encoder": "^7.0.129", - "fast-glob": "^3.3.3", "firebase": "catalog:", "fuse.js": "^7.0.0", "glob": "^11.0.3", @@ -180,6 +181,7 @@ "semver": "^7.7.2", "three": "^0.170.0", "tiptap-markdown": "^0.8.10", + "typegpu": "catalog:", "vue": "catalog:", "vue-i18n": "catalog:", "vue-router": "catalog:", diff --git a/packages/design-system/src/css/style.css b/packages/design-system/src/css/style.css index 9c75987f6..adf386489 100644 --- a/packages/design-system/src/css/style.css +++ b/packages/design-system/src/css/style.css @@ -194,7 +194,7 @@ --node-component-executing: var(--color-blue-500); --node-component-header: var(--fg-color); --node-component-header-icon: var(--color-ash-800); - --node-component-header-surface: var(--color-white); + --node-component-header-surface: var(--color-smoke-400); --node-component-outline: var(--color-black); --node-component-ring: rgb(from var(--color-smoke-500) r g b / 50%); --node-component-slot-dot-outline-opacity-mult: 1; @@ -1190,24 +1190,19 @@ dialog::backdrop { .litegraph.litecontextmenu, .litegraph.litecontextmenu.dark { z-index: 9999 !important; - background-color: var(--comfy-menu-bg) !important; + background-color: var(--comfy-menu-bg); } -.litegraph.litecontextmenu - .litemenu-entry:hover:not(.disabled):not(.separator) { - background-color: var(--comfy-menu-hover-bg, var(--border-color)) !important; - color: var(--fg-color); -} .litegraph.litecontextmenu .litemenu-entry.submenu, .litegraph.litecontextmenu.dark .litemenu-entry.submenu { - background-color: var(--comfy-menu-bg) !important; - color: var(--input-text); + background-color: var(--comfy-menu-bg); + color: var(--fg-color); } .litegraph.litecontextmenu input { - background-color: var(--comfy-input-bg) !important; - color: var(--input-text) !important; + background-color: var(--comfy-input-bg); + color: var(--input-text); } .comfy-context-menu-filter { @@ -1248,14 +1243,14 @@ dialog::backdrop { .litegraph.litesearchbox { z-index: 9999 !important; - background-color: var(--comfy-menu-bg) !important; + background-color: var(--comfy-menu-bg); overflow: hidden; display: block; } .litegraph.litesearchbox input, .litegraph.litesearchbox select { - background-color: var(--comfy-input-bg) !important; + background-color: var(--comfy-input-bg); color: var(--input-text); } @@ -1320,66 +1315,6 @@ audio.comfy-audio.empty-audio-widget { font-size 0.1s ease; } -/* Performance optimization during canvas interaction */ -.transform-pane--interacting .lg-node * { - transition: none !important; -} - -.transform-pane--interacting .lg-node { - will-change: transform; -} - -/* START LOD specific styles */ -/* LOD styles - Custom CSS avoids 100+ Tailwind selectors that would slow style recalculation when .isLOD toggles */ - -.isLOD .lg-node { - box-shadow: none; - filter: none; - backdrop-filter: none; - text-shadow: none; - mask-image: none; - clip-path: none; - background-image: none; - text-rendering: optimizeSpeed; - border-radius: 0; - contain: layout style; - transition: none; -} - -.isLOD .lg-node-header { - border-radius: 0; - pointer-events: none; -} - -.isLOD .lg-node-widgets { - pointer-events: none; -} - -.lod-toggle { - visibility: visible; -} - -.isLOD .lod-toggle { - visibility: hidden; -} - -.lod-fallback { - display: none; -} - -.isLOD .lod-fallback { - display: block; -} - -.isLOD .image-preview img { - image-rendering: pixelated; -} - -.isLOD .slot-dot { - border-radius: 0; -} -/* END LOD specific styles */ - /* ===================== Mask Editor Styles ===================== */ /* To be migrated to Tailwind later */ #maskEditor_brush { diff --git a/packages/registry-types/src/comfyRegistryTypes.ts b/packages/registry-types/src/comfyRegistryTypes.ts index f23e79286..f7df7081a 100644 --- a/packages/registry-types/src/comfyRegistryTypes.ts +++ b/packages/registry-types/src/comfyRegistryTypes.ts @@ -177,6 +177,26 @@ export interface paths { patch?: never; trace?: never; }; + "/customers/cloud-subscription-checkout/{tier}": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Create cloud subscription checkout session for a specific tier + * @description Creates a cloud subscription checkout session for a specific subscription tier (standard, creator, or pro) with automatic billing + */ + post: operations["createCloudSubscriptionCheckoutTier"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; "/customers/cloud-subscription-status": { parameters: { query?: never; @@ -197,6 +217,26 @@ export interface paths { patch?: never; trace?: never; }; + "/admin/customers/{customer_id}/cloud-subscription-status": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Admin check cloud subscription status + * @description Allows an admin to inspect a specific customer's cloud subscription status. + */ + get: operations["GetAdminCustomerCloudSubscriptionStatus"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; "/customers/usage": { parameters: { query?: never; @@ -257,6 +297,26 @@ export interface paths { patch?: never; trace?: never; }; + "/customers/{customer_id}/usage": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Track usage for a customer (Admin only) + * @description Manually track usage for a customer in Metronome. This endpoint is for admin use to record usage events. + */ + post: operations["TrackCustomerUsage"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; "/customers/storage": { parameters: { query?: never; @@ -1212,6 +1272,110 @@ export interface paths { patch?: never; trace?: never; }; + "/customers/admin/coupons": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * List all coupons + * @description Retrieves a list of all coupons from Stripe. Only admins can list coupons. + */ + get: operations["listCoupons"]; + put?: never; + /** + * Create a new Stripe coupon + * @description Creates a new coupon in Stripe. Only admins can create coupons. + */ + post: operations["createCoupon"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/customers/admin/coupons/{coupon_id}": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Get a specific coupon + * @description Retrieves details of a specific coupon from Stripe. Only admins can view coupons. + */ + get: operations["getCoupon"]; + put?: never; + post?: never; + /** + * Delete a coupon + * @description Deletes a coupon in Stripe. Only admins can delete coupons. + */ + delete: operations["deleteCoupon"]; + options?: never; + head?: never; + /** + * Update a coupon + * @description Updates a coupon in Stripe. Only admins can update coupons. + */ + patch: operations["updateCoupon"]; + trace?: never; + }; + "/customers/admin/promo-codes": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * List all promotional codes + * @description Retrieves a list of all promotional codes from Stripe. Only admins can list promo codes. + */ + get: operations["listPromoCodes"]; + put?: never; + /** + * Generate a new Stripe promotional code + * @description Creates a new unique promotional code in Stripe for the specified coupon. Only admins can generate promo codes. + */ + post: operations["createPromoCode"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/customers/admin/promo-codes/{promo_code_id}": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Get a specific promotional code + * @description Retrieves details of a specific promotional code from Stripe. Only admins can view promo codes. + */ + get: operations["getPromoCode"]; + put?: never; + post?: never; + /** + * Deactivate a promotional code + * @description Deactivates a promotional code in Stripe. Only admins can deactivate promo codes. + */ + delete: operations["deletePromoCode"]; + options?: never; + head?: never; + /** + * Update a promotional code + * @description Updates a promotional code in Stripe. Only admins can update promo codes. + */ + patch: operations["updatePromoCode"]; + trace?: never; + }; "/releases": { parameters: { query?: never; @@ -1712,6 +1876,40 @@ export interface paths { patch?: never; trace?: never; }; + "/proxy/kling/v1/videos/omni-video": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** KlingAI Create Omni-Video Task */ + post: operations["klingCreateOmniVideo"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/proxy/kling/v1/videos/omni-video/{id}": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** KlingAI Query Single Omni-Video Task */ + get: operations["klingOmniVideoQuerySingleTask"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; "/proxy/kling/v1/images/generations": { parameters: { query?: never; @@ -1902,6 +2100,26 @@ export interface paths { patch?: never; trace?: never; }; + "/proxy/bfl/flux-2-pro/generate": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Proxy request to BFL Flux 2 Pro for image generation + * @description Forwards image generation requests to BFL's Flux 2 Pro API and returns the results. Supports image-to-image generation with up to 5 input images. + */ + post: operations["bflFlux2ProGenerate"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; "/proxy/bfl/flux-pro-1.0-expand/generate": { parameters: { query?: never; @@ -3512,10 +3730,160 @@ export interface paths { patch?: never; trace?: never; }; + "/proxy/topaz/image/v1/enhance-gen/async": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + post: operations["topazEnhanceGenAsync"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/proxy/topaz/image/v1/status/{process_id}": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get: operations["topazGetStatus"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/proxy/topaz/image/v1/download/{process_id}": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get: operations["topazDownloadResult"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/proxy/topaz/video/": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + post: operations["topazVideoCreate"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/proxy/topaz/video/{request_id}/accept": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch: operations["topazVideoAccept"]; + trace?: never; + }; + "/proxy/topaz/video/{request_id}/complete-upload": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + /** + * Complete Video Upload + * @description Send metadata of the multi-part uploads to complete the upload and begin processing the video. + * + * Optionally include the MD5 hash of the source video file to validate successful upload before processing. + */ + patch: operations["topazVideoCompleteUpload"]; + trace?: never; + }; + "/proxy/topaz/video/{request_id}/status": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get: operations["topazVideoGetStatus"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/features": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Get server feature flags + * @description Returns the server's feature capabilities + */ + get: operations["getFeatures"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; } export type webhooks = Record; export interface components { schemas: { + /** + * @description The subscription tier level + * @enum {string} + */ + SubscriptionTier: "STANDARD" | "CREATOR" | "PRO"; + FeaturesResponse: { + /** + * @description The conversion rate for partner nodes + * @example 0.5 + */ + partner_node_conversion_rate: number; + }; ClaimMyNodeRequest: { /** @description GitHub token to verify if the user owns the repo of the node */ GH_TOKEN: string; @@ -3628,6 +3996,128 @@ export interface components { error: string; message: string; }; + CreateCouponRequest: { + /** @description Name of the coupon displayed to customers */ + name?: string; + /** + * Format: double + * @description Percent off discount (0-100) + */ + percent_off?: number; + /** @description Amount off in cents */ + amount_off?: number; + /** + * @description Currency for amount_off (required if amount_off is set) + * @enum {string} + */ + currency?: "usd"; + /** + * @description How long the coupon lasts + * @default once + * @enum {string} + */ + duration: "once" | "repeating" | "forever"; + /** @description Required if duration is repeating */ + duration_in_months?: number; + /** @description Maximum number of times this coupon can be redeemed */ + max_redemptions?: number; + /** + * Format: int64 + * @description Unix timestamp specifying the last time at which the coupon can be redeemed + */ + redeem_by?: number; + /** @description Set of key-value pairs for storing additional information */ + metadata?: { + [key: string]: string; + }; + }; + UpdateCouponRequest: { + /** @description Name of the coupon displayed to customers */ + name?: string; + /** @description Set of key-value pairs for storing additional information */ + metadata?: { + [key: string]: string; + }; + }; + CouponResponse: { + /** @description The Stripe coupon ID */ + id: string; + /** @description Name of the coupon displayed to customers */ + name?: string; + /** + * Format: double + * @description Percent off discount (0-100) + */ + percent_off?: number; + /** @description Amount off in cents */ + amount_off?: number; + /** @description Currency for amount_off */ + currency?: string; + /** + * @description How long the coupon lasts + * @enum {string} + */ + duration: "once" | "repeating" | "forever"; + /** @description Number of months for repeating coupons */ + duration_in_months?: number; + /** @description Maximum number of times this coupon can be redeemed */ + max_redemptions?: number; + /** @description Number of times this coupon has been redeemed */ + times_redeemed?: number; + /** + * Format: int64 + * @description Unix timestamp specifying the last time at which the coupon can be redeemed + */ + redeem_by?: number; + /** @description Whether the coupon can still be redeemed */ + valid: boolean; + /** @description Set of key-value pairs for storing additional information */ + metadata?: { + [key: string]: string; + }; + }; + CreatePromoCodeRequest: { + /** @description The Stripe coupon ID to create the promotional code for */ + coupon_id: string; + /** + * @description Number of days until the promotion code expires + * @default 30 + */ + expire_days: number; + /** @description Maximum number of times this code can be redeemed */ + max_redemptions?: number; + }; + UpdatePromoCodeRequest: { + /** @description Whether the promo code is active */ + active?: boolean; + /** @description Set of key-value pairs for storing additional information */ + metadata?: { + [key: string]: string; + }; + }; + PromoCodeResponse: { + /** @description The Stripe promotion code ID */ + id: string; + /** @description The generated promotional code */ + code: string; + /** @description The Stripe coupon ID associated with this promo code */ + coupon_id: string; + /** @description Whether the promo code is currently active */ + active: boolean; + /** + * Format: int64 + * @description Unix timestamp when the promo code expires + */ + expires_at?: number; + /** @description Maximum number of times this code can be redeemed */ + max_redemptions?: number; + /** @description Number of times this code has been redeemed */ + times_redeemed?: number; + /** @description Set of key-value pairs for storing additional information */ + metadata?: { + [key: string]: string; + }; + }; RunwayTextToImageRequest: { /** @description Text prompt for the image generation */ promptText: string; @@ -4514,6 +5004,98 @@ export interface components { }; }; }; + KlingOmniVideoRequest: { + /** + * @description Model Name + * @default kling-video-o1 + * @enum {string} + */ + model_name: "kling-video-o1"; + /** @description Text prompt words, which can include positive and negative descriptions. Must not exceed 2,500 characters. Can specify elements, images, or videos in the format <<<>>> such as <>, <<>>, <<>>. */ + prompt: string; + /** @description Reference Image List. Can include reference images of the element, scene, style, etc., or be used as the first or last frame to generate videos. */ + image_list?: { + /** @description Image Base64 encoding or image URL (ensure accessibility). Supported formats include .jpg/.jpeg/.png. File size cannot exceed 10MB. Width and height dimensions shall not be less than 300px, aspect ratio between 1:2.5 ~ 2.5:1. */ + image_url?: string; + /** + * @description Whether the image is in the first or last frame. first_frame is the first frame, end_frame is the last frame. Currently does not support only the end frame. + * @enum {string} + */ + type?: "first_frame" | "end_frame"; + }[]; + /** @description Reference Element List based on element ID configuration. */ + element_list?: { + /** + * Format: int64 + * @description Element ID + */ + element_id?: number; + }[]; + /** @description Reference Video list. Can be used as a reference video for feature or as a video to be edited, with the default being the video to be edited. */ + video_list?: { + /** @description URL of uploaded video. Only .mp4/.mov formats are supported. Duration between 3-10 seconds. Resolution must be between 720px and 2160px. Frame rates of 24-60 fps supported. Only 1 video can be uploaded, with size not exceeding 200MB. */ + video_url?: string; + /** + * @description Reference video type. feature is the feature reference video, base is the video to be edited. + * @enum {string} + */ + refer_type?: "feature" | "base"; + /** + * @description Whether to keep the video original sound. yes indicates retention, no indicates non retention. + * @enum {string} + */ + keep_original_sound?: "yes" | "no"; + }[]; + /** + * @description Video generation mode. pro - Professional Mode, generates videos use longer duration but higher quality video output. + * @default pro + * @enum {string} + */ + mode: "pro"; + /** + * @description The aspect ratio of the generated video frame (width:height). Required when first-frame reference or video editing features are not used. + * @enum {string} + */ + aspect_ratio?: "16:9" | "9:16" | "1:1"; + /** + * @description Video Length in seconds. When using text generated videos, first frame image generated videos, and first and last frame generated videos, only 5 and 10 seconds are supported. When using video editing function, output duration is the same as input video. + * @default 5 + * @enum {string} + */ + duration: "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10"; + /** + * Format: uri + * @description The callback notification address for the result of this task. If configured, the server will actively notify when the task status changes. + */ + callback_url?: string; + /** @description Customized Task ID. Must be unique within a single user account. */ + external_task_id?: string; + }; + KlingOmniVideoResponse: { + /** @description Error code */ + code?: number; + /** @description Error message */ + message?: string; + /** @description Request ID */ + request_id?: string; + data?: { + /** @description Task ID */ + task_id?: string; + task_status?: components["schemas"]["KlingTaskStatus"]; + /** @description Task status information, displaying the failure reason when the task fails */ + task_status_msg?: string; + task_info?: { + external_task_id?: string; + }; + /** @description Task creation time */ + created_at?: number; + /** @description Task update time */ + updated_at?: number; + task_result?: { + videos?: components["schemas"]["KlingVideoResult"][]; + }; + }; + }; KlingLipSyncInputObject: { /** @description The ID of the video generated by Kling AI. Only supports 5-second and 10-second videos generated within the last 30 days. */ video_id?: string; @@ -5011,6 +5593,21 @@ export interface components { id: string; /** @description URL to poll for the generation result. */ polling_url: string; + /** + * Format: float + * @description The cost of the generation task. + */ + cost?: number; + /** + * Format: float + * @description Input megapixels. + */ + input_mp?: number; + /** + * Format: float + * @description Output megapixels. + */ + output_mp?: number; }; /** @description Response from the BFL Flux Pro 1.1 Ultra status check API. */ BFLFluxProStatusResponse: { @@ -5034,6 +5631,52 @@ export interface components { * @enum {string} */ BFLStatus: "Task not found" | "Pending" | "Request Moderated" | "Content Moderated" | "Ready" | "Error"; + /** @description Request body for the BFL Flux 2 Pro image generation API. */ + BFLFlux2ProGenerateRequest: { + /** @description Text description of the image to generate. */ + prompt: string; + /** @description Base64 encoded image for image-to-image generation. */ + input_image?: string; + /** @description Base64 encoded image for image-to-image generation. */ + input_image_2?: string; + /** @description Base64 encoded image for image-to-image generation. */ + input_image_3?: string; + /** @description Base64 encoded image for image-to-image generation. */ + input_image_4?: string; + /** @description Base64 encoded image for image-to-image generation. */ + input_image_5?: string; + /** @description Base64 encoded image for image-to-image generation. */ + input_image_6?: string; + /** @description Base64 encoded image for image-to-image generation. */ + input_image_7?: string; + /** @description Base64 encoded image for image-to-image generation. */ + input_image_8?: string; + /** @description Base64 encoded image for image-to-image generation. */ + input_image_9?: string; + /** + * @description Width of the image. + * @default 1024 + */ + width: number; + /** + * @description Height of the image. + * @default 768 + */ + height: number; + /** @description Seed for reproducibility. */ + seed?: number; + /** + * @description Automatically modify prompt for generation. + * @default true + */ + prompt_upsampling: boolean; + /** + * @description Output format for the generated image. + * @default jpeg + * @enum {string} + */ + output_format: "jpeg" | "png"; + }; /** FluxProFillInputs */ BFLFluxProFillInputs: { /** @@ -5635,6 +6278,8 @@ export interface components { TripoConvertFormat: "GLTF" | "USDZ" | "FBX" | "OBJ" | "STL" | "3MF"; /** @enum {string} */ TripoTextureFormat: "BMP" | "DPX" | "HDR" | "JPEG" | "OPEN_EXR" | "PNG" | "TARGA" | "TIFF" | "WEBP"; + /** @enum {string} */ + TripoGeometryQuality: "standard" | "detailed"; /** * @description The aspect ratio of the generation * @default 16:9 @@ -6076,6 +6721,13 @@ export interface components { gcsUri?: string; mimeType?: string; } & (unknown | unknown); + /** @description Optional last frame image to guide video generation */ + lastFrame?: { + /** Format: byte */ + bytesBase64Encoded?: string; + gcsUri?: string; + mimeType?: string; + } & (unknown | unknown); }[]; parameters?: { /** @example 16:9 */ @@ -7710,6 +8362,8 @@ export interface components { imageConfig?: { /** @description Aspect ratio for generated images */ aspectRatio?: string; + /** @description Optional. Specifies the size of generated images. Supported values are 1K, 2K, 4K. If not specified, the model will use default value 1K. */ + imageSize?: string; }; }; /** @description For video input, the start and end offset of the video in Duration format. For example, to specify a 10 second clip starting at 1:00, set "startOffset": { "seconds": 60 } and "endOffset": { "seconds": 70 }. The metadata should only be specified while the video data is presented in inlineData or fileData. */ @@ -7760,6 +8414,7 @@ export interface components { */ text?: string; inlineData?: components["schemas"]["GeminiInlineData"]; + fileData?: components["schemas"]["GeminiFileData"]; }; GeminiFunctionDeclaration: { name: string; @@ -7787,6 +8442,12 @@ export interface components { */ data?: string; }; + /** @description URI based data. */ + GeminiFileData: { + mimeType?: components["schemas"]["GeminiMimeType"]; + /** @description URI */ + fileUri?: string; + }; GeminiCitation: { startIndex?: number; endIndex?: number; @@ -9331,7 +9992,7 @@ export interface components { * @description The project this release note belongs to * @enum {string} */ - project: "comfyui" | "comfyui_frontend" | "desktop"; + project: "comfyui" | "comfyui_frontend" | "desktop" | "cloud"; /** @description The version of the release */ version: string; /** @@ -9840,6 +10501,723 @@ export interface components { /** @description Detailed information about the failed request (not returned if request is successful) */ message?: string; }; + TopazEnhanceGenRequest: { + /** + * @description The desired format of the output image + * @default jpeg + * @enum {string} + */ + output_format: "jpeg" | "jpg" | "png" | "tiff" | "tif"; + /** + * @description Specifies whether you want to detect all subjects in the image, only the foreground subject, or only the background for the AI model to run on + * @default All + * @enum {string} + */ + subject_detection: "All" | "Foreground" | "Background"; + /** + * @description By default, faces (if any) are enhanced during image processing as well. Set face_enhancement to false if you don't want this + * @default true + */ + face_enhancement: boolean; + /** + * @description Choose the level of creativity for face enhancement from 0 to 1. Defaults to 0, and is ignored if face_enhancement is false + * @default 0 + */ + face_enhancement_creativity: number; + /** + * @description Control how sharp the enhanced faces are relative to the background from 0 to 1. Defaults to 0.8, and is ignored if face_enhancement is false + * @default 0.8 + */ + face_enhancement_strength: number; + /** + * Format: binary + * @description The image file to be processed. Supported formats - jpeg (or jpg), png, tiff (or tif) + */ + image?: string; + /** + * @description Unique identifier of the source image + * @example d7b3b3b3-7b3b-4b3b-8b3b-3b3b3b3b3b3b + */ + source_id?: string; + /** + * @description The URL of the source image + * @example https://example.com/image.jpg + */ + source_url?: string; + /** + * @description The model to use for processing the image (Bloom - Creative Upscale) + * @default Reimagine + * @enum {string} + */ + model: "Reimagine"; + /** @description The desired height of the output image in pixels */ + output_height?: number; + /** @description The desired width of the output image in pixels */ + output_width?: number; + /** + * @description Default behavior is to letterbox the image if a differing aspect ratio is chosen. Enable crop_to_fill by setting this to true if you instead want to crop the image to fill the dimensions + * @default false + */ + crop_to_fill: boolean; + /** + * @description Text prompt for creative upscaling guidance - available for Reimagine only + * @example enter-your-prompt-here + */ + prompt?: string; + /** + * @description Creativity settings range from 1 to 9 - - available for Reimagine only + * @default 3 + */ + creativity: number; + /** + * @description To preserve the identity of characters - available for Reimagine only (must be string "true" or "false" due to Topaz API requirement) + * @default true + * @enum {string} + */ + face_preservation: "true" | "false"; + /** + * @description To preserve the original color - available for Reimagine only (must be string "true" or "false" due to Topaz API requirement) + * @default true + * @enum {string} + */ + color_preservation: "true" | "false"; + }; + TopazEnhanceGenResponse: { + /** + * @description Unique identifier for the processing job + * @example d7b3b3b3-7b3b-4b3b-8b3b-3b3b3b3b3b3b + */ + process_id: string; + /** + * @description Unique identifier of the source image + * @example d7b3b3b3-7b3b-4b3b-8b3b-3b3b3b3b3b3b + */ + source_id?: string; + /** + * @description Expected completion time in Unix timestamp + * @example 1617220000 + */ + eta: number; + }; + TopazStatusResponse: { + /** @description Unique identifier for the processing job */ + process_id: string; + /** @description Unique identifier of the source image */ + source_id?: string; + /** @description Original filename without extension */ + filename?: string; + /** @description Format of the input image */ + input_format?: string; + /** @description Height of the input image in pixels */ + input_height?: number; + /** @description Width of the input image in pixels */ + input_width?: number; + /** @description Format of the output image */ + output_format?: string; + /** @description Height of the output image in pixels */ + output_height?: number; + /** @description Width of the output image in pixels */ + output_width?: number; + /** @description Processing category (e.g., "Enhance") */ + category?: string; + /** @description Type of model used (e.g., "Generative") */ + model_type?: string; + /** @description Specific model used (e.g., "Reimagine") */ + model?: string; + /** @description Subject detection setting */ + subject_detection?: string; + /** @description Whether face enhancement is enabled */ + face_enhancement?: boolean; + /** @description Face enhancement creativity level */ + face_enhancement_creativity?: number; + /** @description Face enhancement strength level */ + face_enhancement_strength?: number; + /** @description Whether crop to fill is enabled */ + crop_to_fill?: boolean; + /** @description JSON string containing additional options */ + options_json?: string; + /** @description Whether this was a synchronous request */ + sync?: boolean; + /** + * @description Current status of the processing job + * @enum {string} + */ + status: "Pending" | "Processing" | "Completed" | "Failed" | "Cancelled"; + /** @description Progress percentage (0-100) */ + progress?: number; + /** @description Expected completion time in Unix timestamp */ + eta?: number; + /** @description Creation time in Unix timestamp */ + creation_time?: number; + /** @description Last modification time in Unix timestamp */ + modification_time?: number; + /** @description Credits consumed for this job */ + credits: number; + }; + TopazDownloadResponse: { + /** + * @description Presigned URL to download the image + * @example https://example.com/d7b3b3b3-7b3b-4b3b-8b3b-3b3b3b3b3b3b?presigned_headers + */ + download_url: string; + /** + * @description Presigned URL to get image metadata + * @example https://example.com/d7b3b3b3-7b3b-4b3b-8b3b-3b3b3b3b3b3b?presigned_headers + */ + head_url?: string; + /** + * @description Expiration time of the presigned URLs in Unix timestamp + * @example 1617220000 + */ + expiry: number; + }; + TopazVideoSourceResolution: { + /** + * @description Width of the video in pixels + * @example 1920 + */ + width: number; + /** + * @description Height of the video in pixels + * @example 1080 + */ + height: number; + }; + TopazVideoOutputResolution: { + /** + * @description Desired output width in pixels + * @example 3840 + */ + width: number; + /** + * @description Desired output height in pixels + * @example 2160 + */ + height: number; + }; + TopazVideoEnhancementFilter: { + /** + * @description Short code name for AI model + * @example prob-4 + * @enum {string} + */ + model: "aaa-9" | "ahq-12" | "alq-13" | "alqs-2" | "amq-13" | "amqs-2" | "ddv-3" | "dtd-4" | "dtds-2" | "dtv-4" | "dtvs-2" | "gcg-5" | "ghq-5" | "iris-2" | "iris-3" | "nxf-1" | "nyx-3" | "prob-4" | "rhea-1" | "rxl-1" | "thd-3" | "thf-4" | "thm-2" | "slf-1" | "slc-1"; + /** + * @description Frame/field type of the video + * @example Progressive + * @enum {string} + */ + videoType?: "Progressive" | "Interlaced" | "ProgressiveInterlaced"; + /** + * @description Parameter mode of the selected model + * @example Auto + * @enum {string} + */ + auto?: "Auto" | "Manual" | "Relative"; + /** + * @description Optional specification of field order for interlaced input videos + * @example Auto + * @enum {string} + */ + fieldOrder?: "TopFirst" | "BottomFirst" | "Auto"; + /** + * @description Downscales video input for stronger correction of blurred subjects + * @example Normal + * @enum {string} + */ + focusFixLevel?: "None" | "Normal" | "Strong"; + /** + * @description Adjust strength of compression recovery + * @example 0.1 + */ + compression?: number; + /** + * @description Amount of detail reconstruction + * @example 0.2 + */ + details?: number; + /** + * @description Adds noise to input to reduce over-smoothing + * @example 0.01 + */ + prenoise?: number; + /** + * @description Amount of noise reduction + * @example 0.3 + */ + noise?: number; + /** + * @description Amount of halo reduction + * @example 0.4 + */ + halo?: number; + /** + * @description Adjust anti-aliasing and deblurring strength + * @example 0.5 + */ + preblur?: number; + /** + * @description Amount of sharpness applied + * @example 0.6 + */ + blur?: number; + /** + * @description Adds grain after AI model processing + * @example 0.02 + */ + grain?: number; + /** + * @description Size of generated grain + * @example 1 + */ + grainSize?: number; + /** + * @description Reintroduce source details into the output video + * @example 0.7 + */ + recoverOriginalDetailValue?: number; + /** + * @description Creativity level for Starlight Creative (slc-1) only + * @enum {string} + */ + creativity?: "low" | "high"; + /** @description Set to true for Starlight Creative (slc-1) only */ + isOptimizedMode?: boolean; + }; + TopazVideoFrameInterpolationFilter: { + /** + * @description Short code name for AI model + * @example apo-8 + * @enum {string} + */ + model: "aion-1" | "apf-2" | "apo-8" | "chf-3" | "chr-2"; + /** + * @description Slow motion factor applied to input video + * @example 2 + */ + slowmo?: number; + /** + * @description Output frame rate, does not increase duration + * @example 60 + */ + fps?: number; + /** + * @description Analyze input for duplicate frames and remove them + * @example true + */ + duplicate?: boolean; + /** + * @description Sensitivity of detection for duplicate frames + * @example 0.01 + */ + duplicateThreshold?: number; + }; + TopazCombinedCreateRequest: components["schemas"]["TopazCreateRequestVideoSchema"] | components["schemas"]["TopazCreateRequestImageSequenceSchema"]; + /** Video AI */ + TopazCreateRequestVideoSchema: { + /** @description Source details for the video */ + source: { + /** + * @description The container format of the video file + * @example mp4 + * @enum {string} + */ + container: "mp4" | "mov" | "mkv"; + /** + * @description Size of the video file in bytes + * @example 123456000 + */ + size: number; + /** + * @description Duration of the video file in seconds + * @example 600 + */ + duration: number; + /** + * @description Total number of frames in the video + * @example 18000 + */ + frameCount: number; + /** + * @description Frame rate of the video + * @example 30 + */ + frameRate: number; + /** @description Resolution details of the video */ + resolution: { + /** + * @description Width of the video in pixels + * @example 1920 + */ + width: number; + /** + * @description Height of the video in pixels + * @example 1080 + */ + height: number; + }; + external?: components["schemas"]["TopazExternalStorage"]; + }; + filters: components["schemas"]["TopazInputFilters"]; + output: components["schemas"]["TopazOutputInformationVideo"]; + destination?: { + external?: components["schemas"]["TopazExternalStorage"]; + }; + overrides?: { + isPaidDiffusion?: boolean; + }; + }; + /** Image Sequence */ + TopazCreateRequestImageSequenceSchema: { + /** @description Source details for the video */ + source: { + /** + * @description The container format of the image files + * @example TIFF + * @enum {string} + */ + container: "DPX" | "EXR" | "JPEG" | "PNG" | "TIFF"; + /** + * @description Total number of frames in the video, in this case, equal to the number of image files. + * @example 18000 + */ + frameCount: number; + /** + * @description Frame rate of the video + * @example 30 + */ + frameRate: number; + /** @description Resolution details of the image */ + resolution: { + /** + * @description Width of the image in pixels + * @example 1920 + */ + width: number; + /** + * @description Height of the image in pixels + * @example 1080 + */ + height: number; + }; + /** + * @description Optional starting frame number for image sequences + * @example 120 + */ + startNumber?: number; + /** + * @description Optional ending frame number for image sequences + * @example 120 + */ + endNumber?: number; + external: components["schemas"]["TopazExternalStorage"]; + }; + filters: components["schemas"]["TopazInputFilters"]; + output: components["schemas"]["TopazOutputInformationImageSequence"]; + destination: { + external?: components["schemas"]["TopazExternalStorage"]; + }; + }; + TopazExternalStorage: { + /** + * @example s3 + * @enum {string} + */ + provider: "s3"; + credentials: components["schemas"]["TopazCredentialsS3"]; + /** @example galaxies */ + bucketName: string; + /** + * @description The example includes the standard specifier for image sequence requests, with optional directory path. It must begin with "%" and end with the integer specifier "d". The "0" in the example indicates left-padding with zeroes, and "6" indicates the number of digits in the file name. + * Keys for video requests must be valid characters supported by S3. + * @example milky_way/%06d.tiff + */ + key: string; + }; + TopazCredentialsS3: { + /** + * @description AWS ARN of the role to assume + * @example arn:aws:iam::123456789:role/topazlabs + */ + roleArn: string; + /** + * @description Kind of like a secret string for extra layer of security + * @example MSTnuGztXtTU25XKjVfMJCsujv6VtAGtv1TGSjtOL6M= + */ + externalId: string; + }; + /** + * @description Array of EnhancementFilter or FrameInterpolationFilter objects + * @example [ + * { + * "model": "prob-4", + * "videoType": "Progressive", + * "auto": "Auto", + * "fieldOrder": "Auto", + * "focusFixLevel": "Normal", + * "compression": 0.1, + * "details": 0.2, + * "prenoise": 0.01, + * "noise": 0.3, + * "halo": 0.4, + * "preblur": 0.5, + * "blur": 0.6, + * "grain": 0.02, + * "grainSize": 1, + * "recoverOriginalDetailValue": 0.7 + * }, + * { + * "model": "apo-8", + * "slowmo": 2, + * "fps": 60, + * "duplicate": true, + * "duplicateThreshold": 0.01 + * } + * ] + */ + TopazInputFilters: (components["schemas"]["TopazVideoEnhancementFilter"] | components["schemas"]["TopazVideoFrameInterpolationFilter"])[]; + TopazOutputInformationVideo: { + /** @description Desired output resolution */ + resolution: { + /** + * @description Width in pixels. The maximum size depends on the encoder and can be referenced using the table below
H264 H265 ProRes AV1 VP9
4096 8192 16386 16384 8192
+ * @example 7680 + */ + width: number; + /** + * @description Height in pixels. The maximum size depends on the encoder and can be referenced using the table below
H264 H265 ProRes AV1 VP9
4096 8192 16386 8704 8192
+ * @example 4320 + */ + height: number; + }; + /** + * @description Frame rate + * @example 30 + */ + frameRate: number; + /** + * @description Audio bitrate, if audioTransfer is Copy or Convert. Default values for the codec are used if not provided. + * @example 320 + */ + audioBitrate?: string; + /** + * @description __Required if audioTransfer is Copy or Convert.__ + * @example AAC + * @enum {string} + */ + audioCodec: "AAC" | "AC3" | "PCM"; + /** + * @example Copy + * @enum {string} + */ + audioTransfer: "Copy" | "Convert" | "None"; + /** + * @description Video codec ID, if known. Defaults to videoEncoder. + * @example h265-main-win-nvidia + */ + codecId?: string; + /** + * @example H265 + * @enum {string} + */ + videoEncoder?: "AV1" | "FFV1" | "H264" | "H265" | "ProRes" | "QuickTime Animation" | "QuickTime R210" | "QuickTime V210" | "VP9"; + /** + * @description __Required if dynamicCompressionLevel is not provided.__ Constant bitrate, suffixed with "k" for kilobits or "m" for megabits per second. + * @example 1k + */ + videoBitrate?: string; + /** + * @description __Required if videoBitrate is not provided.__ Automatic CQP selection. + * @example Mid + * @enum {string} + */ + dynamicCompressionLevel?: "Low" | "Mid" | "High"; + /** + * @description Codec profile specific to videoEncoder. The following are some combinations of available profiles based on the 'videoEncoder' selection
H264 H265 ProRes AV1 VP9
High Main, Main10 422 Proxy, 422 LT, 422 Std, 422 HQ 8-bit, 10-bit Good, Best
+ * @example Main + */ + videoProfile?: string; + /** + * @description Center cropping to fit the output dimensions + * @example true + */ + cropToFit?: boolean; + /** + * @description Desired output container + * @example mp4 + * @enum {string} + */ + container?: "mp4" | "mov" | "mkv"; + }; + TopazOutputInformationImageSequence: { + /** @description Desired output resolution */ + resolution: { + /** + * @description Width in pixels. The maximum size depends on the encoder and can be referenced using the table below
H264 H265 ProRes AV1 VP9
4096 8192 16386 16384 8192
+ * @example 7680 + */ + width: number; + /** + * @description Height in pixels. The maximum size depends on the encoder and can be referenced using the table below
H264 H265 ProRes AV1 VP9
4096 8192 16386 8704 8192
+ * @example 4320 + */ + height: number; + }; + /** + * @description Frame rate + * @example 30 + */ + frameRate: number; + /** + * @description Video codec ID, if known. Defaults to videoEncoder. + * @example h265-main-win-nvidia + */ + codecId?: string; + /** + * @example TIFF + * @enum {string} + */ + videoEncoder?: "DPX" | "EXR" | "JPEG" | "PNG" | "TIFF"; + /** + * @description Codec profile specific to videoEncoder + * @example Main + */ + videoProfile?: string; + /** + * @description Center cropping to fit the output dimensions + * @example true + */ + cropToFit?: boolean; + /** + * @description Desired output container, defaults to the input container + * @example TIFF + * @enum {string} + */ + container?: "DPX" | "EXR" | "JPEG" | "PNG" | "TIFF"; + }; + TopazVideoCreateRequest: components["schemas"]["TopazCombinedCreateRequest"]; + /** @description Lower and upper bound estimates */ + TopazVideoRequestEstimates: { + /** + * @description Cost range in credits + * @example [ + * 10, + * 12 + * ] + */ + cost?: number[]; + /** + * @description Time range in seconds + * @example [ + * 600, + * 700 + * ] + */ + time?: number[]; + }; + TopazVideoCreateResponse: { + /** + * Format: uuid + * @description Unique identifier for the video processing request + * @example c1f96dc2-c448-00e6-82ed-14ecb6403c62 + */ + requestId: string; + estimates: components["schemas"]["TopazVideoRequestEstimates"]; + }; + TopazVideoAcceptResponse: { + /** + * @description Upload ID for completing multi-part upload + * @example GDlWC7qIaE6okS41Xf/ktpuS5XzTRabg + */ + uploadId: string; + /** + * @description URLs to PUT the parts to + * @example [ + * "https://videocloud.s3.amazonaws.com/source.mp4?uploadPart1", + * "https://videocloud.s3.amazonaws.com/source.mp4?uploadPart2" + * ] + */ + urls: string[]; + /** + * @description Response message + * @example Accepted + */ + message?: string; + }; + TopazVideoCompleteUploadRequest: { + /** + * @description MD5 hash of the source video file in hex + * @example 4d186321c1a7f0f354b297e8914ab240 + */ + md5Hash?: string; + /** @description An array of part number and ETag pairs of the uploaded parts. ETags are returned by S3 upon upload of the part. */ + uploadResults: { + /** + * @description Part number of the uploaded part, starting from 1 + * @example 1 + */ + partNum: number; + /** + * @description eTag value returned by S3 upon upload of the part + * @example d41d8cd98f00b204e9800998ecf8427e + */ + eTag: string; + }[]; + }; + TopazVideoCompleteUploadResponse: { + /** + * @description Confirmation message + * @example Processing has been queued + */ + message: string; + }; + /** @description Signed download URL to the enhanced video file */ + TopazVideoEnhancedDownload: { + /** @example https://videocloud.r2.cloudflarestorage.com/enhanced.mp4 */ + url?: string; + /** + * @description TTL in milliseconds + * @example 86400000 + */ + expiresIn?: number; + /** + * @description Time in milliseconds since UTC epoch + * @example 1727213400000 + */ + expiresAt?: number; + }; + TopazVideoStatusResponse: { + /** + * @description Current status of the video processing + * @example processing + * @enum {string} + */ + status: "requested" | "accepted" | "initializing" | "preprocessing" | "processing" | "postprocessing" | "complete" | "canceling" | "canceled" | "failed"; + /** + * @description Total progress percentage + * @example 82 + */ + progress?: number; + estimates?: components["schemas"]["TopazVideoRequestEstimates"]; + /** + * @description Size of output video + * @example 10 GB + */ + outputSize?: string; + /** + * @description Average processing speed of each node + * @example 1.23 + */ + averageFps?: number; + /** + * @description Combined processing speed of all nodes + * @example 12.34 + */ + combinedFps?: number; + /** @example Processing */ + message?: string; + download?: components["schemas"]["TopazVideoEnhancedDownload"]; + }; }; responses: never; parameters: { @@ -10420,6 +11798,57 @@ export interface operations { }; }; }; + createCloudSubscriptionCheckoutTier: { + parameters: { + query?: never; + header?: never; + path: { + /** @description The subscription tier (standard, creator, or pro) */ + tier: "standard" | "creator" | "pro"; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Subscription checkout session created successfully */ + 201: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": { + /** @description The URL to redirect the customer to complete subscription */ + checkout_url?: string; + }; + }; + }; + /** @description Bad request, invalid input or tier */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Unauthorized or invalid token */ + 401: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; GetCloudSubscriptionStatus: { parameters: { query?: never; @@ -10440,6 +11869,9 @@ export interface operations { is_active?: boolean; /** @description The active subscription ID if one exists */ subscription_id?: string | null; + subscription_tier?: components["schemas"]["SubscriptionTier"] | null; + /** @description Whether the customer has funds/credits available */ + has_fund?: boolean; /** * Format: date-time * @description The next renewal date for the subscription (ISO 8601 format) @@ -10471,6 +11903,73 @@ export interface operations { }; }; }; + GetAdminCustomerCloudSubscriptionStatus: { + parameters: { + query?: never; + header: { + /** @description Admin API secret used to authorize this request */ + "X-Comfy-Admin-Secret": string; + }; + path: { + /** @description The ID of the customer whose subscription status to retrieve */ + customer_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Cloud subscription status retrieved successfully */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": { + /** @description Whether the customer has an active cloud subscription */ + is_active?: boolean; + /** @description The active subscription ID if one exists */ + subscription_id?: string | null; + subscription_tier?: components["schemas"]["SubscriptionTier"] | null; + /** @description Whether the customer has funds/credits available */ + has_fund?: boolean; + /** + * Format: date-time + * @description The next renewal date for the subscription (ISO 8601 format) + */ + renewal_date?: string | null; + /** + * Format: date-time + * @description The date when the subscription is set to end (ISO 8601 format) + */ + end_date?: string | null; + }; + }; + }; + /** @description Unauthorized or missing admin API secret */ + 401: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Customer not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; GetCustomerUsage: { parameters: { query?: never; @@ -10655,6 +12154,88 @@ export interface operations { }; }; }; + TrackCustomerUsage: { + parameters: { + query?: never; + header: { + /** @description Admin API secret used to authorize this request */ + "X-Comfy-Admin-Secret": string; + }; + path: { + /** @description The ID of the customer to track usage for */ + customer_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": { + /** + * Format: uuid + * @description Unique transaction ID for this usage event + */ + transaction_id: string; + /** + * Format: date-time + * @description Timestamp of the usage event (RFC3339 format) + */ + timestamp?: string; + /** @description Custom parameters for the usage event */ + params: { + [key: string]: unknown; + }; + }; + }; + }; + responses: { + /** @description Usage tracked successfully */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": { + /** @description Success message */ + message?: string; + }; + }; + }; + /** @description Bad request */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Unauthorized or invalid token */ + 401: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Customer not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; createCustomerStorageResource: { parameters: { query?: never; @@ -12975,11 +14556,611 @@ export interface operations { }; }; }; + listCoupons: { + parameters: { + query?: { + /** @description Number of coupons to return */ + limit?: number; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description List of coupons retrieved successfully */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": { + coupons: components["schemas"]["CouponResponse"][]; + /** @description Whether there are more results available */ + has_more?: boolean; + }; + }; + }; + /** @description Unauthorized */ + 401: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Forbidden - Admin access required */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + createCoupon: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["CreateCouponRequest"]; + }; + }; + responses: { + /** @description Coupon created successfully */ + 201: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["CouponResponse"]; + }; + }; + /** @description Bad request */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Unauthorized */ + 401: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Forbidden - Admin access required */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + getCoupon: { + parameters: { + query?: never; + header?: never; + path: { + /** @description The Stripe coupon ID */ + coupon_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Coupon retrieved successfully */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["CouponResponse"]; + }; + }; + /** @description Unauthorized */ + 401: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Forbidden - Admin access required */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Coupon not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + deleteCoupon: { + parameters: { + query?: never; + header?: never; + path: { + /** @description The Stripe coupon ID */ + coupon_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Coupon deleted successfully */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": { + /** @description Success message */ + message: string; + /** @description The deleted coupon ID */ + coupon_id: string; + }; + }; + }; + /** @description Unauthorized */ + 401: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Forbidden - Admin access required */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Coupon not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + updateCoupon: { + parameters: { + query?: never; + header?: never; + path: { + /** @description The Stripe coupon ID */ + coupon_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["UpdateCouponRequest"]; + }; + }; + responses: { + /** @description Coupon updated successfully */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["CouponResponse"]; + }; + }; + /** @description Bad request */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Unauthorized */ + 401: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Forbidden - Admin access required */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Coupon not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + listPromoCodes: { + parameters: { + query?: { + /** @description Filter by active status */ + active?: boolean; + /** @description Number of promo codes to return */ + limit?: number; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description List of promo codes retrieved successfully */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": { + promo_codes: components["schemas"]["PromoCodeResponse"][]; + /** @description Whether there are more results available */ + has_more?: boolean; + }; + }; + }; + /** @description Unauthorized */ + 401: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Forbidden - Admin access required */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + createPromoCode: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["CreatePromoCodeRequest"]; + }; + }; + responses: { + /** @description Promo code created successfully */ + 201: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["PromoCodeResponse"]; + }; + }; + /** @description Bad request */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Unauthorized */ + 401: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Forbidden - Admin access required */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + getPromoCode: { + parameters: { + query?: never; + header?: never; + path: { + /** @description The Stripe promotion code ID */ + promo_code_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Promo code retrieved successfully */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["PromoCodeResponse"]; + }; + }; + /** @description Unauthorized */ + 401: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Forbidden - Admin access required */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Promo code not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + deletePromoCode: { + parameters: { + query?: never; + header?: never; + path: { + /** @description The Stripe promotion code ID */ + promo_code_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Promo code deactivated successfully */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": { + /** @description Success message */ + message: string; + /** @description The deactivated promo code ID */ + promo_code_id: string; + }; + }; + }; + /** @description Unauthorized */ + 401: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Forbidden - Admin access required */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Promo code not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + updatePromoCode: { + parameters: { + query?: never; + header?: never; + path: { + /** @description The Stripe promotion code ID */ + promo_code_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["UpdatePromoCodeRequest"]; + }; + }; + responses: { + /** @description Promo code updated successfully */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["PromoCodeResponse"]; + }; + }; + /** @description Bad request */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Unauthorized */ + 401: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Forbidden - Admin access required */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Promo code not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; getReleaseNotes: { parameters: { query: { /** @description The project to get release notes for */ - project: "comfyui" | "comfyui_frontend" | "desktop"; + project: "comfyui" | "comfyui_frontend" | "desktop" | "cloud"; /** @description The current version to filter release notes */ current_version?: string; /** @description The locale for the release notes */ @@ -15683,6 +17864,198 @@ export interface operations { }; }; }; + klingCreateOmniVideo: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** @description Create task for generating omni-video */ + requestBody: { + content: { + "application/json": components["schemas"]["KlingOmniVideoRequest"]; + }; + }; + responses: { + /** @description Successful response (Request successful) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["KlingOmniVideoResponse"]; + }; + }; + /** @description Invalid request parameters */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["KlingErrorResponse"]; + }; + }; + /** @description Authentication failed */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["KlingErrorResponse"]; + }; + }; + /** @description Unauthorized access to requested resource */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["KlingErrorResponse"]; + }; + }; + /** @description Resource not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["KlingErrorResponse"]; + }; + }; + /** @description Account exception or Rate limit exceeded */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["KlingErrorResponse"]; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["KlingErrorResponse"]; + }; + }; + /** @description Service temporarily unavailable */ + 503: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["KlingErrorResponse"]; + }; + }; + /** @description Server timeout */ + 504: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["KlingErrorResponse"]; + }; + }; + }; + }; + klingOmniVideoQuerySingleTask: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Task ID or External Task ID. Can query by either task_id (generated by system) or external_task_id (customized task ID) */ + id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful response (Request successful) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["KlingOmniVideoResponse"]; + }; + }; + /** @description Invalid request parameters */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["KlingErrorResponse"]; + }; + }; + /** @description Authentication failed */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["KlingErrorResponse"]; + }; + }; + /** @description Unauthorized access to requested resource */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["KlingErrorResponse"]; + }; + }; + /** @description Resource not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["KlingErrorResponse"]; + }; + }; + /** @description Account exception or Rate limit exceeded */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["KlingErrorResponse"]; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["KlingErrorResponse"]; + }; + }; + /** @description Service temporarily unavailable */ + 503: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["KlingErrorResponse"]; + }; + }; + /** @description Server timeout */ + 504: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["KlingErrorResponse"]; + }; + }; + }; + }; klingImageGenerationsQueryTaskList: { parameters: { query?: { @@ -16661,6 +19034,89 @@ export interface operations { }; }; }; + bflFlux2ProGenerate: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["BFLFlux2ProGenerateRequest"]; + }; + }; + responses: { + /** @description Successful response from BFL Flux 2 Pro proxy */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["BFLFluxProGenerateResponse"]; + }; + }; + /** @description Bad Request (invalid input to proxy) */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Unauthorized */ + 401: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Payment Required */ + 402: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Rate limit exceeded (either from proxy or BFL) */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Internal Server Error (proxy or upstream issue) */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Bad Gateway (error communicating with BFL) */ + 502: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description Gateway Timeout (BFL took too long to respond) */ + 504: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; BFLExpand_v1_flux_pro_1_0_expand_post: { parameters: { query?: never; @@ -19953,6 +22409,7 @@ export interface operations { auto_size?: boolean; /** @default false */ quad?: boolean; + geometry_quality?: components["schemas"]["TripoGeometryQuality"]; } | { type: components["schemas"]["TripoImageToModel"]; file: { @@ -19978,6 +22435,7 @@ export interface operations { orientation?: components["schemas"]["TripoOrientation"]; /** @default false */ quad?: boolean; + geometry_quality?: components["schemas"]["TripoGeometryQuality"]; } | { type: components["schemas"]["TripoMultiviewToModel"]; files: { @@ -20005,6 +22463,7 @@ export interface operations { orientation?: components["schemas"]["TripoOrientation"]; /** @default false */ quad?: boolean; + geometry_quality?: components["schemas"]["TripoGeometryQuality"]; } | { type: components["schemas"]["TripoTypeTextureModel"]; /** @default true */ @@ -21027,4 +23486,254 @@ export interface operations { }; }; }; + topazEnhanceGenAsync: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "multipart/form-data": components["schemas"]["TopazEnhanceGenRequest"]; + }; + }; + responses: { + /** @description Image processing request has been successfully created */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["TopazEnhanceGenResponse"]; + }; + }; + /** @description Error 4xx/5xx */ + default: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + }; + }; + topazGetStatus: { + parameters: { + query?: never; + header?: never; + path: { + /** @description The process ID returned from the enhance-gen request */ + process_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Status retrieved successfully */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["TopazStatusResponse"]; + }; + }; + /** @description Error 4xx/5xx */ + default: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + }; + }; + topazDownloadResult: { + parameters: { + query?: never; + header?: never; + path: { + /** @description The process ID returned from the enhance-gen request */ + process_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Presigned download URL for the processed image */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["TopazDownloadResponse"]; + }; + }; + /** @description Error 4xx/5xx */ + default: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + }; + }; + topazVideoCreate: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["TopazVideoCreateRequest"]; + }; + }; + responses: { + /** @description Video enhancement request created successfully */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["TopazVideoCreateResponse"]; + }; + }; + /** @description Error 4xx/5xx */ + default: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + }; + }; + topazVideoAccept: { + parameters: { + query?: never; + header?: never; + path: { + /** @description The request ID returned from the video create request */ + request_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Video request accepted successfully */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["TopazVideoAcceptResponse"]; + }; + }; + /** @description Error 4xx/5xx */ + default: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + }; + }; + topazVideoCompleteUpload: { + parameters: { + query?: never; + header?: never; + path: { + /** @description The request ID returned from the video create request */ + request_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["TopazVideoCompleteUploadRequest"]; + }; + }; + responses: { + /** @description Video upload completed successfully */ + 202: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["TopazVideoCompleteUploadResponse"]; + }; + }; + /** @description Error 4xx/5xx */ + default: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + }; + }; + topazVideoGetStatus: { + parameters: { + query?: never; + header?: never; + path: { + /** @description The request ID returned from the video create request */ + request_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Video status retrieved successfully */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["TopazVideoStatusResponse"]; + }; + }; + /** @description Error 4xx/5xx */ + default: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + }; + }; + getFeatures: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Success */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["FeaturesResponse"]; + }; + }; + }; + }; } diff --git a/packages/shared-frontend-utils/src/formatUtil.ts b/packages/shared-frontend-utils/src/formatUtil.ts index cb1a0d1a3..032d1c9ed 100644 --- a/packages/shared-frontend-utils/src/formatUtil.ts +++ b/packages/shared-frontend-utils/src/formatUtil.ts @@ -75,6 +75,17 @@ export function formatSize(value?: number) { return `${parseFloat((bytes / Math.pow(k, i)).toFixed(2))} ${sizes[i]}` } +/** + * Formats a commit hash by truncating long (40-char) hashes to 7 chars. + * Returns the original string if not a valid full commit hash. + */ +export function formatCommitHash(value: string): string { + if (/^[a-f0-9]{40}$/i.test(value)) { + return value.slice(0, 7) + } + return value +} + /** * Returns various filename components. * Example: diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 87d1264de..3db096f7b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,15 +15,9 @@ catalogs: '@eslint/js': specifier: ^9.35.0 version: 9.35.0 - '@iconify-json/lucide': - specifier: ^1.1.178 - version: 1.2.66 '@iconify/json': specifier: ^2.2.380 version: 2.2.380 - '@iconify/tailwind': - specifier: ^1.1.3 - version: 1.2.0 '@intlify/eslint-plugin-vue-i18n': specifier: ^4.1.0 version: 4.1.0 @@ -126,6 +120,9 @@ catalogs: '@vueuse/integrations': specifier: ^13.9.0 version: 13.9.0 + '@webgpu/types': + specifier: ^0.1.66 + version: 0.1.66 algoliasearch: specifier: ^5.21.0 version: 5.21.0 @@ -246,6 +243,9 @@ catalogs: tw-animate-css: specifier: ^1.3.8 version: 1.3.8 + typegpu: + specifier: ^0.8.2 + version: 0.8.2 typescript: specifier: ^5.9.2 version: 5.9.2 @@ -255,6 +255,9 @@ catalogs: unplugin-icons: specifier: ^0.22.0 version: 0.22.0 + unplugin-typegpu: + specifier: 0.8.0 + version: 0.8.0 unplugin-vue-components: specifier: ^0.28.0 version: 0.28.0 @@ -422,9 +425,6 @@ importers: extendable-media-recorder-wav-encoder: specifier: ^7.0.129 version: 7.0.129 - fast-glob: - specifier: ^3.3.3 - version: 3.3.3 firebase: specifier: 'catalog:' version: 11.6.0 @@ -464,6 +464,9 @@ importers: tiptap-markdown: specifier: ^0.8.10 version: 0.8.10(@tiptap/core@2.10.4(@tiptap/pm@2.10.4)) + typegpu: + specifier: 'catalog:' + version: 0.8.2 vue: specifier: 'catalog:' version: 3.5.13(typescript@5.9.2) @@ -561,6 +564,9 @@ importers: '@vue/test-utils': specifier: 'catalog:' version: 2.4.6 + '@webgpu/types': + specifier: 'catalog:' + version: 0.1.66 cross-env: specifier: 'catalog:' version: 10.1.0 @@ -672,6 +678,9 @@ importers: unplugin-icons: specifier: 'catalog:' version: 0.22.0(@vue/compiler-sfc@3.5.13) + unplugin-typegpu: + specifier: 'catalog:' + version: 0.8.0(typegpu@0.8.2) unplugin-vue-components: specifier: 'catalog:' version: 0.28.0(@babel/parser@7.28.4)(rollup@4.22.4)(vue@3.5.13(typescript@5.9.2)) @@ -1431,6 +1440,10 @@ packages: resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} engines: {node: '>=6.9.0'} + '@babel/standalone@7.28.5': + resolution: {integrity: sha512-1DViPYJpRU50irpGMfLBQ9B4kyfQuL6X7SS7pwTeWeZX0mNkjzPi0XFqxCjSdddZXUQy4AhnQnnesA/ZHnvAdw==} + engines: {node: '>=6.9.0'} + '@babel/template@7.27.2': resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} @@ -3790,8 +3803,8 @@ packages: peerDependencies: vue: ^3.5.0 - '@webgpu/types@0.1.51': - resolution: {integrity: sha512-ktR3u64NPjwIViNCck+z9QeyN0iPkQCUOQ07ZCV1RzlkfP+olLTeEZ95O1QHS+v4w9vJeY9xj/uJuSphsHy5rQ==} + '@webgpu/types@0.1.66': + resolution: {integrity: sha512-YA2hLrwLpDsRueNDXIMqN9NTzD6bCDkuXbOSe0heS+f8YE8usA6Gbv1prj81pzVHrbaAma7zObnIC+I6/sXJgA==} '@xstate/fsm@1.6.5': resolution: {integrity: sha512-b5o1I6aLNeYlU/3CPlj/Z91ybk1gUsKT+5NAJI+2W4UjvS5KLG28K9v5UvNoFVjHV8PajVZ00RH3vnjyQO7ZAw==} @@ -6038,6 +6051,10 @@ packages: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true + magic-string-ast@1.0.3: + resolution: {integrity: sha512-CvkkH1i81zl7mmb94DsRiFeG9V2fR2JeuK8yDgS8oiZSFa++wWLEgZ5ufEOyLHbvSbD1gTRKv9NdX69Rnvr9JA==} + engines: {node: '>=20.19.0'} + magic-string@0.30.19: resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} @@ -7411,6 +7428,14 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + tinyest-for-wgsl@0.1.3: + resolution: {integrity: sha512-Wm5ADG1UyDxykf42S1gLYP4U9e1QP/TdtJeovQi6y68zttpiFLKqQGioHmPs9Mjysh7YMSAr/Lpuk0cD2MVdGA==} + engines: {node: '>=12.20.0'} + + tinyest@0.1.2: + resolution: {integrity: sha512-aHRmouyowIq1P5jrTF+YK6pGX+WuvFtSCLbqk91yHnU3SWQRIcNIamZLM5XF6lLqB13AWz0PGPXRff2QGDsxIg==} + engines: {node: '>=12.20.0'} + tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} @@ -7537,6 +7562,13 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} + typed-binary@4.3.2: + resolution: {integrity: sha512-HT3pIBM2njCZUmeczDaQUUErGiM6GXFCqMsHegE12HCoBtvHCkfR10JJni0TeGOTnLilTd6YFyj+YhflqQDrDQ==} + + typegpu@0.8.2: + resolution: {integrity: sha512-wkMJWhJE0pSkw2G/FesjqjbtHkREyOKu1Zmyj19xfmaX5+65YFwgfQNKSK8CxqN4kJkP7JFelLDJTSYY536TYg==} + engines: {node: '>=12.20.0'} + typescript-eslint@8.44.0: resolution: {integrity: sha512-ib7mCkYuIzYonCq9XWF5XNw+fkj2zg629PSa9KNIQ47RXFF763S5BIX4wqz1+FLPogTZoiw8KmCiRPRa8bL3qw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -7641,6 +7673,11 @@ packages: vue-template-es2015-compiler: optional: true + unplugin-typegpu@0.8.0: + resolution: {integrity: sha512-VJHdXSXGOkAx0WhwFczhVUjAI6HyDkrQXk20HnwyuzIE3FdqE5l9sJTCYZzoVGo3z8i/IA5TMHCDzzP0Bc97Cw==} + peerDependencies: + typegpu: ^0.8.0 + unplugin-vue-components@0.28.0: resolution: {integrity: sha512-jiTGtJ3JsRFBjgvyilfrX7yUoGKScFgbdNw+6p6kEXU+Spf/rhxzgvdfuMcvhCcLmflB/dY3pGQshYBVGOUx7Q==} engines: {node: '>=14'} @@ -7831,8 +7868,8 @@ packages: vue-component-type-helpers@3.1.1: resolution: {integrity: sha512-B0kHv7qX6E7+kdc5nsaqjdGZ1KwNKSUQDWGy7XkTYT7wFsOpkEyaJ1Vq79TjwrrtuLRgizrTV7PPuC4rRQo+vw==} - vue-component-type-helpers@3.1.4: - resolution: {integrity: sha512-Uws7Ew1OzTTqHW8ZVl/qLl/HB+jf08M0NdFONbVWAx0N4gMLK8yfZDgeB77hDnBmaigWWEn5qP8T9BG59jIeyQ==} + vue-component-type-helpers@3.1.5: + resolution: {integrity: sha512-7V3yJuNWW7/1jxCcI1CswnpDsvs02Qcx/N43LkV+ZqhLj2PKj50slUflHAroNkN4UWiYfzMUUUXiNuv9khmSpQ==} vue-demi@0.14.10: resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} @@ -8969,6 +9006,8 @@ snapshots: '@babel/runtime@7.28.4': {} + '@babel/standalone@7.28.5': {} + '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 @@ -10633,7 +10672,7 @@ snapshots: storybook: 9.1.6(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@5.4.19(@types/node@20.14.10)(lightningcss@1.30.1)(terser@5.39.2)) type-fest: 2.19.0 vue: 3.5.13(typescript@5.9.2) - vue-component-type-helpers: 3.1.4 + vue-component-type-helpers: 3.1.5 '@swc/helpers@0.5.17': dependencies: @@ -11016,7 +11055,7 @@ snapshots: '@tweenjs/tween.js': 23.1.3 '@types/stats.js': 0.17.3 '@types/webxr': 0.5.20 - '@webgpu/types': 0.1.51 + '@webgpu/types': 0.1.66 fflate: 0.8.2 meshoptimizer: 0.18.1 @@ -11519,7 +11558,7 @@ snapshots: dependencies: vue: 3.5.13(typescript@5.9.2) - '@webgpu/types@0.1.51': {} + '@webgpu/types@0.1.66': {} '@xstate/fsm@1.6.5': {} @@ -14000,6 +14039,10 @@ snapshots: lz-string@1.5.0: {} + magic-string-ast@1.0.3: + dependencies: + magic-string: 0.30.19 + magic-string@0.30.19: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -15864,6 +15907,12 @@ snapshots: tinybench@2.9.0: {} + tinyest-for-wgsl@0.1.3: + dependencies: + tinyest: 0.1.2 + + tinyest@0.1.2: {} + tinyexec@0.3.2: {} tinyexec@1.0.1: {} @@ -15995,6 +16044,13 @@ snapshots: reflect.getprototypeof: 1.0.10 optional: true + typed-binary@4.3.2: {} + + typegpu@0.8.2: + dependencies: + tinyest: 0.1.2 + typed-binary: 4.3.2 + typescript-eslint@8.44.0(eslint@9.35.0(jiti@2.4.2))(typescript@5.9.2): dependencies: '@typescript-eslint/eslint-plugin': 8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.35.0(jiti@2.4.2))(typescript@5.9.2))(eslint@9.35.0(jiti@2.4.2))(typescript@5.9.2) @@ -16090,6 +16146,19 @@ snapshots: transitivePeerDependencies: - supports-color + unplugin-typegpu@0.8.0(typegpu@0.8.2): + dependencies: + '@babel/standalone': 7.28.5 + defu: 6.1.4 + estree-walker: 3.0.3 + magic-string-ast: 1.0.3 + pathe: 2.0.3 + picomatch: 4.0.3 + tinyest: 0.1.2 + tinyest-for-wgsl: 0.1.3 + typegpu: 0.8.2 + unplugin: 2.3.5 + unplugin-vue-components@0.28.0(@babel/parser@7.28.4)(rollup@4.22.4)(vue@3.5.13(typescript@5.9.2)): dependencies: '@antfu/utils': 0.7.10 @@ -16370,7 +16439,7 @@ snapshots: vue-component-type-helpers@3.1.1: {} - vue-component-type-helpers@3.1.4: {} + vue-component-type-helpers@3.1.5: {} vue-demi@0.14.10(vue@3.5.13(typescript@5.9.2)): dependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 9da20a48a..03b59cd17 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -43,6 +43,7 @@ catalog: '@vue/test-utils': ^2.4.6 '@vueuse/core': ^11.0.0 '@vueuse/integrations': ^13.9.0 + '@webgpu/types': ^0.1.66 algoliasearch: ^5.21.0 axios: ^1.8.2 cross-env: ^10.1.0 @@ -83,9 +84,11 @@ catalog: tailwindcss-primeui: ^0.6.1 tsx: ^4.15.6 tw-animate-css: ^1.3.8 + typegpu: ^0.8.2 typescript: ^5.9.2 typescript-eslint: ^8.44.0 unplugin-icons: ^0.22.0 + unplugin-typegpu: 0.8.0 unplugin-vue-components: ^0.28.0 vite: ^5.4.19 vite-plugin-dts: ^4.5.4 diff --git a/public/assets/CREDIT.txt b/public/assets/CREDIT.txt index b3a9bc906..a25ecbb7b 100644 --- a/public/assets/CREDIT.txt +++ b/public/assets/CREDIT.txt @@ -1 +1,9 @@ -Thanks to OpenArt (https://openart.ai) for providing the sorted-custom-node-map data, captured in September 2024. \ No newline at end of file +Node usage data merged from two sources: +- Mixpanel "app:node_search_result_selected" events (Nov 2025): 1,112 nodes, 46,514 selections + Reflects actual user search behavior - what users choose when searching. +- OpenArt workflow data (Sept 2024): 2,600 nodes, 118,676 uses + Reflects overall popularity - what's used in workflows. + +Merge strategy: New data overwrites old for 514 overlapping nodes. Old data +normalized by 2.55x scale factor to match new data. Total: 3,198 nodes. +Search-selected nodes prioritized in ranking. \ No newline at end of file diff --git a/public/assets/images/civitai.svg b/public/assets/images/civitai.svg new file mode 100644 index 000000000..0c29253c4 --- /dev/null +++ b/public/assets/images/civitai.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/assets/images/cloud-subscription.webm b/public/assets/images/cloud-subscription.webm index ec81ab6d1..f26392a66 100644 Binary files a/public/assets/images/cloud-subscription.webm and b/public/assets/images/cloud-subscription.webm differ diff --git a/public/assets/sorted-custom-node-map.json b/public/assets/sorted-custom-node-map.json index 1a2428289..d22bd3b29 100644 --- a/public/assets/sorted-custom-node-map.json +++ b/public/assets/sorted-custom-node-map.json @@ -1,2602 +1,3200 @@ { - "PreviewImage": 8794, - "CLIPTextEncode": 6888, - "VAEDecode": 4671, - "LoadImage": 4085, - "SaveImage": 3438, - "KSampler": 3324, - "CheckpointLoaderSimple": 2958, - "EmptyLatentImage": 2014, - "VAEEncode": 1627, - "VAELoader": 1376, - "ControlNetLoader": 1372, - "ShowText|pysssss": 1346, - "LoraLoader": 1229, - "VHS_VideoCombine": 1172, - "UpscaleModelLoader": 1079, - "MaskToImage": 998, - "ControlNetApplyAdvanced": 939, - "Text Concatenate": 831, - "ImageScale": 765, - "SDXLPromptStyler": 758, - "Text _O": 725, - "UltralyticsDetectorProvider": 657, - "ControlNetLoaderAdvanced": 653, - "KSamplerAdvanced": 642, - "ImageUpscaleWithModel": 640, - "CLIPSetLastLayer": 628, - "CLIPTextEncodeSDXL": 618, - "CLIPVisionLoader": 612, - "ImageScaleBy": 606, - "CR Prompt Text": 591, - "ACN_AdvancedControlNetApply": 572, - "IPAdapterModelLoader": 570, - "PrepImageForClipVision": 565, - "PreviewBridge": 547, - "ControlNetApply": 535, - "UltimateSDUpscale": 510, - "KSampler (Efficient)": 495, - "SAMLoader": 470, - "Text Concatenate (JPS)": 449, - "ToBasicPipe": 419, - "Text Multiline": 416, - "KSamplerSelect": 410, - "CM_NumberBinaryOperation": 393, - "IPAdapterUnifiedLoader": 388, - "MaskPreview+": 384, - "String Literal": 383, - "ImpactSwitch": 381, - "ImageResize+": 371, - "InvertMask": 362, - "IPAdapterAdvanced": 358, - "UNETLoader": 349, - "AIO_Preprocessor": 346, - "ConditioningConcat": 334, - "CR Text Input Switch": 327, - "If ANY execute A else B": 326, - "FaceDetailer": 312, - "LoraLoaderModelOnly": 304, - "ConditioningCombine": 300, - "ImageCompositeMasked": 299, - "BasicScheduler": 294, - "FreeU_V2": 294, - "KSampler Adv. (Efficient)": 293, - "CR Text": 284, - "FromBasicPipe_v2": 278, - "DualCLIPLoader": 278, - "ImageToMask": 278, - "MathExpression|pysssss": 278, - "SDXLResolutionPresets": 274, - "SamplerCustomAdvanced": 274, - "Paste By Mask": 273, - "Efficient Loader": 273, - "CR Text Input Switch (4 way)": 272, - "CM_IntToNumber": 268, - "DWPreprocessor": 267, - "Concat Text _O": 266, - "Int Literal": 265, - "WD14Tagger|pysssss": 263, - "CR LoRA Stack": 260, - "ImageInvert": 260, - "GrowMask": 259, - "mape Variable": 258, - "BasicGuider": 246, - "CM_IntBinaryOperation": 246, - "RandomNoise": 245, - "CR Apply LoRA Stack": 245, - "Image Filter Adjustments": 243, - "GroundingDinoSAMSegment (segment anything)": 238, - "Image Overlay": 238, - "FromBasicPipe": 234, - "LatentUpscaleBy": 232, - "CR Text Concatenate": 232, - "VHS_LoadVideo": 231, - "ImageBatch": 225, - "GetImageSize+": 224, - "Logic Boolean": 219, - "Image Save": 218, - "SimpleMath+": 216, - "VAEDecodeTiled": 215, - "SetLatentNoiseMask": 214, - "SamplerCustom": 212, - "ADE_AnimateDiffLoaderWithContext": 209, - "StringFunction|pysssss": 207, - "CR Image Input Switch": 206, - "PlaySound|pysssss": 205, - "ReActorFaceSwap": 203, - "FloatConstant": 200, - "GroundingDinoModelLoader (segment anything)": 197, - "LineArtPreprocessor": 196, - "CLIPTextEncodeSDXLRefiner": 189, - "ImageBlend": 187, - "ConcatStringSingle": 186, - "ImpactInt": 185, - "ADE_AnimateDiffUniformContextOptions": 184, - "LoraLoader|pysssss": 183, - "RIFE VFI": 181, - "Save Text File": 180, - "ImageScaleToTotalPixels": 180, - "Number to Text": 180, - "GrowMaskWithBlur": 179, - "VAEEncodeForInpaint": 177, - "FluxGuidance": 171, - "CR Integer To String": 171, - "ttN imageOutput": 170, - "Text to Number": 170, - "CR Overlay Text": 169, - "CannyEdgePreprocessor": 164, - "ImageCrop+": 164, - "Image Resize": 162, - "Automatic CFG": 162, - "EmptyImage": 162, - "ImagePadForOutpaint": 156, - "SolidMask": 150, - "CR Upscale Image": 150, - "DisplayText_Zho": 150, - "ConstrainImage|pysssss": 149, - "Change Channel Count": 149, - "CR Simple Binary Pattern": 147, - "VHS_SplitImages": 146, - "DeepTranslatorTextNode": 144, - "ConcatText_Zho": 144, - "ReroutePrimitive|pysssss": 143, - "CheckpointLoader|pysssss": 143, - "SaveImagetoPath": 141, - "DPMagicPrompt": 140, - "BboxDetectorSEGS": 137, - "Seed Everywhere": 137, - "DepthAnythingPreprocessor": 137, - "Text Load Line From File": 137, - "InstantIDModelLoader": 135, - "DetailerForEach": 135, - "MaskComposite": 135, - "InstantIDFaceAnalysis": 133, - "ImageSharpen": 131, - "ConditioningZeroOut": 131, - "ModelSamplingDiscrete": 128, - "Image To Mask": 125, - "SDPromptSaver": 125, - "Cfg Literal": 122, - "Text Random Line": 122, - "SegsToCombinedMask": 122, - "ConditioningSetTimestepRange": 121, - "ColorMatch": 121, - "Image Size to Number": 120, - "SimpleText": 118, - "ApplyInstantID": 117, - "BNK_CLIPTextEncodeAdvanced": 117, - "CLIPTextEncodeFlux": 116, - "CR SDXL Aspect Ratio": 116, - "smZ CLIPTextEncode": 114, - "Bus Node": 114, - "PreviewTextNode": 114, - "PatchModelAddDownscale": 113, - "Seed Generator": 112, - "SAMModelLoader (segment anything)": 112, - "ScaledSoftControlNetWeights": 111, - "HighRes-Fix Script": 111, - "IPAdapter": 110, - "CM_FloatToNumber": 110, - "Cut By Mask": 109, - "ttN text7BOX_concat": 109, - "ADE_UseEvolvedSampling": 108, - "CR Multi-ControlNet Stack": 108, - "MiDaS-DepthMapPreprocessor": 107, - "IPAdapterEncoder": 106, - "ImpactSimpleDetectorSEGS": 105, - "ImageOnlyCheckpointLoader": 104, - "Get Image Size": 104, - "LoRA Stacker": 103, - "Float": 103, - "GetImageSize": 101, - "ImageResizeKJ": 101, - "DifferentialDiffusion": 101, - "LoadImagesFromDirectory": 101, - "ttN textDebug": 101, - "OllamaGenerate": 100, - "ImageSelector": 99, - "FaceRestoreModelLoader": 98, - "SelfAttentionGuidance": 98, - "VideoLinearCFGGuidance": 98, - "Image Blending Mode": 97, - "ImageCASharpening+": 96, - "ImageSender": 96, - "Zoe-DepthMapPreprocessor": 95, - "SVD_img2vid_Conditioning": 95, - "ImageReceiver": 95, - "Image Rembg (Remove Background)": 93, - "RescaleCFG": 93, - "FaceRestoreCFWithModel": 90, - "ModelSamplingFlux": 90, - "OpenposePreprocessor": 89, - "BatchPromptSchedule": 89, - "GetImageSizeAndCount": 89, - "AlignYourStepsScheduler": 88, - "ADE_AnimateDiffLoRALoader": 87, - "TextInput_": 87, - "ADE_LoadAnimateDiffModel": 87, - "EmptySD3LatentImage": 86, - "JoinImageWithAlpha": 86, - "SplitImageWithAlpha": 86, - "PerturbedAttentionGuidance": 86, - "InpaintModelConditioning": 85, - "ImageCrop": 85, - "Text Prompt (JPS)": 85, - "Florence2Run": 84, - "Text Find and Replace": 84, - "VAEEncodeTiled": 83, - "OllamaVision": 83, - "LoadImageMask": 83, - "ImpactGaussianBlurMask": 82, - "DPRandomGenerator": 82, - "FaceDetailerPipe": 79, - "ImpactImageBatchToImageList": 79, - "CR Image Output": 79, - "CR Aspect Ratio": 78, - "MaskBlur+": 77, - "LoadAndApplyICLightUnet": 77, - "ICLightConditioning": 77, - "BRIA_RMBG_Zho": 77, - "Image to Noise": 76, - "AV_ControlNetPreprocessor": 76, - "Canny": 75, - "Lora Loader": 75, - "Control Net Stacker": 75, - "RemapImageRange": 75, - "InpaintPreprocessor": 74, - "ImageListToImageBatch": 74, - "Image Transpose": 74, - "CR Apply Multi-ControlNet": 74, - "Image Blend": 72, - "JWImageResizeByLongerSide": 71, - "DownloadAndLoadFlorence2Model": 71, - "ADE_AnimateDiffSamplingSettings": 70, - "ImageGenResolutionFromImage": 70, - "IPAdapterFaceID": 70, - "HintImageEnchance": 70, - "CR Conditioning Input Switch": 70, - "CR Seed": 69, - "VHS_LoadVideoPath": 69, - "Preview Chooser": 69, - "CM_NumberToInt": 69, - "BLIP Analyze Image": 68, - "ImpactMakeImageBatch": 68, - "CheckpointLoaderSimpleWithNoiseSelect": 68, - "CM_FloatBinaryOperation": 68, - "BLIP Model Loader": 67, - "RepeatLatentBatch": 67, - "Mask Crop Region": 67, - "ViewText": 67, - "Int": 66, - "IPAdapterBatch": 66, - "KSampler //Inspire": 65, - "BRIA_RMBG_ModelLoader_Zho": 65, - "CR Conditioning Mixer": 65, - "IPAdapterUnifiedLoaderFaceID": 63, - "easy imageSize": 63, - "Image Blend by Mask": 63, - "RepeatImageBatch": 62, - "Number Operation": 62, - "INPAINT_ApplyFooocusInpaint": 62, - "Text String": 61, - "BrushNetLoader": 61, - "Image Levels Adjustment": 61, - "INPAINT_LoadFooocusInpaint": 61, - "TilePreprocessor": 60, - "SDXLEmptyLatentSizePicker+": 60, - "ImpactSEGSOrderedFilter": 60, - "ConditioningSetMask": 60, - "SDLoraLoader": 60, - "RemapMaskRange": 59, - "easy cleanGpuUsed": 59, - "SEGSPreview": 59, - "Upscale Model Loader": 58, - "RebatchImages": 58, - "FeatherMask": 58, - "ColorCorrect": 58, - "Image Remove Background (rembg)": 58, - "Image Crop Location": 58, - "HEDPreprocessor": 57, - "ToBinaryMask": 57, - "unCLIPConditioning": 57, - "LayerMask: MaskPreview": 57, - "JWImageResize": 57, - "VHS_LoadImagesPath": 56, - "GlobalSeed //Inspire": 56, - "CLIPLoader": 56, - "SUPIR_first_stage": 56, - "SUPIR_decode": 56, - "SUPIR_sample": 56, - "SUPIR_conditioner": 56, - "String": 56, - "SaveText|pysssss": 55, - "ImpactKSamplerBasicPipe": 55, - "SUPIR_encode": 55, - "CM_NearestSDXLResolution": 55, - "MaskToSEGS": 55, - "Image Paste Crop by Location": 55, - "ADE_ApplyAnimateDiffModelSimple": 54, - "EditBasicPipe": 54, - "Text Random Prompt": 53, - "INPAINT_VAEEncodeInpaintConditioning": 53, - "IPAdapterNoise": 53, - "BrushNet": 53, - "FILM VFI": 53, - "gcLatentTunnel": 53, - "Getter": 52, - "StableCascade_StageB_Conditioning": 51, - "LayerUtility: ImageBlendAdvance": 51, - "SEGSPaste": 51, - "CLIPVisionEncode": 51, - "CR Text Replace": 51, - "EG_RY_HT": 51, - "Yoloworld_ESAM_Zho": 50, - "SUPIR_model_loader_v2": 50, - "CLIPSeg Masking": 50, - "ConditioningSetArea": 50, - "ADE_LoopedUniformContextOptions": 49, - "LatentUpscale": 49, - "CR Simple Image Compare": 48, - "MaskFromRGBCMYBW+": 48, - "MaskFromColor+": 48, - "NNLatentUpscale": 48, - "CropFace": 48, - "Constant Number": 48, - "Int to Text": 48, - "IPAdapterStyleComposition": 47, - "easy loraStack": 47, - "ConditioningAverage": 47, - "Text to Conditioning": 47, - "BasicPipeToDetailerPipe": 46, - "PixelPerfectResolution": 46, - "CLIPTextEncode (BlenderNeko Advanced + NSP)": 46, - "INPAINT_MaskedFill": 45, - "INTConstant": 45, - "ADE_StandardUniformContextOptions": 45, - "CM_FloatToInt": 45, - "Combine Masks": 45, - "LayerUtility: ImageBlend": 45, - "Random Number": 45, - "SDTurboScheduler": 44, - "ModelSamplingSD3": 44, - "Integer Switch (JPS)": 44, - "String to Text": 43, - "Image Lucy Sharpen": 43, - "ADE_AnimateDiffLoaderGen1": 43, - "FrequencyCombination": 43, - "Mask Morphology": 43, - "StableCascade_EmptyLatentImage": 42, - "AddLabel": 42, - "Image Blank": 42, - "ColorMatchImage": 42, - "ImpactKSamplerAdvancedBasicPipe": 42, - "LeReS-DepthMapPreprocessor": 41, - "INPAINT_MaskedBlur": 41, - "CR Float To Integer": 41, - "LayerMask: SegmentAnythingUltra V2": 41, - "easy showAnything": 41, - "ADE_MultivalDynamic": 41, - "AnimeLineArtPreprocessor": 41, - "Yoloworld_ModelLoader_Zho": 40, - "ESAM_ModelLoader_Zho": 40, - "ADE_StandardStaticContextOptions": 40, - "KSamplerAdvanced //Inspire": 40, - "ImageBlur": 40, - "ADE_ApplyAnimateDiffModel": 40, - "CLIPSeg": 40, - "MeshGraphormer-DepthMapPreprocessor": 39, - "FreeU": 39, - "ResizeImageMixlab": 39, - "ImageRemoveBackground+": 39, - "ImageCompositeFromMaskBatch+": 39, - "LayerUtility: PurgeVRAM": 39, - "ImpactControlNetApplySEGS": 38, - "RemBGSession+": 38, - "MaskFix+": 38, - "ImageMaskSwitch": 38, - "CR Simple Value Scheduler": 38, - "SubtractMask": 37, - "ImageConcanate": 37, - "CR Latent Input Switch": 37, - "UnetLoaderGGUF": 37, - "VHS_MergeImages": 37, - "PulidModelLoader": 36, - "PulidEvaClipLoader": 36, - "IPAdapterRegionalConditioning": 36, - "LatentBlend": 36, - "Gemini_API_S_Zho": 36, - "DepthAnythingV2Preprocessor": 36, - "SEGSDetailerForAnimateDiff": 36, - "VAEEncodeArgMax": 36, - "SomethingToString": 36, - "CreateShapeMask": 36, - "Power KSampler Advanced (PPF Noise)": 36, - "Image Crop Face": 36, - "easy imageRemBg": 35, - "ApplyFluxControlNet": 35, - "LoadFluxControlNet": 35, - "IPAdapterTiled": 35, - "ImpactSimpleDetectorSEGS_for_AD": 35, - "Checkpoint Selector": 35, - "Text Input [Dream]": 35, - "LivePortraitProcess": 34, - "UltimateSDUpscaleNoUpscale": 34, - "ImageScaleToMegapixels": 34, - "ImpactDilateMask": 34, - "CM_NumberToFloat": 34, - "CR Color Panel": 34, - "CR VAE Input Switch": 34, - "Resize Image for SDXL": 34, - "Setter": 34, - "ApplyPulid": 33, - "XlabsSampler": 33, - "ModelMergeSimple": 33, - "SDXL Prompt Handling (JPS)": 33, - "CreateFadeMaskAdvanced": 33, - "CR Model Input Switch": 33, - "DiffControlNetLoader": 32, - "PulidInsightFaceLoader": 32, - "CR Load LoRA": 32, - "ttN hiresfixScale": 32, - "Latent Noise Injection": 31, - "PainterNode": 31, - "OneButtonPrompt": 31, - "easy int": 31, - "ControlNetApplySD3": 31, - "ADE_EmptyLatentImageLarge": 31, - "LayerUtility: ColorPicker": 31, - "Image Paste Crop": 31, - "DetailerForEachDebug": 31, - "Create Solid Color": 31, - "OneFormer-COCO-SemSegPreprocessor": 30, - "VHS_GetImageCount": 30, - "CR Simple Meme Template": 30, - "ACN_SparseCtrlLoaderAdvanced": 30, - "BNK_InjectNoise": 30, - "SDXLAspectRatioSelector": 30, - "ImageFromBatch": 30, - "RebatchLatents": 30, - "CR Module Input": 30, - "DownloadAndLoadLivePortraitModels": 29, - "easy float": 29, - "ReActorRestoreFace": 29, - "ImageCompositeAbsolute": 29, - "LatentGaussianNoise": 29, - "LayerMask: MaskGrow": 29, - "CR Image Input Switch (4 way)": 29, - "SaveAnimatedWEBP": 29, - "CR Draw Text": 29, - "ScribblePreprocessor": 28, - "AddMask": 28, - "Image Remove Background (Alpha)": 28, - "IPAdapterInsightFaceLoader": 28, - "ImpactImageInfo": 28, - "DetailerForEachDebugPipe": 28, - "Blur": 28, - "VHS_LoadImages": 28, - "ttN text": 28, - "AnyLineArtPreprocessor_aux": 28, - "FilmGrain": 28, - "SAMDetectorCombined": 28, - "KarrasScheduler": 28, - "ApplyInstantIDAdvanced": 27, - "CM_SDXLResolution": 27, - "Seed": 27, - "Text List to Text": 27, - "Width/Height Literal": 27, - "LayerUtility: ColorImage V2": 27, - "Perlin Power Fractal Settings (PPF Noise)": 27, - "DownloadAndLoadSAM2Model": 27, - "CR Overlay Transparent Image": 27, - "Deep Bump (mtb)": 27, - "Replace Text _O": 27, - "Load Image Batch": 26, - "ImageConcatMulti": 26, - "ImageBatchMulti": 26, - "ImpactFloat": 26, - "Mask To Region": 26, - "ImageEffectsAdjustment": 26, - "LatentKeyframeTiming": 26, - "TimestepKeyframe": 26, - "Sam2Segmentation": 26, - "IPAdapterMS": 26, - "ImageGaussianBlur": 26, - "Note _O": 26, - "TonemapNoiseWithRescaleCFG": 25, - "easy stylesSelector": 25, - "LayerUtility: ImageScaleByAspectRatio V2": 25, - "Zoe_DepthAnythingPreprocessor": 25, - "Cross-Hatch Power Fractal Settings (PPF Noise)": 25, - "ResizeMask": 25, - "ReActorLoadFaceModel": 25, - "Number to String": 25, - "PrimereSamplersSteps": 25, - "ImageExpandBatch+": 25, - "FL_ImageCaptionSaver": 25, - "floatToText _O": 24, - "LayerUtility: SimpleTextImage": 24, - "ImageResize": 24, - "DetailTransfer": 24, - "ImpactWildcardProcessor": 24, - "Bounded Image Crop with Mask": 24, - "CR Float To String": 24, - "easy positive": 24, - "BiRefNet_Zho": 24, - "BasicPipeToDetailerPipeSDXL": 24, - "Text_Image_Zho": 24, - "LayerColor: Brightness & Contrast": 24, - "Any To String (mtb)": 24, - "Bounded Image Crop": 23, - "SplineEditor": 23, - "TripleCLIPLoader": 23, - "SUPIR_Upscale": 23, - "CR Image Grid Panel": 23, - "SamplerLCMCycle": 23, - "PixelKSampleUpscalerProvider": 23, - "Apply ControlNet Stack": 23, - "CR Select Model": 23, - "LatentKeyframeBatchedGroup": 23, - "BiRefNet_ModelLoader_Zho": 23, - "DeepTranslatorCLIPTextEncodeNode": 23, - "CoreMLDetailerHookProvider": 23, - "MultiplicationNode": 23, - "CR Color Tint": 23, - "ColorToMask": 22, - "ColorPreprocessor": 22, - "GetImageSize_": 22, - "LCMScheduler": 22, - "CLIPTextEncodeSD3": 22, - "ACN_SparseCtrlSpreadMethodNode": 22, - "CogVideoTextEncode": 22, - "AutoNegativePrompt": 22, - "AlphaChanelRemove": 22, - "CR Latent Batch Size": 22, - "SDXLPromptStylerbyMood": 22, - "Image Threshold": 22, - "JWImageResizeByFactor": 22, - "ADE_AnimateDiffCombine": 22, - "Conditioning Switch (JPS)": 22, - "DPCombinatorialGenerator": 21, - "LoadImagesFromDir //Inspire": 21, - "ACN_SparseCtrlRGBPreprocessor": 21, - "LivePortraitCropper": 21, - "CM_IntToFloat": 21, - "BatchAverageImage": 21, - "ICLightAppply": 21, - "INPAINT_LoadInpaintModel": 21, - "INPAINT_InpaintWithModel": 21, - "IterativeLatentUpscale": 21, - "Load RetinaFace": 21, - "Crop Face": 21, - "ImageScaleDownBy": 21, - "Text List": 21, - "SDXLPromptStylerbyMileHigh": 21, - "ImageCompositeBy_Zho": 21, - "CR Color Gradient": 21, - "Image Color Shift [Dream]": 21, - "CR Image Border": 20, - "LlavaClipLoader": 20, - "LLava Loader Simple": 20, - "ModelSamplingContinuousEDM": 20, - "Convert Masks to Images": 20, - "Separate Mask Components": 20, - "CR SD1.5 Aspect Ratio": 20, - "LoadImagesFromURL": 20, - "GoogleTranslateTextNode": 20, - "ttN concat": 20, - "Florence2toCoordinates": 20, - "easy ipadapterApply": 20, - "Text Input Switch": 20, - "JoinStringMulti": 20, - "ADE_AnimateDiffModelSettingsSimple": 19, - "Image Bounds": 19, - "LLavaSamplerSimple": 19, - "SDPromptReader": 19, - "KSampler SDXL (Eff.)": 19, - "OllamaGenerateAdvance": 19, - "Mask Invert": 19, - "CR Thumbnail Preview": 19, - "Mask Dominant Region": 19, - "MaskListToMaskBatch": 19, - "SDXLPromptStylerbyLighting": 19, - "SDXLPromptStylerbyCamera": 19, - "SDXLPromptStylerbyFilter": 19, - "InvertMask (segment anything)": 19, - "RemoveNoiseMask": 19, - "NormalizedAmplitudeToNumber": 19, - "RegionalConditioningSimple //Inspire": 19, - "TiledDiffusion": 18, - "Mask Fill Holes": 18, - "LineartStandardPreprocessor": 18, - "Image Saver": 18, - "Mask Gaussian Region": 18, - "IPAdapterCombineEmbeds": 18, - "IPAdapterEmbeds": 18, - "Sampler Selector": 18, - "CLIPMergeSimple": 18, - "KRestartSampler": 18, - "Eff. Loader SDXL": 18, - "RandomInt": 18, - "Seed String": 18, - "ArgosTranslateTextNode": 18, - "Unpack SDXL Tuple": 18, - "Mask To Image (mtb)": 18, - "CR Split String": 18, - "DynamicThresholdingFull": 18, - "CR Simple Text Watermark": 18, - "AnyLinePreprocessor": 18, - "SplitSigmas": 18, - "SDXLPromptStylerbyDepth": 18, - "SDXLPromptStylerbyTimeofDay": 18, - "SDXLPromptStylerbyFocus": 18, - "SDXLPromptStylerbySubject": 18, - "SDXLPromptStylerbyArtist": 18, - "Upscale by Factor with Model (WLSH)": 18, - "NormalizedAmplitudeToGraph": 18, - "BatchAmplitudeSchedule": 18, - "VHS_VideoInfo": 17, - "Color Correct (mtb)": 17, - "FrequencySeparationHSV": 17, - "intToFloat _O": 17, - "ImpactCombineConditionings": 17, - "ICLightApplyMaskGrey": 17, - "Images to RGB": 17, - "AnimalPosePreprocessor": 17, - "PromptSchedule": 17, - "FreeU (Advanced)": 17, - "LatentCompositeMasked": 17, - "Image Paste Face": 17, - "CR Module Pipe Loader": 17, - "APersonMaskGenerator": 17, - "PiDiNetPreprocessor": 16, - "LoraLoaderTagsQuery": 16, - "EnhanceImage": 16, - "KSamplerAdvancedProvider": 16, - "IterativeImageUpscale": 16, - "ImpactSEGSRangeFilter": 16, - "Image Select Color": 16, - "Text_Image_Multiline_Zho": 16, - "show_text_party": 16, - "ACN_ControlNet++LoaderSingle": 16, - "LayerUtility: GetImageSize": 16, - "Color": 16, - "LatentKeyframe": 16, - "ConsoleDebug+": 16, - "BatchCount+": 16, - "ReActorSaveFaceModel": 16, - "TextBox": 16, - "KSampler Cycle": 16, - "Create QR Code": 16, - "DeepDanbooruCaption": 16, - "FileNamePrefix": 16, - "CLIPSeg Model Loader": 16, - "ColorizeDepthmap": 16, - "LayerUtility: CropByMask V2": 16, - "UpscaleImageByUsingModel": 16, - "BAE-NormalMapPreprocessor": 15, - "Inset Image Bounds": 15, - "Scheduler Selector": 15, - "CR Page Layout": 15, - "CascadeResolutions": 15, - "LayerMask: PersonMaskUltra V2": 15, - "ScreenShare": 15, - "LLMSampler": 15, - "BNK_CutoffSetRegions": 15, - "ImpactStringSelector": 15, - "ImpactMakeImageList": 15, - "SDXLPromptStylerbyImpressionism": 15, - "SDXL Prompt Styler (JPS)": 15, - "ImageCompositeRelative": 15, - "Textbox": 15, - "Fans Text Concatenate": 15, - "easy pipeOut": 15, - "easy kSampler": 15, - "ImageResizeAndCropNode": 15, - "VHS_DuplicateImages": 15, - "ImageAndMaskPreview": 14, - "IPAdapterCombineParams": 14, - "easy seed": 14, - "BNK_Unsampler": 14, - "MarigoldDepthEstimation": 14, - "BatchPromptScheduleLatentInput": 14, - "LLM": 14, - "IPAdapterWeights": 14, - "Image Remove Background Rembg (mtb)": 14, - "FloatSlider": 14, - "Robust Video Matting": 14, - "CR String To Combo": 14, - "easy fullkSampler": 14, - "easy negative": 14, - "T5TextEncode": 14, - "Manga2Anime_LineArt_Preprocessor": 14, - "SDXLPromptStylerbyMythicalCreature": 14, - "SDXLPromptStylerbyFantasySetting": 14, - "SDXLPromptbyWildlifeArt": 14, - "SDXLPromptStylerHorror": 14, - "SDXLPromptStylerMisc": 14, - "SDXLPromptStylerbyEnvironment": 14, - "SDXLPromptStylerbySurrealism": 14, - "SDXLPromptbyStreetArt": 14, - "SDXLPromptStylerbyComposition": 14, - "SDXLPromptbyGothicRevival": 14, - "CR Multi Upscale Stack": 14, - "CR Apply Multi Upscale": 14, - "DensePosePreprocessor": 14, - "SDTypeConverter": 14, - "PreviewAudio": 14, - "LayerFilter: GaussianBlur": 14, - "ImpactSEGSToMaskList": 14, - "T5TextEncode #ELLA": 14, - "LamaRemover": 14, - "LayerUtility: ImageMaskScaleAs": 14, - "ToonCrafterInterpolation": 14, - "Image Generate Gradient": 14, - "ChangeImageBatchSize //Inspire": 14, - "Mask Smooth Region": 14, - "Number Input Condition": 14, - "Int-🔬": 14, - "RawText": 14, - "Create Rect Mask": 13, - "TransitionMask+": 13, - "Scribble_XDoG_Preprocessor": 13, - "Load Lora": 13, - "StableCascade_StageC_VAEEncode": 13, - "LayerStyle: DropShadow": 13, - "StyleAlignedBatchAlign": 13, - "CR Simple Prompt List": 13, - "SegmDetectorSEGS": 13, - "SetUnionControlNetType": 13, - "BlendInpaint": 13, - "Noise Control Script": 13, - "SDXLPromptStylerAll": 13, - "Empty Latent Ratio Select SDXL": 13, - "ImageClamp": 13, - "ImageCropByRatio": 13, - "LoadFluxIPAdapter": 13, - "FaceAnalysisModels": 13, - "TextNode": 13, - "VividSharpen": 13, - "LoadAndResizeImage": 13, - "InpaintCrop": 13, - "FreeU_V2 (Advanced)": 13, - "FlatLatentsIntoSingleGrid": 13, - "AudioPlay": 13, - "JjkShowText": 13, - "Number Counter": 13, - "ImpactControlBridge": 13, - "BNK_TiledKSampler": 12, - "IPAdapterFromParams": 12, - "BooleanPrimitive": 12, - "ModelSamplingStableCascade": 12, - "ExpressionEditor": 12, - "PhotoMakerStyles": 12, - "LivePortraitComposite": 12, - "LLM_api_loader": 12, - "LayerUtility: ImageRemoveAlpha": 12, - "PhotoMakerLoader": 12, - "SDXL Resolutions (JPS)": 12, - "Gemini_API_Zho": 12, - "unCLIPCheckpointLoader": 12, - "ApplyFluxIPAdapter": 12, - "ADE_AnimateDiffModelSettings": 12, - "0246.JunctionBatch": 12, - "AB SamplerCustom (experimental)": 12, - "LatentFromBatch": 12, - "LayerUtility: ImageCombineAlpha": 12, - "mxSlider2D": 12, - "GateNormalizedAmplitude": 12, - "Masks Add": 12, - "FluxTrainSave": 12, - "FluxTrainLoop": 12, - "FluxTrainValidate": 12, - "VisualizeLoss": 12, - "RegionalIPAdapterColorMask //Inspire": 12, - "ConvertImg": 12, - "ImpactRemoteBoolean": 12, - "easy ipadapterApplyADV": 12, - "ConditioningCombineMultiple+": 11, - "InstantX Flux Union ControlNet Loader": 11, - "ImageScaleDownToSize": 11, - "Automatic CFG - Warp Drive": 11, - "easy boolean": 11, - "LayeredDiffusionApply": 11, - "CogVideoSampler": 11, - "CogVideoDecode": 11, - "DownloadAndLoadCogVideoModel": 11, - "ImageFlip+": 11, - "LayerUtility: LaMa": 11, - "RecommendedResCalc": 11, - "ImageDesaturate+": 11, - "easy imageScaleDownToSize": 11, - "ttN pipeKSampler": 11, - "RegionalPrompt": 11, - "Image Input Switch": 11, - "LivePortraitLoadCropper": 11, - "easy clearCacheAll": 11, - "ImageBatchMultiple+": 11, - "LayerUtility: ExtendCanvas": 11, - "FaceKeypointsPreprocessor": 11, - "CR Comic Panel Templates": 11, - "easy fullLoader": 11, - "ETN_ApplyMaskToImage": 11, - "easy imageChooser": 11, - "DualCLIPLoaderGGUF": 11, - "AnimateDiffModuleLoader": 11, - "AnimateDiffSampler": 11, - "Aegisflow Image Pass": 11, - "LatentSwitch": 11, - "LayerColor: ColorAdapter": 11, - "LaMaInpaint": 11, - "CropMask": 11, - "easy promptReplace": 11, - "CR Draw Shape": 11, - "easy comfyLoader": 11, - "Prompt Weight (WLSH)": 11, - "RandomPrompt": 11, - "CR Random Hex Color": 11, - "ImageFromBatch+": 11, - "PrimerePrompt": 11, - "ImpactCompare": 11, - "CR Data Bus Out": 11, - "FluxLoraLoader": 11, - "ModelClamp": 11, - "LatentUpscaler": 11, - "easy controlnetLoader": 11, - "NormalizeAmplitude": 11, - "FusionText": 11, - "VAEDecodeTiled_TiledDiffusion": 10, - "StableZero123_Conditioning": 10, - "HyperTile": 10, - "VHS_VAEEncodeBatched": 10, - "LivePortraitLoadMediaPipeCropper": 10, - "DownloadAndLoadChatGLM3": 10, - "IPAdapterClipVisionEnhancer": 10, - "CreateGradientFromCoords": 10, - "Wildcard Processor": 10, - "VHS_DuplicateLatents": 10, - "WildcardEncode //Inspire": 10, - "ADMD_TrainLora": 10, - "ADMD_SaveLora": 10, - "ADMD_ValidationSampler": 10, - "FeatheredMask": 10, - "IsMaskEmpty": 10, - "Pack SDXL Tuple": 10, - "CheckpointSave": 10, - "PhotoMakerEncode": 10, - "DiffControlNetLoaderAdvanced": 10, - "SaveImageExtended": 10, - "ImageSizeAndBatchSize": 10, - "CR Simple Banner": 10, - "LayerUtility: TextJoin": 10, - "LayerMask: BiRefNetUltra": 10, - "Blend Latents": 10, - "AnimateDiffCombine": 10, - "CfgScheduleHookProvider": 10, - "VHS_LoadAudio": 10, - "SEGSToImageList": 10, - "SeargePromptText": 10, - "CR Clip Input Switch": 10, - "TextSplitByDelimiter": 10, - "LayerMask: MaskInvert": 10, - "FlipSigmas": 10, - "SDXLPromptStylerbyOriginal": 10, - "ShufflePreprocessor": 10, - "LatentInterpolate": 10, - "CR Random Shape Pattern": 10, - "DownloadAndLoadCLIPVisionModel": 10, - "DownloadAndLoadCLIPModel": 10, - "BNK_CLIPTextEncodeSDXLAdvanced": 10, - "ImpactValueReceiver": 10, - "DownloadAndLoadDynamiCrafterModel": 10, - "LayerUtility: ImageBlendAdvance V2": 10, - "LayerMask: SegformerB2ClothesUltra": 10, - "Width/Height Literal (Image Saver)": 10, - "CR Integer Multiple": 10, - "ImpactRemoteInt": 10, - "String Literal (Image Saver)": 10, - "AV_ControlNetEfficientStacker": 10, - "easy pipeIn": 10, - "SD_4XUpscale_Conditioning": 9, - "FakeScribblePreprocessor": 9, - "DetailerForEachPipe": 9, - "DWPreprocessor_Provider_for_SEGS //Inspire": 9, - "Image Padding": 9, - "Save Image w/Metadata": 9, - "MediaPipeFaceMeshDetectorProvider //Inspire": 9, - "Image Style Filter": 9, - "LoadAudio": 9, - "RegionalConditioningColorMask //Inspire": 9, - "ttN pipeLoader": 9, - "JoinStrings": 9, - "MaskDetailerPipe": 9, - "PerturbedAttention": 9, - "InspyrenetRembg": 9, - "PhotoMakerEncodePlus": 9, - "PixelKSampleUpscalerProviderPipe": 9, - "MaskToSEGS_for_AnimateDiff": 9, - "VideoTriangleCFGGuidance": 9, - "MediaPipe-FaceMeshPreprocessor": 9, - "ReActorMaskHelper": 9, - "SDXLPromptStylerAdvanced": 9, - "LoadImageListFromDir //Inspire": 9, + "PreviewImage": 4314, + "LoadImage": 3474, + "CLIPTextEncode": 2435, + "SaveImage": 1762, + "VAEDecode": 1754, + "KSampler": 1511, + "CheckpointLoaderSimple": 1293, + "VAEEncode": 1067, + "LoraLoader": 861, + "EmptyLatentImage": 857, + "VHS_VideoCombine": 631, + "UpscaleModelLoader": 629, + "UNETLoader": 606, + "VAELoader": 604, + "ShowText|pysssss": 527.5526981023964, + "ImageUpscaleWithModel": 523, + "ControlNetApplyAdvanced": 513, + "ControlNetLoader": 499, + "ImageBatch": 494, + "ImageScale": 478, + "LoraLoaderModelOnly": 447, + "VHS_LoadVideo": 440, + "ImpactSwitch": 349, + "Reroute": 348, + "ImageResizeKJv2": 335, + "Text Concatenate": 325.7030402103206, + "SaveVideo": 321, + "PreviewAny": 319, + "KSamplerAdvanced": 304, + "SDXLPromptStyler": 297.0913411304729, + "Note": 291, + "Text _O": 284.1572853820486, + "GeminiImageNode": 280, + "ImageResize+": 274, + "GetNode": 274, + "ImageScaleBy": 273, + "UltralyticsDetectorProvider": 257.5052917186289, + "ControlNetLoaderAdvanced": 255.93752738548656, + "SetNode": 252, + "MaskPreview+": 250, + "DWPreprocessor": 249, + "UltimateSDUpscale": 238, + "CR Prompt Text": 231.63718022178034, + "MaskToImage": 229, + "OpenposePreprocessor": 229, + "DualCLIPLoader": 228, + "ACN_AdvancedControlNetApply": 224.19029963935424, + "CLIPVisionLoader": 215, + "PreviewBridge": 214.3917725572146, + "CLIPLoader": 202, + "GeminiNode": 202, + "KSampler (Efficient)": 194.01083622636423, + "ImageRemoveBackground+": 186, + "IPAdapterModelLoader": 184, + "PrimitiveInt": 183, + "Florence2Run": 180, + "LoadVideo": 179, + "Text Concatenate (JPS)": 175.98154639522735, + "PrimitiveNode": 175, + "Text Multiline": 163.04749064680308, + "GetImageSize+": 163, + "ImageScaleToTotalPixels": 157, + "String Literal": 150.11343489837878, + "LatentUpscaleBy": 148, + "AIO_Preprocessor": 147, + "DownloadAndLoadFlorence2Model": 144, + "LoadImageOutput": 143, + "IPAdapterUnifiedLoader": 141, + "FluxGuidance": 133, + "ImageBatchMulti": 133, + "ByteDanceSeedreamNode": 130, + "CR Text Input Switch": 128.16473423438606, + "IPAdapterAdvanced": 128, + "If ANY execute A else B": 127.77279315110049, + "GeminiImage2Node": 124, + "GetImageSize": 121, + "PrimitiveStringMultiline": 120, + "IPAdapter": 118, + "CreateVideo": 116, + "ConditioningZeroOut": 115, + "KSampler Adv. (Efficient)": 114.8387374026762, + "CR Text": 111.31126765310594, + "FaceDetailer": 111, + "RemBGSession+": 110, + "PrimitiveString": 110, + "MathExpression|pysssss": 108.95962115339243, + "CLIPVisionEncode": 108, + "SDXLResolutionPresets": 107.3918568202501, + "EmptySD3LatentImage": 107, + "Paste By Mask": 106.99991573696451, + "Efficient Loader": 106.99991573696451, + "CR Text Input Switch (4 way)": 106.60797465367894, + "SomethingToString": 106, + "Concat Text _O": 104.25632815396543, + "Int Literal": 103.86438707067984, + "WD14Tagger|pysssss": 103.08050490410868, + "ImageToMask": 103, + "CR LoRA Stack": 101.90468165425192, + "mape Variable": 101.12079948768076, + "DepthAnythingPreprocessor": 100, + "CR Apply LoRA Stack": 96.02556540496816, + "Image Filter Adjustments": 95.24168323839699, + "SimpleMath+": 95, + "GroundingDinoSAMSegment (segment anything)": 93.28197782196906, + "Image Overlay": 93.28197782196906, + "CR Text Concatenate": 90.93033132225555, + "GGUFLoaderKJ": 90, + "OpenAIChatNode": 86, + "Logic Boolean": 85.83509723954296, + "Image Save": 85.44315615625737, + "IPAdapterFaceID": 84, + "LoraModelLoader": 84, + "ImageBlend": 83, + "StringFunction|pysssss": 81.13180424011595, + "CR Image Input Switch": 80.73986315683037, + "PlaySound|pysssss": 80.34792207354478, + "ImageCompositeMasked": 80, + "ReActorFaceSwap": 79.56403990697362, + "CLIPTextEncodeSDXL": 78, + "GetVideoComponents": 78, + "GroundingDinoModelLoader (segment anything)": 77.21239340726011, + "Sam2Segmentation": 77, + "VHS_VideoInfo": 77, + "TextEncodeQwenImageEditPlus": 77, + "PoseAndFaceDetection": 73, + "ConcatStringSingle": 72.90104149111868, + "InvertMask": 72, + "LoraLoader|pysssss": 71.72521824126193, + "ImpactControlBridge": 71, + "RIFE VFI": 70.94133607469077, + "Save Text File": 70.54939499140518, + "Number to Text": 70.54939499140518, + "CLIPTextEncodeFlux": 69, + "ImpactCompare": 69, + "WanVideoSampler": 68, + "CR Integer To String": 67.02192524183492, + "PreviewAnimation": 67, + "ttN imageOutput": 66.62998415854933, + "Text to Number": 66.62998415854933, + "CR Overlay Text": 66.23804307526375, + "ImageStitch": 66, + "CannyEdgePreprocessor": 65, + "RecraftRemoveBackgroundNode": 65, + "SamplerCustomAdvanced": 64, + "Image Resize": 63.494455492264656, + "Automatic CFG": 63.494455492264656, + "Canny": 63, + "StringConcatenate": 63, + "DepthAnything_V2": 61, + "ImageCrop+": 60, + "ModelSamplingSD3": 59, + "CR Upscale Image": 58.79116249283765, + "DisplayText_Zho": 58.79116249283765, + "ConstrainImage|pysssss": 58.39922140955206, + "Change Channel Count": 58.39922140955206, + "TextEncodeQwenImageEdit": 58, + "CR Simple Binary Pattern": 57.615339242980895, + "VAEEncodeForInpaint": 57, + "DeepTranslatorTextNode": 56.43951599312414, + "ConcatText_Zho": 56.43951599312414, + "ReroutePrimitive|pysssss": 56.04757490983856, + "CheckpointLoader|pysssss": 56.04757490983856, + "WanVideoModelLoader": 56, + "SaveImagetoPath": 55.263692743267384, + "ADE_AnimateDiffLoaderGen1": 55, + "DPMagicPrompt": 54.871751659981804, + "LatentUpscale": 54, + "ModelSamplingAuraFlow": 54, + "WanImageToVideo": 54, + "Seed Everywhere": 53.69592841012505, + "Text Load Line From File": 53.69592841012505, + "VAEDecodeTiled": 53, + "DepthAnythingV2Preprocessor": 53, + "Florence2ModelLoader": 53, + "ReferenceLatent": 53, + "Veo3VideoGenerationNode": 53, + "InstantIDModelLoader": 52.91204624355388, + "InstantIDFaceAnalysis": 52.12816407698271, + "SAMLoader": 52, + "VRAM_Debug": 52, + "EmptyImage": 51, + "DownloadAndLoadSAM2Model": 51, + "ImpactStringSelector": 51, + "INTConstant": 50, + "ImagePadForOutpaint": 49, + "Image To Mask": 48.992635410698036, + "SDPromptSaver": 48.992635410698036, + "GetImageSizeAndCount": 48, + "Cfg Literal": 47.81681216084129, + "Text Random Line": 47.81681216084129, + "ConditioningSetTimestepRange": 47.4248710775557, + "Image Size to Number": 47.03292999427012, + "Compositor3": 47, + "SimpleText": 46.24904782769895, + "ControlNetPreprocessorSelector": 46, + "ApplyInstantID": 45.857106744413365, + "BNK_CLIPTextEncodeAdvanced": 45.857106744413365, + "CR SDXL Aspect Ratio": 45.46516566112778, + "LoadAudio": 45, + "smZ CLIPTextEncode": 44.68128349455661, + "Bus Node": 44.68128349455661, + "PreviewTextNode": 44.68128349455661, + "ConditioningCombine": 44, + "SDXLEmptyLatentSizePicker+": 44, + "Seed Generator": 43.89740132798544, + "SAMModelLoader (segment anything)": 43.89740132798544, + "ScaledSoftControlNetWeights": 43.50546024469986, + "HighRes-Fix Script": 43.50546024469986, + "ImageFromBatch": 43, + "BatchCount+": 43, + "PathchSageAttentionKJ": 43, + "Cut By Mask": 42.72157807812869, + "ttN text7BOX_concat": 42.72157807812869, + "CR Multi-ControlNet Stack": 42.329636994843106, + "ToBasicPipe": 42, + "InpaintModelConditioning": 42, + "DownloadAndLoadDepthAnythingV2Model": 42, + "PrepImageForClipVision": 41, + "ConditioningConcat": 41, + "RandomNoise": 41, + "SetLatentNoiseMask": 41, + "ONNXDetectorProvider": 41, + "QwenLoader": 41, + "TrainLoraNode": 41, + "Get Image Size": 40.76187266170077, + "LoRA Stacker": 40.36993157841518, + "Float": 40.36993157841518, + "LineArtPreprocessor": 40, + "StringConstantMultiline": 40, + "LoadImagesFromDirectory": 39.586049411844016, + "ttN textDebug": 39.586049411844016, + "OllamaGenerate": 39.19410832855843, + "ImpactImageBatchToImageList": 39, + "CM_SDXLResolution": 39, + "CompositorConfig3": 39, + "StringCompare": 39, + "VHS_LoadVideoFFmpeg": 39, + "ImageSelector": 38.80216724527285, + "FaceRestoreModelLoader": 38.41022616198726, + "Image Blending Mode": 38.01828507870168, + "ImpactIPAdapterApplySEGS": 38, + "KlingStartEndFrameNode": 38, + "OpenAIChatConfig": 38, + "WanAnimateToVideo": 38, + "ImageSender": 37.62634399541609, + "ImageReceiver": 37.23440291213051, + "SUPIR_Upscale": 37, + "CFGNorm": 37, + "Image Rembg (Remove Background)": 36.45052074555934, + "IPAdapterInsightFaceLoader": 36, + "FaceRestoreCFWithModel": 35.27469749570259, + "CLIPSetLastLayer": 35, + "Superprompt": 35, + "BatchPromptSchedule": 34.882756412417, + "AlignYourStepsScheduler": 34.49081532913142, + "TextInput_": 34.098874245845835, + "FloatConstant": 34, + "BboxDetectorSEGS": 34, + "Load3D": 34, + "SaveImageKJ": 34, + "TransparentBGSession+": 34, + "Text Prompt (JPS)": 33.31499207927467, + "BasicScheduler": 33, + "DiffControlNetLoader": 33, + "ExecuteAllControlNetPreprocessors": 33, + "PrimitiveFloat": 33, + "WanFirstLastFrameToVideo": 33, + "Text Find and Replace": 32.92305099598908, + "OllamaVision": 32.5311099127035, + "DPRandomGenerator": 32.13916882941791, + "MiDaS-DepthMapPreprocessor": 32, + "SUPIR_model_loader_v2": 32, + "CLIPSegDetectorProvider": 32, + "KlingImage2VideoNode": 32, + "LazySwitchKJ": 32, + "OnnxDetectionModelLoader": 32, + "KSamplerSelect": 31, + "SetUnionControlNetType": 31, + "FluxSamplerParams+": 31, + "DiffusionModelLoaderKJ": 31, + "WanVideoVAELoader": 31, + "CR Image Output": 30.96334557956116, + "CR Aspect Ratio": 30.571404496275576, + "LoadAndApplyICLightUnet": 30.179463412989993, + "ICLightConditioning": 30.179463412989993, + "BRIA_RMBG_Zho": 30.179463412989993, + "ImageCrop": 30, + "IPAdapterUnifiedLoaderFaceID": 30, + "SUPIR_sample": 30, + "ImageComposite+": 30, + "VHS_BatchManager": 30, + "ImageScaleToMaxDimension": 30, + "Image to Noise": 29.78752232970441, + "AV_ControlNetPreprocessor": 29.78752232970441, + "Lora Loader": 29.395581246418825, + "Control Net Stacker": 29.395581246418825, + "RemapImageRange": 29.395581246418825, + "Image Transpose": 29.003640163133237, + "CR Apply Multi-ControlNet": 29.003640163133237, + "LoadImageMask": 29, + "WanVaceToVideo": 29, + "WanVideoDecode": 29, + "Image Blend": 28.21975799656207, + "ImageInvert": 28, + "GrowMask": 28, + "MaskComposite": 28, + "InpaintCropImproved": 28, + "VHS_Unbatch": 28, + "JWImageResizeByLongerSide": 27.827816913276486, + "CR Conditioning Input Switch": 27.435875829990902, + "CR Seed": 27.043934746705318, + "VHS_LoadVideoPath": 27.043934746705318, + "Preview Chooser": 27.043934746705318, + "DetailerForEach": 27, + "ImageSharpen": 27, + "RepeatLatentBatch": 27, + "Florence2toCoordinates": 27, + "SEGSUpscaler": 27, + "WanVideoUniAnimateDWPoseDetector": 27, + "BLIP Analyze Image": 26.651993663419734, + "BLIP Model Loader": 26.26005258013415, + "Mask Crop Region": 26.26005258013415, + "ViewText": 26.26005258013415, + "ImageOnlyCheckpointLoader": 26, + "LatentSwitch": 26, + "PointsEditor": 26, + "MarkdownNote": 26, + "Int": 25.868111496848563, + "KSampler //Inspire": 25.47617041356298, + "BRIA_RMBG_ModelLoader_Zho": 25.47617041356298, + "CR Conditioning Mixer": 25.47617041356298, + "GrowMaskWithBlur": 25, + "ColorMatch": 25, + "ModelSamplingFlux": 25, + "ImpactMakeImageBatch": 25, + "CheckpointLoaderSimpleWithNoiseSelect": 25, + "ImageMaskSwitch": 25, + "UltimateSDUpscaleNoUpscale": 25, + "JoinStringMulti": 25, + "ImpactControlNetApplyAdvancedSEGS": 25, + "OpenAIVideoSora2": 25, + "easy imageSize": 24.69228824699181, + "Image Blend by Mask": 24.69228824699181, + "Number Operation": 24.300347163706228, + "INPAINT_ApplyFooocusInpaint": 24.300347163706228, + "FaceDetailerPipe": 24, + "ImageConcanate": 24, + "LoadAndResizeImage": 24, + "LoadLatent": 24, + "TrimVideoLatent": 24, + "Text String": 23.908406080420644, + "BrushNetLoader": 23.908406080420644, + "Image Levels Adjustment": 23.908406080420644, + "INPAINT_LoadFooocusInpaint": 23.908406080420644, + "SDLoraLoader": 23.51646499713506, + "easy cleanGpuUsed": 23.124523913849476, + "SamplerCustom": 23, + "Zoe-DepthMapPreprocessor": 23, + "ImageBatchMultiple+": 23, + "GetImageRangeFromBatch": 23, + "FL_PathAnimator": 23, + "FluxKontextImageScale": 23, + "InpaintStitchImproved": 23, + "WanVideoLoraSelect": 23, + "Upscale Model Loader": 22.73258283056389, + "ColorCorrect": 22.73258283056389, + "Image Remove Background (rembg)": 22.73258283056389, + "Image Crop Location": 22.73258283056389, + "LayerMask: MaskPreview": 22.340641747278305, + "JWImageResize": 22.340641747278305, + "ImageGenResolutionFromImage": 22, + "ImageBlur": 22, + "ConsoleDebug+": 22, + "ImageFromBatch+": 22, + "InjectLatentNoise+": 22, + "GeminiInputFiles": 22, + "VHS_SelectImages": 22, + "VHS_LoadImagesPath": 21.94870066399272, + "GlobalSeed //Inspire": 21.94870066399272, + "String": 21.94870066399272, + "SaveText|pysssss": 21.556759580707137, + "Image Paste Crop by Location": 21.556759580707137, + "FromBasicPipe_v2": 21, + "IPAdapterEncoder": 21, + "ImageListToImageBatch": 21, + "ImpactWildcardProcessor": 21, + "SD_4XUpscale_Conditioning": 21, + "UltimateSDUpscaleCustomSample": 21, + "StyleModelLoader": 21, + "ResizeAndPadImage": 21, + "Text Random Prompt": 20.77287741413597, + "INPAINT_VAEEncodeInpaintConditioning": 20.77287741413597, + "BrushNet": 20.77287741413597, + "FILM VFI": 20.77287741413597, + "gcLatentTunnel": 20.77287741413597, + "Getter": 20.380936330850385, + "CM_IntToNumber": 20, + "ADE_AnimateDiffLoRALoader": 20, + "VAEEncodeTiled": 20, + "RepeatImageBatch": 20, + "SUPIR_decode": 20, + "ADE_LoopedUniformContextOptions": 20, + "DensePosePreprocessor": 20, + "VHS_SelectEveryNthImage": 20, + "ByteDanceImageToVideoNode": 20, + "DrawViTPose": 20, + "SavePoseKpsAsJsonFile": 20, + "WanImageToImageApi": 20, + "WanImageToVideoApi": 20, + "WanTextToImageApi": 20, + "LayerUtility: ImageBlendAdvance": 19.9889952475648, + "CR Text Replace": 19.9889952475648, + "EG_RY_HT": 19.9889952475648, + "Yoloworld_ESAM_Zho": 19.597054164279214, + "CLIPSeg Masking": 19.597054164279214, + "InpaintPreprocessor": 19, + "ImpactKSamplerBasicPipe": 19, + "MaskFromColor+": 19, + "VHS_VideoInfoLoaded": 19, + "ApplyRifleXRoPE_WanVideo": 19, + "CR Simple Image Compare": 18.813171997708046, + "NNLatentUpscale": 18.813171997708046, + "CropFace": 18.813171997708046, + "Constant Number": 18.813171997708046, + "Int to Text": 18.813171997708046, + "easy loraStack": 18.421230914422463, + "Text to Conditioning": 18.421230914422463, + "CLIPTextEncode (BlenderNeko Advanced + NSP)": 18.02928983113688, + "CM_IntBinaryOperation": 18, + "JoinImageWithAlpha": 18, + "PixelPerfectResolution": 18, + "ImageConcatMulti": 18, + "PreviewAudio": 18, + "DrawText+": 18, + "StringListToString": 18, + "StringConstant": 18, + "FluxProUltraImageNode": 18, + "QwenImageDiffsynthControlnet": 18, + "WanVideoLoraSelectMulti": 18, + "INPAINT_MaskedFill": 17.637348747851295, + "Combine Masks": 17.637348747851295, + "LayerUtility: ImageBlend": 17.637348747851295, + "Random Number": 17.637348747851295, + "Integer Switch (JPS)": 17.24540766456571, + "CLIPTextEncodeSDXLRefiner": 17, + "MaskBlur+": 17, + "ResizeMask": 17, + "ImageAndMaskPreview": 17, + "IPAdapterPromptScheduleFromWeightsStrategy": 17, + "ByteDanceFirstLastFrameNode": 17, + "DrawMaskOnImage": 17, + "ImageCropByMask": 17, + "ImageRemoveAlpha+": 17, + "MaskPreview": 17, + "MultiTalkModelLoader": 17, + "Sam2AutoSegmentation": 17, + "ViduStartEndToVideoNode": 17, + "WanVideoImageToVideoMultiTalk": 17, + "String to Text": 16.853466581280124, + "Image Lucy Sharpen": 16.853466581280124, + "FrequencyCombination": 16.853466581280124, + "Mask Morphology": 16.853466581280124, + "Image Blank": 16.46152549799454, + "ColorMatchImage": 16.46152549799454, + "INPAINT_MaskedBlur": 16.069584414708956, + "CR Float To Integer": 16.069584414708956, + "LayerMask: SegmentAnythingUltra V2": 16.069584414708956, + "easy showAnything": 16.069584414708956, + "BasicGuider": 16, + "ADE_LoadAnimateDiffModel": 16, + "ImageCompositeFromMaskBatch+": 16, + "LatentBlend": 16, + "LineartStandardPreprocessor": 16, + "EmptyLatentImagePresets": 16, + "CFGGuider": 16, + "OpenAIGPTImage1": 16, + "WanVideoImageResizeToClosest": 16, + "WanVideoVACEEncode": 16, + "Yoloworld_ModelLoader_Zho": 15.677643331423372, + "ESAM_ModelLoader_Zho": 15.677643331423372, + "KSamplerAdvanced //Inspire": 15.677643331423372, + "CLIPSeg": 15.677643331423372, + "ResizeImageMixlab": 15.285702248137788, + "LayerUtility: PurgeVRAM": 15.285702248137788, + "ImpactInt": 15, + "VHS_SplitImages": 15, + "SegsToCombinedMask": 15, + "DifferentialDiffusion": 15, + "unCLIPConditioning": 15, + "MaskToSEGS": 15, + "IPAdapterStyleComposition": 15, + "VHS_MergeImages": 15, + "CreateShapeMask": 15, + "SaveAnimatedWEBP": 15, + "ImageFlip+": 15, + "JoinStrings": 15, + "LatentBatchSeedBehavior": 15, + "BboxDetectorCombined_v2": 15, + "StyleModelApply": 15, + "SaveLatent": 15, + "ControlNetInpaintingAliMamaApply": 15, + "DiffusionModelSelector": 15, + "ExtractStartFramesForContinuations": 15, + "FluxKontextProImageNode": 15, + "ImageTile+": 15, + "Wan22ImageToVideoLatent": 15, + "WanVideoAnimateEmbeds": 15, + "WanVideoFlashVSRDecoderLoader": 15, + "WanVideoVACEStartToEndFrame": 15, + "CR Simple Value Scheduler": 14.893761164852204, + "CR Latent Input Switch": 14.501820081566619, + "UnetLoaderGGUF": 14.501820081566619, + "PulidModelLoader": 14.109878998281035, + "PulidEvaClipLoader": 14.109878998281035, + "Gemini_API_S_Zho": 14.109878998281035, + "VAEEncodeArgMax": 14.109878998281035, + "Power KSampler Advanced (PPF Noise)": 14.109878998281035, + "Image Crop Face": 14.109878998281035, + "ImageCASharpening+": 14, + "HEDPreprocessor": 14, + "VHS_GetImageCount": 14, + "ImpactValueSender": 14, + "DownloadAndLoadFlorence2Lora": 14, + "ADE_PromptScheduling": 14, + "ImageCropByMaskAndResize": 14, + "RecraftCrispUpscaleNode": 14, + "RenderPeopleKps": 14, + "SaveGLB": 14, + "SaveWEBM": 14, + "TorchCompileModelWanVideoV2": 14, + "WanVideoBlockList": 14, + "WanVideoEncode": 14, + "WanVideoNAG": 14, + "WildcardPromptFromString": 14, + "easy imageRemBg": 13.717937914995451, + "ApplyFluxControlNet": 13.717937914995451, + "LoadFluxControlNet": 13.717937914995451, + "IPAdapterTiled": 13.717937914995451, + "Checkpoint Selector": 13.717937914995451, + "Text Input [Dream]": 13.717937914995451, + "LivePortraitProcess": 13.325996831709867, + "ImageScaleToMegapixels": 13.325996831709867, + "CR Color Panel": 13.325996831709867, + "CR VAE Input Switch": 13.325996831709867, + "Resize Image for SDXL": 13.325996831709867, + "Setter": 13.325996831709867, + "ModelSamplingDiscrete": 13, + "ADE_ApplyAnimateDiffModelSimple": 13, + "ADE_EmptyLatentImageLarge": 13, + "ScribblePreprocessor": 13, + "SAMDetectorCombined": 13, + "CM_IntToFloat": 13, + "LatentFromBatch": 13, + "ImageGridComposite2x2": 13, + "SEGSSwitch": 13, + "AudioSeparation": 13, + "AudioCrop": 13, + "CheckpointLoaderKJ": 13, + "KlingVideoExtendNode": 13, + "Preview3D": 13, + "TextEncodeAceStepAudio": 13, + "WanVideoAddFlashVSRInput": 13, + "WanVideoSetLoRAs": 13, + "ApplyPulid": 12.934055748424282, + "XlabsSampler": 12.934055748424282, + "SDXL Prompt Handling (JPS)": 12.934055748424282, + "CR Model Input Switch": 12.934055748424282, + "PulidInsightFaceLoader": 12.542114665138698, + "CR Load LoRA": 12.542114665138698, + "ttN hiresfixScale": 12.542114665138698, + "Latent Noise Injection": 12.150173581853114, + "PainterNode": 12.150173581853114, + "OneButtonPrompt": 12.150173581853114, + "easy int": 12.150173581853114, + "LayerUtility: ColorPicker": 12.150173581853114, + "Image Paste Crop": 12.150173581853114, + "Create Solid Color": 12.150173581853114, + "SolidMask": 12, + "SVD_img2vid_Conditioning": 12, + "SplitImageWithAlpha": 12, + "CM_FloatToInt": 12, + "AnimeLineArtPreprocessor": 12, + "SplitSigmas": 12, + "DiffusersLoader": 12, + "ImpactMakeAnyList": 12, + "PrimitiveBoolean": 12, + "RegexExtract": 12, + "StabilityUpscaleFastNode": 12, + "WanVideoCombineEmbeds": 12, + "Wav2VecModelLoader": 12, + "CR Simple Meme Template": 11.75823249856753, + "ACN_SparseCtrlLoaderAdvanced": 11.75823249856753, + "BNK_InjectNoise": 11.75823249856753, + "SDXLAspectRatioSelector": 11.75823249856753, + "CR Module Input": 11.75823249856753, + "DownloadAndLoadLivePortraitModels": 11.366291415281944, + "easy float": 11.366291415281944, + "ReActorRestoreFace": 11.366291415281944, + "ImageCompositeAbsolute": 11.366291415281944, + "LatentGaussianNoise": 11.366291415281944, + "LayerMask: MaskGrow": 11.366291415281944, + "CR Image Input Switch (4 way)": 11.366291415281944, + "CR Draw Text": 11.366291415281944, + "FeatherMask": 11, + "IPAdapterNoise": 11, + "ADE_StandardUniformContextOptions": 11, + "ADE_MultivalDynamic": 11, + "PixelKSampleUpscalerProvider": 11, + "IterativeImageUpscale": 11, + "VHS_VAEEncodeBatched": 11, + "LatentInterpolate": 11, + "ImpactConcatConditionings": 11, + "SAMDetectorSegmented": 11, + "GetImagesFromBatchIndexed": 11, + "AudioShowInfo": 11, + "DummyOut": 11, + "ImagePadKJ": 11, + "ImpactListBridge": 11, + "InterpolateCoords": 11, + "SaveImageWithAlpha": 11, + "VeoVideoGenerationNode": 11, + "WanCameraEmbedding": 11, + "WanVideoControlnet": 11, + "WanVideoImageToVideoEncode": 11, + "WanVideoTextEncode": 11, + "WidgetToString": 11, + "Image Remove Background (Alpha)": 10.97435033199636, + "DetailerForEachDebugPipe": 10.97435033199636, + "Blur": 10.97435033199636, + "VHS_LoadImages": 10.97435033199636, + "ttN text": 10.97435033199636, + "FilmGrain": 10.97435033199636, + "KarrasScheduler": 10.97435033199636, + "ApplyInstantIDAdvanced": 10.582409248710777, + "Seed": 10.582409248710777, + "Text List to Text": 10.582409248710777, + "Width/Height Literal": 10.582409248710777, + "LayerUtility: ColorImage V2": 10.582409248710777, + "Perlin Power Fractal Settings (PPF Noise)": 10.582409248710777, + "CR Overlay Transparent Image": 10.582409248710777, + "Deep Bump (mtb)": 10.582409248710777, + "Replace Text _O": 10.582409248710777, + "Load Image Batch": 10.190468165425193, + "Mask To Region": 10.190468165425193, + "ImageEffectsAdjustment": 10.190468165425193, + "LatentKeyframeTiming": 10.190468165425193, + "TimestepKeyframe": 10.190468165425193, + "ImageGaussianBlur": 10.190468165425193, + "Note _O": 10.190468165425193, + "FromBasicPipe": 10, + "RescaleCFG": 10, + "SUPIR_conditioner": 10, + "SplineEditor": 10, + "AnimalPosePreprocessor": 10, + "SegmDetectorSEGS": 10, + "unCLIPCheckpointLoader": 10, + "VAEDecodeAudio": 10, + "Sam2VideoSegmentation": 10, + "AnyPipeToBasic": 10, + "FaceMaskFromPoseKeypoints": 10, + "HunyuanImageToVideo": 10, + "ImpactIfNone": 10, + "KlingCameraControls": 10, + "LoadWanVideoClipTextEncoder": 10, + "TopazImageEnhance": 10, + "WanVideoTorchCompileSettings": 10, + "TonemapNoiseWithRescaleCFG": 9.798527082139607, + "easy stylesSelector": 9.798527082139607, + "LayerUtility: ImageScaleByAspectRatio V2": 9.798527082139607, + "Cross-Hatch Power Fractal Settings (PPF Noise)": 9.798527082139607, + "ReActorLoadFaceModel": 9.798527082139607, + "Number to String": 9.798527082139607, + "PrimereSamplersSteps": 9.798527082139607, + "FL_ImageCaptionSaver": 9.798527082139607, + "floatToText _O": 9.406585998854023, + "LayerUtility: SimpleTextImage": 9.406585998854023, + "ImageResize": 9.406585998854023, + "Bounded Image Crop with Mask": 9.406585998854023, + "CR Float To String": 9.406585998854023, + "easy positive": 9.406585998854023, + "BiRefNet_Zho": 9.406585998854023, + "Text_Image_Zho": 9.406585998854023, + "LayerColor: Brightness & Contrast": 9.406585998854023, + "Any To String (mtb)": 9.406585998854023, + "Bounded Image Crop": 9.01464491556844, + "CR Image Grid Panel": 9.01464491556844, + "SamplerLCMCycle": 9.01464491556844, + "Apply ControlNet Stack": 9.01464491556844, + "CR Select Model": 9.01464491556844, + "LatentKeyframeBatchedGroup": 9.01464491556844, + "BiRefNet_ModelLoader_Zho": 9.01464491556844, + "DeepTranslatorCLIPTextEncodeNode": 9.01464491556844, + "MultiplicationNode": 9.01464491556844, + "CR Color Tint": 9.01464491556844, + "ImpactGaussianBlurMask": 9, + "HintImageEnchance": 9, + "CM_NumberToInt": 9, + "CM_NearestSDXLResolution": 9, + "AddLabel": 9, + "CoreMLDetailerHookProvider": 9, + "ImpactCombineConditionings": 9, "AnimeFace_SemSegPreprocessor": 9, - "VHS_SelectEveryNthImage": 9, - "Image Select Channel": 9, - "ELLALoader": 9, - "T5TextEncoderLoader #ELLA": 9, - "ReActorFaceBoost": 9, - "XY Plot": 9, - "DepthAnything_V2": 9, - "DownloadAndLoadDepthAnythingV2Model": 9, - "ImpactConcatConditionings": 9, - "easy imagePixelPerfect": 9, - "PixArtCheckpointLoader": 9, - "SwitchByIndex": 9, - "SeargePreviewImage": 9, - "Resolutions by Ratio (WLSH)": 9, - "Image Crop Square Location": 9, - "LayerUtility: QWenImage2Prompt": 9, - "ColorBlend": 9, - "FaceEmbedDistance": 9, - "CosyVoiceNode": 9, - "AutoCropFaces": 9, - "ImageTextOutlined": 9, - "IPAdapterModelHelper //Inspire": 9, - "StringToInt": 9, - "easy preSampling": 9, - "ChatGPT compact _O": 9, - "SDAnyConverter": 9, - "ImpactValueSender": 9, - "Image Canny Filter": 9, - "SeargeIntegerPair": 9, - "PortraitMaster": 9, - "InspyrenetRembgAdvanced": 9, - "BRIAAI Matting": 9, - "ConditioningSetAreaPercentage": 9, - "easy imageScaleDown": 9, - "FadeMaskEdges": 9, - "CR Seamless Checker": 9, - "ImageSizeInfo": 9, - "DownloadAndLoadKolorsModel": 9, - "KolorsSampler": 9, - "KolorsTextEncode": 9, - "SolidColorRGB": 9, - "LayerFilter: HDREffects": 9, - "Load Text File": 9, - "StableAudio_": 9, - "easy imageColorMatch": 8, - "AuraSR.AuraSRUpscaler": 8, - "PreviewLatentAdvanced": 8, - "M-LSDPreprocessor": 8, - "UniFormer-SemSegPreprocessor": 8, - "MiDaS-NormalMapPreprocessor": 8, - "DZ_Face_Detailer": 8, - "ADE_BatchedContextOptions": 8, - "Model Switch (JPS)": 8, - "LightSource": 8, - "CR Text Blacklist": 8, - "LayeredDiffusionDecodeRGBA": 8, - "PowerPaint": 8, - "PowerPaintCLIPLoader": 8, - "Image Rotate": 8, - "ImageGridComposite2x2": 8, - "CR Prompt List": 8, - "LoadVideo": 8, - "PerpNegGuider": 8, - "CR Apply Model Merge": 8, - "CR Model Merge Stack": 8, - "ToDetailerPipe": 8, - "SEGSDetailer": 8, - "CR Integer Range List": 8, - "ReverseImageBatch": 8, - "SD3NegativeConditioning+": 8, - "FloatingVideo": 8, - "SaveImageWithMetaData": 8, - "ImpactDecomposeSEGS": 8, - "ImpactFrom_SEG_ELT": 8, - "LayerUtility: ColorImage": 8, - "PixelKSampleHookCombine": 8, - "DenoiseScheduleHookProvider": 8, - "ChromaticAberration": 8, - "CR Set Value On Boolean": 8, - "ImpactMinMax": 8, - "Unary Image Op": 8, - "RemoveControlNet //Inspire": 8, - "LayerMask: PersonMaskUltra": 8, - "ImpactMakeTileSEGS": 8, - "ImageQuantize": 8, - "easy promptConcat": 8, - "CR Image Pipe Out": 8, - "LatentComposite": 8, - "PrimereDynamicParser": 8, - "DownloadAndLoadMimicMotionModel": 8, - "MimicMotionSampler": 8, - "Bounded Image Blend with Mask": 8, - "LayerUtility: RestoreCropBox": 8, - "OutlineMask": 8, - "CreatePromptVariant": 8, - "VHS_GetLatentCount": 8, - "ImpactConvertDataType": 8, - "RemapDepth": 8, - "LatentCrop": 8, - "CR Apply ControlNet": 8, - "ImageLuminanceDetector": 8, - "Save Images Mikey": 8, - "LoraInfo": 8, - "BlendModes": 8, - "RetrieveBackendData //Inspire": 8, - "easy controlnetLoaderADV": 8, - "Joytag": 8, - "Image Stitch": 8, - "Any To Any": 8, - "BNK_GetSigma": 8, - "SDXLAspectRatio": 7, - "SmoothMask": 7, - "OneFormer-ADE20K-SemSegPreprocessor": 7, - "LatentBatchSeedBehavior": 7, - "CR Combine Prompt": 7, - "SamplerDPMPP_2M_SDE": 7, - "FrequencySeparation": 7, - "LayerMask: MaskEdgeUltraDetail V2": 7, - "Masks Subtract": 7, - "PoseNode": 7, - "Date Time Format": 7, - "IPAdapterPromptScheduleFromWeightsStrategy": 7, - "CR Simple Prompt List Keyframes": 7, - "Image Flip": 7, - "AlphaChanelAddByMask": 7, - "MiDaS_DepthMap_Preprocessor_Provider_for_SEGS //Inspire": 7, - "PrepareImageAndMaskForInpaint": 7, - "ApplyPulidAdvanced": 7, - "SubtractMaskForEach": 7, - "Image High Pass Filter": 7, - "Image Film Grain": 7, - "CR Batch Images From List": 7, - "LayeredDiffusionDecode": 7, - "ImageBatchRepeatInterleaving": 7, - "VRAM_Debug": 7, - "ImpactEdit_SEG_ELT": 7, - "ImpactAssembleSEGS": 7, - "ImpactSEGSPicker": 7, - "Image Batch": 7, - "Image Monitor Effects Filter": 7, - "T5v11Loader": 7, - "LatentPixelScale": 7, - "Canvas_Tab": 7, - "ttN pipeKSamplerAdvanced": 7, - "MiniCPM_VQA": 7, - "Glow": 7, - "ImageFilterGaussianBlur": 7, - "KSamplerAdvanced (WLSH)": 7, - "MeshGraphormer+ImpactDetector-DepthMapPreprocessor": 7, - "Colored Image (mtb)": 7, - "easy compare": 7, - "easy imageSwitch": 7, - "AV_ControlNetEfficientLoaderAdvanced": 7, - "Float Literal (Image Saver)": 7, - "ImageGenResolutionFromLatent": 7, - "AV_VAELoader": 7, - "ImageCombine": 7, - "MimicMotionDecode": 7, - "MimicMotionGetPoses": 7, - "ToonCrafterDecode": 7, - "Crop Image TargetSize (JPS)": 7, - "ImpactSegsAndMask": 7, - "CM_NumberUnaryOperation": 7, - "CR Data Bus In": 7, - "BboxDetectorCombined_v2": 7, - "KepStringLiteral": 7, - "InpaintStitch": 7, - "PrimereAnyOutput": 7, - "EmbeddingPrompt": 7, - "YANC.ConcatStrings": 7, - "Mask Dilate Region": 7, - "MaskBatch+": 7, - "🔹Photoshop ComfyUI Plugin": 7, - "🔹SendTo Photoshop Plugin": 7, - "RawTextCombine": 7, - "Vae Decode (mtb)": 7, - "BNK_NoisyLatentImage": 6, - "VHS_VAEDecodeBatched": 6, - "PortraitMasterSkinDetails": 6, - "LoadImageFromUrl": 6, - "ImageRepeat": 6, - "BatchValueScheduleLatentInput": 6, - "FL_SDUltimate_Slices": 6, - "ImageComposite+": 6, - "FacialPartColoringFromPoseKps": 6, - "PhotoMakerLoaderPlus": 6, - "LivePortraitNode": 6, - "LivePortraitLoadFaceAlignmentCropper": 6, - "DetailerForEachPipeForAnimateDiff": 6, - "DenoiseSchedulerDetailerHookProvider": 6, + "VHS_VAEDecodeBatched": 9, + "TTPlanet_TileSimple_Preprocessor": 9, + "ImageColorMatch+": 9, + "ADE_UpscaleAndVAEEncode": 9, + "ADE_ReplaceOriginalPoseAspectRatio": 9, + "DiTBlockLoraLoader": 9, + "FluxKontextMaxImageNode": 9, + "ImageUpscaleWithModelBatched": 9, + "KlingTextToVideoNode": 9, + "LoadWanVideoT5TextEncoder": 9, + "NoiseFromImage+": 9, + "OpenAIInputFiles": 9, + "PoseRetargetPromptHelper": 9, + "Wan22FunControlToVideo": 9, + "WanVideoClipVisionEncode": 9, + "WanVideoEmptyEmbeds": 9, + "WanVideoPromptExtenderSelect": 9, + "WanVideoTextEncodeCached": 9, + "GetImageSize_": 8.622703832282856, + "LCMScheduler": 8.622703832282856, + "ACN_SparseCtrlSpreadMethodNode": 8.622703832282856, + "CogVideoTextEncode": 8.622703832282856, + "AutoNegativePrompt": 8.622703832282856, + "AlphaChanelRemove": 8.622703832282856, + "CR Latent Batch Size": 8.622703832282856, + "SDXLPromptStylerbyMood": 8.622703832282856, + "Image Threshold": 8.622703832282856, + "JWImageResizeByFactor": 8.622703832282856, + "Conditioning Switch (JPS)": 8.622703832282856, + "DPCombinatorialGenerator": 8.23076274899727, + "LoadImagesFromDir //Inspire": 8.23076274899727, + "ACN_SparseCtrlRGBPreprocessor": 8.23076274899727, + "LivePortraitCropper": 8.23076274899727, + "BatchAverageImage": 8.23076274899727, + "ICLightAppply": 8.23076274899727, + "INPAINT_LoadInpaintModel": 8.23076274899727, + "INPAINT_InpaintWithModel": 8.23076274899727, + "Load RetinaFace": 8.23076274899727, + "Crop Face": 8.23076274899727, + "ImageScaleDownBy": 8.23076274899727, + "Text List": 8.23076274899727, + "SDXLPromptStylerbyMileHigh": 8.23076274899727, + "ImageCompositeBy_Zho": 8.23076274899727, + "CR Color Gradient": 8.23076274899727, + "Image Color Shift [Dream]": 8.23076274899727, + "ControlNetApply": 8, + "SUPIR_first_stage": 8, + "SUPIR_encode": 8, + "ImpactKSamplerAdvancedBasicPipe": 8, + "ImpactImageInfo": 8, + "Zoe_DepthAnythingPreprocessor": 8, + "InstructPixToPixConditioning": 8, + "VHS_LoadAudioUpload": 8, + "HypernetworkLoader": 8, + "SaveAudio": 8, + "ImpactInversedSwitch": 8, + "ImageEnhanceDifference+": 8, + "AppendStringsToList": 8, + "BlockifyMask": 8, + "CompositorColorPicker": 8, + "CompositorTools3": 8, + "FantasyPortraitFaceDetector": 8, + "ImpactNodeSetMuteState": 8, + "ImpactSelectNthItemOfAnyList": 8, + "KlingCameraControlI2VNode": 8, + "KlingLipSyncAudioToVideoNode": 8, + "LoadLotusModel": 8, + "LoraReduceRankKJ": 8, + "LumaImageToVideoNode": 8, + "MultiTalkWav2VecEmbeds": 8, + "PlotParameters+": 8, + "RecordAudio": 8, + "StringReplace": 8, + "TiledKSamplerProvider": 8, + "WanVideoLoopArgs": 8, + "CR Image Border": 7.838821665711686, + "LlavaClipLoader": 7.838821665711686, + "LLava Loader Simple": 7.838821665711686, + "ModelSamplingContinuousEDM": 7.838821665711686, + "Convert Masks to Images": 7.838821665711686, + "Separate Mask Components": 7.838821665711686, + "CR SD1.5 Aspect Ratio": 7.838821665711686, + "LoadImagesFromURL": 7.838821665711686, + "GoogleTranslateTextNode": 7.838821665711686, + "ttN concat": 7.838821665711686, + "easy ipadapterApply": 7.838821665711686, + "Text Input Switch": 7.838821665711686, + "ADE_AnimateDiffModelSettingsSimple": 7.446880582426102, + "Image Bounds": 7.446880582426102, + "LLavaSamplerSimple": 7.446880582426102, + "SDPromptReader": 7.446880582426102, + "KSampler SDXL (Eff.)": 7.446880582426102, + "OllamaGenerateAdvance": 7.446880582426102, + "Mask Invert": 7.446880582426102, + "CR Thumbnail Preview": 7.446880582426102, + "Mask Dominant Region": 7.446880582426102, + "SDXLPromptStylerbyLighting": 7.446880582426102, + "SDXLPromptStylerbyCamera": 7.446880582426102, + "SDXLPromptStylerbyFilter": 7.446880582426102, + "InvertMask (segment anything)": 7.446880582426102, + "NormalizedAmplitudeToNumber": 7.446880582426102, + "RegionalConditioningSimple //Inspire": 7.446880582426102, + "TiledDiffusion": 7.054939499140517, + "Mask Fill Holes": 7.054939499140517, + "Image Saver": 7.054939499140517, + "Mask Gaussian Region": 7.054939499140517, + "Sampler Selector": 7.054939499140517, + "KRestartSampler": 7.054939499140517, + "Eff. Loader SDXL": 7.054939499140517, + "RandomInt": 7.054939499140517, + "Seed String": 7.054939499140517, + "ArgosTranslateTextNode": 7.054939499140517, + "Unpack SDXL Tuple": 7.054939499140517, + "Mask To Image (mtb)": 7.054939499140517, + "CR Split String": 7.054939499140517, + "DynamicThresholdingFull": 7.054939499140517, + "CR Simple Text Watermark": 7.054939499140517, + "AnyLinePreprocessor": 7.054939499140517, + "SDXLPromptStylerbyDepth": 7.054939499140517, + "SDXLPromptStylerbyTimeofDay": 7.054939499140517, + "SDXLPromptStylerbyFocus": 7.054939499140517, + "SDXLPromptStylerbySubject": 7.054939499140517, + "SDXLPromptStylerbyArtist": 7.054939499140517, + "Upscale by Factor with Model (WLSH)": 7.054939499140517, + "NormalizedAmplitudeToGraph": 7.054939499140517, + "BatchAmplitudeSchedule": 7.054939499140517, + "CM_NumberBinaryOperation": 7, + "CM_FloatToNumber": 7, + "ADE_UseEvolvedSampling": 7, + "VideoLinearCFGGuidance": 7, + "EditBasicPipe": 7, + "StableCascade_EmptyLatentImage": 7, + "ADE_StandardStaticContextOptions": 7, + "MaskFix+": 7, + "ColorToMask": 7, + "IterativeLatentUpscale": 7, + "IPAdapterEmbeds": 7, + "VHS_DuplicateImages": 7, + "CropMask": 7, + "VHS_LoadAudio": 7, + "MaskDetailerPipe": 7, + "LatentComposite": 7, + "Sam2VideoSegmentationAddPoints": 7, + "ADE_ApplyAnimateLCMI2VModel": 7, + "VHS_PruneOutputs": 7, + "ADE_CameraPoseBasic": 7, + "CM_SDXLExtendedResolution": 7, + "CameraPoseVisualizer": 7, + "DownloadAndLoadWav2VecModel": 7, + "EmptyHunyuanLatentVideo": 7, + "FluxProDepthNode": 7, + "FluxProFillNode": 7, + "IdeogramV3": 7, + "ImageAddNoise": 7, + "KlingImageGenerationNode": 7, + "ModelPatchTorchSettings": 7, + "PikaStartEndFrameNode2_2": 7, + "PlotCoordinates": 7, + "RunwayTextToImageNode": 7, + "SamplerLMS": 7, + "SaveAudioMP3": 7, + "StabilityStableImageSD_3_5Node": 7, + "StabilityUpscaleConservativeNode": 7, + "TextEncodeHunyuanVideo_ImageToVideo": 7, + "VAELoaderKJ": 7, + "WanFunControlToVideo": 7, + "WanVideoPromptExtender": 7, + "WanVideoTextEmbedBridge": 7, + "Color Correct (mtb)": 6.662998415854934, + "FrequencySeparationHSV": 6.662998415854934, + "intToFloat _O": 6.662998415854934, + "ICLightApplyMaskGrey": 6.662998415854934, + "Images to RGB": 6.662998415854934, + "PromptSchedule": 6.662998415854934, + "FreeU (Advanced)": 6.662998415854934, + "Image Paste Face": 6.662998415854934, + "CR Module Pipe Loader": 6.662998415854934, + "APersonMaskGenerator": 6.662998415854934, + "LoraLoaderTagsQuery": 6.271057332569349, + "EnhanceImage": 6.271057332569349, + "ImpactSEGSRangeFilter": 6.271057332569349, + "Image Select Color": 6.271057332569349, + "Text_Image_Multiline_Zho": 6.271057332569349, + "show_text_party": 6.271057332569349, + "ACN_ControlNet++LoaderSingle": 6.271057332569349, + "LayerUtility: GetImageSize": 6.271057332569349, + "Color": 6.271057332569349, + "LatentKeyframe": 6.271057332569349, + "ReActorSaveFaceModel": 6.271057332569349, + "TextBox": 6.271057332569349, + "KSampler Cycle": 6.271057332569349, + "Create QR Code": 6.271057332569349, + "DeepDanbooruCaption": 6.271057332569349, + "FileNamePrefix": 6.271057332569349, + "CLIPSeg Model Loader": 6.271057332569349, + "ColorizeDepthmap": 6.271057332569349, + "LayerUtility: CropByMask V2": 6.271057332569349, + "UpscaleImageByUsingModel": 6.271057332569349, + "FreeU_V2": 6, + "CM_FloatBinaryOperation": 6, + "IPAdapterBatch": 6, + "SEGSPreview": 6, + "RebatchImages": 6, + "MaskFromRGBCMYBW+": 6, + "OneFormer-COCO-SemSegPreprocessor": 6, + "TripleCLIPLoader": 6, + "MediaPipe-FaceMeshPreprocessor": 6, + "SamplerDPMPP_2M_SDE": 6, "ADE_AnimateDiffUnload": 6, - "SAMDetectorSegmented": 6, - "ImageEffectsGrayscale": 6, - "VHS_BatchManager": 6, - "LayerMask: RemBgUltra": 6, - "StringConstantMultiline": 6, - "JDCN_SwapInputs": 6, - "PointsEditor": 6, - "ImageListToBatch+": 6, - "IFRNet VFI": 6, - "Joy_caption": 6, - "Joy_caption_load": 6, - "AnimateDiffSlidingWindowOptions": 6, - "SDXL Resolutions (WLSH)": 6, - "CR Color Bars": 6, - "DrawText+": 6, - "Int To Number (mtb)": 6, - "easy promptList": 6, - "NewLayer": 6, - "MasksToMaskList": 6, - "BLIPCaption": 6, - "ReActorFaceSwapOpt": 6, - "CR Image Panel": 6, - "BatchCreativeInterpolation": 6, - "SV3D_Conditioning": 6, - "BilboXPhotoPrompt": 6, - "CR Text Operation": 6, - "LayerUtility: SaveImagePlus": 6, - "CR Binary Pattern": 6, - "CR String To Number": 6, - "PrimereClearPrompt": 6, - "BatchValueSchedule": 6, - "Image Load": 6, - "DiffusersGenerator": 6, - "PreviewMask_": 6, - "LoadCLIPSegModels+": 6, - "ApplyCLIPSeg+": 6, - "LayerUtility: String": 6, - "AnyNodeLocal": 6, - "Logic Boolean Primitive": 6, - "LayerColor: AutoAdjustV2": 6, - "SEGSSwitch": 6, - "LayerMask: RmBgUltra V2": 6, - "ComfyUIStyler": 6, - "ChineseCLIPEncode": 6, - "CatVTONWrapper": 6, - "MeshGraphormerDepthMapPreprocessorProvider_for_SEGS //Inspire": 6, - "EllaEncode": 6, - "String Replace (mtb)": 6, - "Conditioning Input Switch": 6, - "MaskFromList+": 6, - "ConditioningSetAreaStrength": 6, - "Image Power Noise": 6, - "Unary Mask Op": 6, - "ConditioningClamp": 6, - "Intrinsic_lora_sampling": 6, - "Checkpoint Loader with Name (Image Saver)": 6, - "Int Literal (Image Saver)": 6, - "Number to Int": 6, - "ImpactNegativeConditioningPlaceholder": 6, - "MorphologicOperation": 6, - "PreviewBridgeLatent": 6, - "LayerUtility: ImageScaleRestore V2": 6, - "LayerMask: MaskBoxDetect": 6, - "IF_PromptMkr": 6, - "easy a1111Loader": 6, - "LoadPromptsFromFile //Inspire": 6, - "UnzipPrompt //Inspire": 6, - "ImpactDilateMaskInSEGS": 6, - "Griptape Create: Rules": 6, - "FlowBuilder": 6, - "CR Text Cycler": 6, + "DisableNoise": 6, + "GLIGENTextBoxApply": 6, + "IPAdapterUnifiedLoaderCommunity": 6, + "ImagePadForOutpaintMasked": 6, + "PreviewDetailerHookProvider": 6, + "KSamplerVariationsWithNoise+": 6, + "ADE_CustomCFGKeyframeInterpolation": 6, + "ByteDanceImageNode": 6, + "CLIPTextEncodeLumina2": 6, + "ControlNetAuxSimpleAddText": 6, + "CreateHookKeyframesInterpolated": 6, + "EasyCache": 6, + "FluxProCannyNode": 6, + "HunyuanVideo15LatentUpscaleWithModel": 6, + "ImageBatchJoinWithTransition": 6, + "ImagePadForOutpaintTargetSize": 6, + "ImageTensorList": 6, + "ImageUntile+": 6, + "ImpactConditionalBranchSelMode": 6, + "LTXVImgToVideo": 6, + "LoraExtractKJ": 6, + "LtxvApiImageToVideo": 6, + "MaskBoundingBox+": 6, + "MaskFromSegmentation+": 6, + "QuadrupleCLIPLoader": 6, + "RecraftColorRGB": 6, + "SaveImageWebsocket": 6, + "StabilityUpscaleCreativeNode": 6, + "StringSubstring": 6, + "TrimAudioDuration": 6, + "USOStyleReference": 6, + "WanCameraImageToVideo": 6, + "WanTextToVideoApi": 6, + "WanVideoEnhanceAVideoKJ": 6, + "WanVideoVACEModelSelect": 6, + "Inset Image Bounds": 5.879116249283765, + "Scheduler Selector": 5.879116249283765, + "CR Page Layout": 5.879116249283765, + "CascadeResolutions": 5.879116249283765, + "LayerMask: PersonMaskUltra V2": 5.879116249283765, + "ScreenShare": 5.879116249283765, + "LLMSampler": 5.879116249283765, + "BNK_CutoffSetRegions": 5.879116249283765, + "SDXLPromptStylerbyImpressionism": 5.879116249283765, + "SDXL Prompt Styler (JPS)": 5.879116249283765, + "ImageCompositeRelative": 5.879116249283765, + "Textbox": 5.879116249283765, + "Fans Text Concatenate": 5.879116249283765, + "easy pipeOut": 5.879116249283765, + "easy kSampler": 5.879116249283765, + "ImageResizeAndCropNode": 5.879116249283765, + "easy seed": 5.48717516599818, + "BNK_Unsampler": 5.48717516599818, + "MarigoldDepthEstimation": 5.48717516599818, + "BatchPromptScheduleLatentInput": 5.48717516599818, + "LLM": 5.48717516599818, + "Image Remove Background Rembg (mtb)": 5.48717516599818, + "FloatSlider": 5.48717516599818, + "Robust Video Matting": 5.48717516599818, + "CR String To Combo": 5.48717516599818, + "easy fullkSampler": 5.48717516599818, + "easy negative": 5.48717516599818, + "T5TextEncode": 5.48717516599818, + "Manga2Anime_LineArt_Preprocessor": 5.48717516599818, + "SDXLPromptStylerbyMythicalCreature": 5.48717516599818, + "SDXLPromptStylerbyFantasySetting": 5.48717516599818, + "SDXLPromptbyWildlifeArt": 5.48717516599818, + "SDXLPromptStylerHorror": 5.48717516599818, + "SDXLPromptStylerMisc": 5.48717516599818, + "SDXLPromptStylerbyEnvironment": 5.48717516599818, + "SDXLPromptStylerbySurrealism": 5.48717516599818, + "SDXLPromptbyStreetArt": 5.48717516599818, + "SDXLPromptStylerbyComposition": 5.48717516599818, + "SDXLPromptbyGothicRevival": 5.48717516599818, + "CR Multi Upscale Stack": 5.48717516599818, + "CR Apply Multi Upscale": 5.48717516599818, + "SDTypeConverter": 5.48717516599818, + "LayerFilter: GaussianBlur": 5.48717516599818, + "T5TextEncode #ELLA": 5.48717516599818, + "LamaRemover": 5.48717516599818, + "LayerUtility: ImageMaskScaleAs": 5.48717516599818, + "ToonCrafterInterpolation": 5.48717516599818, + "Image Generate Gradient": 5.48717516599818, + "ChangeImageBatchSize //Inspire": 5.48717516599818, + "Mask Smooth Region": 5.48717516599818, + "Number Input Condition": 5.48717516599818, + "Int-\ud83d\udd2c": 5.48717516599818, + "RawText": 5.48717516599818, + "Create Rect Mask": 5.095234082712596, + "Load Lora": 5.095234082712596, + "LayerStyle: DropShadow": 5.095234082712596, + "StyleAlignedBatchAlign": 5.095234082712596, + "CR Simple Prompt List": 5.095234082712596, + "BlendInpaint": 5.095234082712596, + "Noise Control Script": 5.095234082712596, + "SDXLPromptStylerAll": 5.095234082712596, + "Empty Latent Ratio Select SDXL": 5.095234082712596, + "ImageClamp": 5.095234082712596, + "ImageCropByRatio": 5.095234082712596, + "LoadFluxIPAdapter": 5.095234082712596, + "FaceAnalysisModels": 5.095234082712596, + "TextNode": 5.095234082712596, + "VividSharpen": 5.095234082712596, + "FreeU_V2 (Advanced)": 5.095234082712596, + "FlatLatentsIntoSingleGrid": 5.095234082712596, + "AudioPlay": 5.095234082712596, + "JjkShowText": 5.095234082712596, + "Number Counter": 5.095234082712596, + "ImpactSimpleDetectorSEGS": 5, + "ConditioningSetMask": 5, + "MeshGraphormer-DepthMapPreprocessor": 5, + "SEGSDetailerForAnimateDiff": 5, + "CM_NumberToFloat": 5, + "ModelMergeSimple": 5, + "DetailerForEachDebug": 5, + "CLIPTextEncodeSD3": 5, + "CLIPMergeSimple": 5, + "LatentCompositeMasked": 5, + "MiDaS-NormalMapPreprocessor": 5, + "ReverseImageBatch": 5, + "FacialPartColoringFromPoseKps": 5, "DualCFGGuider": 5, - "InstructPixToPixConditioning": 5, - "VAEEncodeTiled_TiledDiffusion": 5, - "EmptyLatentImagePresets": 5, - "BinaryPreprocessor": 5, - "Save Images No Display": 5, - "Florence2ModelLoader": 5, - "IPAdapterTiledBatch": 5, - "PortraitMasterStylePose": 5, - "PortraitMasterMakeup": 5, - "PortraitMasterBaseCharacter": 5, - "MaraScottUpscalerRefinerNode_v3": 5, - "SUPIR_model_loader": 5, - "PreviewPopup": 5, - "ACN_SparseCtrlIndexMethodNode": 5, - "GenerateNoise": 5, - "Image Color Palette": 5, "CombineRegionalPrompts": 5, - "PrepImagesForClipVisionFromPath": 5, - "PhotoMakerInsightFaceLoader": 5, - "LayerColor: Levels": 5, - "Mix Color By Mask": 5, - "GetKeyFrames": 5, - "ttN text3BOX_3WAYconcat": 5, - "PrimereCKPTLoader": 5, - "PrimereSeed": 5, - "SetEllaTimesteps": 5, - "CR SDXL Base Prompt Encoder": 5, - "CR Text List": 5, - "LoraTagLoader": 5, - "FS: Fit Size From Image": 5, - "LivePortraitRetargeting": 5, - "Range(Num Steps) - Float": 5, - "Model Input Switch": 5, - "ACN_ControlNet++InputNode": 5, - "ACN_ControlNet++LoaderAdvanced": 5, - "Number Input Switch": 5, - "PencilSketch": 5, - "LoadImagesToBatch": 5, - "easy if": 5, - "GridAnnotation": 5, - "Simple String Combine (WLSH)": 5, - "LatentBatch": 5, - "0246.Merge": 5, - "QWenVL_API_S_Zho": 5, - "Image Pixelate": 5, - "BLIPLoader": 5, - "ImageRGBA2RGB": 5, - "PromptGenerator": 5, - "SplitSigmasDenoise": 5, - "CircularVAEDecode": 5, - "Integer Variable [n-suite]": 5, - "String Variable [n-suite]": 5, - "CR Text List To String": 5, - "CR Random Multiline Values": 5, - "preview_mask": 5, - "AudioToFFTs": 5, - "AV_ControlNetEfficientLoader": 5, - "GlobalSampler //Inspire": 5, - "TTPlanet_TileSimple_Preprocessor": 5, - "CCSR_Upscale": 5, - "CCSR_Model_Select": 5, - "TrainDatasetAdd": 5, - "SaveVideo [n-suite]": 5, - "LayerColor: Exposure": 5, - "Color Blend": 5, - "BNK_SlerpLatent": 5, - "MoondreamQuery": 5, - "GetImageRangeFromBatch": 5, - "ModelSamplingAuraFlow": 5, - "CR Composite Text": 5, - "PixArtResolutionSelect": 5, - "LLavaSamplerAdvanced": 5, - "TEEDPreprocessor": 5, - "CivitAI_Checkpoint_Loader": 5, - "ImageBatchGet": 5, - "DSINE-NormalMapPreprocessor": 5, - "ColorModEdges": 5, - "ColorModPivot": 5, - "ImpactWildcardEncode": 5, - "HYDiTTextEncodeSimple": 5, - "xy_Tiling_KSampler": 5, - "ToImageList": 5, - "easy humanSegmentation": 5, - "LayerUtility: ImageBlend V2": 5, - "LayerMask: CreateGradientMask": 5, - "SimpleMath": 5, - "easy imageToMask": 5, - "AlphaChanelAsMask": 5, - "EmbeddingPicker": 5, - "CR Load Image List": 5, - "Latent Switch (JPS)": 5, - "Mask Batch to Mask": 5, - "ModelMergeSubtract": 4, - "VHS_LoadAudioUpload": 4, + "ImageColorToMask": 5, + "VHS_AudioToVHSAudio": 5, + "CLIPTextEncodeSDXL+": 5, + "ImageApplyLUT+": 5, + "BatchCropFromMask": 5, + "StableCascade_SuperResolutionControlnet": 5, + "ImageAddMulti": 5, + "ImpactDummyInput": 5, + "CLIPTextEncodeControlnet": 5, + "AddNoise": 5, + "AudioCombine": 5, + "AudioEncoderEncode": 5, + "AudioTrim": 5, + "BboxVisualize": 5, + "CFGZeroStar": 5, + "FantasyPortraitModelLoader": 5, + "FluxKontextMultiReferenceLatentMethod": 5, + "FluxProExpandNode": 5, + "ImagePreviewFromLatent+": 5, + "ImageRandomTransform+": 5, + "KSamplerVariationsStochastic+": 5, + "LoadVQVAE": 5, + "LumaVideoNode": 5, + "LynxInsightFaceCrop": 5, + "MinimaxHailuoVideoNode": 5, + "ModelMergeQwenImage": 5, + "ModelPatchLoader": 5, + "OpenAIDalle3": 5, + "OviMMAudioVAELoader": 5, + "PyraCannyPreprocessor": 5, + "RecraftCreativeUpscaleNode": 5, + "RecraftImageToImageNode": 5, + "RecraftVectorizeImageNode": 5, + "SaveSVGNode": 5, + "SetFirstSigma": 5, + "SigmasToFloat": 5, + "StyleModelApplyAdvanced": 5, + "UNetSelfAttentionMultiply": 5, + "VAEDecodeHunyuan3D": 5, + "WanSoundImageToVideoExtend": 5, + "WanVideoContextOptions": 5, + "WanVideoEnhanceAVideo": 5, + "WanVideoSLG": 5, + "BNK_TiledKSampler": 4.703292999427012, + "BooleanPrimitive": 4.703292999427012, + "ExpressionEditor": 4.703292999427012, + "PhotoMakerStyles": 4.703292999427012, + "LivePortraitComposite": 4.703292999427012, + "LLM_api_loader": 4.703292999427012, + "LayerUtility: ImageRemoveAlpha": 4.703292999427012, + "SDXL Resolutions (JPS)": 4.703292999427012, + "Gemini_API_Zho": 4.703292999427012, + "ApplyFluxIPAdapter": 4.703292999427012, + "ADE_AnimateDiffModelSettings": 4.703292999427012, + "0246.JunctionBatch": 4.703292999427012, + "AB SamplerCustom (experimental)": 4.703292999427012, + "LayerUtility: ImageCombineAlpha": 4.703292999427012, + "mxSlider2D": 4.703292999427012, + "GateNormalizedAmplitude": 4.703292999427012, + "Masks Add": 4.703292999427012, + "FluxTrainSave": 4.703292999427012, + "FluxTrainLoop": 4.703292999427012, + "FluxTrainValidate": 4.703292999427012, + "VisualizeLoss": 4.703292999427012, + "RegionalIPAdapterColorMask //Inspire": 4.703292999427012, + "ConvertImg": 4.703292999427012, + "ImpactRemoteBoolean": 4.703292999427012, + "easy ipadapterApplyADV": 4.703292999427012, + "InstantX Flux Union ControlNet Loader": 4.311351916141428, + "ImageScaleDownToSize": 4.311351916141428, + "Automatic CFG - Warp Drive": 4.311351916141428, + "easy boolean": 4.311351916141428, + "LayeredDiffusionApply": 4.311351916141428, + "CogVideoSampler": 4.311351916141428, + "CogVideoDecode": 4.311351916141428, + "DownloadAndLoadCogVideoModel": 4.311351916141428, + "LayerUtility: LaMa": 4.311351916141428, + "RecommendedResCalc": 4.311351916141428, + "easy imageScaleDownToSize": 4.311351916141428, + "ttN pipeKSampler": 4.311351916141428, + "Image Input Switch": 4.311351916141428, + "LivePortraitLoadCropper": 4.311351916141428, + "easy clearCacheAll": 4.311351916141428, + "LayerUtility: ExtendCanvas": 4.311351916141428, + "FaceKeypointsPreprocessor": 4.311351916141428, + "CR Comic Panel Templates": 4.311351916141428, + "easy fullLoader": 4.311351916141428, + "ETN_ApplyMaskToImage": 4.311351916141428, + "easy imageChooser": 4.311351916141428, + "DualCLIPLoaderGGUF": 4.311351916141428, + "AnimateDiffModuleLoader": 4.311351916141428, + "AnimateDiffSampler": 4.311351916141428, + "Aegisflow Image Pass": 4.311351916141428, + "LayerColor: ColorAdapter": 4.311351916141428, + "LaMaInpaint": 4.311351916141428, + "easy promptReplace": 4.311351916141428, + "CR Draw Shape": 4.311351916141428, + "easy comfyLoader": 4.311351916141428, + "Prompt Weight (WLSH)": 4.311351916141428, + "RandomPrompt": 4.311351916141428, + "CR Random Hex Color": 4.311351916141428, + "PrimerePrompt": 4.311351916141428, + "CR Data Bus Out": 4.311351916141428, + "FluxLoraLoader": 4.311351916141428, + "ModelClamp": 4.311351916141428, + "LatentUpscaler": 4.311351916141428, + "easy controlnetLoader": 4.311351916141428, + "NormalizeAmplitude": 4.311351916141428, + "FusionText": 4.311351916141428, + "ImpactSEGSOrderedFilter": 4, + "ADE_ApplyAnimateDiffModel": 4, + "IPAdapterRegionalConditioning": 4, + "IPAdapterMS": 4, + "DetailTransfer": 4, + "BasicPipeToDetailerPipeSDXL": 4, + "ColorPreprocessor": 4, + "KSamplerAdvancedProvider": 4, + "BAE-NormalMapPreprocessor": 4, + "ImpactMakeImageList": 4, + "TransitionMask+": 4, + "IPAdapterFromParams": 4, + "ConditioningCombineMultiple+": 4, + "ImageQuantize": 4, + "LatentCrop": 4, + "LatentPixelScale": 4, + "ImageListToBatch+": 4, + "LoadCLIPSegModels+": 4, + "SUPIR_model_loader": 4, + "DSINE-NormalMapPreprocessor": 4, "SAMPreprocessor": 4, - "PreviewAnimation": 4, - "JDC_Contrast": 4, - "SDXL Empty Latent Image": 4, - "HDR Effects (SuperBeasts.AI)": 4, - "LayerColor: AutoBrightness": 4, - "TCDScheduler": 4, - "NoiseInjectionDetailerHookProvider": 4, "InjectNoiseToLatent": 4, - "CompositeImages_": 4, - "ImageBatchSplitter //Inspire": 4, - "BOPBTL_ScratchMask": 4, - "BOPBTL_RestoreOldPhotos": 4, - "BOPBTL_LoadScratchMaskModel": 4, - "BOPBTL_LoadRestoreOldPhotosModel": 4, - "ComfyUI_Image_Round__ImageRoundAdvanced": 4, - "ComfyUI_Image_Round__ImageCropAdvanced": 4, - "Hina.PoseEditor3D": 4, - "FloatRange //Inspire": 4, - "LayerUtility: GetColorTone": 4, - "RegionalSampler": 4, - "PreViewVideo": 4, - "TomePatchModel": 4, - "Int2String": 4, - "YouTubeVideoLoader": 4, - "Automatic CFG - Preset Loader": 4, - "Image Compare (mtb)": 4, - "load_persona": 4, - "ImageCompositeAbsoluteByContainer": 4, - "GMFSS Fortuna VFI": 4, - "BNK_CutoffBasePrompt": 4, - "ImpactSEGSLabelFilter": 4, - "PrimerePreviewImage": 4, - "RAUNet": 4, - "CR Save Text To File": 4, - "Mix Images By Mask": 4, - "VHS_VideoInfoLoaded": 4, - "SimpleMathInt+": 4, - "TextConcat": 4, - "get_string": 4, - "brushnet_model_loader": 4, - "brushnet_sampler": 4, - "IPAdapterClipVisionEnhancerBatch": 4, - "VHS_SplitMasks": 4, - "smZ Settings": 4, - "JDCN_VHSFileMover": 4, - "LayerUtility: TextBox": 4, - "ComfyWordCloud": 4, - "LayerUtility: TextImage": 4, - "ImageColorToMask": 4, - "XY Input: CFG Scale": 4, - "seed _O": 4, - "Solarize": 4, - "LayerUtility: SD3NegativeConditioning": 4, - "XY Input: Sampler/Scheduler": 4, - "If ANY return A else B-🔬": 4, - "FaceBoundingBox": 4, - "reBatchImage": 4, - "VHS_AudioToVHSAudio": 4, - "Apply Whisper": 4, - "Any List": 4, - "JWImageResizeByShorterSide": 4, - "ttN float": 4, - "ImagesGridByRows": 4, - "Grayscale Image (WLSH)": 4, - "MergeLayers": 4, - "LayerMask: MaskGradient": 4, - "EllaApply": 4, - "KSamplerRAVE": 4, - "Remove Image Background (abg)": 4, - "ReActorOptions": 4, - "CLIP Temperature": 4, - "BlurMaskFast": 4, - "LoadRandomImage": 4, - "PGSD3LatentGenerator": 4, - "RandomIntegerNode": 4, - "DisableNoise": 4, - "InjectLatentNoise+": 4, - "STMFNet VFI": 4, - "FromListGet1Image": 4, - "Kep_RepeatList": 4, - "CR Intertwine Lists": 4, - "LayerUtility: PromptTagger": 4, - "Latent Input Switch": 4, - "CLIP Positive-Negative (WLSH)": 4, - "PrimerePromptOrganizer": 4, - "PrimereVisualStyle": 4, - "PrimereVisualCKPT": 4, - "PrimerePromptSwitch": 4, - "PrimereEmbeddingHandler": 4, - "PrimereNetworkTagLoader": 4, - "PrimereResolution": 4, - "PrimereLatentNoise": 4, - "PrimereCLIPEncoder": 4, - "PrimereKSampler": 4, - "segformer_clothes": 4, - "DiffusersScheduler": 4, - "DynamiCrafterModelLoader": 4, - "DiffusersCompelPromptEmbedding": 4, - "DiffusersPipeline": 4, - "Style Conditioner": 4, - "XY Input: Clip Skip": 4, - "ZeST: Grayout Subject": 4, - "LayerMask: SegmentAnythingUltra": 4, - "StringConcatenate": 4, - "ConditioningMultiCombine": 4, - "CM_FloatUnaryOperation": 4, - "OneButtonFlufferize": 4, - "SeargeIntegerMath": 4, - "ToIPAdapterPipe //Inspire": 4, - "ApplyRegionalIPAdapters //Inspire": 4, - "FileNamePrefixDateDirFirst": 4, - "ImageFilterBlur": 4, - "Seed Generator (Image Saver)": 4, - "CLIPTextEncodeSDXL+": 4, - "Empty Latent by Ratio (WLSH)": 4, - "LayerUtility: Florence2Image2Prompt": 4, - "LayerMask: LoadFlorence2Model": 4, - "PromptComposerTextSingle": 4, - "LatentInterposer": 4, - "FLUXResolutions": 4, - "PrimereRefinerPrompt": 4, - "PrimereImageSegments": 4, - "PrimereAnyDetailer": 4, - "CLIPTextEncodeWithWeight //Inspire": 4, - "TagsSelector": 4, - "LoraLoaderStackedAdvanced": 4, - "Cfg Literal (Image Saver)": 4, - "VaeClamp": 4, - "easy prompt": 4, - "Remap": 4, - "FromListGetImages": 4, - "ADE_AnimateDiffLoaderV1Advanced": 4, - "ImageColorMatch+": 4, - "GLIGENTextBoxApply": 4, - "DynamiCrafterI2V": 4, - "SaveImageAndMetadata_": 4, - "SimpleMathSlider+": 4, - "TagsFormater": 4, - "CR Value": 4, - "BiRefNet": 4, - "CR Text Length": 4, - "LoadImageWithAlpha": 4, "EmptyLatentAudio": 4, - "VAEDecodeAudio": 4, - "PromptControlSimple": 4, - "JjkText": 4, - "ttN pipeIN": 4, - "LayerStyle: Stroke V2": 4, - "DiffusersControlnetUnit": 4, - "MicrosoftSpeech_TTS": 4, - "Play Sound": 4, - "ImageGridComposite3x3": 4, - "IF_DisplayText": 4, - "CR Select ISO Size": 4, - "IPAdapterUnifiedLoaderCommunity": 4, - "FrameMakerBatch": 4, - "Number to Float": 4, - "ConcatConditionEllaEmbeds": 4, - "LayerColor: Color of Shadow & Highlight": 4, - "CalculateFrameOffset": 4, - "Masks Combine Regions": 4, - "YANC.MultilineString": 4, - "LayerUtility: GetColorToneV2": 4, - "LayerUtility: ExtendCanvasV2": 4, - "JDCN_SplitString": 4, - "ModelMergeAdd": 3, - "Add Magic Clothing Attention": 3, - "Load Magic Clothing Model": 3, - "Image Resize To Width": 3, - "LayerMask: ImageToMask": 3, - "Video Dump Frames": 3, - "easy applyFooocusInpaint": 3, - "CreateShapeImageOnPath": 3, - "UltraPixelLoad": 3, - "UltraPixelProcess": 3, - "ArgosTranslateCLIPTextEncodeNode": 3, - "LoraLoaderStackedVanilla": 3, - "KRestartSamplerAdv": 3, - "LoraStackLoader_PoP": 3, + "GLIGENLoader": 4, + "ONNXDetectorSEGS": 4, + "ADE_LoadAnimateLCMI2VModel": 4, + "SamplerEulerAncestral": 4, + "Sleep": 4, + "Metric3D-DepthMapPreprocessor": 4, + "ADE_AnimateDiffSettings": 4, + "ADE_NoisedImageInjection": 4, + "ADE_SigmaSchedule": 4, + "ADE_ValueScheduling": 4, + "ByteDanceImageEditNode": 4, + "ContextWindowsManual": 4, + "EmptyLTXVLatentVideo": 4, + "FloatToSigmas": 4, + "IPAAdapterFaceIDBatch": 4, + "ImageColorSampler": 4, + "ImageRGBToYUV": 4, + "LandmarksToImage": 4, + "LatentUpscaleModelLoader": 4, + "LtxvApiTextToVideo": 4, + "LumaConceptsNode": 4, + "LumaReferenceNode": 4, + "PixelTiledKSampleUpscalerProvider": 4, + "RecraftStyleV3RealisticImage": 4, + "RunwayImageToVideoNodeGen4": 4, + "SEGSUpscalerPipe": 4, + "SamplerER_SDE": 4, + "StabilityTextToAudio": 4, + "StringToFloatList": 4, + "StringTrim": 4, + "SubgraphBlueprint.Anime-Dog_Prompts_Wildcards": 4, + "TimerNodeKJ": 4, + "TorchCompileModelQwenImage": 4, + "ViduReferenceVideoNode": 4, + "Wan21BlockLoraSelect": 4, + "WanVideoATITracks": 4, + "WanVideoATITracksVisualize": 4, + "WanVideoControlnetLoader": 4, + "WanVideoFunCameraEmbeds": 4, + "WanVideoScheduler": 4, + "WanVideoTeaCache": 4, + "VAEDecodeTiled_TiledDiffusion": 3.919410832855843, + "LivePortraitLoadMediaPipeCropper": 3.919410832855843, + "DownloadAndLoadChatGLM3": 3.919410832855843, + "IPAdapterClipVisionEnhancer": 3.919410832855843, + "CreateGradientFromCoords": 3.919410832855843, + "Wildcard Processor": 3.919410832855843, + "WildcardEncode //Inspire": 3.919410832855843, + "ADMD_TrainLora": 3.919410832855843, + "ADMD_SaveLora": 3.919410832855843, + "ADMD_ValidationSampler": 3.919410832855843, + "FeatheredMask": 3.919410832855843, + "IsMaskEmpty": 3.919410832855843, + "Pack SDXL Tuple": 3.919410832855843, + "CheckpointSave": 3.919410832855843, + "PhotoMakerEncode": 3.919410832855843, + "DiffControlNetLoaderAdvanced": 3.919410832855843, + "SaveImageExtended": 3.919410832855843, + "ImageSizeAndBatchSize": 3.919410832855843, + "CR Simple Banner": 3.919410832855843, + "LayerUtility: TextJoin": 3.919410832855843, + "LayerMask: BiRefNetUltra": 3.919410832855843, + "Blend Latents": 3.919410832855843, + "AnimateDiffCombine": 3.919410832855843, + "SeargePromptText": 3.919410832855843, + "CR Clip Input Switch": 3.919410832855843, + "TextSplitByDelimiter": 3.919410832855843, + "LayerMask: MaskInvert": 3.919410832855843, + "SDXLPromptStylerbyOriginal": 3.919410832855843, + "CR Random Shape Pattern": 3.919410832855843, + "DownloadAndLoadCLIPVisionModel": 3.919410832855843, + "DownloadAndLoadCLIPModel": 3.919410832855843, + "BNK_CLIPTextEncodeSDXLAdvanced": 3.919410832855843, + "ImpactValueReceiver": 3.919410832855843, + "DownloadAndLoadDynamiCrafterModel": 3.919410832855843, + "LayerUtility: ImageBlendAdvance V2": 3.919410832855843, + "LayerMask: SegformerB2ClothesUltra": 3.919410832855843, + "Width/Height Literal (Image Saver)": 3.919410832855843, + "CR Integer Multiple": 3.919410832855843, + "String Literal (Image Saver)": 3.919410832855843, + "AV_ControlNetEfficientStacker": 3.919410832855843, + "easy pipeIn": 3.919410832855843, + "DWPreprocessor_Provider_for_SEGS //Inspire": 3.5274697495702587, + "Image Padding": 3.5274697495702587, + "Save Image w/Metadata": 3.5274697495702587, + "MediaPipeFaceMeshDetectorProvider //Inspire": 3.5274697495702587, + "Image Style Filter": 3.5274697495702587, + "RegionalConditioningColorMask //Inspire": 3.5274697495702587, + "ttN pipeLoader": 3.5274697495702587, + "PerturbedAttention": 3.5274697495702587, + "InspyrenetRembg": 3.5274697495702587, + "PhotoMakerEncodePlus": 3.5274697495702587, + "PixelKSampleUpscalerProviderPipe": 3.5274697495702587, + "ReActorMaskHelper": 3.5274697495702587, + "SDXLPromptStylerAdvanced": 3.5274697495702587, + "LoadImageListFromDir //Inspire": 3.5274697495702587, + "Image Select Channel": 3.5274697495702587, + "ELLALoader": 3.5274697495702587, + "T5TextEncoderLoader #ELLA": 3.5274697495702587, + "ReActorFaceBoost": 3.5274697495702587, + "XY Plot": 3.5274697495702587, + "easy imagePixelPerfect": 3.5274697495702587, + "PixArtCheckpointLoader": 3.5274697495702587, + "SwitchByIndex": 3.5274697495702587, + "SeargePreviewImage": 3.5274697495702587, + "Resolutions by Ratio (WLSH)": 3.5274697495702587, + "Image Crop Square Location": 3.5274697495702587, + "LayerUtility: QWenImage2Prompt": 3.5274697495702587, + "ColorBlend": 3.5274697495702587, + "FaceEmbedDistance": 3.5274697495702587, + "CosyVoiceNode": 3.5274697495702587, + "AutoCropFaces": 3.5274697495702587, + "ImageTextOutlined": 3.5274697495702587, + "IPAdapterModelHelper //Inspire": 3.5274697495702587, + "StringToInt": 3.5274697495702587, + "easy preSampling": 3.5274697495702587, + "ChatGPT compact _O": 3.5274697495702587, + "SDAnyConverter": 3.5274697495702587, + "Image Canny Filter": 3.5274697495702587, + "SeargeIntegerPair": 3.5274697495702587, + "PortraitMaster": 3.5274697495702587, + "InspyrenetRembgAdvanced": 3.5274697495702587, + "BRIAAI Matting": 3.5274697495702587, + "ConditioningSetAreaPercentage": 3.5274697495702587, + "easy imageScaleDown": 3.5274697495702587, + "FadeMaskEdges": 3.5274697495702587, + "CR Seamless Checker": 3.5274697495702587, + "ImageSizeInfo": 3.5274697495702587, + "DownloadAndLoadKolorsModel": 3.5274697495702587, + "KolorsSampler": 3.5274697495702587, + "KolorsTextEncode": 3.5274697495702587, + "SolidColorRGB": 3.5274697495702587, + "LayerFilter: HDREffects": 3.5274697495702587, + "Load Text File": 3.5274697495702587, + "StableAudio_": 3.5274697495702587, + "easy imageColorMatch": 3.1355286662846744, + "AuraSR.AuraSRUpscaler": 3.1355286662846744, + "PreviewLatentAdvanced": 3.1355286662846744, + "DZ_Face_Detailer": 3.1355286662846744, + "Model Switch (JPS)": 3.1355286662846744, + "LightSource": 3.1355286662846744, + "CR Text Blacklist": 3.1355286662846744, + "LayeredDiffusionDecodeRGBA": 3.1355286662846744, + "PowerPaint": 3.1355286662846744, + "PowerPaintCLIPLoader": 3.1355286662846744, + "Image Rotate": 3.1355286662846744, + "CR Prompt List": 3.1355286662846744, + "PerpNegGuider": 3.1355286662846744, + "CR Apply Model Merge": 3.1355286662846744, + "CR Model Merge Stack": 3.1355286662846744, + "CR Integer Range List": 3.1355286662846744, + "FloatingVideo": 3.1355286662846744, + "SaveImageWithMetaData": 3.1355286662846744, + "LayerUtility: ColorImage": 3.1355286662846744, + "DenoiseScheduleHookProvider": 3.1355286662846744, + "ChromaticAberration": 3.1355286662846744, + "CR Set Value On Boolean": 3.1355286662846744, + "Unary Image Op": 3.1355286662846744, + "RemoveControlNet //Inspire": 3.1355286662846744, + "LayerMask: PersonMaskUltra": 3.1355286662846744, + "easy promptConcat": 3.1355286662846744, + "CR Image Pipe Out": 3.1355286662846744, + "PrimereDynamicParser": 3.1355286662846744, + "DownloadAndLoadMimicMotionModel": 3.1355286662846744, + "MimicMotionSampler": 3.1355286662846744, + "Bounded Image Blend with Mask": 3.1355286662846744, + "LayerUtility: RestoreCropBox": 3.1355286662846744, + "OutlineMask": 3.1355286662846744, + "CreatePromptVariant": 3.1355286662846744, + "VHS_GetLatentCount": 3.1355286662846744, + "RemapDepth": 3.1355286662846744, + "CR Apply ControlNet": 3.1355286662846744, + "Save Images Mikey": 3.1355286662846744, + "LoraInfo": 3.1355286662846744, + "BlendModes": 3.1355286662846744, + "RetrieveBackendData //Inspire": 3.1355286662846744, + "easy controlnetLoaderADV": 3.1355286662846744, + "Joytag": 3.1355286662846744, + "Image Stitch": 3.1355286662846744, + "Any To Any": 3.1355286662846744, + "BNK_GetSigma": 3.1355286662846744, + "ADE_AnimateDiffSamplingSettings": 3, + "SEGSPaste": 3, + "ConditioningAverage": 3, + "SDTurboScheduler": 3, + "LeReS-DepthMapPreprocessor": 3, + "RebatchLatents": 3, + "IPAdapterCombineEmbeds": 3, + "Scribble_XDoG_Preprocessor": 3, + "ModelSamplingStableCascade": 3, + "ImageDesaturate+": 3, + "HyperTile": 3, + "FlipSigmas": 3, + "M-LSDPreprocessor": 3, + "ADE_BatchedContextOptions": 3, + "SD3NegativeConditioning+": 3, + "ImpactMakeTileSEGS": 3, + "OneFormer-ADE20K-SemSegPreprocessor": 3, + "ImageGenResolutionFromLatent": 3, + "ApplyCLIPSeg+": 3, + "Intrinsic_lora_sampling": 3, + "ImpactNegativeConditioningPlaceholder": 3, + "GenerateNoise": 3, + "LatentBatch": 3, + "NoiseInjectionDetailerHookProvider": 3, + "ConditioningMultiCombine": 3, "LatentSender": 3, - "LatentReceiver": 3, - "LoadImage //Inspire": 3, - "KfEvaluateCurveAtT": 3, - "KfCurveFromString": 3, - "WebcamCaptureCV2": 3, - "Screencap_mss": 3, - "LoadChatGLM3": 3, - "Tensor Batch to Image": 3, - "OneButtonPreset": 3, - "Linear Camera Zoom [DVB]": 3, - "CutForInpaint": 3, - "EllaTextEncode": 3, - "LayerMask: Shadow & Highlight Mask": 3, - "ImageApplyLUT+": 3, - "GPT4VisionNode": 3, - "VHS_VideoInfoSource": 3, - "HD UltimateSDUpscale": 3, - "LayerColor: AutoAdjust": 3, - "LayerColor: ColorTemperature": 3, - "load_file": 3, - "advance_ebd_tool": 3, - "FluxSamplerParams+": 3, - "CreateShapeMaskOnPath": 3, - "ImagePadForOutpaintMasked": 3, - "Tiled Upscaler Script": 3, - "VHS_SplitLatents": 3, - "ImageSmartSharpen+": 3, - "GetMaskSizeAndCount": 3, - "easy sliderControl": 3, - "Blur (mtb)": 3, - "LLMLoader": 3, - "ttN seed": 3, - "Big Image Switch [Dream]": 3, - "EulerLightingNode": 3, - "PreViewAudio": 3, - "Image Shadows and Highlights": 3, - "ColorTint": 3, - "Parabolize": 3, - "Quantize": 3, - "SineWave": 3, - "AsciiArt": 3, - "Aegisflow controlnet preprocessor bus": 3, - "PromptBuilder //Inspire": 3, - "DynamiCrafterLoader": 3, - "CLIPSegDetectorProvider": 3, - "XY Input: Seeds++ Batch": 3, - "Compare-🔬": 3, - "TextImage": 3, - "PromptExtractor //Inspire": 3, - "String Input": 3, - "FaceCropInfo": 3, - "GetImage_(Width&Height) _O": 3, - "CreateGradientMask": 3, - "SeargeSDXLSampler": 3, - "ImagesGridByColumns": 3, - "Griptape Display: Text": 3, - "PipelineLoader": 3, - "IDM-VTON": 3, - "CogVideoImageEncode": 3, - "TransparentImage": 3, - "MediaPipeFaceMeshToSEGS": 3, - "Eden_Compare": 3, - "LuminaT2ISampler": 3, - "LuminaGemmaTextEncode": 3, - "DownloadAndLoadGemmaModel": 3, - "DownloadAndLoadLuminaModel": 3, - "color2RGB": 3, - "CropImage_AS": 3, - "Mask By Text": 3, - "ConditioningSetMaskAndCombine": 3, - "ImpactIPAdapterApplySEGS": 3, - "CLIP_Interrogator": 3, - "LayerMask: MaskEdgeUltraDetail": 3, - "CR VAE Decode": 3, - "CR Halftone Grid": 3, - "AdainImage": 3, - "StringMergerNode": 3, - "DownloadAndLoadFlorence2Lora": 3, - "TileMerge": 3, - "TileCalc": 3, - "TileSplit": 3, - "Batch Unsampler": 3, - "Iterative Mixing KSampler Advanced": 3, - "PortraitMaster_中文版": 3, - "ArithmeticBlend": 3, - "SamplerTCD EulerA": 3, - "ToonCrafterNode": 3, - "ToStringList": 3, - "easy globalSeed": 3, - "CR Image Pipe In": 3, - "Masks Combine Batch": 3, - "AnyNode": 3, - "PrimereModelConceptSelector": 3, - "PrimereConceptDataTuple": 3, - "ReActorBuildFaceModel": 3, - "JjkConcat": 3, - "LayerUtility: CropByMask": 3, - "SDXLPromptStylerbySteamPunkRealism": 3, - "Sam2VideoSegmentationAddPoints": 3, - "Mask Contour": 3, - "MakeBasicPipe //Inspire": 3, - "InitFluxLoRATraining": 3, - "OptimizerConfig": 3, - "FluxTrainValidationSettings": 3, - "FluxTrainModelSelect": 3, - "FluxTrainEnd": 3, - "TrainDatasetGeneralConfig": 3, - "ImageConcatFromBatch": 3, - "LoadVideo [n-suite]": 3, - "CR Image Size": 3, - "JWImageContrast": 3, - "Miaoshouai_Tagger": 3, - "JWMaskResize": 3, - "Image Edge Detection Filter": 3, - "ttN imageREMBG": 3, - "ImpactQueueTriggerCountdown": 3, - "PreviewLatent": 3, - "Suggester": 3, - "AttentionCoupleRegion": 3, - "BatchUncropAdvanced": 3, - "PrimereModelKeyword": 3, - "PrimereAestheticCKPTScorer": 3, - "Sampler Selector (Image Saver)": 3, - "Scheduler Selector (Image Saver)": 3, - "ImageIntensityDetector": 3, - "SemSegPreprocessor": 3, - "Image Median Filter": 3, - "SaveImageOpenEXR": 3, - "ValueSchedule": 3, - "EG_ZY_WBK": 3, - "SeargeFloatConstant": 3, - "SeargeSDXLPromptEncoder": 3, - "CR Switch Model and CLIP": 3, - "SetMetadataForSaveVideo [n-suite]": 3, - "HYDiTCheckpointLoader": 3, - "HYDiTTextEncoderLoader": 3, - "ImageTransformCropAbsolute": 3, - "JWImageFlip": 3, - "GLIGENLoader": 3, - "KSamplerPipe //Inspire": 3, - "Fooocus_KSampler": 3, - "LatentRotate": 3, - "Attention couple": 3, - "LayerMask: YoloV8Detect": 3, - "CacheBackendData //Inspire": 3, - "SimpleMathFloat+": 3, - "easy preSamplingAdvanced": 3, - "easy imageSave": 3, - "TCDModelSamplingDiscrete": 3, - "TaraPrompter": 3, - "TaraApiKeyLoader": 3, - "IPAdapterWeightsFromStrategy": 3, - "OmostRenderCanvasConditioningNode": 3, - "OmostLayoutCondNode": 3, - "Mask Erode Region": 3, - "JWImageExtractFromBatch": 3, "LatentMultiply": 3, - "LayerMask: MaskStroke": 3, - "SeedSelector": 3, - "OneButtonArtify": 3, - "ConditionText": 3, - "MultiLoraLoader-70bf3d77": 3, - "LoraTextExtractor-b1f83aa2": 3, - "ADE_AnimateDiffModelSettings_Release": 3, - "ImageMerger": 3, - "BatchCropFromMask": 3, - "LayerUtility: CropBoxResolve": 3, - "Image Tile Offset (mtb)": 3, - "DiffusersControlnetLoader": 3, - "segformer_b2_clothes": 3, - "Power-Law Noise (PPF Noise)": 3, - "KepRotateImage": 3, - "LatentFlip": 3, - "TransientAmplitudeBasic": 3, - "Gemini_15P_API_S_Advance_Zho": 3, - "Text String Truncate": 3, - "MuseTalkRun": 3, - "CR Trigger": 3, - "Text Compare": 3, - "Generation Parameter Output": 3, - "LeRes_DepthMap_Preprocessor_Provider_for_SEGS //Inspire": 3, - "PromptExpansion": 3, - "ACN_ReferencePreprocessor": 3, - "FaceParsingResultsParser(FaceParsing)": 3, - "easy instantIDApply": 3, - "> Text": 3, - "> Save Image": 3, - "CXH_Min2_6_prompt_Run": 3, - "CXH_HG_Model_Load": 3, - "LayerColor: ColorBalance": 3, - "Crop (mtb)": 3, - "Kep_JoinListAny": 3, - "mxSlider": 3, - "easy preSamplingDynamicCFG": 3, - "Latent Adjustment (PPF Noise)": 3, - "SelectNthMask //Inspire": 3, - "easy imageDetailTransfer": 3, - "diffusers_model_loader": 3, - "LoadICLightUnetDiffusers": 3, - "iclight_diffusers_sampler": 3, - "easy string": 3, - "ConcatenateText": 3, - "Eden_Int": 3, - "FL_ColorPicker": 3, - "ttN pipeOUT": 3, - "LoraListNames": 3, - "AddAlpha": 3, - "IPAdapterFaceIDKolors": 2, - "Image Voronoi Noise Filter": 2, - "EmptyLatentImageScaleBy": 2, - "easy ckptNames": 2, - "GetImagesFromBatchIndexed": 2, - "AnyAspectRatio": 2, - "CLIP Vector Sculptor text encode": 2, - "JDC_RandNoise": 2, - "LayerFilter: SoftLight": 2, - "DebugTensorShape+": 2, - "ETN_CropImage": 2, - "RGB_Image_Zho": 2, - "LLLiteLoader": 2, - "AdvancedLivePortrait": 2, - "CaptureWebcam": 2, - "LayerUtility: GradientImage V2": 2, - "ADMD_ValidationSettings": 2, - "ADMD_InitializeTraining": 2, - "ADMD_AdditionalModelSelect": 2, - "ADMD_CheckpointLoader": 2, - "Flatten Colors": 2, - "MimicMotionNode": 2, - "DeepCache": 2, - "BizyAir_MinusZoneChatGLM3TextEncode": 2, - "FluxPromptGenerator": 2, - "ReferenceOnlySimple": 2, - "RegionalPromptColorMask //Inspire": 2, - "CLIP Positive-Negative XL w/Text (WLSH)": 2, - "AV_CheckpointMerge": 2, - "ttN multiModelMerge": 2, + "SamplerEulerCFGpp": 3, + "ThresholdMask": 3, + "CustomSigmas": 3, + "DiffusionEdge_Preprocessor": 3, + "TTPlanet_TileGF_Preprocessor": 3, + "ImpactIsNotEmptySEGS": 3, + "Metric3D-NormalMapPreprocessor": 3, + "ADE_AnimateDiffKeyframe": 3, + "ADE_LoadCameraPoses": 3, + "ADE_NoisedImageInjectOptions": 3, + "AudioSpeechToTextWhisper": 3, + "BboxToInt": 3, + "ChromaRadianceOptions": 3, + "CreateCFGScheduleFloatList": 3, + "CreateHookLora": 3, + "EmptyAceStepLatentAudio": 3, + "EmptyLatentImageCustomPresets": 3, + "Hunyuan3Dv2ConditioningMultiView": 3, + "HunyuanVideo15ImageToVideo": 3, + "ImageCropByMaskBatch": 3, + "ImageGridtoBatch": 3, + "ImagePrepForICLora": 3, + "ImpactConditionalBranch": 3, + "ImpactExecutionOrderController": 3, + "ImpactFrom_SEG_ELT_bbox": 3, + "KlingCameraControlT2VNode": 3, + "KlingSingleImageVideoEffectNode": 3, + "LTXVAddGuide": 3, + "LatentConcat": 3, + "LazyCache": 3, + "Load3DAnimation": 3, + "LossGraphNode": 3, + "LumaImageNode": 3, + "LynxEncodeFaceIP": 3, + "MaskExpandBatch+": 3, + "MinimaxImageToVideoNode": 3, + "ModelMergeBlocks": 3, + "MoonvalleyTxt2VideoNode": 3, + "NormalCrafterNode": 3, + "PikaScenesV2_2": 3, + "Pikaswaps": 3, + "Preview3DAnimation": 3, + "ReCamMasterPoseVisualizer": 3, + "RecraftReplaceBackgroundNode": 3, + "RecraftStyleV3InfiniteStyleLibrary": 3, + "RecraftStyleV3LogoRaster": 3, + "RecraftTextToImageNode": 3, + "RegexMatch": 3, + "RemoveImageFromSEGS": 3, + "Rodin3D_Smooth": 3, + "RunwayFirstLastFrameNode": 3, + "SUPIR_model_loader_v2_clip": 3, + "SaveAnimatedPNG": 3, + "ScaleROPE": 3, + "SetClipHooks": 3, + "SetDefaultImageForSEGS": 3, + "SplitBboxes": 3, + "StableZero123_Conditioning_Batched": 3, + "TorchCompileModel": 3, + "VHS_MergeLatents": 3, + "VHS_SelectLatents": 3, + "ViduImageToVideoNode": 3, + "ViduTextToVideoNode": 3, + "WanContextWindowsManual": 3, + "WanPhantomSubjectToVideo": 3, + "WanVideoAddLynxEmbeds": 3, + "WanVideoControlEmbeds": 3, + "WanVideoExperimentalArgs": 3, + "SDXLAspectRatio": 2.74358758299909, + "SmoothMask": 2.74358758299909, + "CR Combine Prompt": 2.74358758299909, + "FrequencySeparation": 2.74358758299909, + "LayerMask: MaskEdgeUltraDetail V2": 2.74358758299909, + "Masks Subtract": 2.74358758299909, + "PoseNode": 2.74358758299909, + "Date Time Format": 2.74358758299909, + "CR Simple Prompt List Keyframes": 2.74358758299909, + "Image Flip": 2.74358758299909, + "AlphaChanelAddByMask": 2.74358758299909, + "MiDaS_DepthMap_Preprocessor_Provider_for_SEGS //Inspire": 2.74358758299909, + "PrepareImageAndMaskForInpaint": 2.74358758299909, + "ApplyPulidAdvanced": 2.74358758299909, + "Image High Pass Filter": 2.74358758299909, + "Image Film Grain": 2.74358758299909, + "CR Batch Images From List": 2.74358758299909, + "LayeredDiffusionDecode": 2.74358758299909, + "ImpactAssembleSEGS": 2.74358758299909, + "ImpactSEGSPicker": 2.74358758299909, + "Image Batch": 2.74358758299909, + "Image Monitor Effects Filter": 2.74358758299909, + "T5v11Loader": 2.74358758299909, + "Canvas_Tab": 2.74358758299909, + "ttN pipeKSamplerAdvanced": 2.74358758299909, + "MiniCPM_VQA": 2.74358758299909, + "Glow": 2.74358758299909, + "ImageFilterGaussianBlur": 2.74358758299909, + "KSamplerAdvanced (WLSH)": 2.74358758299909, + "MeshGraphormer+ImpactDetector-DepthMapPreprocessor": 2.74358758299909, + "Colored Image (mtb)": 2.74358758299909, + "easy compare": 2.74358758299909, + "easy imageSwitch": 2.74358758299909, + "AV_ControlNetEfficientLoaderAdvanced": 2.74358758299909, + "Float Literal (Image Saver)": 2.74358758299909, + "AV_VAELoader": 2.74358758299909, + "ImageCombine": 2.74358758299909, + "MimicMotionDecode": 2.74358758299909, + "MimicMotionGetPoses": 2.74358758299909, + "ToonCrafterDecode": 2.74358758299909, + "Crop Image TargetSize (JPS)": 2.74358758299909, + "ImpactSegsAndMask": 2.74358758299909, + "CM_NumberUnaryOperation": 2.74358758299909, + "CR Data Bus In": 2.74358758299909, + "KepStringLiteral": 2.74358758299909, + "PrimereAnyOutput": 2.74358758299909, + "EmbeddingPrompt": 2.74358758299909, + "YANC.ConcatStrings": 2.74358758299909, + "Mask Dilate Region": 2.74358758299909, + "\ud83d\udd39Photoshop ComfyUI Plugin": 2.74358758299909, + "\ud83d\udd39SendTo Photoshop Plugin": 2.74358758299909, + "RawTextCombine": 2.74358758299909, + "Vae Decode (mtb)": 2.74358758299909, + "BNK_NoisyLatentImage": 2.351646499713506, + "PortraitMasterSkinDetails": 2.351646499713506, + "LoadImageFromUrl": 2.351646499713506, + "ImageRepeat": 2.351646499713506, + "BatchValueScheduleLatentInput": 2.351646499713506, + "FL_SDUltimate_Slices": 2.351646499713506, + "PhotoMakerLoaderPlus": 2.351646499713506, + "LivePortraitNode": 2.351646499713506, + "LivePortraitLoadFaceAlignmentCropper": 2.351646499713506, + "ImageEffectsGrayscale": 2.351646499713506, + "LayerMask: RemBgUltra": 2.351646499713506, + "JDCN_SwapInputs": 2.351646499713506, + "IFRNet VFI": 2.351646499713506, + "Joy_caption": 2.351646499713506, + "Joy_caption_load": 2.351646499713506, + "AnimateDiffSlidingWindowOptions": 2.351646499713506, + "SDXL Resolutions (WLSH)": 2.351646499713506, + "CR Color Bars": 2.351646499713506, + "Int To Number (mtb)": 2.351646499713506, + "easy promptList": 2.351646499713506, + "NewLayer": 2.351646499713506, + "BLIPCaption": 2.351646499713506, + "ReActorFaceSwapOpt": 2.351646499713506, + "CR Image Panel": 2.351646499713506, + "BatchCreativeInterpolation": 2.351646499713506, + "BilboXPhotoPrompt": 2.351646499713506, + "CR Text Operation": 2.351646499713506, + "LayerUtility: SaveImagePlus": 2.351646499713506, + "CR Binary Pattern": 2.351646499713506, + "CR String To Number": 2.351646499713506, + "PrimereClearPrompt": 2.351646499713506, + "BatchValueSchedule": 2.351646499713506, + "Image Load": 2.351646499713506, + "DiffusersGenerator": 2.351646499713506, + "PreviewMask_": 2.351646499713506, + "LayerUtility: String": 2.351646499713506, + "AnyNodeLocal": 2.351646499713506, + "Logic Boolean Primitive": 2.351646499713506, + "LayerColor: AutoAdjustV2": 2.351646499713506, + "LayerMask: RmBgUltra V2": 2.351646499713506, + "ComfyUIStyler": 2.351646499713506, + "ChineseCLIPEncode": 2.351646499713506, + "CatVTONWrapper": 2.351646499713506, + "MeshGraphormerDepthMapPreprocessorProvider_for_SEGS //Inspire": 2.351646499713506, + "EllaEncode": 2.351646499713506, + "String Replace (mtb)": 2.351646499713506, + "Conditioning Input Switch": 2.351646499713506, + "MaskFromList+": 2.351646499713506, + "Image Power Noise": 2.351646499713506, + "Unary Mask Op": 2.351646499713506, + "ConditioningClamp": 2.351646499713506, + "Checkpoint Loader with Name (Image Saver)": 2.351646499713506, + "Int Literal (Image Saver)": 2.351646499713506, + "Number to Int": 2.351646499713506, + "MorphologicOperation": 2.351646499713506, + "PreviewBridgeLatent": 2.351646499713506, + "LayerUtility: ImageScaleRestore V2": 2.351646499713506, + "LayerMask: MaskBoxDetect": 2.351646499713506, + "IF_PromptMkr": 2.351646499713506, + "easy a1111Loader": 2.351646499713506, + "LoadPromptsFromFile //Inspire": 2.351646499713506, + "UnzipPrompt //Inspire": 2.351646499713506, + "ImpactDilateMaskInSEGS": 2.351646499713506, + "Griptape Create: Rules": 2.351646499713506, + "FlowBuilder": 2.351646499713506, + "CR Text Cycler": 2.351646499713506, + "ADE_AnimateDiffLoaderWithContext": 2, + "SelfAttentionGuidance": 2, + "PerturbedAttentionGuidance": 2, + "TilePreprocessor": 2, + "BasicPipeToDetailerPipe": 2, + "SubtractMask": 2, + "CreateFadeMaskAdvanced": 2, + "MaskListToMaskBatch": 2, + "PiDiNetPreprocessor": 2, + "IPAdapterWeights": 2, + "ImpactSEGSToMaskList": 2, + "InpaintCrop": 2, + "PhotoMakerLoader": 2, + "RegionalPrompt": 2, + "StableZero123_Conditioning": 2, + "VHS_DuplicateLatents": 2, + "SEGSToImageList": 2, + "ShufflePreprocessor": 2, + "UniFormer-SemSegPreprocessor": 2, + "ToDetailerPipe": 2, + "ImpactDecomposeSEGS": 2, + "ImpactFrom_SEG_ELT": 2, + "ImpactMinMax": 2, + "ImpactConvertDataType": 2, + "ImageLuminanceDetector": 2, + "MaskBatch+": 2, + "DetailerForEachPipeForAnimateDiff": 2, + "DenoiseSchedulerDetailerHookProvider": 2, + "MasksToMaskList": 2, + "SV3D_Conditioning": 2, + "SplitSigmasDenoise": 2, + "ImpactWildcardEncode": 2, + "CreateGradientMask": 2, + "MediaPipeFaceMeshToSEGS": 2, + "BatchUncropAdvanced": 2, "SV3D_BatchSchedule": 2, - "Unwrap Frame Set [DVB]": 2, - "Sine Camera Zoom [DVB]": 2, - "Linear Camera Pan [DVB]": 2, - "Create Frame Set [DVB]": 2, - "BNK_CutoffRegionsToConditioning_ADV": 2, - "Image Mix RGB Channels": 2, - "Get Image Size (JPS)": 2, - "ImageColorTransfer": 2, - "Seed_": 2, - "CR Simple Prompt Scheduler": 2, - "LayerFilter: SkinBeauty": 2, - "ImageComposite_Zho": 2, - "CR Font File List": 2, - "flux_persona": 2, - "json_get_value": 2, - "extra_parameters": 2, - "RescaleClassifierFreeGuidanceTest": 2, - "ApplyMSWMSAAttentionSimple": 2, - "OllamaImageDescriber": 2, - "Text to Console": 2, - "Logic NOT": 2, - "JDCN_BoolInt": 2, - "Demofusion From Single File": 2, - "ConditioningBlend": 2, - "ImageFilterBilateralBlur": 2, - "ImageEffectsLensVignette": 2, - "EGIPAdapter_Mad_Assistant": 2, - "RGB_Picker": 2, - "easy textSwitch": 2, - "CFGGuider": 2, - "Save Image With Prompt Data": 2, - "SamplerEulerCFGpp": 2, - "PlayMusic": 2, - "Send_To_Editor": 2, - "LivePortraitVideoNode": 2, - "ImageNoiseGaussian": 2, - "FaceFixerOpenCV": 2, - "Any Converter": 2, - "comfyui-easy-padding": 2, - "Load CheckPoint DragNUWA": 2, - "DragNUWA Run": 2, - "ImageEffectsLensBokeh": 2, - "chaosaiart_TextCLIPEncode": 2, - "CR ControlNet Input Switch": 2, - "Calculation [Dream]": 2, - "CXH_JoyTag": 2, - "SizeSelector": 2, - "int _O": 2, - "SmoothVideo": 2, - "ImageTransformCropCorners": 2, - "XY Grid Helper": 2, - "SeargePromptCombiner": 2, - "Griptape Create: Agent": 2, - "LayerFilter: Sharp & Soft": 2, - "0246.Hub": 2, - "Image Adaptive Crop With Mask": 2, - "CombineClipEllaEmbeds": 2, - "ApplyRAUNet": 2, - "ApplyMSWMSAAttention": 2, - "AddMetaData": 2, - "Moondream Interrogator": 2, - "ImageContainer": 2, - "ImageSegmentation": 2, - "ImpactSchedulerAdapter": 2, - "BNK_AddCLIPSDXLRParams": 2, - "GradientPatchModelAddDownscale": 2, - "MovementsImage_Zho": 2, - "ttN int": 2, - "AnyListCartesianProduct": 2, - "FromListGet1Latent": 2, - "ImageText": 2, - "ScheduleToModel": 2, - "ScheduleToCond": 2, - "PromptToSchedule": 2, - "Int to String": 2, - "Prompt Multiple Styles Selector": 2, - "SpeechRecognition": 2, - "NDI_LoadImage": 2, - "NDI_SendImage": 2, - "CR Feathered Border": 2, - "ImageCropByAlpha": 2, - "StableAudioPrompt": 2, - "segformer_agnostic": 2, - "stabel_vition": 2, - "Latent Upscale by Factor (WAS)": 2, - "YANC.FormatDatetimeString": 2, - "StringListToString": 2, - "Fetch widget value": 2, - "SDXLPromptStylerbyCyberpunkSurrealism": 2, - "SDXLPromptbyRomanticNationalismArt": 2, - "SDXLPromptStylerbyQuantumRealism": 2, - "SDXLPromptbyIrishFolkArt": 2, - "SDXLPromptbyVikingArt": 2, - "SDXLPromptbyCelticArt": 2, - "SDXLPromptbyFashionArt": 2, - "SDXLPromptStylerbyWyvern": 2, - "SDXLPromptStylerbyTheme": 2, - "SDXLPromptbySportsArt": 2, - "SDXLPromptbyContemporaryNordicArt": 2, - "Sam2VideoSegmentation": 2, - "UploadToHuggingFace": 2, - "LayerUtility: ImageTaggerSave": 2, - "ScaledSoftMaskedUniversalWeights": 2, - "RestoreDetail": 2, - "SeargeFloatMath": 2, - "Float Input [Dream]": 2, - "ControlNextGetPoses": 2, - "MoonDream": 2, - "CM_IntToBool": 2, - "CM_BoolToInt": 2, - "ThresholdMask": 2, - "easy imageInterrogator": 2, - "WrapText": 2, - "EG_WB_KSH": 2, - "Image Resize To Height": 2, - "LayerUtility: BooleanOperator": 2, - "Miaoshouai_Flux_CLIPTextEncode": 2, - "sdBxb": 2, - "KRestartSamplerSimple": 2, - "BitwiseAndMask": 2, - "easy imageBatchToImageList": 2, - "TTP_condsetarea_merge": 2, - "TTP_condtobatch": 2, - "TTP_CoordinateSplitter": 2, - "TTP_Image_Tile_Batch": 2, - "TTP_Tile_image_size": 2, - "Pick From Batch (mtb)": 2, - "BNK_TiledKSamplerAdvanced": 2, - "easy pulIDApply": 2, - "promptComposerTextMultiple": 2, - "ImageDrawEllipse": 2, "ModelMergeFlux1": 2, - "EGIPAdapter_Mad_AssistantV2": 2, - "Scribble_PiDiNet_Preprocessor": 2, - "AttentionCouple": 2, - "ADE_ConditioningSetMaskAndCombine": 2, - "ADE_RegisterLoraHook": 2, - "Image Text Overlay": 2, - "Create Grid Image from Batch": 2, - "SUPIR_tiles": 2, "BatchCropFromMaskAdvanced": 2, - "Mask Threshold Region": 2, - "SeamlessTile": 2, "ReencodeLatent": 2, - "AspectRatioSelector": 2, - "TextTransformer": 2, - "PM_RetinaFace": 2, - "PrimereVAE": 2, - "PrimereVisualEmbedding": 2, - "PrimereVisualLORA": 2, - "PrimereVisualLYCORIS": 2, - "CR Simple Text Panel": 2, - "CustomSigmas": 2, - "ImageLoader": 2, - "DiffusionEdge_Preprocessor": 2, - "Depth_fm": 2, - "EG_TX_CCHQ": 2, - "ADE_AnimateDiffModelSettingsAdvancedAttnStrengths": 2, - "CR Simple List": 2, - "StableCascade_SuperResolutionControlnet": 2, - "StableCascade_CheckpointLoader //Inspire": 2, - "CLIPTextEncodeHunyuanDiT": 2, - "TTPlanet_Tile_Preprocessor_Simple": 2, - "SeargeIntegerConstant": 2, - "CDL.OpenPoseEditorPlus": 2, - "BatchStringSchedule": 2, - "ImageScaleFactor _O": 2, - "YARS": 2, - "MimicBrushNode": 2, - "DreamViewer": 2, - "SampleColorHSV": 2, - "NaiveAutoKMeansColor": 2, - "InRange (hsv)": 2, - "BuildColorRangeHSV (hsv)": 2, - "easy ipadapterStyleComposition": 2, - "OffsetImage": 2, - "LuminaDiffusersNode": 2, - "easy imageConcat": 2, - "HfImageToRGB": 2, - "MaskExpansion": 2, - "CR Batch Process Switch": 2, - "Mask Ops": 2, - "LayerUtility: HLFrequencyDetailRestore": 2, - "SDXL Quick Empty Latent (WLSH)": 2, - "DynamiCrafterProcessor": 2, - "IF_ImagePrompt": 2, - "Load Face Analysis Model (mtb)": 2, - "Load Face Swap Model (mtb)": 2, - "Face Swap (mtb)": 2, - "CR Random RGB Gradient": 2, - "LayerUtility: BooleanOperatorV2": 2, - "ConditioningSetMaskAndCombine4": 2, - "BizyAirSiliconCloudLLMAPI": 2, - "ttN pipeLoader_v2": 2, - "Latent Size to Number": 2, - "MS kosmos-2 Interrogator": 2, - "Text Shuffle": 2, - "ProPainterInpaint": 2, - "SimpleMathDual+": 2, - "easy hiresFix": 2, - "HypernetworkLoader": 2, - "LoraTagsOnly": 2, - "ImageSimpleResize": 2, - "LLM_local_loader": 2, - "LLM_local": 2, - "Stablezero123": 2, - "SDZero ImageSplit": 2, - "Image to Latent Mask": 2, - "MaraScottUpscalerRefinerNode_v2": 2, - "BaseModel_Loader_local": 2, - "PhotoMakerAdapter_Loader_fromhub": 2, - "Ref_Image_Preprocessing": 2, - "NEW_PhotoMaker_Generation": 2, - "LoRALoader": 2, - "Prompt_Styler": 2, - "PolyexponentialScheduler": 2, - "LayerStyle: ColorOverlay V2": 2, - "PromptComposerEffect": 2, - "QRCodeGenerator": 2, - "INPAINT_ExpandMask": 2, - "LayerUtility: LayerMaskTransform": 2, - "LayerMask: PixelSpread": 2, - "LayerMask: MaskByColor": 2, - "Image Dragan Photography Filter": 2, - "Text List Concatenate": 2, - "CivitaiLoraLoaderStacked": 2, - "ImageBatchRemove": 2, - "OneButtonSuperPrompt": 2, - "Fans Prompt Styler Negative": 2, - "StringMlStaticPrimitive": 2, - "Text Parse A1111 Embeddings": 2, - "FaceWarp": 2, - "CLIPTextEncode (NSP)": 2, - "KSamplerCacheable": 2, - "UltimateVideoLoader": 2, - "VHS_DuplicateMasks": 2, - "TTPlanet_TileGF_Preprocessor": 2, - "ImageTransformResizeClip": 2, - "Color Transfer": 2, - "ImageFilterGaussianBlurAdvanced": 2, - "Blend Latents (PPF Noise)": 2, - "EG_TX_SFBLS": 2, - "Qwen2_ModelLoader_Zho": 2, - "Qwen2_Zho": 2, - "PreviewDetailerHookProvider": 2, - "Pixel Deflicker - Experimental (SuperBeasts.AI)": 2, - "ImpactSimpleDetectorSEGSPipe": 2, - "DetailerPipeToBasicPipe": 2, - "ClipAmplitude": 2, - "OverlayInpaintedImage": 2, - "OverlayInpaintedLatent": 2, - "OmostDenseDiffusionLayoutNode": 2, - "IF_SaveText": 2, - "VHS_FILENAMES_STRING_MuseTalk": 2, - "MuseTalkCupAudio": 2, - "CR Set Value On Binary": 2, - "CR Radial Gradient": 2, - "KeyframeInterpolationPart": 2, - "TripoSRViewer": 2, - "TripoSRSampler": 2, - "TripoSRModelLoader": 2, - "MixNoiseNode": 2, - "LamaRemoverIMG": 2, - "FL_ImageNotes": 2, - "ACN_ReferenceControlNet": 2, - "FaceParsingProcessorLoader(FaceParsing)": 2, - "FaceParsingModelLoader(FaceParsing)": 2, - "FaceParse(FaceParsing)": 2, - "FL_ImageRandomizer": 2, - "FrameMaker": 2, - "UformGen2QwenNode": 2, - "BNK_CutoffRegionsToConditioning": 2, - "CXH_DownloadAndLoadFlorence2Model": 2, - "CXH_Florence2Run": 2, - "ShowImages": 2, - "LoraLoaderStackedWithPreviews": 2, - "Make Image Batch": 2, - "CLIPSeg Batch Masking": 2, - "CR Index Multiply": 2, - "ConcatConditioningsWithMultiplier //Inspire": 2, - "SaveAudio": 2, - "Image Perlin Noise": 2, - "IntStaticPrimitive": 2, - "CR Random LoRA Stack": 2, - "Get Date Time String (JPS)": 2, - "BackgroundScaler": 2, - "JDC_ResizeFactor": 2, - "easy pipeEdit": 2, - "LayeredDiffusionDiffApply": 2, - "DynamicDelayProcessor": 2, - "FluxSampler": 2, - "IF_ChatPrompt": 2, - "LayerStyle: OuterGlow V2": 2, - "ToDetailerPipeSDXL": 2, - "PixArtT5FromSD3CLIP": 2, - "MasaCtrlConcatImage": 2, - "PromptNode": 2, - "EndQueue": 2, - "RawTextEncode": 2, - "Text_Image_Frame_Zho": 2, - "CR Checker Pattern": 2, - "CR Starburst Colors": 2, - "ColorDictionary": 2, - "Color Clip (advanced)": 2, - "FindComplementaryColor": 2, - "BLVAEEncode": 2, - "LDSRUpscaler": 2, - "float _O": 2, - "SALVTON_Apply": 1, - "D_DreamTalk": 1, - "ImageAddMulti": 1, - "Boolean To Text": 1, - "CheckpointLoaderSimpleExtended": 1, - "JWImageResizeToSquare": 1, - "CleanFileNameNode": 1, - "Iterative Mixing KSampler": 1, - "RelightSimple": 1, - "AV_LoraLoader": 1, - "easy imagesSplitImage": 1, - "CR Vignette Filter": 1, - "Fooocus_KSamplerAdvanced": 1, - "RegionalCFG //Inspire": 1, - "ColorMaskToDepthMask //Inspire": 1, - "Checkpoint Loader Simple Mikey": 1, - "WildcardAndLoraSyntaxProcessor": 1, - "Batch Shape (mtb)": 1, - "HyperSDXL1StepUnetScheduler": 1, - "Batch Make (mtb)": 1, - "LoadImagesFromPath": 1, - "VAE Switch (JPS)": 1, - "KG_neo_toolkit_developer": 1, - "Image fDOF Filter": 1, - "pipe-util-to-basic-pipe": 1, - "Ood_CXH": 1, - "BNK_AddCLIPSDXLParams": 1, - "LDSRModelLoader": 1, - "LDSRUpscale": 1, - "APISR_upscale": 1, - "CombineSegMasks": 1, - "PrimereCKPT": 1, - "PrimereLORA": 1, - "ImageTransformResizeAbsolute": 1, - "ModelDownloader": 1, - "LoRADownloader": 1, - "ella_model_loader": 1, - "ella_t5_embeds": 1, - "ella_sampler": 1, - "Save Image If True": 1, - "translate_persona": 1, - "classify_persona": 1, - "custom_persona": 1, - "classify_function": 1, - "CR Random Multiline Colors": 1, - "CR Multiline Text": 1, - "XY Input: Manual XY Entry": 1, - "AnimateDiffLoaderV1": 1, - "RemapRange": 1, - "ONNXDetectorProvider": 1, - "ONNXDetectorSEGS": 1, - "SimpleMathBoolean+": 1, - "SimpleCondition+": 1, - "Mask Crop Dominant Region": 1, - "ImageTransformCropRelative": 1, - "ImageEffectsLensZoomBurst": 1, - "ImpactLatentInfo": 1, + "SegmDetectorCombined_v2": 2, + "WebcamCapture": 2, + "ImpactSEGSConcat": 2, + "ADE_ApplyAnimateDiffModelWithPIA": 2, + "ADE_CameraCtrlAnimateDiffKeyframe": 2, + "ADE_MultivalScaledMask": 2, + "ADE_NoiseLayerNormalizedSum": 2, + "ADE_PromptSchedulingLatents": 2, + "ADE_SigmaScheduleToSigmas": 2, + "ApplyRifleXRoPE_HunuyanVideo": 2, + "AudioCompareWaveforms": 2, + "AudioEncoderLoader": 2, + "AudioGetTempo": 2, + "AudioMix": 2, + "AudioNormalize": 2, + "AudioReverb": 2, + "AudioVideoCombine": 2, + "BetaSamplingScheduler": 2, + "ByteDanceImageReferenceNode": 2, + "ByteDanceTextToVideoNode": 2, + "CFGZeroStarAndInit": 2, + "CLIPTextEncodePixArtAlpha": 2, + "CM_BreakoutVec3": 2, + "CM_ComposeVec3": 2, + "CaseConverter": 2, + "CombineHooks2": 2, + "CombineHooks4": 2, + "CombineHooks8": 2, + "CompositorMasksOutputV3": 2, + "DownloadAndLoadCLIPSeg": 2, + "DrawArcFaceLandmarks": 2, + "EmptyChromaRadianceLatentImage": 2, + "EmptyHunyuanVideo15Latent": 2, + "FantasyTalkingModelLoader": 2, + "FilterZeroMasksAndCorrespondingImages": 2, + "HunyuanVideo15SuperResolution": 2, + "HunyuanVideoEncodeKeyframesToCond": 2, + "ImageFlip": 2, + "ImageNoiseAugmentation": 2, + "ImagePass": 2, + "ImageRotate": 2, + "ImageTransformByNormalizedAmplitude": 2, + "ImageYUVToRGB": 2, + "ImpactGaussianBlurMaskInSEGS": 2, + "ImpactMakeMaskList": 2, + "ImpactSAM2VideoDetectorSEGS": 2, + "KlingDualCharacterVideoEffectNode": 2, + "KlingLipSyncTextToVideoNode": 2, + "LTXVPreprocess": 2, + "LamaRemoverDetailerHookProvider": 2, + "LatentOperationSharpen": 2, + "LoadLynxResampler": 2, + "LotusSampler": 2, + "ModelSamplingContinuousV": 2, + "PairConditioningSetProperties": 2, + "PairConditioningSetPropertiesAndCombine": 2, + "PikaTextToVideoNode2_2": 2, + "PorterDuffImageComposite": 2, + "RecraftControls": 2, + "RecraftImageInpaintingNode": 2, + "RecraftStyleV3DigitalIllustration": 2, + "RecraftTextToVectorNode": 2, + "ReplaceImagesInBatch": 2, + "Rodin3D_Gen2": 2, + "SEGSLabelFilterDetailerHookProvider": 2, + "SEGSPreviewCNet": 2, + "SamplerDPMPP_SDE": 2, + "SamplingPercentToSigma": 2, + "SaveStringKJ": 2, + "ScaleBatchPromptSchedule": 2, + "SeparateMasks": 2, + "SetHookKeyframes": 2, + "SetShakkerLabsUnionControlNetType": 2, + "SkipLayerGuidanceSD3": 2, + "T5TokenizerOptions": 2, + "TopazVideoEnhance": 2, + "TorchCompileLTXModel": 2, + "TorchCompileModelFluxAdvancedV2": 2, + "TripoTextureNode": 2, + "TwoSamplersForMaskUpscalerProviderPipe": 2, + "UNetTemporalAttentionMultiply": 2, + "Unimatch_OptFlowPreprocessor": 2, + "WanHuMoImageToVideo": 2, + "WanTrackToVideo": 2, + "WanVideoAddControlEmbeds": 2, + "WanVideoAddS2VEmbeds": 2, + "WanVideoEncodeLatentBatch": 2, + "WanVideoExtraModelSelect": 2, + "WanVideoFreeInitArgs": 2, + "WanVideoLatentReScale": 2, + "WanVideoLoraBlockEdit": 2, + "WanVideoMiniMaxRemoverEmbeds": 2, + "WanVideoReCamMasterCameraEmbed": 2, + "WanVideoReCamMasterDefaultCamera": 2, + "WanVideoSetRadialAttention": 2, + "WanVideoTinyVAELoader": 2, + "WanVideoUniAnimatePoseInput": 2, + "WhisperModelLoader": 2, + "VAEEncodeTiled_TiledDiffusion": 1.9597054164279215, + "Save Images No Display": 1.9597054164279215, + "IPAdapterTiledBatch": 1.9597054164279215, + "PortraitMasterStylePose": 1.9597054164279215, + "PortraitMasterMakeup": 1.9597054164279215, + "PortraitMasterBaseCharacter": 1.9597054164279215, + "MaraScottUpscalerRefinerNode_v3": 1.9597054164279215, + "PreviewPopup": 1.9597054164279215, + "ACN_SparseCtrlIndexMethodNode": 1.9597054164279215, + "Image Color Palette": 1.9597054164279215, + "PrepImagesForClipVisionFromPath": 1.9597054164279215, + "PhotoMakerInsightFaceLoader": 1.9597054164279215, + "LayerColor: Levels": 1.9597054164279215, + "Mix Color By Mask": 1.9597054164279215, + "GetKeyFrames": 1.9597054164279215, + "ttN text3BOX_3WAYconcat": 1.9597054164279215, + "PrimereCKPTLoader": 1.9597054164279215, + "PrimereSeed": 1.9597054164279215, + "SetEllaTimesteps": 1.9597054164279215, + "CR SDXL Base Prompt Encoder": 1.9597054164279215, + "CR Text List": 1.9597054164279215, + "LoraTagLoader": 1.9597054164279215, + "FS: Fit Size From Image": 1.9597054164279215, + "LivePortraitRetargeting": 1.9597054164279215, + "Range(Num Steps) - Float": 1.9597054164279215, + "Model Input Switch": 1.9597054164279215, + "ACN_ControlNet++InputNode": 1.9597054164279215, + "ACN_ControlNet++LoaderAdvanced": 1.9597054164279215, + "Number Input Switch": 1.9597054164279215, + "PencilSketch": 1.9597054164279215, + "LoadImagesToBatch": 1.9597054164279215, + "easy if": 1.9597054164279215, + "GridAnnotation": 1.9597054164279215, + "Simple String Combine (WLSH)": 1.9597054164279215, + "0246.Merge": 1.9597054164279215, + "QWenVL_API_S_Zho": 1.9597054164279215, + "Image Pixelate": 1.9597054164279215, + "BLIPLoader": 1.9597054164279215, + "ImageRGBA2RGB": 1.9597054164279215, + "PromptGenerator": 1.9597054164279215, + "CircularVAEDecode": 1.9597054164279215, + "Integer Variable [n-suite]": 1.9597054164279215, + "String Variable [n-suite]": 1.9597054164279215, + "CR Text List To String": 1.9597054164279215, + "CR Random Multiline Values": 1.9597054164279215, + "preview_mask": 1.9597054164279215, + "AudioToFFTs": 1.9597054164279215, + "AV_ControlNetEfficientLoader": 1.9597054164279215, + "GlobalSampler //Inspire": 1.9597054164279215, + "CCSR_Upscale": 1.9597054164279215, + "CCSR_Model_Select": 1.9597054164279215, + "TrainDatasetAdd": 1.9597054164279215, + "SaveVideo [n-suite]": 1.9597054164279215, + "LayerColor: Exposure": 1.9597054164279215, + "Color Blend": 1.9597054164279215, + "BNK_SlerpLatent": 1.9597054164279215, + "MoondreamQuery": 1.9597054164279215, + "CR Composite Text": 1.9597054164279215, + "PixArtResolutionSelect": 1.9597054164279215, + "LLavaSamplerAdvanced": 1.9597054164279215, + "CivitAI_Checkpoint_Loader": 1.9597054164279215, + "ImageBatchGet": 1.9597054164279215, + "ColorModEdges": 1.9597054164279215, + "ColorModPivot": 1.9597054164279215, + "HYDiTTextEncodeSimple": 1.9597054164279215, + "xy_Tiling_KSampler": 1.9597054164279215, + "ToImageList": 1.9597054164279215, + "easy humanSegmentation": 1.9597054164279215, + "LayerUtility: ImageBlend V2": 1.9597054164279215, + "LayerMask: CreateGradientMask": 1.9597054164279215, + "SimpleMath": 1.9597054164279215, + "easy imageToMask": 1.9597054164279215, + "AlphaChanelAsMask": 1.9597054164279215, + "EmbeddingPicker": 1.9597054164279215, + "CR Load Image List": 1.9597054164279215, + "Latent Switch (JPS)": 1.9597054164279215, + "Mask Batch to Mask": 1.9597054164279215, + "JDC_Contrast": 1.5677643331423372, + "SDXL Empty Latent Image": 1.5677643331423372, + "HDR Effects (SuperBeasts.AI)": 1.5677643331423372, + "LayerColor: AutoBrightness": 1.5677643331423372, + "TCDScheduler": 1.5677643331423372, + "CompositeImages_": 1.5677643331423372, + "ImageBatchSplitter //Inspire": 1.5677643331423372, + "BOPBTL_ScratchMask": 1.5677643331423372, + "BOPBTL_RestoreOldPhotos": 1.5677643331423372, + "BOPBTL_LoadScratchMaskModel": 1.5677643331423372, + "BOPBTL_LoadRestoreOldPhotosModel": 1.5677643331423372, + "ComfyUI_Image_Round__ImageRoundAdvanced": 1.5677643331423372, + "ComfyUI_Image_Round__ImageCropAdvanced": 1.5677643331423372, + "Hina.PoseEditor3D": 1.5677643331423372, + "FloatRange //Inspire": 1.5677643331423372, + "LayerUtility: GetColorTone": 1.5677643331423372, + "PreViewVideo": 1.5677643331423372, + "TomePatchModel": 1.5677643331423372, + "Int2String": 1.5677643331423372, + "YouTubeVideoLoader": 1.5677643331423372, + "Automatic CFG - Preset Loader": 1.5677643331423372, + "Image Compare (mtb)": 1.5677643331423372, + "load_persona": 1.5677643331423372, + "ImageCompositeAbsoluteByContainer": 1.5677643331423372, + "GMFSS Fortuna VFI": 1.5677643331423372, + "BNK_CutoffBasePrompt": 1.5677643331423372, + "ImpactSEGSLabelFilter": 1.5677643331423372, + "PrimerePreviewImage": 1.5677643331423372, + "RAUNet": 1.5677643331423372, + "CR Save Text To File": 1.5677643331423372, + "Mix Images By Mask": 1.5677643331423372, + "SimpleMathInt+": 1.5677643331423372, + "TextConcat": 1.5677643331423372, + "get_string": 1.5677643331423372, + "brushnet_model_loader": 1.5677643331423372, + "brushnet_sampler": 1.5677643331423372, + "IPAdapterClipVisionEnhancerBatch": 1.5677643331423372, + "VHS_SplitMasks": 1.5677643331423372, + "smZ Settings": 1.5677643331423372, + "JDCN_VHSFileMover": 1.5677643331423372, + "LayerUtility: TextBox": 1.5677643331423372, + "ComfyWordCloud": 1.5677643331423372, + "LayerUtility: TextImage": 1.5677643331423372, + "XY Input: CFG Scale": 1.5677643331423372, + "seed _O": 1.5677643331423372, + "Solarize": 1.5677643331423372, + "LayerUtility: SD3NegativeConditioning": 1.5677643331423372, + "XY Input: Sampler/Scheduler": 1.5677643331423372, + "If ANY return A else B-\ud83d\udd2c": 1.5677643331423372, + "FaceBoundingBox": 1.5677643331423372, + "reBatchImage": 1.5677643331423372, + "Apply Whisper": 1.5677643331423372, + "Any List": 1.5677643331423372, + "JWImageResizeByShorterSide": 1.5677643331423372, + "ttN float": 1.5677643331423372, + "ImagesGridByRows": 1.5677643331423372, + "Grayscale Image (WLSH)": 1.5677643331423372, + "MergeLayers": 1.5677643331423372, + "LayerMask: MaskGradient": 1.5677643331423372, + "EllaApply": 1.5677643331423372, + "KSamplerRAVE": 1.5677643331423372, + "Remove Image Background (abg)": 1.5677643331423372, + "ReActorOptions": 1.5677643331423372, + "CLIP Temperature": 1.5677643331423372, + "BlurMaskFast": 1.5677643331423372, + "LoadRandomImage": 1.5677643331423372, + "PGSD3LatentGenerator": 1.5677643331423372, + "RandomIntegerNode": 1.5677643331423372, + "STMFNet VFI": 1.5677643331423372, + "FromListGet1Image": 1.5677643331423372, + "Kep_RepeatList": 1.5677643331423372, + "CR Intertwine Lists": 1.5677643331423372, + "LayerUtility: PromptTagger": 1.5677643331423372, + "Latent Input Switch": 1.5677643331423372, + "CLIP Positive-Negative (WLSH)": 1.5677643331423372, + "PrimerePromptOrganizer": 1.5677643331423372, + "PrimereVisualStyle": 1.5677643331423372, + "PrimereVisualCKPT": 1.5677643331423372, + "PrimerePromptSwitch": 1.5677643331423372, + "PrimereEmbeddingHandler": 1.5677643331423372, + "PrimereNetworkTagLoader": 1.5677643331423372, + "PrimereResolution": 1.5677643331423372, + "PrimereLatentNoise": 1.5677643331423372, + "PrimereCLIPEncoder": 1.5677643331423372, + "PrimereKSampler": 1.5677643331423372, + "segformer_clothes": 1.5677643331423372, + "DiffusersScheduler": 1.5677643331423372, + "DynamiCrafterModelLoader": 1.5677643331423372, + "DiffusersCompelPromptEmbedding": 1.5677643331423372, + "DiffusersPipeline": 1.5677643331423372, + "Style Conditioner": 1.5677643331423372, + "XY Input: Clip Skip": 1.5677643331423372, + "ZeST: Grayout Subject": 1.5677643331423372, + "LayerMask: SegmentAnythingUltra": 1.5677643331423372, + "OneButtonFlufferize": 1.5677643331423372, + "SeargeIntegerMath": 1.5677643331423372, + "ToIPAdapterPipe //Inspire": 1.5677643331423372, + "ApplyRegionalIPAdapters //Inspire": 1.5677643331423372, + "FileNamePrefixDateDirFirst": 1.5677643331423372, + "ImageFilterBlur": 1.5677643331423372, + "Seed Generator (Image Saver)": 1.5677643331423372, + "Empty Latent by Ratio (WLSH)": 1.5677643331423372, + "LayerUtility: Florence2Image2Prompt": 1.5677643331423372, + "LayerMask: LoadFlorence2Model": 1.5677643331423372, + "PromptComposerTextSingle": 1.5677643331423372, + "LatentInterposer": 1.5677643331423372, + "FLUXResolutions": 1.5677643331423372, + "PrimereRefinerPrompt": 1.5677643331423372, + "PrimereImageSegments": 1.5677643331423372, + "PrimereAnyDetailer": 1.5677643331423372, + "CLIPTextEncodeWithWeight //Inspire": 1.5677643331423372, + "TagsSelector": 1.5677643331423372, + "LoraLoaderStackedAdvanced": 1.5677643331423372, + "Cfg Literal (Image Saver)": 1.5677643331423372, + "VaeClamp": 1.5677643331423372, + "easy prompt": 1.5677643331423372, + "Remap": 1.5677643331423372, + "FromListGetImages": 1.5677643331423372, + "ADE_AnimateDiffLoaderV1Advanced": 1.5677643331423372, + "DynamiCrafterI2V": 1.5677643331423372, + "SaveImageAndMetadata_": 1.5677643331423372, + "SimpleMathSlider+": 1.5677643331423372, + "TagsFormater": 1.5677643331423372, + "CR Value": 1.5677643331423372, + "BiRefNet": 1.5677643331423372, + "CR Text Length": 1.5677643331423372, + "LoadImageWithAlpha": 1.5677643331423372, + "PromptControlSimple": 1.5677643331423372, + "JjkText": 1.5677643331423372, + "ttN pipeIN": 1.5677643331423372, + "LayerStyle: Stroke V2": 1.5677643331423372, + "DiffusersControlnetUnit": 1.5677643331423372, + "MicrosoftSpeech_TTS": 1.5677643331423372, + "Play Sound": 1.5677643331423372, + "ImageGridComposite3x3": 1.5677643331423372, + "IF_DisplayText": 1.5677643331423372, + "CR Select ISO Size": 1.5677643331423372, + "FrameMakerBatch": 1.5677643331423372, + "Number to Float": 1.5677643331423372, + "ConcatConditionEllaEmbeds": 1.5677643331423372, + "LayerColor: Color of Shadow & Highlight": 1.5677643331423372, + "CalculateFrameOffset": 1.5677643331423372, + "Masks Combine Regions": 1.5677643331423372, + "YANC.MultilineString": 1.5677643331423372, + "LayerUtility: GetColorToneV2": 1.5677643331423372, + "LayerUtility: ExtendCanvasV2": 1.5677643331423372, + "JDCN_SplitString": 1.5677643331423372, + "Add Magic Clothing Attention": 1.175823249856753, + "Load Magic Clothing Model": 1.175823249856753, + "Image Resize To Width": 1.175823249856753, + "LayerMask: ImageToMask": 1.175823249856753, + "Video Dump Frames": 1.175823249856753, + "easy applyFooocusInpaint": 1.175823249856753, + "UltraPixelLoad": 1.175823249856753, + "UltraPixelProcess": 1.175823249856753, + "ArgosTranslateCLIPTextEncodeNode": 1.175823249856753, + "LoraLoaderStackedVanilla": 1.175823249856753, + "KRestartSamplerAdv": 1.175823249856753, + "LoraStackLoader_PoP": 1.175823249856753, + "LatentReceiver": 1.175823249856753, + "LoadImage //Inspire": 1.175823249856753, + "KfEvaluateCurveAtT": 1.175823249856753, + "KfCurveFromString": 1.175823249856753, + "Screencap_mss": 1.175823249856753, + "LoadChatGLM3": 1.175823249856753, + "Tensor Batch to Image": 1.175823249856753, + "OneButtonPreset": 1.175823249856753, + "Linear Camera Zoom [DVB]": 1.175823249856753, + "CutForInpaint": 1.175823249856753, + "EllaTextEncode": 1.175823249856753, + "LayerMask: Shadow & Highlight Mask": 1.175823249856753, + "GPT4VisionNode": 1.175823249856753, + "HD UltimateSDUpscale": 1.175823249856753, + "LayerColor: AutoAdjust": 1.175823249856753, + "LayerColor: ColorTemperature": 1.175823249856753, + "load_file": 1.175823249856753, + "advance_ebd_tool": 1.175823249856753, + "CreateShapeMaskOnPath": 1.175823249856753, + "Tiled Upscaler Script": 1.175823249856753, + "ImageSmartSharpen+": 1.175823249856753, + "easy sliderControl": 1.175823249856753, + "Blur (mtb)": 1.175823249856753, + "LLMLoader": 1.175823249856753, + "ttN seed": 1.175823249856753, + "Big Image Switch [Dream]": 1.175823249856753, + "EulerLightingNode": 1.175823249856753, + "PreViewAudio": 1.175823249856753, + "Image Shadows and Highlights": 1.175823249856753, + "ColorTint": 1.175823249856753, + "Parabolize": 1.175823249856753, + "Quantize": 1.175823249856753, + "SineWave": 1.175823249856753, + "AsciiArt": 1.175823249856753, + "Aegisflow controlnet preprocessor bus": 1.175823249856753, + "PromptBuilder //Inspire": 1.175823249856753, + "DynamiCrafterLoader": 1.175823249856753, + "XY Input: Seeds++ Batch": 1.175823249856753, + "Compare-\ud83d\udd2c": 1.175823249856753, + "TextImage": 1.175823249856753, + "PromptExtractor //Inspire": 1.175823249856753, + "String Input": 1.175823249856753, + "FaceCropInfo": 1.175823249856753, + "GetImage_(Width&Height) _O": 1.175823249856753, + "SeargeSDXLSampler": 1.175823249856753, + "ImagesGridByColumns": 1.175823249856753, + "Griptape Display: Text": 1.175823249856753, + "PipelineLoader": 1.175823249856753, + "IDM-VTON": 1.175823249856753, + "CogVideoImageEncode": 1.175823249856753, + "TransparentImage": 1.175823249856753, + "Eden_Compare": 1.175823249856753, + "LuminaT2ISampler": 1.175823249856753, + "LuminaGemmaTextEncode": 1.175823249856753, + "DownloadAndLoadGemmaModel": 1.175823249856753, + "DownloadAndLoadLuminaModel": 1.175823249856753, + "color2RGB": 1.175823249856753, + "CropImage_AS": 1.175823249856753, + "Mask By Text": 1.175823249856753, + "ConditioningSetMaskAndCombine": 1.175823249856753, + "CLIP_Interrogator": 1.175823249856753, + "LayerMask: MaskEdgeUltraDetail": 1.175823249856753, + "CR VAE Decode": 1.175823249856753, + "CR Halftone Grid": 1.175823249856753, + "AdainImage": 1.175823249856753, + "StringMergerNode": 1.175823249856753, + "TileMerge": 1.175823249856753, + "TileCalc": 1.175823249856753, + "TileSplit": 1.175823249856753, + "Batch Unsampler": 1.175823249856753, + "Iterative Mixing KSampler Advanced": 1.175823249856753, + "PortraitMaster_\u4e2d\u6587\u7248": 1.175823249856753, + "ArithmeticBlend": 1.175823249856753, + "SamplerTCD EulerA": 1.175823249856753, + "ToonCrafterNode": 1.175823249856753, + "ToStringList": 1.175823249856753, + "easy globalSeed": 1.175823249856753, + "CR Image Pipe In": 1.175823249856753, + "Masks Combine Batch": 1.175823249856753, + "AnyNode": 1.175823249856753, + "PrimereModelConceptSelector": 1.175823249856753, + "PrimereConceptDataTuple": 1.175823249856753, + "ReActorBuildFaceModel": 1.175823249856753, + "JjkConcat": 1.175823249856753, + "LayerUtility: CropByMask": 1.175823249856753, + "SDXLPromptStylerbySteamPunkRealism": 1.175823249856753, + "Mask Contour": 1.175823249856753, + "MakeBasicPipe //Inspire": 1.175823249856753, + "InitFluxLoRATraining": 1.175823249856753, + "OptimizerConfig": 1.175823249856753, + "FluxTrainValidationSettings": 1.175823249856753, + "FluxTrainModelSelect": 1.175823249856753, + "FluxTrainEnd": 1.175823249856753, + "TrainDatasetGeneralConfig": 1.175823249856753, + "ImageConcatFromBatch": 1.175823249856753, + "LoadVideo [n-suite]": 1.175823249856753, + "CR Image Size": 1.175823249856753, + "JWImageContrast": 1.175823249856753, + "Miaoshouai_Tagger": 1.175823249856753, + "JWMaskResize": 1.175823249856753, + "Image Edge Detection Filter": 1.175823249856753, + "ttN imageREMBG": 1.175823249856753, + "ImpactQueueTriggerCountdown": 1.175823249856753, + "PreviewLatent": 1.175823249856753, + "Suggester": 1.175823249856753, + "AttentionCoupleRegion": 1.175823249856753, + "PrimereModelKeyword": 1.175823249856753, + "PrimereAestheticCKPTScorer": 1.175823249856753, + "Sampler Selector (Image Saver)": 1.175823249856753, + "Scheduler Selector (Image Saver)": 1.175823249856753, + "Image Median Filter": 1.175823249856753, + "SaveImageOpenEXR": 1.175823249856753, + "ValueSchedule": 1.175823249856753, + "EG_ZY_WBK": 1.175823249856753, + "SeargeFloatConstant": 1.175823249856753, + "SeargeSDXLPromptEncoder": 1.175823249856753, + "CR Switch Model and CLIP": 1.175823249856753, + "SetMetadataForSaveVideo [n-suite]": 1.175823249856753, + "HYDiTCheckpointLoader": 1.175823249856753, + "HYDiTTextEncoderLoader": 1.175823249856753, + "ImageTransformCropAbsolute": 1.175823249856753, + "JWImageFlip": 1.175823249856753, + "KSamplerPipe //Inspire": 1.175823249856753, + "Fooocus_KSampler": 1.175823249856753, + "LatentRotate": 1.175823249856753, + "Attention couple": 1.175823249856753, + "LayerMask: YoloV8Detect": 1.175823249856753, + "CacheBackendData //Inspire": 1.175823249856753, + "SimpleMathFloat+": 1.175823249856753, + "easy preSamplingAdvanced": 1.175823249856753, + "easy imageSave": 1.175823249856753, + "TCDModelSamplingDiscrete": 1.175823249856753, + "TaraPrompter": 1.175823249856753, + "TaraApiKeyLoader": 1.175823249856753, + "IPAdapterWeightsFromStrategy": 1.175823249856753, + "OmostRenderCanvasConditioningNode": 1.175823249856753, + "OmostLayoutCondNode": 1.175823249856753, + "Mask Erode Region": 1.175823249856753, + "JWImageExtractFromBatch": 1.175823249856753, + "LayerMask: MaskStroke": 1.175823249856753, + "SeedSelector": 1.175823249856753, + "OneButtonArtify": 1.175823249856753, + "ConditionText": 1.175823249856753, + "MultiLoraLoader-70bf3d77": 1.175823249856753, + "LoraTextExtractor-b1f83aa2": 1.175823249856753, + "ADE_AnimateDiffModelSettings_Release": 1.175823249856753, + "ImageMerger": 1.175823249856753, + "LayerUtility: CropBoxResolve": 1.175823249856753, + "Image Tile Offset (mtb)": 1.175823249856753, + "DiffusersControlnetLoader": 1.175823249856753, + "segformer_b2_clothes": 1.175823249856753, + "Power-Law Noise (PPF Noise)": 1.175823249856753, + "KepRotateImage": 1.175823249856753, + "LatentFlip": 1.175823249856753, + "TransientAmplitudeBasic": 1.175823249856753, + "Gemini_15P_API_S_Advance_Zho": 1.175823249856753, + "Text String Truncate": 1.175823249856753, + "MuseTalkRun": 1.175823249856753, + "CR Trigger": 1.175823249856753, + "Text Compare": 1.175823249856753, + "Generation Parameter Output": 1.175823249856753, + "LeRes_DepthMap_Preprocessor_Provider_for_SEGS //Inspire": 1.175823249856753, + "PromptExpansion": 1.175823249856753, + "ACN_ReferencePreprocessor": 1.175823249856753, + "FaceParsingResultsParser(FaceParsing)": 1.175823249856753, + "easy instantIDApply": 1.175823249856753, + "> Text": 1.175823249856753, + "> Save Image": 1.175823249856753, + "CXH_Min2_6_prompt_Run": 1.175823249856753, + "CXH_HG_Model_Load": 1.175823249856753, + "LayerColor: ColorBalance": 1.175823249856753, + "Crop (mtb)": 1.175823249856753, + "Kep_JoinListAny": 1.175823249856753, + "mxSlider": 1.175823249856753, + "easy preSamplingDynamicCFG": 1.175823249856753, + "Latent Adjustment (PPF Noise)": 1.175823249856753, + "SelectNthMask //Inspire": 1.175823249856753, + "easy imageDetailTransfer": 1.175823249856753, + "diffusers_model_loader": 1.175823249856753, + "LoadICLightUnetDiffusers": 1.175823249856753, + "iclight_diffusers_sampler": 1.175823249856753, + "easy string": 1.175823249856753, + "ConcatenateText": 1.175823249856753, + "Eden_Int": 1.175823249856753, + "FL_ColorPicker": 1.175823249856753, + "ttN pipeOUT": 1.175823249856753, + "LoraListNames": 1.175823249856753, + "AddAlpha": 1.175823249856753, + "ADE_AnimateDiffUniformContextOptions": 1, + "PatchModelAddDownscale": 1, + "ImageResizeKJ": 1, + "RemapMaskRange": 1, + "ToBinaryMask": 1, + "StableCascade_StageB_Conditioning": 1, + "ConditioningSetArea": 1, + "FreeU": 1, + "ImpactControlNetApplySEGS": 1, + "ImpactSimpleDetectorSEGS_for_AD": 1, + "ImpactDilateMask": 1, + "ControlNetApplySD3": 1, + "AddMask": 1, + "AnyLineArtPreprocessor_aux": 1, + "ImpactFloat": 1, + "ImageExpandBatch+": 1, + "ADE_AnimateDiffCombine": 1, + "RemoveNoiseMask": 1, + "IPAdapterCombineParams": 1, + "StableCascade_StageC_VAEEncode": 1, + "CfgScheduleHookProvider": 1, + "ImpactRemoteInt": 1, + "FakeScribblePreprocessor": 1, + "DetailerForEachPipe": 1, + "MaskToSEGS_for_AnimateDiff": 1, + "VideoTriangleCFGGuidance": 1, + "SEGSDetailer": 1, + "PixelKSampleHookCombine": 1, + "SubtractMaskForEach": 1, + "ImageBatchRepeatInterleaving": 1, + "ImpactEdit_SEG_ELT": 1, + "InpaintStitch": 1, + "ConditioningSetAreaStrength": 1, + "BinaryPreprocessor": 1, + "TEEDPreprocessor": 1, + "ModelMergeSubtract": 1, + "RegionalSampler": 1, + "CM_FloatUnaryOperation": 1, + "ModelMergeAdd": 1, + "CreateShapeImageOnPath": 1, + "WebcamCaptureCV2": 1, + "VHS_VideoInfoSource": 1, + "VHS_SplitLatents": 1, + "GetMaskSizeAndCount": 1, + "ImageIntensityDetector": 1, + "SemSegPreprocessor": 1, + "DebugTensorShape+": 1, + "ImpactSchedulerAdapter": 1, + "CM_IntToBool": 1, + "CM_BoolToInt": 1, + "CLIPTextEncodeHunyuanDiT": 1, + "ConditioningSetMaskAndCombine4": 1, "ModelPassThrough": 1, - "Aligned Scheduler": 1, - "Multiply sigmas": 1, - "SaveAudioNode": 1, - "ChatMusician": 1, - "LoadWebcamImage": 1, - "LoadImagePath": 1, - "HalloNode": 1, - "UVR5_Node": 1, - "LoadAudioPath": 1, - "Unique3DRun - MVPrediction": 1, - "Unique3DLoadPipeline": 1, - "Unique3DRun - Geo Reconstruct": 1, - "Pixelize": 1, - "SigmoidCorrection": 1, - "Apply Instagram Filter": 1, - "GlitchThis Effect": 1, - "DynamiCrafter Simple": 1, - "PDFToImage": 1, - "DocumentLoader": 1, - "TextChunker": 1, - "DragNUWAImageCanvas": 1, - "ImageEffectsLensChromaticAberration": 1, - "Image Save with Prompt/Info (WLSH)": 1, - "ImpactIsNotEmptySEGS": 1, - "ImpactSEGSClassify": 1, "ImpactHFTransformersClassifierProvider": 1, - "CLIPTextEncodeAdvancedNSuite [n-suite]": 1, - "AudioSeparation": 1, - "AudioCrop": 1, - "OllamaSaveContext": 1, - "Griptape Run: Image Description": 1, - "Griptape Convert: Text to CLIP Encode": 1, - "0246.CastReroute": 1, - "JagsClipseg": 1, - "Lora Input Switch": 1, - "AlphaChanelAdd": 1, - "llava": 1, - "StableMakeup_Sampler": 1, - "StableMakeup_LoadModel": 1, - "AnimeLineArt_Preprocessor_Provider_for_SEGS //Inspire": 1, - "AIraster": 1, - "MMDetDetectorProvider": 1, - "Comfy Couple": 1, - "OnCompleteEmailMe": 1, - "ID_Prompt_Styler": 1, - "ArtistsImage_Zho": 1, - "XY Input: Steps": 1, - "Cozy Pose Body Reference": 1, - "Cozy Sampler Options": 1, - "SentenceMixerNode": 1, - "ImageToMask_AS": 1, - "HSVThresholdMask": 1, - "AdaptiveGuidance": 1, - "OpenSoraPlanLoader": 1, - "OpenSoraPlanDecode": 1, - "OpenSoraPlanSample": 1, - "LineArt_Preprocessor_Provider_for_SEGS //Inspire": 1, - "FloodGate": 1, - "easy imageToBase64": 1, - "StringConstant": 1, - "ImageBatchToList": 1, - "ExtendLatentList": 1, - "LoadFlorence2Model": 1, - "Florence2": 1, - "CR Set Value on String": 1, - "tool_combine": 1, - "StableAudioLoadModel": 1, - "StableAudioConditioning": 1, - "StableAudioSampler": 1, - "MagicAnimateModelLoader": 1, - "MagicAnimate": 1, - "ImpactInversedSwitch": 1, - "Swap Color Mode": 1, - "ImageTextMultilineOutlined": 1, - "easy portraitMaster": 1, - "easy kolorsLoader": 1, - "CR Module Output": 1, - "text-util-prompt-join": 1, "ImpactSEGSToMaskBatch": 1, - "Float to String": 1, - "BlurImageFast": 1, - "SegmDetectorCombined_v2": 1, - "TGateApplySimple": 1, - "Load BiseNet": 1, - "Segment Face": 1, - "CR XY Save Grid Image": 1, - "CR XY From Folder": 1, - "CR XY List": 1, - "FrameInterpolator [n-suite]": 1, - "ApplyAdvancedFluxIPAdapter": 1, - "ImagePaste": 1, - "SeedExplorer //Inspire": 1, - "SaveSVG": 1, - "ConvertRasterToVector": 1, - "ControlNextDiffusersScheduler": 1, - "DownloadAndLoadControlNeXt": 1, - "ControlNextSampler": 1, - "ControlNextDecode": 1, - "CM_IntBinaryCondition": 1, - "LayerUtility: QueueStop": 1, - "ComfyUISaveAs": 1, - "Empty Latent by Size (WLSH)": 1, - "DepthViewer": 1, - "Image Switch (JPS)": 1, - "Aspect Ratios Node": 1, - "string_util_StrEqual": 1, - "ScheduledCFGGuider //Inspire": 1, - "CR Math Operation": 1, - "Combine and Paste": 1, - "Inpaint Segments": 1, - "LatentDuplicator": 1, - "UltimateSDUpscaleCustomSample": 1, - "easy imageInsetCrop": 1, - "BLEND (JOV) ⚗️": 1, - "ADJUST (JOV) 🕸️": 1, - "NX_PromptStyler": 1, - "MoondreamQueryCaptions": 1, - "ControlNextSVDApply": 1, - "AttentionCoupleRegions": 1, "MaskFlip+": 1, - "BatchPromptScheduleEncodeSDXL": 1, "BatchCLIPSeg": 1, - "PromptComposerCustomLists": 1, - "Int To Bool (mtb)": 1, - "Lora": 1, - "Checkpoint": 1, - "Image Resize Factor (mtb)": 1, - "PrimereEmotionsStyles": 1, - "PrimereUpscaleModel": 1, - "PrimereMidjourneyStyles": 1, - "PrimereStylePile": 1, - "PrimereMetaCollector": 1, - "PrimereMetaHandler": 1, - "PrimereMetaDistributor": 1, - "PrimereMetaDistributorStage2": 1, - "PrimereVAELoader": 1, - "PrimereEmbeddingKeywordMerger": 1, - "PrimereLoraKeywordMerger": 1, - "PrimereVisualHypernetwork": 1, - "PrimereLycorisKeywordMerger": 1, - "PrimereResolutionMultiplierMPX": 1, - "PrimereMetaSave": 1, - "PrimereTextOutput": 1, - "easy imageScaleDownBy": 1, - "WebcamCapture": 1, - "ImageEnhanceDifference+": 1, - "DynamicThresholdingSimple": 1, - "Simple Wildcards": 1, - "DisplayText": 1, - "MultiplePathsInput": 1, - "Qwen2_VQA": 1, - "Load Image From Url (mtb)": 1, - "geowizard_model_loader": 1, - "geowizard_sampler": 1, - "AdaptiveCannyDetector_PoP": 1, - "ttN KSampler_v2": 1, - "3DImage": 1, - "IFUnet VFI": 1, - "LoraLoaderBlockWeight //Inspire": 1, - "LoraBlockInfo //Inspire": 1, - "HYDiTTextEncode": 1, - "ImageTransformRotate": 1, - "ImageFilterMedianBlur": 1, - "SeamlessClone (simple)": 1, - "OtsuThreshold": 1, - "RemapToInnerCylinder": 1, - "RemapInsideParabolas": 1, - "💾 Save Text File With Path": 1, - "GITSScheduler": 1, - "Recenter XL": 1, - "PixArtControlNetCond": 1, - "MakeCircularVAE": 1, - "Tiled KSampler": 1, - "JDC_GaussianBlur": 1, - "TextureViewer": 1, - "AspectSizeV2": 1, - "CLIP Positive-Negative w/Text (WLSH)": 1, - "LatentSelector": 1, - "LayerColor: HSV": 1, - "AV_ControlNetEfficientStackerSimple": 1, - "SDPromptMerger": 1, - "MaraScottMcBoatyUpscalerRefiner_v5": 1, - "DynamiCrafterLoadInitNoise": 1, - "KeypointsToImage": 1, - "Load Face Enhance Model (mtb)": 1, - "Restore Face (mtb)": 1, - "Sharpen (mtb)": 1, - "AudioLDM2Node": 1, - "AV_LLMChat": 1, - "AV_LLMMessage": 1, - "AV_LLMApiConfig": 1, - "AV_OpenAIApi": 1, - "KSamplerVariationsWithNoise+": 1, - "ttN pipeLoraStack": 1, - "KSampler Gradually Adding More Denoise (efficient)": 1, - "MMakerColorEnhance": 1, - "LoraLoaderVanilla": 1, - "AppInfo": 1, - "brushnet_ipadapter_matteo": 1, "ImpactLogicalOperators": 1, - "easy LLLiteLoader": 1, - "easy XYPlotAdvanced": 1, - "easy latentCompositeMaskedWithCond": 1, - "easy XYInputs: PositiveCondList": 1, - "easy latentNoisy": 1, - "easy unSampler": 1, - "HyperTile //Inspire": 1, - "SDXLPromptStylerPreview": 1, - "clear_model": 1, - "OllamaImageToText": 1, - "ETN_LoadImageBase64": 1, - "ETN_SendImageWebSocket": 1, - "TaraApiKeySaver": 1, - "TaraDaisyChainNode": 1, - "OmostLLMLoaderNode": 1, - "OmostLLMChatNode": 1, - "FaceSegmentation": 1, - "GridStringList": 1, - "Griptape Combine: Rules List": 1, - "Griptape Run: Agent": 1, - "ConditioningSetMaskAndCombine3": 1, - "ExtraVAELoader": 1, - "SamplerDPMPP_3M_SDE_DynETA": 1, - "SamplerCustomNoise": 1, - "Output min/max sigmas": 1, - "ModelMergeSDXL": 1, "SplitImageChannels": 1, - "PromptComposerMerge": 1, - "PromptComposerGrouping": 1, - "JWImageLevels": 1, - "OptimizerConfigAdafactor": 1, - "LayerMask: MaskGrain": 1, - "LayerMask: MediapipeFacialSegment": 1, - "LayerMask: MaskEdgeShrink": 1, - "LayerMask: MaskByDifferent": 1, - "LayerMask: BlendIf Mask": 1, - "easy imageCount": 1, - "CivitaiCheckpointLoaderSimple": 1, - "EG_ZZ_SSKZ": 1, - "ER_TX_ZZCJ": 1, - "EG_TC_Node": 1, - "EG_ZZ_MHHT": 1, - "EG_TX_CJPJ": 1, - "EG_TX_LJBC": 1, - "Text Overlay": 1, - "ApplyRaveAttentionNode": 1, - "InstantIDAttentionPatch": 1, - "google_tool": 1, - "check_web_tool": 1, - "load_ebd": 1, - "IPAdapterPreciseStyleTransfer": 1, - "Image Perlin Power Fractal": 1, - "SaveTiff": 1, - "CR Clamp Value": 1, - "SDBatchLoader": 1, - "Load Composition CSV": 1, - "Load Lighting CSV": 1, - "Load Styles CSV": 1, - "MuseVPredictor V1 (comfyui_musev_evolved)": 1, - "MuseVImg2Vid V1 (comfyui_musev_evolved)": 1, - "FaceShaper": 1, - "FaceShaperModels": 1, - "FaceAlign": 1, "TwoAdvancedSamplersForMask": 1, - "Text To Image (mtb)": 1, - "easy promptLine": 1, "CondPassThrough": 1, - "Bounded Image Blend": 1, - "CLIPConditioning": 1, - "CheckpointLoaderMixWithDiffusers": 1, - "SelfGuidanceSampler": 1, - "Auto-MSG-ALL": 1, - "Auto-LLM-Text-Vision": 1, - "Model Patch Seamless (mtb)": 1, - "Image Tiled": 1, - "Image Seamless Texture": 1, - "ImageScaleDown": 1, - "TextEncodeForSamplerParams+": 1, - "ImpactSEGSConcat": 1, - "NegiTools_OpenAiDalle3": 1, - "DDColor_Colorize": 1, - "ChangeLatentBatchSize //Inspire": 1, - "file_padding": 1, - "TextCombinations": 1, - "EG_TSCMB_GL": 1, - "SeargeControlnetAdapterV2": 1, "MaskFromBatch+": 1, - "LensBlur": 1, "FromDetailerPipe_v2": 1, - "EditDetailerPipe": 1, - "Storydiffusion_Model_Loader": 1, - "Storydiffusion_Sampler": 1, - "OpNovelty": 1, - "OpHarmonic": 1, - "OpPercussive": 1, - "OpSqrt": 1, - "OpPow2": 1, - "OpStretch": 1, - "OpNormalize": 1, - "OpAbs": 1, - "OpRms": 1, - "LLavaOptionalMemoryFreeAdvanced": 1, "ADE_CustomCFGSimple": 1, "CLIPMergeAdd": 1, - "LoadTextFile": 1, - "AudioToAudioData": 1, - "Mask Switch (JPS)": 1, - "CannyEdgeMask": 1, - "CR Set Switch From String": 1, - "CR Aspect Ratio Social Media": 1, - "CR Select Resize Method": 1, - "OmostLoadCanvasConditioningNode": 1, - "Demofusion": 1, - "ImageAlphaComposite": 1, - "GPT4MiniNode": 1, "InpaintExtendOutpaint": 1, - "SystemNotification|pysssss": 1, - "PromptGenerateAPI": 1, - "easy imageCropFromMask": 1, - "easy pulIDApplyADV": 1, - "IterativeMixingSampler": 1, - "IterativeMixingScheduler": 1, - "KeyframeApply": 1, - "easy convertAnything": 1, - "SaveImageToLocal": 1, - "CombineNoiseLatentNode": 1, - "SamplerInversedEulerNode": 1, - "Generation Parameter Input": 1, - "CR Img2Img Process Switch": 1, - "SeargeSamplerInputs": 1, - "SeargeSDXLSamplerV3": 1, "ImpactControlNetClearSEGS": 1, - "TilePreprocessor_Provider_for_SEGS //Inspire": 1, - "ADE_ApplyAnimateDiffModelWithPIA": 1, - "ADE_InputPIA_PaperPresets": 1, - "ADE_MultivalDynamicFloatInput": 1, "ADE_InputPIA_Multival": 1, - "KeyInput": 1, - "CharacterCount": 1, - "ABCondition": 1, - "FaceBBoxDetect(FaceParsing)": 1, - "FaceBBoxDetectorLoader(FaceParsing)": 1, - "ImageCropWithBBox(FaceParsing)": 1, - "BBoxListItemSelect(FaceParsing)": 1, - "ColorAdjust(FaceParsing)": 1, - "ImageInsertWithBBox(FaceParsing)": 1, "BatchUncrop": 1, - "LayerUtility: BatchSelector": 1, - "PromptInjection": 1, - "SeargeSDXLBasePromptEncoder": 1, - "LongCLIPTextEncodeFlux": 1, - "Fans Styler": 1, - "KuwaharaBlur": 1, - "Saturation": 1, - "StyleModelLoader": 1, - "StyleModelApply": 1, - "CR Load Flow Frames": 1, - "ShowSelfAttn": 1, - "HFModelLoader": 1, - "Text2ImageInference": 1, - "DecodeLatent": 1, - "ShowCrossAttn": 1, - "PromptUtilitiesFormatString": 1, - "StructuredOutput": 1, - "CheckpointLoaderSimpleWithPreviews": 1, - "LayerUtility: ImageScaleRestore": 1, - "ExpressionEditor_": 1, - "ADE_IterationOptsFreeInit": 1, - "ADE_LoadAnimateLCMI2VModel": 1, - "ADE_UpscaleAndVAEEncode": 1, - "ADE_ApplyAnimateLCMI2VModel": 1, - "DeepfuzePreview": 1, - "DeepFuzeFaceSwap": 1, - "LoadEmbedding": 1, - "Prompts": 1, - "OffsetMask": 1, - "TaraPresetLLMConfig": 1, - "TaraAdvancedComposition": 1, - "MergeModels": 1, - "Multiply Int Float (JPS)": 1, - "MuseVRun": 1, - "SEGSOrderedFilterDetailerHookProvider": 1, - "StyleAlignedBatchAlign_": 1, - "Gemini_15P_API_S_Chat_Advance_Zho": 1, - "SamplerEulerAncestral": 1, - "StyleAlignedReferenceSampler": 1, - "CR Index": 1, - "Generate Noise Image": 1, - "ImagePadForBetterOutpaint": 1, - "SeedGenerator": 1, - "CR Interpolate Latents": 1, - "Load Cache": 1, - "Cache Node": 1, - "Sleep": 1, - "EG_SZ_JDYS": 1, - "Asymmetric_Tiling_KSampler": 1, - "SMoE_ModelLoader_Zho": 1, - "SMoE_Generation_Zho": 1, - "FaceEmbed": 1, - "LCMLora": 1, - "FaceSwapSetupPipeline": 1, - "FaceSwapGenerationInpaint": 1, - "Resolution Multiply (JPS)": 1, - "ImageOverlay": 1, - "ApplyVisualStyle": 1, - "omost_decode": 1, - "DYNAMIC_TRT_MODEL_CONVERSION": 1, - "APISR_ModelLoader_Zho": 1, - "APISR_Zho": 1, - "easy applyPowerPaint": 1, - "easy applyBrushNet": 1, - "easy icLightApply": 1, - "easy controlnetStack": 1, - "Metric3D-DepthMapPreprocessor": 1, - "Metric3D-NormalMapPreprocessor": 1, - "JDCN_BatchImageLoadFromDir": 1, - "sdBxb_textInput": 1, - "LayeredDiffusionCondApply": 1, - "CreativeArtPromptGenerator": 1, - "LayerColor: RGB": 1, - "Gemini_API_S_Chat_Zho": 1, - "EZLoadImgBatchFromUrlsNode": 1, - "ListSplit_": 1, - "EG_HT_YSTZ": 1, - "JsonToText": 1, - "KeywordExtraction": 1, - "LLavaPromptGenerator": 1, - "CLIPTextEncode_party": 1, - "Fooocus negative": 1, - "Fooocus PreKSampler": 1, - "Fooocus KSampler": 1, - "Fooocus Controlnet": 1, - "Fooocus Loader": 1, - "Fooocus Styles": 1, - "Fooocus positive": 1, - "Sine Camera Pan [DVB]": 1, - "XY Input: Lora Block Weight //Inspire": 1, - "XY Input: Checkpoint": 1, - "ClipClamp": 1, - "DodgeAndBurn": 1, - "FluxResolutionNode": 1, - "MirroredImage": 1, - "DiffusersTextureInversionLoader": 1, - "LoRA Stack to String converter": 1, - "JNodes_TokenCounter": 1, - "Text to String": 1, "VHS_SelectEveryNthLatent": 1, - "ollama": 1, - "LayerUtility: ImageScaleByAspectRatio": 1, - "Image Save with Prompt File (WLSH)": 1, - "LayerStyle: Gradient Map": 1, - "Load Image Based on Number": 1, - "Canny_Preprocessor_Provider_for_SEGS //Inspire": 1, - "LayerUtility: ImageAutoCrop V2": 1, - "OllamaNode": 1, - "ADE_CustomCFG": 1, - "LayerStyle: Stroke": 1, - "NoiseImage": 1, - "FL_Ascii": 1, - "TextCombinerTwo": 1, - "MutualSelfAttentionControlSampler": 1, - "MasaCtrlModelLoader": 1, - "MasaCtrlInversion": 1, - "MutualSelfAttentionControlMaskAutoSampler": 1, - "MasaCtrlLoadImage": 1, - "DirectSampler": 1, - "JDCN_AnyFileSelector": 1, - "JDCN_AnyFileList": 1, - "VHS_PruneOutputs": 1, - "ttN pipeLoaderSDXL": 1, - "ttN pipeKSamplerSDXL": 1, - "chaosaiart_Any_Switch_small": 1, - "ImageFilterStackBlur": 1, - "JDC_Plasma": 1, - "CR Repeater": 1, - "lavibridge_model_loader": 1, - "lavi_bridge_t5_encoder": 1, - "lavibridge_sampler": 1, - "JWImageMix": 1, - "String to Float": 1, - "IF_DisplayOmni": 1, - "OmostGreedyBagsTextEmbeddingNode": 1, - "LoadImageFromPath": 1, - "AnimateDiffLoraLoader": 1, - "DiffusersModelMakeup": 1, - "CreateIntListNode": 1, - "LcmLoraLoader": 1, - "DiffusersVaeLoader": 1, - "StreamDiffusionCreateStream": 1, - "DiffusersSchedulerLoader": 1, - "StreamDiffusionSampler": 1, - "DiffusersPipelineLoader": 1, - "DiffusersClipTextEncode": 1, - "MiDaS Model Loader": 1, - "MiDaS Depth Approximation": 1, - "LayerFilter: MotionBlur": 1, - "Image size to string": 1, - "Echo_LoadModel": 1, - "Echo_Sampler": 1, - "KSamplerProgress //Inspire": 1, - "UnsamplerFlattenNode": 1, - "TrajectoryNode": 1, - "KSamplerFlattenNode": 1, - "FlattenCheckpointLoaderNode": 1, - "roop": 1, - "Image Contrast Adjustment [Dream]": 1, - "MotionLoraLoader": 1, - "I2V_AdapterNode": 1, - "Export API": 1, - "MaskFrameSkipping": 1, - "scale": 1, - "Loop": 1, - "LoopEnd": 1, - "LoopStart": 1, - "LayerFilter: ChannelShake": 1, - "LayerFilter: LightLeak": 1, - "LayerFilter: ColorMap": 1, - "LayerFilter: AddGrain": 1, - "LayerFilter: FilmV2": 1, - "CamerasImage_Zho": 1, - "SaveLatent": 1, - "CopyMakeBorder": 1, - "UnGridify (image)": 1, - "Repeat Into Grid (image)": 1, - "Color (hexadecimal)": 1, - "Contours": 1, - "Draw Contour(s)": 1, - "ToModelList": 1, - "Framed Mask Grab Cut 2": 1, - "InpaintResize": 1, - "PerpNegAdaptiveGuidanceGuider": 1, - "ImpactDummyInput": 1, - "Images as Latents (PPF Noise)": 1, - "Perlin Power Fractal Latent (PPF Noise)": 1, - "Cross-Hatch Power Fractal (PPF Noise)": 1, - "Linear Cross-Hatch Power Fractal (PPF Noise)": 1, - "CLIPTextEncodeControlnet": 1 + "ADE_AdjustPEFullStretch": 1, + "ADE_CameraManualPoseAppend": 1, + "ADE_CameraPoseCombo": 1, + "ADE_ConditionExtraction": 1, + "ADE_ContextExtras_ContextRef_KeyframeInterpolation": 1, + "ADE_CustomCFGKeyframeFromList": 1, + "ADE_IterationOptsDefault": 1, + "ADE_LoadAnimateDiffModelWithCameraCtrl": 1, + "ADE_LoadCameraPosesFromPath": 1, + "ADE_LoraHookKeyframeInterpolation": 1, + "ADE_NoiseLayerAdd": 1, + "ADE_NoiseLayerReplace": 1, + "ADE_PerBlock_SD15_MidLevel": 1, + "ADE_ReplaceCameraParameters": 1, + "ADE_SigmaScheduleSplitAndCombine": 1, + "ADE_VisualizeContextOptionsK": 1, + "ADE_VisualizeContextOptionsKAdv": 1, + "AudioDeHum": 1, + "AudioDisplayWaveform": 1, + "AudioFadeIn": 1, + "AudioNoiseGate": 1, + "AudioParametricEQ": 1, + "AudioStemSeparate": 1, + "AudioStereoPan": 1, + "CLIPAttentionMultiply": 1, + "CLIPTextEncodeHiDream": 1, + "CM_BoolUnaryOperation": 1, + "CM_BreakoutVec2": 1, + "CM_ComposeVec2": 1, + "CM_ComposeVec4": 1, + "CM_Vec3ToScalarUnaryOperation": 1, + "ConditioningSetAreaPercentageVideo": 1, + "ConditioningTimestepsRange": 1, + "CosmosImageToVideoLatent": 1, + "CreateHookKeyframe": 1, + "CreateHookLoraModelOnly": 1, + "CreateHookModelAsLora": 1, + "CreateTextMask": 1, + "CrossFadeImages": 1, + "CrossFadeImagesMulti": 1, + "CustomControlNetWeightsFluxFromList": 1, + "CutAndDragOnPath": 1, + "DetailerHookCombine": 1, + "EditDetailerPipeSDXL": 1, + "EmptyAudio": 1, + "EmptyLatentHunyuan3Dv2": 1, + "EmptyMochiLatentVideo": 1, + "FantasyTalkingWav2VecEmbeds": 1, + "FlipSigmasAdjusted": 1, + "FluxDisableGuidance": 1, + "GITSSchedulerFuncProvider": 1, + "GLIGENTextBoxApplyBatchCoords": 1, + "GetLatentSizeAndCount": 1, + "Hunyuan3Dv2Conditioning": 1, + "IPAdapterStyleCompositionBatch": 1, + "ImageBatchFilter": 1, + "ImageColorMatchAdobe+": 1, + "ImageHistogramMatch+": 1, + "ImageNormalize_Neg1_To_1": 1, + "ImagePosterize+": 1, + "ImageUncropByMask": 1, + "ImpactBoolean": 1, + "ImpactConditionalStopIteration": 1, + "ImpactLogger": 1, + "ImpactMakeMaskBatch": 1, + "ImpactSEGSMerge": 1, + "ImpactScaleBy_BBOX_SEG_ELT": 1, + "KlingVirtualTryOnNode": 1, + "LTXVConditioning": 1, + "LTXVCropGuides": 1, + "LTXVScheduler": 1, + "LatentApplyOperation": 1, + "LatentCut": 1, + "LatentOperationTonemapReinhard": 1, + "LoadResAdapterNormalization": 1, + "LotusConditioning": 1, + "LumaImageModifyNode": 1, + "Mahiro": 1, + "MaskOptFlow": 1, + "MaskSmooth+": 1, + "MergeImageChannels": 1, + "MinimaxTextToVideoNode": 1, + "ModelCompile+": 1, + "ModelComputeDtype": 1, + "ModelMergeAuraflow": 1, + "ModelMergeSD3_2B": 1, + "MoonvalleyImg2VideoNode": 1, + "MoonvalleyVideo2VideoNode": 1, + "Morphology": 1, + "MultiTalkSilentEmbeds": 1, + "NLFPredict": 1, + "PadImageBatchInterleaved": 1, + "PairConditioningCombine": 1, + "PatchModelPatcherOrder": 1, + "PikaImageToVideoNode2_2": 1, + "PixverseTextToVideoNode": 1, + "RegionalSamplerAdvanced": 1, + "Rodin3D_Detail": 1, + "SEGSRangeFilterDetailerHookProvider": 1, + "SamplerDPMPP_3M_SDE": 1, + "SamplerEulerAncestralCFGPP": 1, + "SamplerLCMUpscale": 1, + "SaveAudioOpus": 1, + "ScheduledCFGGuidance": 1, + "SkipLayerGuidanceDiT": 1, + "StabilityAudioInpaint": 1, + "StabilityStableImageUltraNode": 1, + "StepsScheduleHookProvider": 1, + "StringContains": 1, + "StringLength": 1, + "SubgraphBlueprint.Anime-Dog_Prompts_Simple": 1, + "SubgraphBlueprint.Logo": 1, + "TemporalScoreRescaling": 1, + "TorchCompileVAE": 1, + "TransitionImagesMulti": 1, + "TripoConversionNode": 1, + "TripoRigNode": 1, + "TripoTextToModelNode": 1, + "UnsamplerHookProvider": 1, + "UpperBodyTrackingFromPoseKps": 1, + "VHS_GetMaskCount": 1, + "VHS_MergeMasks": 1, + "VoxelToMeshBasic": 1, + "WanFunInpaintToVideo": 1, + "WanSoundImageToVideo": 1, + "WanVideoATI_comfy": 1, + "WanVideoAddFantasyPortrait": 1, + "WanVideoApplyNAG": 1, + "WanVideoDiffusionForcingSampler": 1, + "WanVideoEasyCache": 1, + "WanVideoEmptyMMAudioLatents": 1, + "WanVideoFlowEdit": 1, + "WanVideoPassImagesFromSamples": 1, + "WanVideoPhantomEmbeds": 1, + "WanVideoReCamMasterGenerateOrbitCamera": 1, + "WanVideoRoPEFunction": 1, + "WanVideoSchedulerSA_ODE": 1, + "WanVideoSigmaToStep": 1, + "WanVideoUni3C_ControlnetLoader": 1, + "WanVideoUni3C_embeds": 1, + "wanBlockSwap": 1, + "IPAdapterFaceIDKolors": 0.7838821665711686, + "Image Voronoi Noise Filter": 0.7838821665711686, + "EmptyLatentImageScaleBy": 0.7838821665711686, + "easy ckptNames": 0.7838821665711686, + "AnyAspectRatio": 0.7838821665711686, + "CLIP Vector Sculptor text encode": 0.7838821665711686, + "JDC_RandNoise": 0.7838821665711686, + "LayerFilter: SoftLight": 0.7838821665711686, + "ETN_CropImage": 0.7838821665711686, + "RGB_Image_Zho": 0.7838821665711686, + "LLLiteLoader": 0.7838821665711686, + "AdvancedLivePortrait": 0.7838821665711686, + "CaptureWebcam": 0.7838821665711686, + "LayerUtility: GradientImage V2": 0.7838821665711686, + "ADMD_ValidationSettings": 0.7838821665711686, + "ADMD_InitializeTraining": 0.7838821665711686, + "ADMD_AdditionalModelSelect": 0.7838821665711686, + "ADMD_CheckpointLoader": 0.7838821665711686, + "Flatten Colors": 0.7838821665711686, + "MimicMotionNode": 0.7838821665711686, + "DeepCache": 0.7838821665711686, + "BizyAir_MinusZoneChatGLM3TextEncode": 0.7838821665711686, + "FluxPromptGenerator": 0.7838821665711686, + "ReferenceOnlySimple": 0.7838821665711686, + "RegionalPromptColorMask //Inspire": 0.7838821665711686, + "CLIP Positive-Negative XL w/Text (WLSH)": 0.7838821665711686, + "AV_CheckpointMerge": 0.7838821665711686, + "ttN multiModelMerge": 0.7838821665711686, + "Unwrap Frame Set [DVB]": 0.7838821665711686, + "Sine Camera Zoom [DVB]": 0.7838821665711686, + "Linear Camera Pan [DVB]": 0.7838821665711686, + "Create Frame Set [DVB]": 0.7838821665711686, + "BNK_CutoffRegionsToConditioning_ADV": 0.7838821665711686, + "Image Mix RGB Channels": 0.7838821665711686, + "Get Image Size (JPS)": 0.7838821665711686, + "ImageColorTransfer": 0.7838821665711686, + "Seed_": 0.7838821665711686, + "CR Simple Prompt Scheduler": 0.7838821665711686, + "LayerFilter: SkinBeauty": 0.7838821665711686, + "ImageComposite_Zho": 0.7838821665711686, + "CR Font File List": 0.7838821665711686, + "flux_persona": 0.7838821665711686, + "json_get_value": 0.7838821665711686, + "extra_parameters": 0.7838821665711686, + "RescaleClassifierFreeGuidanceTest": 0.7838821665711686, + "ApplyMSWMSAAttentionSimple": 0.7838821665711686, + "OllamaImageDescriber": 0.7838821665711686, + "Text to Console": 0.7838821665711686, + "Logic NOT": 0.7838821665711686, + "JDCN_BoolInt": 0.7838821665711686, + "Demofusion From Single File": 0.7838821665711686, + "ConditioningBlend": 0.7838821665711686, + "ImageFilterBilateralBlur": 0.7838821665711686, + "ImageEffectsLensVignette": 0.7838821665711686, + "EGIPAdapter_Mad_Assistant": 0.7838821665711686, + "RGB_Picker": 0.7838821665711686, + "easy textSwitch": 0.7838821665711686, + "Save Image With Prompt Data": 0.7838821665711686, + "PlayMusic": 0.7838821665711686, + "Send_To_Editor": 0.7838821665711686, + "LivePortraitVideoNode": 0.7838821665711686, + "ImageNoiseGaussian": 0.7838821665711686, + "FaceFixerOpenCV": 0.7838821665711686, + "Any Converter": 0.7838821665711686, + "comfyui-easy-padding": 0.7838821665711686, + "Load CheckPoint DragNUWA": 0.7838821665711686, + "DragNUWA Run": 0.7838821665711686, + "ImageEffectsLensBokeh": 0.7838821665711686, + "chaosaiart_TextCLIPEncode": 0.7838821665711686, + "CR ControlNet Input Switch": 0.7838821665711686, + "Calculation [Dream]": 0.7838821665711686, + "CXH_JoyTag": 0.7838821665711686, + "SizeSelector": 0.7838821665711686, + "int _O": 0.7838821665711686, + "SmoothVideo": 0.7838821665711686, + "ImageTransformCropCorners": 0.7838821665711686, + "XY Grid Helper": 0.7838821665711686, + "SeargePromptCombiner": 0.7838821665711686, + "Griptape Create: Agent": 0.7838821665711686, + "LayerFilter: Sharp & Soft": 0.7838821665711686, + "0246.Hub": 0.7838821665711686, + "Image Adaptive Crop With Mask": 0.7838821665711686, + "CombineClipEllaEmbeds": 0.7838821665711686, + "ApplyRAUNet": 0.7838821665711686, + "ApplyMSWMSAAttention": 0.7838821665711686, + "AddMetaData": 0.7838821665711686, + "Moondream Interrogator": 0.7838821665711686, + "ImageContainer": 0.7838821665711686, + "ImageSegmentation": 0.7838821665711686, + "BNK_AddCLIPSDXLRParams": 0.7838821665711686, + "GradientPatchModelAddDownscale": 0.7838821665711686, + "MovementsImage_Zho": 0.7838821665711686, + "ttN int": 0.7838821665711686, + "AnyListCartesianProduct": 0.7838821665711686, + "FromListGet1Latent": 0.7838821665711686, + "ImageText": 0.7838821665711686, + "ScheduleToModel": 0.7838821665711686, + "ScheduleToCond": 0.7838821665711686, + "PromptToSchedule": 0.7838821665711686, + "Int to String": 0.7838821665711686, + "Prompt Multiple Styles Selector": 0.7838821665711686, + "SpeechRecognition": 0.7838821665711686, + "NDI_LoadImage": 0.7838821665711686, + "NDI_SendImage": 0.7838821665711686, + "CR Feathered Border": 0.7838821665711686, + "ImageCropByAlpha": 0.7838821665711686, + "StableAudioPrompt": 0.7838821665711686, + "segformer_agnostic": 0.7838821665711686, + "stabel_vition": 0.7838821665711686, + "Latent Upscale by Factor (WAS)": 0.7838821665711686, + "YANC.FormatDatetimeString": 0.7838821665711686, + "Fetch widget value": 0.7838821665711686, + "SDXLPromptStylerbyCyberpunkSurrealism": 0.7838821665711686, + "SDXLPromptbyRomanticNationalismArt": 0.7838821665711686, + "SDXLPromptStylerbyQuantumRealism": 0.7838821665711686, + "SDXLPromptbyIrishFolkArt": 0.7838821665711686, + "SDXLPromptbyVikingArt": 0.7838821665711686, + "SDXLPromptbyCelticArt": 0.7838821665711686, + "SDXLPromptbyFashionArt": 0.7838821665711686, + "SDXLPromptStylerbyWyvern": 0.7838821665711686, + "SDXLPromptStylerbyTheme": 0.7838821665711686, + "SDXLPromptbySportsArt": 0.7838821665711686, + "SDXLPromptbyContemporaryNordicArt": 0.7838821665711686, + "UploadToHuggingFace": 0.7838821665711686, + "LayerUtility: ImageTaggerSave": 0.7838821665711686, + "ScaledSoftMaskedUniversalWeights": 0.7838821665711686, + "RestoreDetail": 0.7838821665711686, + "SeargeFloatMath": 0.7838821665711686, + "Float Input [Dream]": 0.7838821665711686, + "ControlNextGetPoses": 0.7838821665711686, + "MoonDream": 0.7838821665711686, + "easy imageInterrogator": 0.7838821665711686, + "WrapText": 0.7838821665711686, + "EG_WB_KSH": 0.7838821665711686, + "Image Resize To Height": 0.7838821665711686, + "LayerUtility: BooleanOperator": 0.7838821665711686, + "Miaoshouai_Flux_CLIPTextEncode": 0.7838821665711686, + "sdBxb": 0.7838821665711686, + "KRestartSamplerSimple": 0.7838821665711686, + "BitwiseAndMask": 0.7838821665711686, + "easy imageBatchToImageList": 0.7838821665711686, + "TTP_condsetarea_merge": 0.7838821665711686, + "TTP_condtobatch": 0.7838821665711686, + "TTP_CoordinateSplitter": 0.7838821665711686, + "TTP_Image_Tile_Batch": 0.7838821665711686, + "TTP_Tile_image_size": 0.7838821665711686, + "Pick From Batch (mtb)": 0.7838821665711686, + "BNK_TiledKSamplerAdvanced": 0.7838821665711686, + "easy pulIDApply": 0.7838821665711686, + "promptComposerTextMultiple": 0.7838821665711686, + "ImageDrawEllipse": 0.7838821665711686, + "EGIPAdapter_Mad_AssistantV2": 0.7838821665711686, + "Scribble_PiDiNet_Preprocessor": 0.7838821665711686, + "AttentionCouple": 0.7838821665711686, + "ADE_ConditioningSetMaskAndCombine": 0.7838821665711686, + "ADE_RegisterLoraHook": 0.7838821665711686, + "Image Text Overlay": 0.7838821665711686, + "Create Grid Image from Batch": 0.7838821665711686, + "SUPIR_tiles": 0.7838821665711686, + "Mask Threshold Region": 0.7838821665711686, + "SeamlessTile": 0.7838821665711686, + "AspectRatioSelector": 0.7838821665711686, + "TextTransformer": 0.7838821665711686, + "PM_RetinaFace": 0.7838821665711686, + "PrimereVAE": 0.7838821665711686, + "PrimereVisualEmbedding": 0.7838821665711686, + "PrimereVisualLORA": 0.7838821665711686, + "PrimereVisualLYCORIS": 0.7838821665711686, + "CR Simple Text Panel": 0.7838821665711686, + "ImageLoader": 0.7838821665711686, + "Depth_fm": 0.7838821665711686, + "EG_TX_CCHQ": 0.7838821665711686, + "ADE_AnimateDiffModelSettingsAdvancedAttnStrengths": 0.7838821665711686, + "CR Simple List": 0.7838821665711686, + "StableCascade_CheckpointLoader //Inspire": 0.7838821665711686, + "TTPlanet_Tile_Preprocessor_Simple": 0.7838821665711686, + "SeargeIntegerConstant": 0.7838821665711686, + "CDL.OpenPoseEditorPlus": 0.7838821665711686, + "BatchStringSchedule": 0.7838821665711686, + "ImageScaleFactor _O": 0.7838821665711686, + "YARS": 0.7838821665711686, + "MimicBrushNode": 0.7838821665711686, + "DreamViewer": 0.7838821665711686, + "SampleColorHSV": 0.7838821665711686, + "NaiveAutoKMeansColor": 0.7838821665711686, + "InRange (hsv)": 0.7838821665711686, + "BuildColorRangeHSV (hsv)": 0.7838821665711686, + "easy ipadapterStyleComposition": 0.7838821665711686, + "OffsetImage": 0.7838821665711686, + "LuminaDiffusersNode": 0.7838821665711686, + "easy imageConcat": 0.7838821665711686, + "HfImageToRGB": 0.7838821665711686, + "MaskExpansion": 0.7838821665711686, + "CR Batch Process Switch": 0.7838821665711686, + "Mask Ops": 0.7838821665711686, + "LayerUtility: HLFrequencyDetailRestore": 0.7838821665711686, + "SDXL Quick Empty Latent (WLSH)": 0.7838821665711686, + "DynamiCrafterProcessor": 0.7838821665711686, + "IF_ImagePrompt": 0.7838821665711686, + "Load Face Analysis Model (mtb)": 0.7838821665711686, + "Load Face Swap Model (mtb)": 0.7838821665711686, + "Face Swap (mtb)": 0.7838821665711686, + "CR Random RGB Gradient": 0.7838821665711686, + "LayerUtility: BooleanOperatorV2": 0.7838821665711686, + "BizyAirSiliconCloudLLMAPI": 0.7838821665711686, + "ttN pipeLoader_v2": 0.7838821665711686, + "Latent Size to Number": 0.7838821665711686, + "MS kosmos-2 Interrogator": 0.7838821665711686, + "Text Shuffle": 0.7838821665711686, + "ProPainterInpaint": 0.7838821665711686, + "SimpleMathDual+": 0.7838821665711686, + "easy hiresFix": 0.7838821665711686, + "LoraTagsOnly": 0.7838821665711686, + "ImageSimpleResize": 0.7838821665711686, + "LLM_local_loader": 0.7838821665711686, + "LLM_local": 0.7838821665711686, + "Stablezero123": 0.7838821665711686, + "SDZero ImageSplit": 0.7838821665711686, + "Image to Latent Mask": 0.7838821665711686, + "MaraScottUpscalerRefinerNode_v2": 0.7838821665711686, + "BaseModel_Loader_local": 0.7838821665711686, + "PhotoMakerAdapter_Loader_fromhub": 0.7838821665711686, + "Ref_Image_Preprocessing": 0.7838821665711686, + "NEW_PhotoMaker_Generation": 0.7838821665711686, + "LoRALoader": 0.7838821665711686, + "Prompt_Styler": 0.7838821665711686, + "PolyexponentialScheduler": 0.7838821665711686, + "LayerStyle: ColorOverlay V2": 0.7838821665711686, + "PromptComposerEffect": 0.7838821665711686, + "QRCodeGenerator": 0.7838821665711686, + "INPAINT_ExpandMask": 0.7838821665711686, + "LayerUtility: LayerMaskTransform": 0.7838821665711686, + "LayerMask: PixelSpread": 0.7838821665711686, + "LayerMask: MaskByColor": 0.7838821665711686, + "Image Dragan Photography Filter": 0.7838821665711686, + "Text List Concatenate": 0.7838821665711686, + "CivitaiLoraLoaderStacked": 0.7838821665711686, + "ImageBatchRemove": 0.7838821665711686, + "OneButtonSuperPrompt": 0.7838821665711686, + "Fans Prompt Styler Negative": 0.7838821665711686, + "StringMlStaticPrimitive": 0.7838821665711686, + "Text Parse A1111 Embeddings": 0.7838821665711686, + "FaceWarp": 0.7838821665711686, + "CLIPTextEncode (NSP)": 0.7838821665711686, + "KSamplerCacheable": 0.7838821665711686, + "UltimateVideoLoader": 0.7838821665711686, + "VHS_DuplicateMasks": 0.7838821665711686, + "ImageTransformResizeClip": 0.7838821665711686, + "Color Transfer": 0.7838821665711686, + "ImageFilterGaussianBlurAdvanced": 0.7838821665711686, + "Blend Latents (PPF Noise)": 0.7838821665711686, + "EG_TX_SFBLS": 0.7838821665711686, + "Qwen2_ModelLoader_Zho": 0.7838821665711686, + "Qwen2_Zho": 0.7838821665711686, + "Pixel Deflicker - Experimental (SuperBeasts.AI)": 0.7838821665711686, + "ImpactSimpleDetectorSEGSPipe": 0.7838821665711686, + "DetailerPipeToBasicPipe": 0.7838821665711686, + "ClipAmplitude": 0.7838821665711686, + "OverlayInpaintedImage": 0.7838821665711686, + "OverlayInpaintedLatent": 0.7838821665711686, + "OmostDenseDiffusionLayoutNode": 0.7838821665711686, + "IF_SaveText": 0.7838821665711686, + "VHS_FILENAMES_STRING_MuseTalk": 0.7838821665711686, + "MuseTalkCupAudio": 0.7838821665711686, + "CR Set Value On Binary": 0.7838821665711686, + "CR Radial Gradient": 0.7838821665711686, + "KeyframeInterpolationPart": 0.7838821665711686, + "TripoSRViewer": 0.7838821665711686, + "TripoSRSampler": 0.7838821665711686, + "TripoSRModelLoader": 0.7838821665711686, + "MixNoiseNode": 0.7838821665711686, + "LamaRemoverIMG": 0.7838821665711686, + "FL_ImageNotes": 0.7838821665711686, + "ACN_ReferenceControlNet": 0.7838821665711686, + "FaceParsingProcessorLoader(FaceParsing)": 0.7838821665711686, + "FaceParsingModelLoader(FaceParsing)": 0.7838821665711686, + "FaceParse(FaceParsing)": 0.7838821665711686, + "FL_ImageRandomizer": 0.7838821665711686, + "FrameMaker": 0.7838821665711686, + "UformGen2QwenNode": 0.7838821665711686, + "BNK_CutoffRegionsToConditioning": 0.7838821665711686, + "CXH_DownloadAndLoadFlorence2Model": 0.7838821665711686, + "CXH_Florence2Run": 0.7838821665711686, + "ShowImages": 0.7838821665711686, + "LoraLoaderStackedWithPreviews": 0.7838821665711686, + "Make Image Batch": 0.7838821665711686, + "CLIPSeg Batch Masking": 0.7838821665711686, + "CR Index Multiply": 0.7838821665711686, + "ConcatConditioningsWithMultiplier //Inspire": 0.7838821665711686, + "Image Perlin Noise": 0.7838821665711686, + "IntStaticPrimitive": 0.7838821665711686, + "CR Random LoRA Stack": 0.7838821665711686, + "Get Date Time String (JPS)": 0.7838821665711686, + "BackgroundScaler": 0.7838821665711686, + "JDC_ResizeFactor": 0.7838821665711686, + "easy pipeEdit": 0.7838821665711686, + "LayeredDiffusionDiffApply": 0.7838821665711686, + "DynamicDelayProcessor": 0.7838821665711686, + "FluxSampler": 0.7838821665711686, + "IF_ChatPrompt": 0.7838821665711686, + "LayerStyle: OuterGlow V2": 0.7838821665711686, + "ToDetailerPipeSDXL": 0.7838821665711686, + "PixArtT5FromSD3CLIP": 0.7838821665711686, + "MasaCtrlConcatImage": 0.7838821665711686, + "PromptNode": 0.7838821665711686, + "EndQueue": 0.7838821665711686, + "RawTextEncode": 0.7838821665711686, + "Text_Image_Frame_Zho": 0.7838821665711686, + "CR Checker Pattern": 0.7838821665711686, + "CR Starburst Colors": 0.7838821665711686, + "ColorDictionary": 0.7838821665711686, + "Color Clip (advanced)": 0.7838821665711686, + "FindComplementaryColor": 0.7838821665711686, + "BLVAEEncode": 0.7838821665711686, + "LDSRUpscaler": 0.7838821665711686, + "float _O": 0.7838821665711686, + "SALVTON_Apply": 0.3919410832855843, + "D_DreamTalk": 0.3919410832855843, + "Boolean To Text": 0.3919410832855843, + "CheckpointLoaderSimpleExtended": 0.3919410832855843, + "JWImageResizeToSquare": 0.3919410832855843, + "CleanFileNameNode": 0.3919410832855843, + "Iterative Mixing KSampler": 0.3919410832855843, + "RelightSimple": 0.3919410832855843, + "AV_LoraLoader": 0.3919410832855843, + "easy imagesSplitImage": 0.3919410832855843, + "CR Vignette Filter": 0.3919410832855843, + "Fooocus_KSamplerAdvanced": 0.3919410832855843, + "RegionalCFG //Inspire": 0.3919410832855843, + "ColorMaskToDepthMask //Inspire": 0.3919410832855843, + "Checkpoint Loader Simple Mikey": 0.3919410832855843, + "WildcardAndLoraSyntaxProcessor": 0.3919410832855843, + "Batch Shape (mtb)": 0.3919410832855843, + "HyperSDXL1StepUnetScheduler": 0.3919410832855843, + "Batch Make (mtb)": 0.3919410832855843, + "LoadImagesFromPath": 0.3919410832855843, + "VAE Switch (JPS)": 0.3919410832855843, + "KG_neo_toolkit_developer": 0.3919410832855843, + "Image fDOF Filter": 0.3919410832855843, + "pipe-util-to-basic-pipe": 0.3919410832855843, + "Ood_CXH": 0.3919410832855843, + "BNK_AddCLIPSDXLParams": 0.3919410832855843, + "LDSRModelLoader": 0.3919410832855843, + "LDSRUpscale": 0.3919410832855843, + "APISR_upscale": 0.3919410832855843, + "CombineSegMasks": 0.3919410832855843, + "PrimereCKPT": 0.3919410832855843, + "PrimereLORA": 0.3919410832855843, + "ImageTransformResizeAbsolute": 0.3919410832855843, + "ModelDownloader": 0.3919410832855843, + "LoRADownloader": 0.3919410832855843, + "ella_model_loader": 0.3919410832855843, + "ella_t5_embeds": 0.3919410832855843, + "ella_sampler": 0.3919410832855843, + "Save Image If True": 0.3919410832855843, + "translate_persona": 0.3919410832855843, + "classify_persona": 0.3919410832855843, + "custom_persona": 0.3919410832855843, + "classify_function": 0.3919410832855843, + "CR Random Multiline Colors": 0.3919410832855843, + "CR Multiline Text": 0.3919410832855843, + "XY Input: Manual XY Entry": 0.3919410832855843, + "AnimateDiffLoaderV1": 0.3919410832855843, + "RemapRange": 0.3919410832855843, + "SimpleMathBoolean+": 0.3919410832855843, + "SimpleCondition+": 0.3919410832855843, + "Mask Crop Dominant Region": 0.3919410832855843, + "ImageTransformCropRelative": 0.3919410832855843, + "ImageEffectsLensZoomBurst": 0.3919410832855843, + "ImpactLatentInfo": 0.3919410832855843, + "Aligned Scheduler": 0.3919410832855843, + "Multiply sigmas": 0.3919410832855843, + "SaveAudioNode": 0.3919410832855843, + "ChatMusician": 0.3919410832855843, + "LoadWebcamImage": 0.3919410832855843, + "LoadImagePath": 0.3919410832855843, + "HalloNode": 0.3919410832855843, + "UVR5_Node": 0.3919410832855843, + "LoadAudioPath": 0.3919410832855843, + "Unique3DRun - MVPrediction": 0.3919410832855843, + "Unique3DLoadPipeline": 0.3919410832855843, + "Unique3DRun - Geo Reconstruct": 0.3919410832855843, + "Pixelize": 0.3919410832855843, + "SigmoidCorrection": 0.3919410832855843, + "Apply Instagram Filter": 0.3919410832855843, + "GlitchThis Effect": 0.3919410832855843, + "DynamiCrafter Simple": 0.3919410832855843, + "PDFToImage": 0.3919410832855843, + "DocumentLoader": 0.3919410832855843, + "TextChunker": 0.3919410832855843, + "DragNUWAImageCanvas": 0.3919410832855843, + "ImageEffectsLensChromaticAberration": 0.3919410832855843, + "Image Save with Prompt/Info (WLSH)": 0.3919410832855843, + "ImpactSEGSClassify": 0.3919410832855843, + "CLIPTextEncodeAdvancedNSuite [n-suite]": 0.3919410832855843, + "OllamaSaveContext": 0.3919410832855843, + "Griptape Run: Image Description": 0.3919410832855843, + "Griptape Convert: Text to CLIP Encode": 0.3919410832855843, + "0246.CastReroute": 0.3919410832855843, + "JagsClipseg": 0.3919410832855843, + "Lora Input Switch": 0.3919410832855843, + "AlphaChanelAdd": 0.3919410832855843, + "llava": 0.3919410832855843, + "StableMakeup_Sampler": 0.3919410832855843, + "StableMakeup_LoadModel": 0.3919410832855843, + "AnimeLineArt_Preprocessor_Provider_for_SEGS //Inspire": 0.3919410832855843, + "AIraster": 0.3919410832855843, + "MMDetDetectorProvider": 0.3919410832855843, + "Comfy Couple": 0.3919410832855843, + "OnCompleteEmailMe": 0.3919410832855843, + "ID_Prompt_Styler": 0.3919410832855843, + "ArtistsImage_Zho": 0.3919410832855843, + "XY Input: Steps": 0.3919410832855843, + "Cozy Pose Body Reference": 0.3919410832855843, + "Cozy Sampler Options": 0.3919410832855843, + "SentenceMixerNode": 0.3919410832855843, + "ImageToMask_AS": 0.3919410832855843, + "HSVThresholdMask": 0.3919410832855843, + "AdaptiveGuidance": 0.3919410832855843, + "OpenSoraPlanLoader": 0.3919410832855843, + "OpenSoraPlanDecode": 0.3919410832855843, + "OpenSoraPlanSample": 0.3919410832855843, + "LineArt_Preprocessor_Provider_for_SEGS //Inspire": 0.3919410832855843, + "FloodGate": 0.3919410832855843, + "easy imageToBase64": 0.3919410832855843, + "ImageBatchToList": 0.3919410832855843, + "ExtendLatentList": 0.3919410832855843, + "LoadFlorence2Model": 0.3919410832855843, + "Florence2": 0.3919410832855843, + "CR Set Value on String": 0.3919410832855843, + "tool_combine": 0.3919410832855843, + "StableAudioLoadModel": 0.3919410832855843, + "StableAudioConditioning": 0.3919410832855843, + "StableAudioSampler": 0.3919410832855843, + "MagicAnimateModelLoader": 0.3919410832855843, + "MagicAnimate": 0.3919410832855843, + "Swap Color Mode": 0.3919410832855843, + "ImageTextMultilineOutlined": 0.3919410832855843, + "easy portraitMaster": 0.3919410832855843, + "easy kolorsLoader": 0.3919410832855843, + "CR Module Output": 0.3919410832855843, + "text-util-prompt-join": 0.3919410832855843, + "Float to String": 0.3919410832855843, + "BlurImageFast": 0.3919410832855843, + "TGateApplySimple": 0.3919410832855843, + "Load BiseNet": 0.3919410832855843, + "Segment Face": 0.3919410832855843, + "CR XY Save Grid Image": 0.3919410832855843, + "CR XY From Folder": 0.3919410832855843, + "CR XY List": 0.3919410832855843, + "FrameInterpolator [n-suite]": 0.3919410832855843, + "ApplyAdvancedFluxIPAdapter": 0.3919410832855843, + "ImagePaste": 0.3919410832855843, + "SeedExplorer //Inspire": 0.3919410832855843, + "SaveSVG": 0.3919410832855843, + "ConvertRasterToVector": 0.3919410832855843, + "ControlNextDiffusersScheduler": 0.3919410832855843, + "DownloadAndLoadControlNeXt": 0.3919410832855843, + "ControlNextSampler": 0.3919410832855843, + "ControlNextDecode": 0.3919410832855843, + "CM_IntBinaryCondition": 0.3919410832855843, + "LayerUtility: QueueStop": 0.3919410832855843, + "ComfyUISaveAs": 0.3919410832855843, + "Empty Latent by Size (WLSH)": 0.3919410832855843, + "DepthViewer": 0.3919410832855843, + "Image Switch (JPS)": 0.3919410832855843, + "Aspect Ratios Node": 0.3919410832855843, + "string_util_StrEqual": 0.3919410832855843, + "ScheduledCFGGuider //Inspire": 0.3919410832855843, + "CR Math Operation": 0.3919410832855843, + "Combine and Paste": 0.3919410832855843, + "Inpaint Segments": 0.3919410832855843, + "LatentDuplicator": 0.3919410832855843, + "easy imageInsetCrop": 0.3919410832855843, + "BLEND (JOV) \u2697\ufe0f": 0.3919410832855843, + "ADJUST (JOV) \ud83d\udd78\ufe0f": 0.3919410832855843, + "NX_PromptStyler": 0.3919410832855843, + "MoondreamQueryCaptions": 0.3919410832855843, + "ControlNextSVDApply": 0.3919410832855843, + "AttentionCoupleRegions": 0.3919410832855843, + "BatchPromptScheduleEncodeSDXL": 0.3919410832855843, + "PromptComposerCustomLists": 0.3919410832855843, + "Int To Bool (mtb)": 0.3919410832855843, + "Lora": 0.3919410832855843, + "Checkpoint": 0.3919410832855843, + "Image Resize Factor (mtb)": 0.3919410832855843, + "PrimereEmotionsStyles": 0.3919410832855843, + "PrimereUpscaleModel": 0.3919410832855843, + "PrimereMidjourneyStyles": 0.3919410832855843, + "PrimereStylePile": 0.3919410832855843, + "PrimereMetaCollector": 0.3919410832855843, + "PrimereMetaHandler": 0.3919410832855843, + "PrimereMetaDistributor": 0.3919410832855843, + "PrimereMetaDistributorStage2": 0.3919410832855843, + "PrimereVAELoader": 0.3919410832855843, + "PrimereEmbeddingKeywordMerger": 0.3919410832855843, + "PrimereLoraKeywordMerger": 0.3919410832855843, + "PrimereVisualHypernetwork": 0.3919410832855843, + "PrimereLycorisKeywordMerger": 0.3919410832855843, + "PrimereResolutionMultiplierMPX": 0.3919410832855843, + "PrimereMetaSave": 0.3919410832855843, + "PrimereTextOutput": 0.3919410832855843, + "easy imageScaleDownBy": 0.3919410832855843, + "DynamicThresholdingSimple": 0.3919410832855843, + "Simple Wildcards": 0.3919410832855843, + "DisplayText": 0.3919410832855843, + "MultiplePathsInput": 0.3919410832855843, + "Qwen2_VQA": 0.3919410832855843, + "Load Image From Url (mtb)": 0.3919410832855843, + "geowizard_model_loader": 0.3919410832855843, + "geowizard_sampler": 0.3919410832855843, + "AdaptiveCannyDetector_PoP": 0.3919410832855843, + "ttN KSampler_v2": 0.3919410832855843, + "3DImage": 0.3919410832855843, + "IFUnet VFI": 0.3919410832855843, + "LoraLoaderBlockWeight //Inspire": 0.3919410832855843, + "LoraBlockInfo //Inspire": 0.3919410832855843, + "HYDiTTextEncode": 0.3919410832855843, + "ImageTransformRotate": 0.3919410832855843, + "ImageFilterMedianBlur": 0.3919410832855843, + "SeamlessClone (simple)": 0.3919410832855843, + "OtsuThreshold": 0.3919410832855843, + "RemapToInnerCylinder": 0.3919410832855843, + "RemapInsideParabolas": 0.3919410832855843, + "\ud83d\udcbe Save Text File With Path": 0.3919410832855843, + "GITSScheduler": 0.3919410832855843, + "Recenter XL": 0.3919410832855843, + "PixArtControlNetCond": 0.3919410832855843, + "MakeCircularVAE": 0.3919410832855843, + "Tiled KSampler": 0.3919410832855843, + "JDC_GaussianBlur": 0.3919410832855843, + "TextureViewer": 0.3919410832855843, + "AspectSizeV2": 0.3919410832855843, + "CLIP Positive-Negative w/Text (WLSH)": 0.3919410832855843, + "LatentSelector": 0.3919410832855843, + "LayerColor: HSV": 0.3919410832855843, + "AV_ControlNetEfficientStackerSimple": 0.3919410832855843, + "SDPromptMerger": 0.3919410832855843, + "MaraScottMcBoatyUpscalerRefiner_v5": 0.3919410832855843, + "DynamiCrafterLoadInitNoise": 0.3919410832855843, + "KeypointsToImage": 0.3919410832855843, + "Load Face Enhance Model (mtb)": 0.3919410832855843, + "Restore Face (mtb)": 0.3919410832855843, + "Sharpen (mtb)": 0.3919410832855843, + "AudioLDM2Node": 0.3919410832855843, + "AV_LLMChat": 0.3919410832855843, + "AV_LLMMessage": 0.3919410832855843, + "AV_LLMApiConfig": 0.3919410832855843, + "AV_OpenAIApi": 0.3919410832855843, + "ttN pipeLoraStack": 0.3919410832855843, + "KSampler Gradually Adding More Denoise (efficient)": 0.3919410832855843, + "MMakerColorEnhance": 0.3919410832855843, + "LoraLoaderVanilla": 0.3919410832855843, + "AppInfo": 0.3919410832855843, + "brushnet_ipadapter_matteo": 0.3919410832855843, + "easy LLLiteLoader": 0.3919410832855843, + "easy XYPlotAdvanced": 0.3919410832855843, + "easy latentCompositeMaskedWithCond": 0.3919410832855843, + "easy XYInputs: PositiveCondList": 0.3919410832855843, + "easy latentNoisy": 0.3919410832855843, + "easy unSampler": 0.3919410832855843, + "HyperTile //Inspire": 0.3919410832855843, + "SDXLPromptStylerPreview": 0.3919410832855843, + "clear_model": 0.3919410832855843, + "OllamaImageToText": 0.3919410832855843, + "ETN_LoadImageBase64": 0.3919410832855843, + "ETN_SendImageWebSocket": 0.3919410832855843, + "TaraApiKeySaver": 0.3919410832855843, + "TaraDaisyChainNode": 0.3919410832855843, + "OmostLLMLoaderNode": 0.3919410832855843, + "OmostLLMChatNode": 0.3919410832855843, + "FaceSegmentation": 0.3919410832855843, + "GridStringList": 0.3919410832855843, + "Griptape Combine: Rules List": 0.3919410832855843, + "Griptape Run: Agent": 0.3919410832855843, + "ConditioningSetMaskAndCombine3": 0.3919410832855843, + "ExtraVAELoader": 0.3919410832855843, + "SamplerDPMPP_3M_SDE_DynETA": 0.3919410832855843, + "SamplerCustomNoise": 0.3919410832855843, + "Output min/max sigmas": 0.3919410832855843, + "ModelMergeSDXL": 0.3919410832855843, + "PromptComposerMerge": 0.3919410832855843, + "PromptComposerGrouping": 0.3919410832855843, + "JWImageLevels": 0.3919410832855843, + "OptimizerConfigAdafactor": 0.3919410832855843, + "LayerMask: MaskGrain": 0.3919410832855843, + "LayerMask: MediapipeFacialSegment": 0.3919410832855843, + "LayerMask: MaskEdgeShrink": 0.3919410832855843, + "LayerMask: MaskByDifferent": 0.3919410832855843, + "LayerMask: BlendIf Mask": 0.3919410832855843, + "easy imageCount": 0.3919410832855843, + "CivitaiCheckpointLoaderSimple": 0.3919410832855843, + "EG_ZZ_SSKZ": 0.3919410832855843, + "ER_TX_ZZCJ": 0.3919410832855843, + "EG_TC_Node": 0.3919410832855843, + "EG_ZZ_MHHT": 0.3919410832855843, + "EG_TX_CJPJ": 0.3919410832855843, + "EG_TX_LJBC": 0.3919410832855843, + "Text Overlay": 0.3919410832855843, + "ApplyRaveAttentionNode": 0.3919410832855843, + "InstantIDAttentionPatch": 0.3919410832855843, + "google_tool": 0.3919410832855843, + "check_web_tool": 0.3919410832855843, + "load_ebd": 0.3919410832855843, + "IPAdapterPreciseStyleTransfer": 0.3919410832855843, + "Image Perlin Power Fractal": 0.3919410832855843, + "SaveTiff": 0.3919410832855843, + "CR Clamp Value": 0.3919410832855843, + "SDBatchLoader": 0.3919410832855843, + "Load Composition CSV": 0.3919410832855843, + "Load Lighting CSV": 0.3919410832855843, + "Load Styles CSV": 0.3919410832855843, + "MuseVPredictor V1 (comfyui_musev_evolved)": 0.3919410832855843, + "MuseVImg2Vid V1 (comfyui_musev_evolved)": 0.3919410832855843, + "FaceShaper": 0.3919410832855843, + "FaceShaperModels": 0.3919410832855843, + "FaceAlign": 0.3919410832855843, + "Text To Image (mtb)": 0.3919410832855843, + "easy promptLine": 0.3919410832855843, + "Bounded Image Blend": 0.3919410832855843, + "CLIPConditioning": 0.3919410832855843, + "CheckpointLoaderMixWithDiffusers": 0.3919410832855843, + "SelfGuidanceSampler": 0.3919410832855843, + "Auto-MSG-ALL": 0.3919410832855843, + "Auto-LLM-Text-Vision": 0.3919410832855843, + "Model Patch Seamless (mtb)": 0.3919410832855843, + "Image Tiled": 0.3919410832855843, + "Image Seamless Texture": 0.3919410832855843, + "ImageScaleDown": 0.3919410832855843, + "TextEncodeForSamplerParams+": 0.3919410832855843, + "NegiTools_OpenAiDalle3": 0.3919410832855843, + "DDColor_Colorize": 0.3919410832855843, + "ChangeLatentBatchSize //Inspire": 0.3919410832855843, + "file_padding": 0.3919410832855843, + "TextCombinations": 0.3919410832855843, + "EG_TSCMB_GL": 0.3919410832855843, + "SeargeControlnetAdapterV2": 0.3919410832855843, + "LensBlur": 0.3919410832855843, + "EditDetailerPipe": 0.3919410832855843, + "Storydiffusion_Model_Loader": 0.3919410832855843, + "Storydiffusion_Sampler": 0.3919410832855843, + "OpNovelty": 0.3919410832855843, + "OpHarmonic": 0.3919410832855843, + "OpPercussive": 0.3919410832855843, + "OpSqrt": 0.3919410832855843, + "OpPow2": 0.3919410832855843, + "OpStretch": 0.3919410832855843, + "OpNormalize": 0.3919410832855843, + "OpAbs": 0.3919410832855843, + "OpRms": 0.3919410832855843, + "LLavaOptionalMemoryFreeAdvanced": 0.3919410832855843, + "LoadTextFile": 0.3919410832855843, + "AudioToAudioData": 0.3919410832855843, + "Mask Switch (JPS)": 0.3919410832855843, + "CannyEdgeMask": 0.3919410832855843, + "CR Set Switch From String": 0.3919410832855843, + "CR Aspect Ratio Social Media": 0.3919410832855843, + "CR Select Resize Method": 0.3919410832855843, + "OmostLoadCanvasConditioningNode": 0.3919410832855843, + "Demofusion": 0.3919410832855843, + "ImageAlphaComposite": 0.3919410832855843, + "GPT4MiniNode": 0.3919410832855843, + "SystemNotification|pysssss": 0.3919410832855843, + "PromptGenerateAPI": 0.3919410832855843, + "easy imageCropFromMask": 0.3919410832855843, + "easy pulIDApplyADV": 0.3919410832855843, + "IterativeMixingSampler": 0.3919410832855843, + "IterativeMixingScheduler": 0.3919410832855843, + "KeyframeApply": 0.3919410832855843, + "easy convertAnything": 0.3919410832855843, + "SaveImageToLocal": 0.3919410832855843, + "CombineNoiseLatentNode": 0.3919410832855843, + "SamplerInversedEulerNode": 0.3919410832855843, + "Generation Parameter Input": 0.3919410832855843, + "CR Img2Img Process Switch": 0.3919410832855843, + "SeargeSamplerInputs": 0.3919410832855843, + "SeargeSDXLSamplerV3": 0.3919410832855843, + "TilePreprocessor_Provider_for_SEGS //Inspire": 0.3919410832855843, + "ADE_InputPIA_PaperPresets": 0.3919410832855843, + "ADE_MultivalDynamicFloatInput": 0.3919410832855843, + "KeyInput": 0.3919410832855843, + "CharacterCount": 0.3919410832855843, + "ABCondition": 0.3919410832855843, + "FaceBBoxDetect(FaceParsing)": 0.3919410832855843, + "FaceBBoxDetectorLoader(FaceParsing)": 0.3919410832855843, + "ImageCropWithBBox(FaceParsing)": 0.3919410832855843, + "BBoxListItemSelect(FaceParsing)": 0.3919410832855843, + "ColorAdjust(FaceParsing)": 0.3919410832855843, + "ImageInsertWithBBox(FaceParsing)": 0.3919410832855843, + "LayerUtility: BatchSelector": 0.3919410832855843, + "PromptInjection": 0.3919410832855843, + "SeargeSDXLBasePromptEncoder": 0.3919410832855843, + "LongCLIPTextEncodeFlux": 0.3919410832855843, + "Fans Styler": 0.3919410832855843, + "KuwaharaBlur": 0.3919410832855843, + "Saturation": 0.3919410832855843, + "CR Load Flow Frames": 0.3919410832855843, + "ShowSelfAttn": 0.3919410832855843, + "HFModelLoader": 0.3919410832855843, + "Text2ImageInference": 0.3919410832855843, + "DecodeLatent": 0.3919410832855843, + "ShowCrossAttn": 0.3919410832855843, + "PromptUtilitiesFormatString": 0.3919410832855843, + "StructuredOutput": 0.3919410832855843, + "CheckpointLoaderSimpleWithPreviews": 0.3919410832855843, + "LayerUtility: ImageScaleRestore": 0.3919410832855843, + "ExpressionEditor_": 0.3919410832855843, + "ADE_IterationOptsFreeInit": 0.3919410832855843, + "DeepfuzePreview": 0.3919410832855843, + "DeepFuzeFaceSwap": 0.3919410832855843, + "LoadEmbedding": 0.3919410832855843, + "Prompts": 0.3919410832855843, + "OffsetMask": 0.3919410832855843, + "TaraPresetLLMConfig": 0.3919410832855843, + "TaraAdvancedComposition": 0.3919410832855843, + "MergeModels": 0.3919410832855843, + "Multiply Int Float (JPS)": 0.3919410832855843, + "MuseVRun": 0.3919410832855843, + "SEGSOrderedFilterDetailerHookProvider": 0.3919410832855843, + "StyleAlignedBatchAlign_": 0.3919410832855843, + "Gemini_15P_API_S_Chat_Advance_Zho": 0.3919410832855843, + "StyleAlignedReferenceSampler": 0.3919410832855843, + "CR Index": 0.3919410832855843, + "Generate Noise Image": 0.3919410832855843, + "ImagePadForBetterOutpaint": 0.3919410832855843, + "SeedGenerator": 0.3919410832855843, + "CR Interpolate Latents": 0.3919410832855843, + "Load Cache": 0.3919410832855843, + "Cache Node": 0.3919410832855843, + "EG_SZ_JDYS": 0.3919410832855843, + "Asymmetric_Tiling_KSampler": 0.3919410832855843, + "SMoE_ModelLoader_Zho": 0.3919410832855843, + "SMoE_Generation_Zho": 0.3919410832855843, + "FaceEmbed": 0.3919410832855843, + "LCMLora": 0.3919410832855843, + "FaceSwapSetupPipeline": 0.3919410832855843, + "FaceSwapGenerationInpaint": 0.3919410832855843, + "Resolution Multiply (JPS)": 0.3919410832855843, + "ImageOverlay": 0.3919410832855843, + "ApplyVisualStyle": 0.3919410832855843, + "omost_decode": 0.3919410832855843, + "DYNAMIC_TRT_MODEL_CONVERSION": 0.3919410832855843, + "APISR_ModelLoader_Zho": 0.3919410832855843, + "APISR_Zho": 0.3919410832855843, + "easy applyPowerPaint": 0.3919410832855843, + "easy applyBrushNet": 0.3919410832855843, + "easy icLightApply": 0.3919410832855843, + "easy controlnetStack": 0.3919410832855843, + "JDCN_BatchImageLoadFromDir": 0.3919410832855843, + "sdBxb_textInput": 0.3919410832855843, + "LayeredDiffusionCondApply": 0.3919410832855843, + "CreativeArtPromptGenerator": 0.3919410832855843, + "LayerColor: RGB": 0.3919410832855843, + "Gemini_API_S_Chat_Zho": 0.3919410832855843, + "EZLoadImgBatchFromUrlsNode": 0.3919410832855843, + "ListSplit_": 0.3919410832855843, + "EG_HT_YSTZ": 0.3919410832855843, + "JsonToText": 0.3919410832855843, + "KeywordExtraction": 0.3919410832855843, + "LLavaPromptGenerator": 0.3919410832855843, + "CLIPTextEncode_party": 0.3919410832855843, + "Fooocus negative": 0.3919410832855843, + "Fooocus PreKSampler": 0.3919410832855843, + "Fooocus KSampler": 0.3919410832855843, + "Fooocus Controlnet": 0.3919410832855843, + "Fooocus Loader": 0.3919410832855843, + "Fooocus Styles": 0.3919410832855843, + "Fooocus positive": 0.3919410832855843, + "Sine Camera Pan [DVB]": 0.3919410832855843, + "XY Input: Lora Block Weight //Inspire": 0.3919410832855843, + "XY Input: Checkpoint": 0.3919410832855843, + "ClipClamp": 0.3919410832855843, + "DodgeAndBurn": 0.3919410832855843, + "FluxResolutionNode": 0.3919410832855843, + "MirroredImage": 0.3919410832855843, + "DiffusersTextureInversionLoader": 0.3919410832855843, + "LoRA Stack to String converter": 0.3919410832855843, + "JNodes_TokenCounter": 0.3919410832855843, + "Text to String": 0.3919410832855843, + "ollama": 0.3919410832855843, + "LayerUtility: ImageScaleByAspectRatio": 0.3919410832855843, + "Image Save with Prompt File (WLSH)": 0.3919410832855843, + "LayerStyle: Gradient Map": 0.3919410832855843, + "Load Image Based on Number": 0.3919410832855843, + "Canny_Preprocessor_Provider_for_SEGS //Inspire": 0.3919410832855843, + "LayerUtility: ImageAutoCrop V2": 0.3919410832855843, + "OllamaNode": 0.3919410832855843, + "ADE_CustomCFG": 0.3919410832855843, + "LayerStyle: Stroke": 0.3919410832855843, + "NoiseImage": 0.3919410832855843, + "FL_Ascii": 0.3919410832855843, + "TextCombinerTwo": 0.3919410832855843, + "MutualSelfAttentionControlSampler": 0.3919410832855843, + "MasaCtrlModelLoader": 0.3919410832855843, + "MasaCtrlInversion": 0.3919410832855843, + "MutualSelfAttentionControlMaskAutoSampler": 0.3919410832855843, + "MasaCtrlLoadImage": 0.3919410832855843, + "DirectSampler": 0.3919410832855843, + "JDCN_AnyFileSelector": 0.3919410832855843, + "JDCN_AnyFileList": 0.3919410832855843, + "ttN pipeLoaderSDXL": 0.3919410832855843, + "ttN pipeKSamplerSDXL": 0.3919410832855843, + "chaosaiart_Any_Switch_small": 0.3919410832855843, + "ImageFilterStackBlur": 0.3919410832855843, + "JDC_Plasma": 0.3919410832855843, + "CR Repeater": 0.3919410832855843, + "lavibridge_model_loader": 0.3919410832855843, + "lavi_bridge_t5_encoder": 0.3919410832855843, + "lavibridge_sampler": 0.3919410832855843, + "JWImageMix": 0.3919410832855843, + "String to Float": 0.3919410832855843, + "IF_DisplayOmni": 0.3919410832855843, + "OmostGreedyBagsTextEmbeddingNode": 0.3919410832855843, + "LoadImageFromPath": 0.3919410832855843, + "AnimateDiffLoraLoader": 0.3919410832855843, + "DiffusersModelMakeup": 0.3919410832855843, + "CreateIntListNode": 0.3919410832855843, + "LcmLoraLoader": 0.3919410832855843, + "DiffusersVaeLoader": 0.3919410832855843, + "StreamDiffusionCreateStream": 0.3919410832855843, + "DiffusersSchedulerLoader": 0.3919410832855843, + "StreamDiffusionSampler": 0.3919410832855843, + "DiffusersPipelineLoader": 0.3919410832855843, + "DiffusersClipTextEncode": 0.3919410832855843, + "MiDaS Model Loader": 0.3919410832855843, + "MiDaS Depth Approximation": 0.3919410832855843, + "LayerFilter: MotionBlur": 0.3919410832855843, + "Image size to string": 0.3919410832855843, + "Echo_LoadModel": 0.3919410832855843, + "Echo_Sampler": 0.3919410832855843, + "KSamplerProgress //Inspire": 0.3919410832855843, + "UnsamplerFlattenNode": 0.3919410832855843, + "TrajectoryNode": 0.3919410832855843, + "KSamplerFlattenNode": 0.3919410832855843, + "FlattenCheckpointLoaderNode": 0.3919410832855843, + "roop": 0.3919410832855843, + "Image Contrast Adjustment [Dream]": 0.3919410832855843, + "MotionLoraLoader": 0.3919410832855843, + "I2V_AdapterNode": 0.3919410832855843, + "Export API": 0.3919410832855843, + "MaskFrameSkipping": 0.3919410832855843, + "scale": 0.3919410832855843, + "Loop": 0.3919410832855843, + "LoopEnd": 0.3919410832855843, + "LoopStart": 0.3919410832855843, + "LayerFilter: ChannelShake": 0.3919410832855843, + "LayerFilter: LightLeak": 0.3919410832855843, + "LayerFilter: ColorMap": 0.3919410832855843, + "LayerFilter: AddGrain": 0.3919410832855843, + "LayerFilter: FilmV2": 0.3919410832855843, + "CamerasImage_Zho": 0.3919410832855843, + "CopyMakeBorder": 0.3919410832855843, + "UnGridify (image)": 0.3919410832855843, + "Repeat Into Grid (image)": 0.3919410832855843, + "Color (hexadecimal)": 0.3919410832855843, + "Contours": 0.3919410832855843, + "Draw Contour(s)": 0.3919410832855843, + "ToModelList": 0.3919410832855843, + "Framed Mask Grab Cut 2": 0.3919410832855843, + "InpaintResize": 0.3919410832855843, + "PerpNegAdaptiveGuidanceGuider": 0.3919410832855843, + "Images as Latents (PPF Noise)": 0.3919410832855843, + "Perlin Power Fractal Latent (PPF Noise)": 0.3919410832855843, + "Cross-Hatch Power Fractal (PPF Noise)": 0.3919410832855843, + "Linear Cross-Hatch Power Fractal (PPF Noise)": 0.3919410832855843 } \ No newline at end of file diff --git a/scripts/cicd/resolve-comfyui-release.ts b/scripts/cicd/resolve-comfyui-release.ts new file mode 100755 index 000000000..b1d4c1156 --- /dev/null +++ b/scripts/cicd/resolve-comfyui-release.ts @@ -0,0 +1,254 @@ +#!/usr/bin/env tsx +import { execSync } from 'child_process' +import fs from 'fs' +import path from 'path' + +interface ReleaseInfo { + current_version: string + target_minor: number + target_version: string + target_branch: string + needs_release: boolean + latest_patch_tag: string | null + branch_head_sha: string | null + tag_commit_sha: string | null + diff_url: string + release_pr_url: string | null +} + +/** + * Execute a command and return stdout + */ +function exec(command: string, cwd?: string): string { + try { + return execSync(command, { + cwd, + encoding: 'utf-8', + stdio: ['pipe', 'pipe', 'pipe'] + }).trim() + } catch (error) { + const errorMessage = error instanceof Error ? error.message : String(error) + const cwdInfo = cwd ? ` in directory: ${cwd}` : '' + console.error( + `Command failed: ${command}${cwdInfo}\nError: ${errorMessage}` + ) + return '' + } +} + +/** + * Parse version from requirements.txt + * Handles formats: comfyui-frontend-package==1.2.3, comfyui-frontend-package>=1.2.3, etc. + */ +function parseRequirementsVersion(requirementsPath: string): string | null { + if (!fs.existsSync(requirementsPath)) { + console.error(`Requirements file not found: ${requirementsPath}`) + return null + } + + const content = fs.readFileSync(requirementsPath, 'utf-8') + const match = content.match( + /comfyui-frontend-package\s*(?:==|>=|<=|~=|>|<)\s*([0-9]+\.[0-9]+\.[0-9]+)/ + ) + + if (!match) { + console.error( + 'Could not find comfyui-frontend-package version in requirements.txt' + ) + return null + } + + return match[1] +} + +/** + * Validate semantic version string + */ +function isValidSemver(version: string): boolean { + if (!version || typeof version !== 'string') { + return false + } + + const parts = version.split('.') + if (parts.length !== 3) { + return false + } + + return parts.every((part) => { + const num = Number(part) + return Number.isFinite(num) && num >= 0 && String(num) === part + }) +} + +/** + * Get the latest patch tag for a given minor version + */ +function getLatestPatchTag(repoPath: string, minor: number): string | null { + // Fetch all tags + exec('git fetch --tags', repoPath) + + // Use git's native version sorting to get the latest tag + const latestTag = exec( + `git tag -l 'v1.${minor}.*' --sort=-version:refname | head -n 1`, + repoPath + ) + + if (!latestTag) { + return null + } + + // Validate the tag is a valid semver (vX.Y.Z format) + const validTagRegex = /^v\d+\.\d+\.\d+$/ + if (!validTagRegex.test(latestTag)) { + console.error( + `Latest tag for minor version ${minor} is not valid semver: ${latestTag}` + ) + return null + } + + return latestTag +} + +/** + * Resolve the ComfyUI release information + */ +function resolveRelease( + comfyuiRepoPath: string, + frontendRepoPath: string +): ReleaseInfo | null { + // Parse current version from ComfyUI requirements.txt + const requirementsPath = path.join(comfyuiRepoPath, 'requirements.txt') + const currentVersion = parseRequirementsVersion(requirementsPath) + + if (!currentVersion) { + return null + } + + // Validate version format + if (!isValidSemver(currentVersion)) { + console.error( + `Invalid semantic version format: ${currentVersion}. Expected format: X.Y.Z` + ) + return null + } + + const [major, currentMinor, patch] = currentVersion.split('.').map(Number) + + // Calculate target minor version (next minor) + const targetMinor = currentMinor + 1 + const targetBranch = `core/1.${targetMinor}` + + // Check if target branch exists in frontend repo + exec('git fetch origin', frontendRepoPath) + const branchExists = exec( + `git rev-parse --verify origin/${targetBranch}`, + frontendRepoPath + ) + + if (!branchExists) { + console.error( + `Target branch ${targetBranch} does not exist in frontend repo` + ) + return null + } + + // Get latest patch tag for target minor + const latestPatchTag = getLatestPatchTag(frontendRepoPath, targetMinor) + + let needsRelease = false + let branchHeadSha: string | null = null + let tagCommitSha: string | null = null + let targetVersion = currentVersion + + if (latestPatchTag) { + // Get commit SHA for the tag + tagCommitSha = exec(`git rev-list -n 1 ${latestPatchTag}`, frontendRepoPath) + + // Get commit SHA for branch head + branchHeadSha = exec( + `git rev-parse origin/${targetBranch}`, + frontendRepoPath + ) + + // Check if there are commits between tag and branch head + const commitsBetween = exec( + `git rev-list ${latestPatchTag}..origin/${targetBranch} --count`, + frontendRepoPath + ) + + const commitCount = parseInt(commitsBetween, 10) + needsRelease = !isNaN(commitCount) && commitCount > 0 + + // Parse existing patch number and increment if needed + const tagVersion = latestPatchTag.replace('v', '') + + // Validate tag version format + if (!isValidSemver(tagVersion)) { + console.error( + `Invalid tag version format: ${tagVersion}. Expected format: X.Y.Z` + ) + return null + } + + const [, , existingPatch] = tagVersion.split('.').map(Number) + + // Validate existingPatch is a valid number + if (!Number.isFinite(existingPatch) || existingPatch < 0) { + console.error(`Invalid patch number in tag: ${existingPatch}`) + return null + } + + if (needsRelease) { + targetVersion = `1.${targetMinor}.${existingPatch + 1}` + } else { + targetVersion = tagVersion + } + } else { + // No tags exist for this minor version, need to create v1.{targetMinor}.0 + needsRelease = true + targetVersion = `1.${targetMinor}.0` + branchHeadSha = exec( + `git rev-parse origin/${targetBranch}`, + frontendRepoPath + ) + } + + const diffUrl = `https://github.com/Comfy-Org/ComfyUI_frontend/compare/v${currentVersion}...v${targetVersion}` + + return { + current_version: currentVersion, + target_minor: targetMinor, + target_version: targetVersion, + target_branch: targetBranch, + needs_release: needsRelease, + latest_patch_tag: latestPatchTag, + branch_head_sha: branchHeadSha, + tag_commit_sha: tagCommitSha, + diff_url: diffUrl, + release_pr_url: null // Will be populated by workflow if release is triggered + } +} + +// Main execution +const comfyuiRepoPath = process.argv[2] +const frontendRepoPath = process.argv[3] || process.cwd() + +if (!comfyuiRepoPath) { + console.error( + 'Usage: resolve-comfyui-release.ts [frontend-repo-path]' + ) + process.exit(1) +} + +const releaseInfo = resolveRelease(comfyuiRepoPath, frontendRepoPath) + +if (!releaseInfo) { + console.error('Failed to resolve release information') + process.exit(1) +} + +// Output as JSON for GitHub Actions +// eslint-disable-next-line no-console +console.log(JSON.stringify(releaseInfo, null, 2)) + +export { resolveRelease } diff --git a/scripts/collect-i18n-general.ts b/scripts/collect-i18n-general.ts index 1bbcb2060..5165e89be 100644 --- a/scripts/collect-i18n-general.ts +++ b/scripts/collect-i18n-general.ts @@ -1,5 +1,8 @@ import * as fs from 'fs' +// Import Vite define shim to make __DISTRIBUTION__ and other define variables available +import './vite-define-shim' + import { DESKTOP_DIALOGS } from '../apps/desktop-ui/src/constants/desktopDialogs' import { comfyPageFixture as test } from '../browser_tests/fixtures/ComfyPage' import { diff --git a/scripts/vite-define-shim.ts b/scripts/vite-define-shim.ts new file mode 100644 index 000000000..e12b126f3 --- /dev/null +++ b/scripts/vite-define-shim.ts @@ -0,0 +1,46 @@ +/** + * Shim for Vite define variables to make them available during Playwright test execution + * This file should be imported before any code that uses Vite define variables + */ + +// Define global constants that Vite would normally replace at build time +declare global { + const __COMFYUI_FRONTEND_VERSION__: string + const __SENTRY_ENABLED__: boolean + const __SENTRY_DSN__: string + const __ALGOLIA_APP_ID__: string + const __ALGOLIA_API_KEY__: string + const __USE_PROD_CONFIG__: boolean + const __DISTRIBUTION__: 'desktop' | 'localhost' | 'cloud' +} + +type GlobalWithDefines = typeof globalThis & { + __COMFYUI_FRONTEND_VERSION__: string + __SENTRY_ENABLED__: boolean + __SENTRY_DSN__: string + __ALGOLIA_APP_ID__: string + __ALGOLIA_API_KEY__: string + __USE_PROD_CONFIG__: boolean + __DISTRIBUTION__: 'desktop' | 'localhost' | 'cloud' + window?: Record +} + +const globalWithDefines = globalThis as GlobalWithDefines + +// Set default values for Playwright test environment +globalWithDefines.__COMFYUI_FRONTEND_VERSION__ = + process.env.npm_package_version || '1.0.0' +globalWithDefines.__SENTRY_ENABLED__ = false +globalWithDefines.__SENTRY_DSN__ = '' +globalWithDefines.__ALGOLIA_APP_ID__ = '' +globalWithDefines.__ALGOLIA_API_KEY__ = '' +globalWithDefines.__USE_PROD_CONFIG__ = false +globalWithDefines.__DISTRIBUTION__ = 'localhost' + +// Provide a minimal window shim for Node environment +// This is needed for code that checks window existence during imports +if (typeof window === 'undefined') { + globalWithDefines.window = {} +} + +export {} diff --git a/src/components/LiteGraphCanvasSplitterOverlay.vue b/src/components/LiteGraphCanvasSplitterOverlay.vue index 1bb9e89c7..960b0cfac 100644 --- a/src/components/LiteGraphCanvasSplitterOverlay.vue +++ b/src/components/LiteGraphCanvasSplitterOverlay.vue @@ -14,10 +14,10 @@ + + + + + @@ -92,9 +102,11 @@ import { computed } from 'vue' import { useSettingStore } from '@/platform/settings/settingStore' import { useBottomPanelStore } from '@/stores/workspace/bottomPanelStore' +import { useRightSidePanelStore } from '@/stores/workspace/rightSidePanelStore' import { useSidebarTabStore } from '@/stores/workspace/sidebarTabStore' const settingStore = useSettingStore() +const rightSidePanelStore = useRightSidePanelStore() const sidebarLocation = computed<'left' | 'right'>(() => settingStore.get('Comfy.Sidebar.Location') ) @@ -109,6 +121,7 @@ const sidebarPanelVisible = computed( const bottomPanelVisible = computed( () => useBottomPanelStore().bottomPanelVisible ) +const rightSidePanelVisible = computed(() => rightSidePanelStore.isOpen) const activeSidebarTabId = computed( () => useSidebarTabStore().activeSidebarTabId ) @@ -120,6 +133,21 @@ const sidebarStateKey = computed(() => { // When no tab is active, use a default key to maintain state return activeSidebarTabId.value ?? 'default-sidebar' }) + +/** + * Force refresh the splitter when right panel visibility changes to recalculate the width + */ +const splitterRefreshKey = computed(() => { + return rightSidePanelVisible.value + ? 'main-splitter-with-right-panel' + : 'main-splitter' +}) + +// Gutter visibility should be controlled by CSS targeting specific gutters +const getSplitterGutterClasses = computed(() => { + // Empty string - let individual gutter styles handle visibility + return '' +}) diff --git a/src/components/queue/CompletionSummaryBanner.vue b/src/components/queue/CompletionSummaryBanner.vue index 859df1a25..49fc5e497 100644 --- a/src/components/queue/CompletionSummaryBanner.vue +++ b/src/components/queue/CompletionSummaryBanner.vue @@ -1,8 +1,10 @@ diff --git a/src/components/queue/QueueOverlayActive.vue b/src/components/queue/QueueOverlayActive.vue index 28e6b927a..abb3ae982 100644 --- a/src/components/queue/QueueOverlayActive.vue +++ b/src/components/queue/QueueOverlayActive.vue @@ -42,17 +42,19 @@ t('sideToolbar.queueProgressOverlay.running') }} - +
@@ -62,26 +64,28 @@ t('sideToolbar.queueProgressOverlay.queuedSuffix') }} - +
- + /> @@ -90,6 +94,8 @@ import { computed } from 'vue' import { useI18n } from 'vue-i18n' +import IconButton from '@/components/button/IconButton.vue' +import TextButton from '@/components/button/TextButton.vue' import { buildTooltipConfig } from '@/composables/useTooltipConfig' defineProps<{ diff --git a/src/components/queue/QueueOverlayExpanded.vue b/src/components/queue/QueueOverlayExpanded.vue index 7bae2bbd0..64e8458e0 100644 --- a/src/components/queue/QueueOverlayExpanded.vue +++ b/src/components/queue/QueueOverlayExpanded.vue @@ -8,17 +8,20 @@ />
- + +
- +
@@ -75,6 +80,8 @@ import { ref } from 'vue' import { useI18n } from 'vue-i18n' +import IconButton from '@/components/button/IconButton.vue' +import IconTextButton from '@/components/button/IconTextButton.vue' import type { JobGroup, JobListItem, diff --git a/src/components/queue/QueueOverlayHeader.vue b/src/components/queue/QueueOverlayHeader.vue index 548d21d73..9b45cc57b 100644 --- a/src/components/queue/QueueOverlayHeader.vue +++ b/src/components/queue/QueueOverlayHeader.vue @@ -18,16 +18,18 @@
- + - + +
@@ -69,6 +72,8 @@ import type { PopoverMethods } from 'primevue/popover' import { computed, ref } from 'vue' import { useI18n } from 'vue-i18n' +import IconButton from '@/components/button/IconButton.vue' +import IconTextButton from '@/components/button/IconTextButton.vue' import { buildTooltipConfig } from '@/composables/useTooltipConfig' defineProps<{ diff --git a/src/components/queue/QueueProgressOverlay.vue b/src/components/queue/QueueProgressOverlay.vue index 7825b69a4..cf4d88fba 100644 --- a/src/components/queue/QueueProgressOverlay.vue +++ b/src/components/queue/QueueProgressOverlay.vue @@ -85,9 +85,15 @@ import { useSidebarTabStore } from '@/stores/workspace/sidebarTabStore' type OverlayState = 'hidden' | 'empty' | 'active' | 'expanded' -const props = defineProps<{ - expanded?: boolean -}>() +const props = withDefaults( + defineProps<{ + expanded?: boolean + menuHovered?: boolean + }>(), + { + menuHovered: false + } +) const emit = defineEmits<{ (e: 'update:expanded', value: boolean): void @@ -110,6 +116,7 @@ const { currentNodeProgressStyle } = useQueueProgress() const isHovered = ref(false) +const isOverlayHovered = computed(() => isHovered.value || props.menuHovered) const internalExpanded = ref(false) const isExpanded = computed({ get: () => @@ -142,7 +149,7 @@ const showBackground = computed( () => overlayState.value === 'expanded' || overlayState.value === 'empty' || - (overlayState.value === 'active' && isHovered.value) + (overlayState.value === 'active' && isOverlayHovered.value) ) const isVisible = computed(() => overlayState.value !== 'hidden') @@ -156,7 +163,7 @@ const containerClass = computed(() => const bottomRowClass = computed( () => `flex items-center justify-end gap-4 transition-opacity duration-200 ease-in-out ${ - overlayState.value === 'active' && isHovered.value + overlayState.value === 'active' && isOverlayHovered.value ? 'opacity-100 pointer-events-auto' : 'opacity-0 pointer-events-none' }` diff --git a/src/components/queue/dialogs/QueueClearHistoryDialog.vue b/src/components/queue/dialogs/QueueClearHistoryDialog.vue index e4cc36c56..49283b717 100644 --- a/src/components/queue/dialogs/QueueClearHistoryDialog.vue +++ b/src/components/queue/dialogs/QueueClearHistoryDialog.vue @@ -8,13 +8,15 @@

{{ t('sideToolbar.queueProgressOverlay.clearHistoryDialogTitle') }}

- +
@@ -30,21 +32,19 @@
- - + />
@@ -54,6 +54,8 @@ import { ref } from 'vue' import { useI18n } from 'vue-i18n' +import IconButton from '@/components/button/IconButton.vue' +import TextButton from '@/components/button/TextButton.vue' import { useErrorHandling } from '@/composables/useErrorHandling' import { useDialogStore } from '@/stores/dialogStore' import { useQueueStore } from '@/stores/queueStore' diff --git a/src/components/queue/job/JobContextMenu.vue b/src/components/queue/job/JobContextMenu.vue index 56106e5f1..3efb6735b 100644 --- a/src/components/queue/job/JobContextMenu.vue +++ b/src/components/queue/job/JobContextMenu.vue @@ -20,21 +20,24 @@
- + +
@@ -44,6 +47,7 @@ import Popover from 'primevue/popover' import { ref } from 'vue' +import IconTextButton from '@/components/button/IconTextButton.vue' import type { MenuEntry } from '@/composables/queue/useJobMenu' defineProps<{ entries: MenuEntry[] }>() diff --git a/src/components/queue/job/JobDetailsPopover.vue b/src/components/queue/job/JobDetailsPopover.vue index 2061c79be..73024f59b 100644 --- a/src/components/queue/job/JobDetailsPopover.vue +++ b/src/components/queue/job/JobDetailsPopover.vue @@ -20,17 +20,18 @@ class="flex min-w-0 items-center text-[0.75rem] leading-normal font-normal text-text-secondary" > {{ row.value }} - +
@@ -60,25 +61,31 @@ {{ t('queue.jobDetails.errorMessage') }}
- - + +
- + />
- + -
- + @@ -110,7 +112,7 @@ count: totalOutputCount }) " - type="transparent" + type="secondary" :class="isCompact ? 'text-left' : ''" @click="handleDeselectAll" /> @@ -199,6 +201,9 @@ const folderPromptId = ref(null) const folderExecutionTime = ref(undefined) const isInFolderView = computed(() => folderPromptId.value !== null) +// Track which asset's context menu is open (for single-instance context menu management) +const openContextMenuId = ref(null) + // Determine if delete button should be shown // Hide delete button when in input tab and not in cloud (OSS mode - files are from local folders) const shouldShowDeleteButton = computed(() => { @@ -208,7 +213,7 @@ const shouldShowDeleteButton = computed(() => { const getOutputCount = (item: AssetItem): number => { const count = item.user_metadata?.outputCount - return typeof count === 'number' && count > 0 ? count : 0 + return typeof count === 'number' && count > 0 ? count : 1 } const shouldShowOutputCount = (item: AssetItem): boolean => { diff --git a/src/components/sidebar/tabs/nodeLibrary/NodeHelpPage.vue b/src/components/sidebar/tabs/nodeLibrary/NodeHelpPage.vue index ca7574cf6..82408845e 100644 --- a/src/components/sidebar/tabs/nodeLibrary/NodeHelpPage.vue +++ b/src/components/sidebar/tabs/nodeLibrary/NodeHelpPage.vue @@ -12,234 +12,21 @@ /> {{ node.display_name }}
-
- - -
- -
-

- {{ $t('g.description') }}: {{ node.description }} -

- -
-

- {{ $t('nodeHelpPage.inputs') }}: -

- - - - - - - - - - - - - - - - -
{{ $t('g.name') }}{{ $t('nodeHelpPage.type') }}{{ $t('g.description') }}
- {{ input.name }} - {{ input.type }}{{ input.tooltip || '-' }}
-
- -
-

- {{ $t('nodeHelpPage.outputs') }}: -

- - - - - - - - - - - - - - - -
{{ $t('g.name') }}{{ $t('nodeHelpPage.type') }}{{ $t('g.description') }}
- {{ output.name }} - {{ output.type }}{{ output.tooltip || '-' }}
-
-
+
+
- - diff --git a/src/components/topbar/ActionBarButtons.vue b/src/components/topbar/ActionBarButtons.vue index 81b5c42ad..c7bf82113 100644 --- a/src/components/topbar/ActionBarButtons.vue +++ b/src/components/topbar/ActionBarButtons.vue @@ -4,7 +4,7 @@ v-for="(button, index) in actionBarButtonStore.buttons" :key="index" v-tooltip.bottom="button.tooltip" - :label="button.label" + :label="isMobile ? undefined : button.label" :aria-label="button.tooltip || button.label" :class="button.class" text @@ -21,9 +21,13 @@ diff --git a/src/components/topbar/TryVueNodeBanner.vue b/src/components/topbar/TryVueNodeBanner.vue index a852b8e9e..17e22ba93 100644 --- a/src/components/topbar/TryVueNodeBanner.vue +++ b/src/components/topbar/TryVueNodeBanner.vue @@ -3,9 +3,12 @@ v-if="showVueNodesBanner" class="pointer-events-auto relative w-full h-10 bg-gradient-to-r from-blue-600 to-blue-700 flex items-center justify-center px-4" > -
+
- {{ $t('vueNodesBanner.message') }} + {{ $t('vueNodesBanner.title') }} +