MCPcopy
hub / github.com/Comfy-Org/ComfyUI_frontend

github.com/Comfy-Org/ComfyUI_frontend @v1.47.6 sqlite

repository ↗ · DeepWiki ↗ · release v1.47.6 ↗
12,510 symbols 42,877 edges 2,591 files 1,348 documented · 11%
README

ComfyUI_frontend

Official front-end implementation of ComfyUI.

Website Discord Matrix

Release Schedule

The project follows a structured release process for each minor version, consisting of three distinct phases:

  1. Development Phase - 2 weeks
  2. Active development of new features
  3. Code changes merged to the development branch

  4. Feature Freeze - 2 weeks

  5. No new features accepted
  6. Only bug fixes are cherry-picked to the release branch
  7. Testing and stabilization of the codebase

  8. Publication

  9. Release is published at the end of the freeze period
  10. Version is finalized and made available to all users

Nightly Releases

Nightly releases are published daily at https://github.com/Comfy-Org/ComfyUI_frontend/releases.

To use the latest nightly release, add the following command line argument to your ComfyUI launch script:

--front-end-version Comfy-Org/ComfyUI_frontend@latest

Overlapping Release Cycles

The development of successive minor versions overlaps. For example, while version 1.1 is in feature freeze, development for version 1.2 begins simultaneously. Each feature has approximately 4 weeks from merge to ComfyUI stable release (2 weeks on main, 2 weeks frozen on RC).

Example Release Cycle

Week Date Range Version 1.1 Version 1.2 Version 1.3 Patch Releases
1-2 Mar 1-14 Development - - -
3-4 Mar 15-28 Feature Freeze Development - 1.1.0 through 1.1.13 (daily)
5-6 Mar 29-Apr 11 Released Feature Freeze Development 1.1.14+ (daily)

1.2.0 through 1.2.13 (daily) | | 7-8 | Apr 12-25 | - | Released | Feature Freeze | 1.2.14+ (daily)

1.3.0 through 1.3.13 (daily) |

Release Summary

Major features

v1.5: Native translation (i18n)

ComfyUI now includes built-in translation support, replacing the need for third-party translation extensions. Select your language in Comfy > Locale > Language to translate the interface into English, Chinese (Simplified), Russian, Japanese, Korean, or Arabic. This native implementation offers better performance, reliability, and maintainability compared to previous solutions.

More details available here: https://blog.comfy.org/p/native-localization-support-i18n

v1.4: New mask editor

https://github.com/Comfy-Org/ComfyUI_frontend/pull/1284 implements a new mask editor.

image

v1.3.22: Integrated server terminal

