Skip to content

feat(publish): send this version's changelog to the Comfy Registry — every release has shipped blank - #810

Open
artokun wants to merge 1 commit into
mainfrom
feat/registry-changelog-on-publish
Open

feat(publish): send this version's changelog to the Comfy Registry — every release has shipped blank#810
artokun wants to merge 1 commit into
mainfrom
feat/registry-changelog-on-publish

Conversation

@artokun

@artokun artokun commented Aug 8, 2026

Copy link
Copy Markdown
Owner

Why

i noticed that we NEVER send any changelogs along with our registry updates like other apps do, they are always blank. I feel like we should get those in

Checked comfy-cli's own source rather than guessing: comfy node publish has always accepted --changelog / --changelog-file, and the Registry shows it in the pack's Updates section — that surface already exists, it's just been empty.

Root cause

Our publish step used Comfy-Org/publish-node-action@main — a thin composite wrapper that runs comfy node publish --token ... and nothing else. Its action.yml exposes only personal_access_token/skip_checkout. No changelog input, ever. Every publish through it was structurally incapable of sending one.

Fix

Inlined the three steps the wrapper performed (install comfy-cli, comfy env, comfy node publish), and added an extraction step ahead of it that pulls this version's section out of CHANGELOG.md.

I deliberately did not try to pass the changelog through the wrapper action via an env var set on the calling step — I checked GitHub's own composite-action docs first and couldn't get a clean confirmation that a calling step's env: propagates into a third-party composite action's internal steps. Rather than ship something resting on unverified behavior, I dropped the wrapper.

New scripts/changelog-section.mjs — ported from comfyui-mcp's script of the same name, written for the identical defect on that repo's GitHub Release bodies (artokun/comfyui-mcp#1138 is this fix's twin: a version's notes should describe that version, not the whole file or a synthesised diff).

Fails open. A missing or empty CHANGELOG section logs ::warning:: and publishes with no changelog rather than failing the release over absent notes. A release with no changelog is recoverable; one that never ships because notes were missing is not.

Verified

  • Ran the extraction exactly as the workflow will, against the real pyproject.toml + CHANGELOG.md: 0.11.45 → 2,314 chars, headers and bullets intact.
  • .comfyignore already excludes scripts/, so the new script never reaches the published pack — it only runs during CI/publish.
  • Control-byte scan clean on both changed files.
  • Workflow YAML re-parses; scripts/changelog-section.mjs parses as ESM.
  • No process-spawn literals introduced (the YARA publish gate flags those even in comments).

Related, not the same task

#758 — an in-panel "what's new" surface — is bigger and separate UI work. This is upstream of it: it makes the Registry's own changelog field non-empty, which any future in-panel or Manager-side reader can then consume.

Not merged. The next merge to main that also touches pyproject.toml fires the publish workflow and exercises this for real.

…every release has shipped blank

artokun: "i noticed that we NEVER send any changelogs along with our registry
updates like other apps do, they are always blank."

Confirmed against comfy-cli's own source (comfy_cli/registry/api.py,
comfy_cli/command/custom_nodes/command.py): `comfy node publish` has always
accepted `--changelog` / `--changelog-file`, and the Registry shows it in the
pack's Updates section — that surface already exists, we simply never fed it.

The cause: our publish step used `Comfy-Org/publish-node-action@main`, a thin
composite wrapper that runs `comfy node publish --token ...` with nothing
else. Its action.yml exposes only `personal_access_token`/`skip_checkout` — no
changelog input, ever. Every publish through it was structurally incapable of
sending one.

Fixed by inlining the three steps the wrapper performed (install comfy-cli,
`comfy env`, `comfy node publish`) and adding a changelog extraction step
ahead of it, rather than gambling on undocumented env-var propagation into a
third-party composite action's internals — checked GitHub's own docs first
and could not get a clean confirmation either way.

New `scripts/changelog-section.mjs` prints exactly one version's CHANGELOG.md
section (ported from comfyui-mcp's script of the same name, written for the
same defect on that repo's GitHub Release bodies — mcp#1138 is this fix's
twin). `.comfyignore` already excludes `scripts/`, so this never reaches the
published pack — it only runs during CI/publish.

Fails open: a missing or empty CHANGELOG section logs a `::warning::` and
publishes with no changelog rather than failing the release over missing
notes — a release with no changelog is recoverable; one that never ships
because notes were absent is not.

Verified locally against the real pyproject.toml + CHANGELOG.md: extracts
0.11.45's section (2314 chars, headers and bullets intact). Control-byte scan
clean on both changed files. YAML re-parses. `scripts/changelog-section.mjs`
parses as ESM.

Related: #758 (in-panel "what's new" — a bigger,
separate UI surface; this is upstream of it, not the same task — it makes the
Registry's own changelog field non-empty, which any future in-panel or
Manager-side surface can then read).

Not merged; the next merge to main that also touches pyproject.toml fires the
publish workflow that exercises this.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings August 8, 2026 18:36

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Publishes each release’s matching CHANGELOG.md section to the Comfy Registry.

Changes:

  • Adds version-specific changelog extraction.
  • Inlines the Registry publish command with --changelog-file.
  • Falls back to publishing without notes when extraction fails.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

File Description
scripts/changelog-section.mjs Extracts one version’s changelog body.
.github/workflows/publish_action.yml Supplies extracted notes during Registry publishing.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +3 to +5
* Print ONE version's section from CHANGELOG.md — used as the Comfy Registry
* `changelog` field on publish (the Registry's "Updates" section for this pack)
* and as a GitHub Release body.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants