RELEASING.md documents the repeatable update flow this repo has actually used five times now: bump the version in the four places nothing keeps in sync automatically, commit and tag here, watch the publish workflow, bump the monorepo submodule pointer, then verify against the live Registry API and the real published archive rather than trusting a green check. Two past releases looked correct in CI and still shipped wrong — model-download metadata in the wrong JSON key, and thumbnails in a format custom node packs don't read — and both only surfaced by inspecting what ComfyUI actually saw. That's the reason step 7 exists instead of stopping at "the workflow succeeded." Also notes the Flagged-then-clears pattern seen on every version so far, and that custom-node-list.json in ComfyUI-Manager is a second, unsynced listing. README gains: mention that Apply/sampler plumbing nodes ship collapsed (already true in the generated templates), that Apply's node body is where to read the composed prompt, and the FLUX guidance/sections troubleshooting tip that was already on the canvas note, now also in the doc someone reads before opening ComfyUI at all. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
149 lines
5.8 KiB
Markdown
149 lines
5.8 KiB
Markdown
# Releasing an update
|
|
|
|
For an agent or contributor picking this up cold: this is the repeatable flow
|
|
for shipping a change to users — a node fix, a new workflow template, updated
|
|
artwork, anything. It is distinct from [the one-time steps](../../internal-docs/connectors-repo-graduation.md)
|
|
that stood this repo up in the first place (those live in the private
|
|
monorepo and don't apply again).
|
|
|
|
If this repo reached you as a git submodule inside `StyleRef-Webapp`, work
|
|
**here**, in the submodule — not by editing a plain copy of these files
|
|
somewhere else. A commit made outside this repo publishes nothing.
|
|
|
|
## 1. Make the change
|
|
|
|
Edit the source. If you touched a workflow's *shape* (nodes, links, layout,
|
|
subjects, the style it loads) rather than hand-editing JSON, regenerate:
|
|
|
|
```bash
|
|
python scripts/build_workflows.py
|
|
```
|
|
|
|
The committed `workflows/*.json` files must match the generator's output —
|
|
CI fails the build otherwise, and a hand-edit to the JSON will just be
|
|
overwritten the next time someone runs the script.
|
|
|
|
## 2. Bump the version — four places, together
|
|
|
|
There is no tooling for this step; it is easy to update three and miss the
|
|
fourth, so check all four:
|
|
|
|
| File | What to change |
|
|
| --- | --- |
|
|
| `pyproject.toml` | `version = "x.y.z"` |
|
|
| `__init__.py` | `_FALLBACK_VERSION = "x.y.z"` |
|
|
| `styleref_api.py` | `USER_AGENT = "styleref-comfyui/x.y.z (...)"` |
|
|
| `README.md` | The `[StyleRef] vx.y.z — 5 nodes registered` line in **Install** |
|
|
|
|
`tests/test_api.py::test_version_strings_agree_with_pyproject` fails if the
|
|
first three disagree — trust it, but it can't see the README line, so check
|
|
that one by eye.
|
|
|
|
Use semver. The publish workflow (`.github/workflows/publish.yml`) rejects a
|
|
tag that doesn't exactly match `pyproject.toml`'s version.
|
|
|
|
## 3. Verify locally
|
|
|
|
```bash
|
|
ruff check .
|
|
pytest tests/ -q
|
|
```
|
|
|
|
If the change touches `web/styleref.js`, at minimum run `node --check
|
|
web/styleref.js` — there is no JS test harness, so a syntax check is the only
|
|
automated signal before it reaches a real ComfyUI frontend.
|
|
|
|
## 4. Commit and push, in this repo
|
|
|
|
```bash
|
|
git add -A
|
|
git commit -m "..."
|
|
git push origin main
|
|
```
|
|
|
|
## 5. Tag the commit you just pushed
|
|
|
|
```bash
|
|
git tag -a vX.Y.Z -m "..."
|
|
git push origin vX.Y.Z
|
|
```
|
|
|
|
The tag push fires **Publish to Comfy Registry**
|
|
(`.github/workflows/publish.yml`): it re-checks the tag against
|
|
`pyproject.toml`, lints, runs the test suite, then calls
|
|
`Comfy-Org/publish-node-action` with the `REGISTRY_ACCESS_TOKEN` secret.
|
|
Watch it in the Actions tab or with `gh run watch`.
|
|
|
|
**A branch-protection ruleset on `main` requires 3 status checks** that a
|
|
direct push can't have satisfied yet (see the [public-repo branch ruleset
|
|
convention](../../internal-docs/connectors-repo-graduation.md)). The push
|
|
above will report "Bypassed rule violations" — that's expected, not an
|
|
error, as long as the account pushing is on the bypass list.
|
|
|
|
## 6. Bump the pointer in the monorepo
|
|
|
|
A tag and a Registry publish are invisible to `StyleRef-Webapp` until its
|
|
submodule pointer moves. Back in the monorepo root:
|
|
|
|
```bash
|
|
git add connectors/styleref-comfyui
|
|
git commit -m "chore(comfyui): bump connector to vX.Y.Z (<why>)"
|
|
git push origin main
|
|
```
|
|
|
|
Skipping this step is the easy mistake — nothing errors, the monorepo just
|
|
quietly keeps pointing at the old commit. `git status` in the monorepo shows
|
|
a moved submodule as a one-line change; `git diff --submodule` shows which
|
|
commits moved.
|
|
|
|
## 7. Confirm the release actually landed — don't trust a green check alone
|
|
|
|
A successful publish workflow proves the *build* succeeded, not that the
|
|
*Registry* did the right thing with it, and not that ComfyUI reads what you
|
|
shipped the way you assumed. Check the real state:
|
|
|
|
```bash
|
|
# Per-version status (Pending → Active is normal and can take a while;
|
|
# Flagged sometimes clears on its own — see the note below)
|
|
curl -s https://api.comfy.org/nodes/styleref-comfyui/versions | python3 -m json.tool
|
|
|
|
# Node-level: which version is actually live for install
|
|
curl -s https://api.comfy.org/nodes/styleref-comfyui | python3 -m json.tool
|
|
```
|
|
|
|
If the change affects what's inside the shipped package (thumbnails, a new
|
|
file, `.comfyignore`), download and inspect the **actual published archive**
|
|
rather than trusting what you intended to ship:
|
|
|
|
```bash
|
|
curl -sL "https://cdn.comfy.org/styleref/styleref-comfyui/X.Y.Z/node.zip" -o node.zip
|
|
unzip -l node.zip
|
|
```
|
|
|
|
This caught two real bugs in past releases: model-download metadata that was
|
|
declared in the wrong JSON location (present in the repo, silently ignored
|
|
by ComfyUI), and template thumbnails shipped as `.webp` when custom node
|
|
packs are only read as `.jpg` — both looked correct in CI and in the archive
|
|
listing, and only showing up wrong in a running ComfyUI proved it.
|
|
|
|
## On `NodeVersionStatusFlagged`
|
|
|
|
Comfy's scanner has flagged every version of this pack at some point,
|
|
including versions identical to ones that were flagged and later cleared on
|
|
their own — this looks like a transient state in their pipeline, not a
|
|
verdict on the code. Don't rush to change anything or re-publish in response
|
|
to a flag by itself. Give it time and re-check; if it's still flagged after
|
|
a day or two with no `NodeVersionStatusActive` version anywhere, that's when
|
|
it's worth asking in the Comfy Discord (icon in the registry.comfy.org
|
|
header) rather than guessing at a code change.
|
|
|
|
## If the ComfyUI-Manager listing needs updating too
|
|
|
|
`custom-node-list.json` in
|
|
[`Comfy-Org/ComfyUI-Manager`](https://github.com/Comfy-Org/ComfyUI-Manager)
|
|
is a **second, separate** listing from the Comfy Registry — Manager's
|
|
"default channel," predating the Registry and not auto-synced from it. A
|
|
Registry publish does not update it. If this pack's entry there
|
|
(`id: "styleref-comfyui"`) ever needs a description or metadata change, that
|
|
is its own PR against that repo, not something this release flow touches.
|