Files
StableLlama 1deac10f15 bump version to 2.0.0
- Critical change that ensures reliablity and **should** have no bad side
  effects, but when you see any, please report:
  DICT, LIST, SET and Data List nodes (plus the DICT/LIST-taking STRING nodes)
  now degrade gracefully when their data source is not connected (`None`) instead
  of raising: read/query nodes return their natural "no data" result (the `get`
  default, an empty list, `False`, `0`, `None`), and transform nodes behave as if
  given an empty container.
- Add a "continue if not empty" flow-control node: it passes a value through
  unchanged when it is non-empty, and blocks execution (via an execution blocker)
  when the value is empty. It is list-aware (`INPUT_IS_LIST` / `OUTPUT_IS_LIST`),
  so it is immune to ComfyUI's empty-input batching crash and passes data lists
  through unchanged. By default the block is silent; an optional `message` can be
  set to show a dialog. Use it before nodes that cannot handle an empty input
  (e.g. a node receiving an empty Data List) to stop execution instead of failing.
2026-09-11 11:02:43 +02:00

67 lines
2.4 KiB
YAML

name: 📦 Publish to Comfy registry
on:
workflow_dispatch:
push:
branches:
- main
paths:
- "pyproject.toml"
permissions:
issues: write
jobs:
publish-node:
name: Publish Custom Node to registry
if: github.repository_owner == 'StableLlama' # prevent unwanted runs on forks
runs-on: ubuntu-latest
steps:
- name: ♻️ Check out code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install comfy-cli
run: pip install comfy-cli
- name: Extract changelog section for this version
id: changelog
run: |
python - <<'EOF'
import pathlib
import re
pyproject = pathlib.Path("pyproject.toml").read_text(encoding="utf-8")
version = re.search(r'^\s*version\s*=\s*"([^"]+)"', pyproject, re.M).group(1)
changelog = pathlib.Path("CHANGELOG.md").read_text(encoding="utf-8")
# Match headings like "## [1.7.0] - 2026-08-27", "## 1.7.0" or "## v1.7.0".
version_heading = re.compile(rf"^##\s+\[?v?{re.escape(version)}\]?\s*(?:-\s*\d{{4}}-\d{{2}}-\d{{2}})?\s*$", re.M)
# Any second-level changelog heading. This locates the *next* (older)
# release so we capture only this version's section, not the whole log.
next_heading = re.compile(r"^##\s+", re.M)
match = version_heading.search(changelog)
if match is None:
print(f"::notice::No CHANGELOG.md section found for v{version}; publishing without a changelog")
pathlib.Path("CHANGELOG_CURRENT.md").write_text("", encoding="utf-8")
else:
end = next_heading.search(changelog, match.end())
section = changelog[match.end(): end.start() if end else None].strip()
pathlib.Path("CHANGELOG_CURRENT.md").write_text(section + "\n", encoding="utf-8")
EOF
- name: 📦 Publish Custom Node
run: |
if [ -s CHANGELOG_CURRENT.md ]; then
comfy --skip-prompt --no-enable-telemetry node publish \
--token "${{ secrets.REGISTRY_ACCESS_TOKEN }}" \
--changelog-file CHANGELOG_CURRENT.md
else
comfy --skip-prompt --no-enable-telemetry node publish \
--token "${{ secrets.REGISTRY_ACCESS_TOKEN }}"
fi