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>
The version lived in three places and only one was enforced: pyproject (which
the Registry publishes and the release workflow checks the tag against), the
User-Agent this client sends, and __init__'s fallback for when pyproject cannot
be read. The other two could drift silently, and API telemetry would then
attribute traffic to a version nobody is running. Bumped together, with a test
that fails when they disagree.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
"Plugin" is not ComfyUI's vocabulary. What Manager installs into custom_nodes/
is a custom node pack, and what the Registry publishes is a "node" — so to
someone browsing the Registry, "plugin" reads slightly off-ecosystem, like
calling a VS Code extension an add-on. The README is the listing page, so the
wording is user-facing.
Replaces the eight occurrences with "node pack", "the nodes", or "this pack" as
each sentence reads best. "Extension" stays reserved for its narrow ComfyUI
meaning: the frontend JS registered via app.registerExtension, which is
web/styleref.js and nothing else.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The pack cited internal planning-doc items (plan P3-7, decision D1, plan
risk 9.2) that aren't public, leaving outside contributors with pointers
they can't follow. Each comment already states its reason; only the
dangling citation is removed.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Load, Apply, Facets, Reference Images, and Login nodes for loading StyleRef
creative styles into ComfyUI graphs. Zero runtime dependencies.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>