Release 1.1.0. Everything here came out of using the style picker and finding the same shape of problem in several places: the connector showed the REST API's own words to someone who cannot act on them, or showed nothing at all. Errors, in one place. `friendly_error`/`short_error` (styleref_api.py) rewrite an API failure as something a node graph can act on — the Login node's Sign in button, the Search styles… dialog, generate-it-once for a 409 — and Load and Apply re-raise through them. The raw 401 told users to send an `Authorization: Bearer` header into ComfyUI's red error window, which has no buttons at all. `short_error` is the same failure at widget width; the "loaded style" line used to render the whole paragraph uncut, because the length guard sat on the success branch only. The picker: - Sign in moved to the title row. It changes what the whole dialog can show, so it is not a property of one list. - "My styles" hides itself when empty, and its rows now carry the thumbnail, category and tags a gallery row carries — with visibility (Private / Link-shared / Public) where a gallery row carries its author. A name on a blank square sat directly above real cards. - The gallery lane drops styles you own, so a published style of yours appears once rather than in both lanes. - No matches now offers /styles/create instead of a dead end. - ↓/↑ walk the rows, Enter takes the top hit, Esc closes; query, category and sort survive between opens. Load hides `search`/`category` when the dialog is available — they are the headless fallback, and next to a working button they are the same duplication the Login node's `action` dropdown was removed for. Picking also clears the query, which otherwise made every later execution run a search it did not need. Apply gains a Copy prompt button. Four of its six targets exist to be copied out of ComfyUI, and the only way to read one in full was to wire up a Preview Any node. The warning badge now matches any text encoder, not the exact class `CLIPTextEncode` — SDXL, SD3 and Flux ship their own, so it did nothing on most real graphs. Reference Images no longer fails the queue when a style has no inspiration images: it feeds IPAdapter or a preview, never the sampler, so it reports and returns an empty batch. `max_images: 0` mutes it without rewiring. Needs the matching StyleRef-Webapp deploy: the library lane's category, tags and heroImage come from /api/v1/me/styles, and its search now scores the same fields the gallery search scores. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
64 lines
2.2 KiB
TOML
64 lines
2.2 KiB
TOML
[project]
|
|
name = "styleref-comfyui"
|
|
version = "1.1.0"
|
|
description = "StyleRef nodes for ComfyUI — load a creative style once, reuse it across your workflows"
|
|
authors = [{ name = "StyleRef", email = "hello@styleref.io" }]
|
|
readme = "README.md"
|
|
license = { file = "LICENSE" }
|
|
requires-python = ">=3.9" # ComfyUI's own floor; do not raise without checking theirs
|
|
|
|
# No runtime dependencies on purpose. The pack imports with only the standard
|
|
# library; the Reference Images node uses Pillow/numpy lazily at execution
|
|
# time, which every ComfyUI install already ships. Declaring a dependency here
|
|
# is the most common way a custom node pack fails to import on someone's
|
|
# portable build.
|
|
dependencies = []
|
|
|
|
classifiers = [
|
|
"License :: OSI Approved :: MIT License",
|
|
"Programming Language :: Python :: 3",
|
|
"Intended Audience :: End Users/Desktop",
|
|
]
|
|
|
|
[project.urls]
|
|
Homepage = "https://styleref.io"
|
|
Documentation = "https://docs.styleref.io/connectors/comfyui/install-and-quickstart"
|
|
Repository = "https://github.com/StyleRef/styleref-comfyui"
|
|
"Bug Tracker" = "https://github.com/StyleRef/styleref-comfyui/issues"
|
|
|
|
[project.optional-dependencies]
|
|
dev = ["pytest>=7", "ruff>=0.5", "pillow", "numpy"]
|
|
|
|
# Comfy Registry metadata (https://docs.comfy.org/registry/overview)
|
|
[tool.comfy]
|
|
PublisherId = "styleref"
|
|
DisplayName = "StyleRef"
|
|
Icon = "https://styleref.io/android-chrome-512x512.png"
|
|
Repository = "https://github.com/StyleRef/styleref-comfyui"
|
|
includes = []
|
|
|
|
[tool.ruff]
|
|
line-length = 100
|
|
target-version = "py39"
|
|
|
|
[tool.ruff.lint]
|
|
select = ["E", "F", "W", "I", "N", "UP", "B", "SIM", "BLE"]
|
|
ignore = [
|
|
"E501", # line length is enforced by the formatter, not the linter
|
|
"UP007", # X | Y syntax is gated on the 3.9 floor above
|
|
# The pack directory is named after the repo, and ComfyUI discovers custom
|
|
# nodes by directory name — renaming it to satisfy the linter would change
|
|
# the install path users already have.
|
|
"N999",
|
|
]
|
|
|
|
[tool.ruff.lint.per-file-ignores]
|
|
# Tests reach into private helpers deliberately, and ComfyUI's INPUT_TYPES is a
|
|
# fixed uppercase name we cannot rename.
|
|
"tests/*" = ["SLF001", "N802"]
|
|
"styleref_nodes/*" = ["N802"]
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|
|
pythonpath = ["."]
|