Skip to content

[pull] main from Comfy-Org:main - #39

Merged
pull[bot] merged 10 commits into
Penguinjanator:mainfrom
Comfy-Org:main
Aug 15, 2026
Merged

[pull] main from Comfy-Org:main#39
pull[bot] merged 10 commits into
Penguinjanator:mainfrom
Comfy-Org:main

Conversation

@pull

@pull pull Bot commented Aug 15, 2026

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

christian-byrne and others added 10 commits August 14, 2026 22:54
## Summary

Add `release-recover-tag.yaml`: a dispatchable way to publish the
release a merged version bump never got.

## Changes

- **What**: new workflow. Takes a branch, reads its `package.json`
version, refuses to run if that tag exists, builds the same artifacts as
`release-draft-create.yaml`, and publishes the release.

`release-draft-create.yaml` only fires when a Release-labelled bump PR
closes, so when its release step fails the tag has no second path into
existence. The branch then sits at a version nothing points at, and:

- `publish-pypi` waits out its budget on a tag that cannot appear
- the ComfyUI pin PR is never opened
- every later run resolves the *next* patch instead of finishing this
one, burning a version per run (#14997, #15004)

`core/1.48` is stalled this way right now: `package.json` at 1.48.9,
newest tag `v1.48.7`, two bumps (1.48.8, 1.48.9) merged and unreleased.
There is currently no way to tag them short of doing it by hand.

## Review Focus

- Refuses when `vVERSION` already exists, so it can only finish a
release, never cut one. It has no bump step and writes no commit.
- Build steps are copied from `release-draft-create.yaml` so a recovered
release carries the same `dist.zip` / `dist-desktop.zip` as an on-time
one. That duplication is the main cost; the alternative is converting
`release-draft-create.yaml`'s `build` + `draft_release` into a
`workflow_call` and calling it from both, which is a larger change to
the critical release path. Happy to do that instead if preferred.
- Uses `PR_GH_TOKEN` for the same reason as #15003 — `GITHUB_TOKEN` is
currently refused on `core/*`. Without #15003 this workflow hits the
same 403.
## Summary

Add a repository skill for replacing TypeScript suppressions with
minimal type-safe fixes.

## Changes

- **What**: Documents the suppression-removal workflow, common repair
patterns, repository guardrails, and verification commands.

## Review Focus

Check that the workflow stays reusable and consistent with the
repository's TypeScript guidance.

---------

Co-authored-by: Amp <amp@ampcode.com>
## What

comfy.org/mcp was cloud-only; its FAQ answered *"Can I use it with my
local ComfyUI?"* with *"Coming soon"*. The open-source local server
([comfy-mcp](https://github.com/Comfy-Org/comfy-mcp)) is released on
PyPI, so the page now sells both halves of Comfy MCP, with messaging
aligned to the [launch
blog](https://blog.comfy.org/p/comfy-mcp-turn-your-agent-into-a).

## Changes

**Hero.** Heading: *"Drive ComfyUI from any AI agent, local or cloud."*
Subtitle: *"Turn your agent into a creative technologist… Built for
batch generation, reproducibility and teamwork."*

**Setup section.** `Comfy Cloud | Local ComfyUI` connection toggle above
the client tabs. Cloud panel unchanged. Local panel: `pip install
comfy-mcp`, per-client stdio registration (Claude Code / Claude Desktop
/ Cursor / Others), an ask-your-agent card badged **Recommended**, and
an open-source requirement line replacing the subscription note.
Agent-paste commands use the `.md` docs URLs (agents get raw markdown,
not the HTML shell); human links stay extensionless.

**Section order.** Tools (capabilities) now come before Why-build on
both locales.

**Why-build rework** (from the blog, no em dashes): *"first MCP built
for production pipelines"* subtitle; **Reproducible by design** replaces
Outputs-you-keep (outputs folded in); auth line corrected (local needs
no account); full-engine card mentions auto-updating templates;
your-GPUs card sells the hardware-aware local agent (reads models,
custom nodes, VRAM; untangles complex open-source workflows).

**Capabilities copy.** Run-real-workflows reads your existing workflows
("start where you are"); model list refreshed (MiniMax H3, Seedance,
Flux, GPT-Image, Nano Banana, Kling, Z-Image, ElevenLabs, HY3D, and
more).

**FAQ (nine questions).** New: cloud-vs-local difference (with
which-one-to-choose routing + Apple-GPU caveat), both-at-once, open
source. Corrected: local partner models sign in via comfy-cli (browser
or API key) and spend credits; everyday local use needs no key. Removed:
local-ComfyUI ("Coming soon"), Claude Desktop slash commands, GA. "Which
agents are supported?" replaces "clients".

**Links & analytics.** `docsMcp` → merged docs IA (`agent-tools/mcp`);
new `docsMcpMd`/`docsMcpLocalMd`/`comfyMcpRepo`. New
`website:mcp_connection_tab_clicked` PostHog event; client tabs emit
`local-*` ids in the local panel.

Both locales covered (en + zh-CN) for every change.

## Testing

- `pnpm --filter @comfyorg/website typecheck` — 0 errors
- `pnpm --filter @comfyorg/website test:unit` — 423 passed
- `pnpm exec playwright test e2e/mcp.spec.ts` — 10/10 (specs updated:
connection toggle, local install flow, nested-tabs strict-mode, FAQ
count)
- `pnpm build` — clean

---------

Co-authored-by: ComfyUI Wiki <contact@comfyui-wiki.com>
Automated refresh of remote-data snapshots used by the website
build:

- `apps/website/src/data/ashby-roles.snapshot.json` — Ashby job
  board API
- `apps/website/src/data/cloud-nodes.snapshot.json` — Comfy Cloud
  `/api/object_info`

**Flow:**
1. `Release: Website` workflow ran (manual trigger).
2. This PR opens with the regenerated snapshots.
3. `CI: Vercel Website Preview` deploys a preview for review.
4. Merging to `main` triggers the production Vercel deploy.

The snapshot fallback in `apps/website/src/utils/ashby.ts` and
`apps/website/src/utils/cloudNodes.ts` remains intact: builds
without the respective API keys continue to use the committed
snapshot (with a warning annotation in CI).

Triggered by workflow run `31854048709`.

Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
…ors (#15061)

## Root cause

The release sheriff job at run
[#31508324202](https://github.com/Comfy-Org/ComfyUI_frontend/actions/runs/31508324202)
failed with:

```
Error: Command failed: gh pr list ... --search author:app/dependabot
HTTP 502: 502 Bad Gateway (https://api.github.com/graphql)
```

GitHub's GraphQL API returned a transient 502. The `gh()` helper calls
`execFileSync` which throws immediately on non-zero exit, so one bad
gateway took down the whole run before any sheriff could be assigned.

The query itself is valid — running it now returns results correctly.

## Fix

Add `ghWithRetry()` that wraps `gh()` with up to 3 attempts and
exponential backoff (2s → 4s). `ghPrList` now calls `ghWithRetry`
instead of `gh`. On the third failure it re-throws so the degraded-run
reporter still fires.

## Test plan

- [x] All 34 existing unit tests pass (`npx vitest run
scripts/release-sheriff/release-sheriff.test.ts`)
- [x] No new TS errors in the sheriff script

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Automatic SHA bump — `cursor-review.yml` was updated in
`Comfy-Org/github-workflows` at
[`41fb831`](Comfy-Org/github-workflows@41fb831).
_Opened by the `bump-cursor-review-callers` workflow._

Co-authored-by: cloud-code-bot[bot] <234529496+cloud-code-bot[bot]@users.noreply.github.com>
Patch version increment to 1.51.5

**Base branch:** `main`

Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
Co-authored-by: Christian Byrne <cbyrne@comfy.org>
…15282)

*PR Created by the Glary-Bot Agent*

---

## Summary

Fixes 6 of the 9 pre-existing `vue-tsc` errors in `apps/website`, both
caused by reading a field that does not exist on every member of a
union. First of three stacked PRs that end with `vue-tsc` running in CI.

## Changes

- **What**:
- `templates/mcp/mcpDemoPrompts.ts` — the array was declared `as const
satisfies readonly McpDemoPrompt[]`. `satisfies` checks assignability
but preserves the `as const` type, so the array became a union of nine
distinct literal shapes rather than `McpDemoPrompt[]`. Since no single
member declares all of `via` / `variants` / `stacked`, every read of
those optional fields failed (5 errors in `ComfyMcpDemo.vue`).
Annotating as `readonly McpDemoPrompt[]` restores the intended optional
fields and matches how `data/drops.ts` declares its data. No consumer
depended on the literal types.
- `templates/drops/DropsSection.vue` — `drop.media.poster` was read
without narrowing `DropMedia` on its `type` discriminant; `poster` only
exists on the `video` member. Now narrowed with `drop.media.type ===
'video' ? drop.media.poster : undefined`.
- **Breaking**: none. Both changes are type-level only — see Review
Focus.

## Review Focus

Neither change alters runtime behaviour:

- `DropsSection`: for `type: 'video'` the value still comes from
`drop.media.poster`; for images the property access already evaluated to
`undefined` at runtime, which is exactly what the ternary now yields.
Confirmed no drop in `data/drops.ts` passes a poster — all three
`videoFor(...)` calls take only `(fileName, alt)` — so the rendered
output is byte-identical.
- `mcpDemoPrompts`: dropping `as const` only widens literal types to
their declared ones. The values are unchanged.

These were invisible until now because `.vue` files are type-checked by
nothing in this repo — that gap is fixed in the third PR of this stack.

## Verification

`astro check` 0 errors · `vue-tsc` drops from 9 errors to 3 (the
remaining 3 are fixed in the next PR) · 422 unit tests passing (1
pre-existing `minimaxMusic3` `.jpeg` failure, also fails on `main`) ·
lint/format/knip clean · production build 595 pages.

Manually verified the MCP hero demo in a production build (screenshot
below) — all three optional fields still render exactly as before:
- `variants: 4` → Character Concepts shows 4 separate thumbnails
- `stacked: true` → Keyframe Board shows the offset layers behind the
thumbnail
- `via` → NOTION / FIGMA / BLENDER badges render, and cards without
`via` (Set Extension) correctly show none

Also loaded `/launches` (DropsSection): 3 videos, 0 with a `poster`
attribute (matching the data), 31 images, none with a broken `src`, and
no page errors.


## Screenshots

![MCP hero demo after the change: variants render 4 thumbnails, stacked
renders offset layers, via badges
render](https://pub-1fd11710d4c8405b948c9edc4287a3f2.r2.dev/sessions/2695e99a517e67b129af85ec68092712a7c0cba612e302caf6af9fd7e5752a65/pr-images/1786746110431-2af25860-51b3-42c0-8373-0ad3ed79aefe.png)

Co-authored-by: Glary-Bot <glary-bot@users.noreply.github.com>
## Summary

Add two events to the `/events` page: an upcoming Aug 19 livestream and
the past Aug 10 Comfy Creatives Model Jam recording.

## Changes

- **What**: Two new `ComfyEvent` entries in
`apps/website/src/data/events.ts`.
- `beyond-the-models` — "Using Comfy to Go Beyond the Models" (upcoming,
Aug 19 2026, `liveVideoId`). Renders in the Upcoming section on
`/events` and gets `/events/beyond-the-models`. Includes `media` so it
becomes a valid past-gallery card automatically after it airs.
- `comfy-creatives-model-jam` — "Comfy Creatives Model Jam: MiniMax H3,
Seedance 2.5, Wan Animate 2 & More" (past, Aug 10 2026,
`recordingVideoId`). Renders in the Past gallery and emits VideoObject
JSON-LD on `/events/comfy-creatives-model-jam`.

## Review Focus

- Neither event is featured (no hero carousel) by design — both surface
in their list sections only.
- The past event uses `recordingVideoId` (not `liveVideoId`) so the
already-published recording gets VideoObject structured data.
- zh-CN copy is a machine first-pass, consistent with the file's
existing "pending native review" note.

---------

Co-authored-by: Robin Huang <robin.j.huang@gmail.com>
Co-authored-by: Richard Yu <richard95yu@gmail.com>
Co-authored-by: bymyself <cbyrne@comfy.org>
Co-authored-by: Claude <noreply@anthropic.com>
… to the MCP page (#15305)

## Summary

Adds the two videos asked for in the launch thread, on top of #15240:
the Comfy MCP launch film under the capabilities heading, and a new
"Production use cases." section below it.

## Changes

- **What**: `FeatureRows01` gains an optional `media` slot;
`ToolsSection` fills it with the 16x9 launch film (autoplay, muted,
loop, corner play/mute toggles). New `UseCasesSection` renders a
heading, one-line subtitle, and the narrated walkthrough as
click-to-play behind its own title-card poster — no autoplay, since it
has a voiceover. Both sections hydrate with `client:visible` so the
controls work. The setup subtitle now breaks before "Add the server
yourself".
- **Assets**: launch film from the Air board (`COMFY_MCP_16x9`, 33.9s,
re-encoded to 4.9 MB); walkthrough from the launch blog (`short with
voice over`, 96.3s, 14 MB); poster is frame 1 of the walkthrough.

Copy added in en and zh-CN.

## Review Focus

- **The media is not on the CDN yet.** `launch-film.mp4`,
`production-use-cases.mp4` and `production-use-cases-poster.webp` still
need uploading to `gs://comfy-org-videos/website/mcp/`. Until then both
players 404 on any deploy built from this branch, including this PR's
Vercel preview.
- Copy on the new section — "Production use cases." and its subtitle are
a first pass.
- `client:visible` on `ToolsSection` is new; it was static before
because every video there had `hideControls`.

## Screenshots

Standalone preview with the media served from the deployment itself, as
a stand-in for the pending CDN upload:
https://website-frontend-16jmxfsd8-comfyui.vercel.app/mcp
@pull pull Bot locked and limited conversation to collaborators Aug 15, 2026
@pull pull Bot added the ⤵️ pull label Aug 15, 2026
@pull
pull Bot merged commit 3860f64 into Penguinjanator:main Aug 15, 2026
20 of 23 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants