Depth Toolkit v3: conditioning, geometry, parallax, and live 3D (#14)

* feat: transform depth nodes into a complete v3 depth toolkit

* fix(ci): validate metadata on Python 3.10
This commit is contained in:
Gökay Aydoğan
2026-08-01 09:55:09 +03:00
committed by GitHub
parent 2f0eb6a64a
commit a9e20b7764
22 changed files with 1042 additions and 193 deletions
+53 -11
View File
@@ -3,27 +3,69 @@ name: CI
on:
pull_request:
push:
branches:
- main
branches: [main]
permissions:
contents: read
jobs:
test:
runs-on: ubuntu-latest
python:
name: Python ${{ matrix.python }} / ${{ matrix.os }}
runs-on: ${{ matrix.os }}
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.12", "3.14"]
include:
- os: ubuntu-latest
python: "3.10"
- os: ubuntu-latest
python: "3.13"
- os: windows-latest
python: "3.12"
- os: macos-latest
python: "3.12"
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
python-version: ${{ matrix.python }}
cache: pip
- run: python -m pip install -r requirements.txt pytest
- run: python -m compileall -q .
- run: pytest -q
- run: node --input-type=module --check < web/visualization.js
- run: node --check web/js/threeVisualizer.mjs
- name: Install CPU PyTorch
if: runner.os != 'macOS'
run: python -m pip install --disable-pip-version-check --index-url https://download.pytorch.org/whl/cpu torch
- name: Install CPU PyTorch on macOS
if: runner.os == 'macOS'
run: python -m pip install --disable-pip-version-check torch
- name: Install test dependencies
run: python -m pip install --disable-pip-version-check -r requirements.txt pytest tomli
- name: Compile Python
run: python -m compileall -q .
- name: Test
run: pytest -q
- name: Validate Registry metadata
run: python -c "import pathlib,tomli; d=tomli.loads(pathlib.Path('pyproject.toml').read_text('utf-8')); assert d['project']['version']=='3.0.0'; assert d['tool']['comfy']['PublisherId']=='gokayfem'"
frontend:
name: Frontend and examples
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v6
- name: Check browser modules
run: |
node --input-type=module --check < web/viewer_extension_3_0.js
node --check web/js/threeVisualizer.mjs
node --check web/vendor/three.module.min.mjs
node --check web/vendor/three.core.min.mjs
- name: Reject runtime CDN imports
run: |
if grep -R -n -E 'https?://|@latest' web --include='*.html' --include='*.js' --include='*.mjs' --exclude-dir=vendor; then
echo 'Runtime remote dependency found.' >&2
exit 1
fi
- name: Validate example JSON
run: |
for file in examples/workflows/*.json examples/api/*.json; do
python -m json.tool "$file" >/dev/null
done
+43
View File
@@ -0,0 +1,43 @@
name: Publish to Comfy Registry
on:
workflow_dispatch:
push:
branches: [main]
paths:
- "pyproject.toml"
- ".github/workflows/publish.yml"
concurrency:
group: comfy-registry-${{ github.repository }}
cancel-in-progress: false
permissions:
contents: read
jobs:
publish-node:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v6
- name: Check Registry credential
id: credential
env:
REGISTRY_ACCESS_TOKEN: ${{ secrets.REGISTRY_ACCESS_TOKEN }}
shell: bash
run: |
if [[ -n "$REGISTRY_ACCESS_TOKEN" ]]; then
echo "available=true" >> "$GITHUB_OUTPUT"
else
echo "available=false" >> "$GITHUB_OUTPUT"
echo "::warning title=Registry publish skipped::Add the REGISTRY_ACCESS_TOKEN repository secret to enable publishing."
fi
- name: Publish Custom Node
if: steps.credential.outputs.available == 'true'
uses: Comfy-Org/publish-node-action@main
with:
personal_access_token: ${{ secrets.REGISTRY_ACCESS_TOKEN }}
- name: Record skipped publication
if: steps.credential.outputs.available != 'true'
run: echo "Registry publication was skipped because REGISTRY_ACCESS_TOKEN is not configured." >> "$GITHUB_STEP_SUMMARY"
-114
View File
@@ -1,114 +0,0 @@
name: Publish to Comfy registry
on:
workflow_dispatch:
push:
branches:
- main
paths:
- "pyproject.toml"
- ".github/workflows/publish_action.yml"
concurrency:
group: comfy-registry-${{ github.repository }}
cancel-in-progress: false
env:
COMFY_CLI_VERSION: "1.13.0"
jobs:
publish-node:
name: Publish Custom Node to registry
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
contents: read
steps:
- name: Check out code
uses: actions/checkout@v7
- name: Set up Python
uses: actions/setup-python@v7
with:
python-version: "3.12"
- name: Read release metadata
id: metadata
run: |
python - <<'PY'
import os
import tomllib
from pathlib import Path
metadata = tomllib.loads(Path("pyproject.toml").read_text(encoding="utf-8"))
node_id = metadata["project"]["name"]
version = metadata["project"]["version"]
publisher = metadata["tool"]["comfy"]["PublisherId"]
if publisher != "gokayfem":
raise SystemExit(f"Expected publisher 'gokayfem', found {publisher!r}")
with Path(os.environ["GITHUB_OUTPUT"]).open("a", encoding="utf-8") as output:
print(f"node_id={node_id}", file=output)
print(f"version={version}", file=output)
PY
- name: Check Registry version
id: registry
env:
NODE_ID: ${{ steps.metadata.outputs.node_id }}
VERSION: ${{ steps.metadata.outputs.version }}
run: |
python - <<'PY'
import json
import os
import urllib.parse
import urllib.request
from pathlib import Path
node_id = urllib.parse.quote(os.environ["NODE_ID"], safe="")
request = urllib.request.Request(
f"https://api.comfy.org/nodes/{node_id}/versions",
headers={"Accept": "application/json", "User-Agent": "comfy-node-publisher"},
)
with urllib.request.urlopen(request, timeout=30) as response:
versions = json.load(response)
exists = any(item.get("version") == os.environ["VERSION"] for item in versions)
with Path(os.environ["GITHUB_OUTPUT"]).open("a", encoding="utf-8") as output:
print(f"exists={'true' if exists else 'false'}", file=output)
PY
- name: Check publisher credential
if: steps.registry.outputs.exists != 'true'
id: credentials
env:
REGISTRY_ACCESS_TOKEN: ${{ secrets.REGISTRY_ACCESS_TOKEN }}
run: |
if [[ -n "$REGISTRY_ACCESS_TOKEN" ]]; then
echo "available=true" >> "$GITHUB_OUTPUT"
else
echo "available=false" >> "$GITHUB_OUTPUT"
echo "::notice title=Central publisher enabled::The secure fleet publisher will publish this release within one hour."
fi
- name: Install pinned Comfy CLI
if: steps.registry.outputs.exists != 'true' && steps.credentials.outputs.available == 'true'
shell: bash
run: python -m pip install --disable-pip-version-check "comfy-cli==${COMFY_CLI_VERSION}"
- name: Publish Custom Node
if: steps.registry.outputs.exists != 'true' && steps.credentials.outputs.available == 'true'
id: publish
continue-on-error: true
shell: bash
env:
REGISTRY_ACCESS_TOKEN: ${{ secrets.REGISTRY_ACCESS_TOKEN }}
run: comfy --skip-prompt --no-enable-telemetry node publish --token "$REGISTRY_ACCESS_TOKEN"
- name: Record publication result
env:
NODE_ID: ${{ steps.metadata.outputs.node_id }}
VERSION: ${{ steps.metadata.outputs.version }}
ALREADY_PUBLISHED: ${{ steps.registry.outputs.exists }}
PUBLISH_OUTCOME: ${{ steps.publish.outcome }}
run: |
if [[ "$ALREADY_PUBLISHED" == "true" ]]; then
echo "### $NODE_ID $VERSION already published" >> "$GITHUB_STEP_SUMMARY"
elif [[ "$PUBLISH_OUTCOME" == "success" ]]; then
echo "### Published $NODE_ID $VERSION" >> "$GITHUB_STEP_SUMMARY"
else
echo "::notice title=Central publishing handoff::The secure fleet publisher will retry this release within one hour."
echo "### $NODE_ID $VERSION queued for the fleet publisher" >> "$GITHUB_STEP_SUMMARY"
fi