Press Ctrl + ` to toggle integrated terminal.

https://github.com/user-attachments/assets/eddedc6a-07a3-4a83-9475-63b3977f6d94

v1.3.7: Keybinding customization

Basic UI

image

Reset button

image

Edit Keybinding

image image

rec.webm

v1.2.4: Node library sidebar tab

Drag & Drop

https://github.com/user-attachments/assets/853e20b7-bc0e-49c9-bbce-a2ba7566f92f

Filter

https://github.com/user-attachments/assets/4bbca3ee-318f-4cf0-be32-a5a5541066cf

v1.2.0: Queue/History sidebar tab

https://github.com/user-attachments/assets/86e264fe-4d26-4f07-aa9a-83bdd2d02b8f

v1.1.0: Node search box

Fuzzy search & Node preview

image

Release link with shift

https://github.com/user-attachments/assets/a1b2b5c3-10d1-4256-b620-345de6858f25

QoL changes

v1.3.32: Litegraph Nested group

https://github.com/user-attachments/assets/f51adeb1-028e-40af-81e4-0ac13075198a

v1.3.24: Litegraph Group selection

https://github.com/user-attachments/assets/e6230a94-411e-4fba-90cb-6c694200adaa

v1.3.6: Litegraph Toggle link visibility

rec.webm

v1.3.4: Litegraph Auto widget to input conversion

Dropping a link of correct type on node widget will automatically convert the widget to input.

rec.webm

v1.3.4: Litegraph Canvas pan mode

The canvas becomes readonly in pan mode. Pan mode is activated by clicking the pan mode button on the canvas menu or by holding the space key.

rec.webm

v1.3.1: Litegraph Shift drag link to create a new link

rec.webm

v1.2.62: Litegraph Show optional input slots as donuts

GYEIRidb0AYGO-v

v1.2.44: Litegraph Double click group title to edit

https://github.com/user-attachments/assets/5bf0e2b6-8b3a-40a7-b44f-f0879e9ad26f

v1.2.39: Litegraph Group selected nodes with Ctrl + G

https://github.com/user-attachments/assets/7805dc54-0854-4a28-8bcd-4b007fa01151

v1.2.38: Litegraph Double click node title to edit

https://github.com/user-attachments/assets/d61d5d0e-f200-4153-b293-3e3f6a212b30

v1.2.7: Litegraph drags multiple links with shift pressed

https://github.com/user-attachments/assets/68826715-bb55-4b2a-be6e-675cfc424afe

https://github.com/user-attachments/assets/c142c43f-2fe9-4030-8196-b3bfd4c6977d

v1.2.2: Litegraph auto connects to correct slot

Before

https://github.com/user-attachments/assets/c253f778-82d5-4e6f-aec0-ea2ccf421651

After

https://github.com/user-attachments/assets/b6360ac0-f0d2-447c-9daa-8a2e20c0dc1d

v1.1.8: Litegraph hides text overflow on widget value

https://github.com/user-attachments/assets/5696a89d-4a47-4fcc-9e8c-71e1264943f2

Developer APIs

v1.6.13: prompt/confirm/alert replacements for ComfyUI desktop

Several browser-only APIs are not available in ComfyUI desktop's electron environment.

  • window.prompt
  • window.confirm
  • window.alert

Please use the following APIs as replacements.

// window.prompt
window['app'].extensionManager.dialog
  .prompt({
    title: 'Test Prompt',
    message: 'Test Prompt Message'
  })
  .then((value: string) => {
    // Do something with the value user entered
  })

image

// window.confirm
window['app'].extensionManager.dialog
  .confirm({
    title: 'Test Confirm',
    message: 'Test Confirm Message'
  })
  .then((value: boolean) => {
    // Do something with the value user entered
  })

image

// window.alert
window['app'].extensionManager.toast.addAlert('Test Alert')

image

v1.3.34: Register about panel badges

app.registerExtension({
  name: 'TestExtension1',
  aboutPageBadges: [
    {
      label: 'Test Badge',
      url: 'https://example.com',
      icon: 'pi pi-box'
    }
  ]
})

image

v1.3.22: Register bottom panel tabs

app.registerExtension({
  name: 'TestExtension',
  bottomPanelTabs: [
    {
      id: 'TestTab',
      title: 'Test Tab',
      type: 'custom',
      render: (el) => {
        el.innerHTML = '

Custom tab

'
      }
    }
  ]
})

image

v1.3.22: New settings API

Legacy settings API.

// Register a new setting
app.ui.settings.addSetting({
  id: 'TestSetting',
  name: 'Test Setting',
  type: 'text',
  defaultValue: 'Hello, world!'
})

// Get the value of a setting
const value = app.ui.settings.getSettingValue('TestSetting')

// Set the value of a setting
app.ui.settings.setSettingValue('TestSetting', 'Hello, universe!')

New settings API.

// Register a new setting
app.registerExtension({
  name: 'TestExtension1',
  settings: [
    {
      id: 'TestSetting',
      name: 'Test Setting',
      type: 'text',
      defaultValue: 'Hello, world!'
    }
  ]
})

// Get the value of a setting
const value = app.extensionManager.setting.get('TestSetting')

// Set the value of a setting
app.extensionManager.setting.set('TestSetting', 'Hello, universe!')

v1.3.7: Register commands and keybindings

Extensions can call the following API to register commands and keybindings. Do note that keybindings defined in core cannot be overwritten, and some keybindings are reserved by the browser.

app.registerExtension({
  name: 'TestExtension1',
  commands: [
    {
      id: 'TestCommand',
      function: () => {
        alert('TestCommand')
      }
    }
  ],
  keybindings: [
    {
      combo: { key: 'k' },
      commandId: 'TestCommand'
    }
  ]
})

v1.3.1: Extension API to register custom topbar menu items

Extensions can call the following API to register custom topbar menu items.

app.registerExtension({
  name: 'TestExtension1',
  commands: [
    {
      id: 'foo-id',
      label: 'foo',
      function: () => {
        alert(1)
      }
    }
  ],
  menuCommands: [
    {
      path: ['ext', 'ext2'],
      commands: ['foo-id']
    }
  ]
})

image

v1.2.27: Extension API to add toast message

i

Extensions can call the following API to add toast messages.

app.extensionManager.toast.add({
  severity: 'info',
  summary: 'Loaded!',
  detail: 'Extension loaded!',
  life: 3000
})

Documentation of all supported options can be found here: https://primevue.org/toast/#api.toast.interfaces.ToastMessageOptions

image

<s

Extension points exported contracts — how you extend this code

Positionable (Interface)
(no doc) [7 implementers]
src/lib/litegraph/src/interfaces.ts
IDisposable (Interface)
(no doc) [14 implementers]
src/base/common/async.ts
TelemetryProvider (Interface)
(no doc) [8 implementers]
src/platform/telemetry/types.ts
BaseManager (Interface)
(no doc) [8 implementers]
src/extensions/core/load3d/interfaces.ts
CommandManager (Interface)
(no doc) [5 implementers]
src/types/extensionTypes.ts
TypedYMap (Interface)
(no doc) [4 implementers]
src/renderer/core/layout/store/layoutStore.ts
ComfyApi (Interface)
(no doc) [3 implementers]
src/scripts/api.ts
PostHogEventLike (Interface)
* PostHog before_send hook that strips PII from all three property bags * an event can carry: properties, $set, and $se
packages/shared-frontend-utils/src/piiUtil.ts

Core symbols most depended-on inside this repo

mock
called by 2095
browser_tests/fixtures/helpers/AssetHelper.ts
click
called by 1770
browser_tests/fixtures/ComfyMouse.ts
add
called by 958
src/lib/litegraph/src/LGraph.ts
get
called by 912
src/renderer/core/layout/store/layoutStore.ts
toNodeId
called by 768
src/types/nodeId.ts
set
called by 569
src/lib/litegraph/src/MapProxyHandler.ts
t
called by 471
apps/website/src/i18n/translations.ts
has
called by 454
src/lib/litegraph/src/MapProxyHandler.ts

Shape

Function 7,193
Method 3,452
Interface 1,046
Class 766
Enum 48
Route 5

Languages

TypeScript99%
Python1%

Modules by API surface

src/lib/litegraph/src/LGraphCanvas.ts218 symbols
src/lib/litegraph/src/LGraphNode.ts168 symbols
src/lib/litegraph/src/LGraph.ts111 symbols
src/platform/telemetry/types.ts88 symbols
src/scripts/api.ts81 symbols
src/renderer/core/layout/store/layoutStore.ts80 symbols
src/extensions/core/load3d/interfaces.ts78 symbols
src/platform/workspace/api/workspaceApi.ts70 symbols
src/scripts/app.ts69 symbols
src/lib/litegraph/src/interfaces.ts69 symbols
src/extensions/core/load3d/Load3d.ts68 symbols
src/stores/queueStore.ts63 symbols

Dependencies from manifests, versioned

@alloc/quick-lrucatalog: · 1×
@astrojs/checkcatalog: · 1×
@astrojs/sitemapcatalog: · 1×
@astrojs/vuecatalog: · 1×
@atlaskit/pragmatic-drag-and-drop1.3.1 · 1×
@comfyorg/comfyui-desktop-bridge-typesworkspace:* · 1×
@comfyorg/comfyui-electron-typescatalog: · 1×
@comfyorg/design-systemworkspace:* · 1×
@comfyorg/fbx-exporter-three1.0.1 · 1×
@comfyorg/ingest-typesworkspace:* · 1×
@comfyorg/object-info-parserworkspace:* · 1×
@comfyorg/registry-typesworkspace:* · 1×

For agents

$ claude mcp add ComfyUI_frontend \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact