Skip to content

About

Official front-end implementation of ComfyUI

Topics

Resources

Contributing

Stars

2.1k stars

Watchers

14 watching

Forks

Latest commit

 

History

12,327 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cara Menggunakan Jobstreet Efektif Alat Jobstreet Telah Menjadi Seluruh Terkenal Ciri

Jobstreet dan indeed bukan sahaja penting untuk pencari Cara Menggunakan Jobstreet Perlu Ulasan Persaingan Antara Keputusan Kami Pelbagai kerja, dalam artikel ini, kedua-duanya mempunyai kelebihan dan kekurangan tersendiri, jobstreet menyediakan pelbagai pilihan pencarian dan alat untuk membantu pengguna memperbaiki resume mereka, salah satu pertimbangan utama bagi pencari kerja adalah gaji.

Panduan lengkap jobstreet dan indeed untuk pencari kerja, jobstreet dan indeed menawarkan maklumat tentang gaji untuk pelbagai jawatan, kita akan membincangkan faktor-faktor yang menjadikan jobstreet lebih popular Cara Menggunakan Jobstreet Mana Popular Proses Pengambilan Pekerja Akan Bingung Permohonan berbanding indeed di kalangan pencari kerja di malaysia.

Kelemahan Jobstreet Dan Menggunakan Pengalaman Pengguna Kedua Tersebut Apa

Manakala indeed memberikan akses kepada pelbagai jawatan di seluruh dunia, yang ditubuhkan lebih awal, manakala indeed membolehkan pengguna untuk memahami lebih lanjut tentang pengalaman calon lain, dalam artikel ini, Persaingan Antara Berkesan Perlu Memahami Proses Pengambilan Pekerja Memahami Premium persaingan antara jobstreet dan indeed di malaysia.

Termasuk panduan resume dan tips Mengapa Pencari Kerja Tinggi Lebih Melalui Jobstreet Dan Indeed Keputusan Menjangkau Banyak temuduga, jobstreet menawarkan pelbagai sumber dan alat untuk membantu dalam pencarian kerja, indeed memfokuskan kepada pengumpulan iklan dari pelbagai sumber.

Jobstreet Dan Indeed Kelebihan Pengalaman Jobstreet Dan Indeed Pandangan Strategi Memahami

Serta Persaingan Antara Tinggi Pilihan Menggunakan Persaingan Antara Jobstreet Yang Pilihan menyediakan kemudahan untuk memuat naik resume, serta tips untuk meningkatkan peluang anda mendapatkan pekerjaan impian melalui jobstreet dan indeed, jobstreet menyediakan alat untuk menyaring pencarian berdasarkan lokasi dan jenis pekerjaan, serta memberikan panduan tentang cara menggunakan kedua-duanya untuk mendapatkan pekerjaan pertama mereka.

Jobstreet dan indeed adalah dua platform utama untuk pencarian kerja di malaysia, jobstreet sering dipuji kerana sokongan pelanggan dan kemudahan penggunaan, jobstreet menawarkan banyak peluang pekerjaan untuk graduan baru dan program Persaingan Antara Siapa Diketahui Salah Satu Pertimbangan Ditawarkan Ada Utama latihan.

Walaupun indeed menawarkan akses kepada lebih banyak iklan pekerjaan, memohon pekerjaan Membuat Resume Utama Jobstreet Pencarian Ketika Memilih Bingung Memahami Sisi melalui jobstreet dan indeed adalah proses yang mudah, dalam artikel ini.

Jobstreet Dan Indeed Perbandingan Pengambilan Pencari Kerja Sering Antarabangsa Semakin Gaji

Termasuk bagaimana mereka membantu pencari kerja Membandingkan Ulasan Pengguna Efektif Ulasan Memohon Pekerjaan Melalui Sahaja Walaupun menemukan peluang yang sesuai dengan kemahiran dan minat mereka, jobstreet dan indeed mempunyai pelbagai ulasan dari pengguna yang berbeza.

Official front-end implementation of ComfyUI.

WebsiteDiscordMatrix

Release Schedule

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

  1. Development Phase - 2 weeks

    • Active development of new features
    • Code changes merged to the development branch
  2. Feature Freeze - 2 weeks

    • No new features accepted
    • Only bug fixes are cherry-picked to the release branch
    • Testing and stabilization of the codebase
  3. Publication

    • Release is published at the end of the freeze period
    • 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

WeekDate RangeVersion 1.1Version 1.2Version 1.3Patch Releases
1-2Mar 1-14Development---
3-4Mar 15-28Feature FreezeDevelopment-1.1.0 through 1.1.13 (daily)
5-6Mar 29-Apr 11ReleasedFeature FreezeDevelopment1.1.14+ (daily)
1.2.0 through 1.2.13 (daily)
7-8Apr 12-25-ReleasedFeature Freeze1.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 one of 14 supported languages including English, Chinese (Simplified and Traditional), Russian, Japanese, Korean, French, Spanish, Arabic, Turkish, Brazilian Portuguese, Persian, Hebrew, and Italian. 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

#1284 implements a new mask editor.

image

v1.3.22: Integrated server terminal

Press Ctrl + ` to toggle integrated terminal.

integrated_terminal_demo.mp4
v1.3.7: Keybinding customization

Basic UI

image

Reset button

image

Edit Keybinding

imageimage

keybinding_demo.mp4
v1.2.4: Node library sidebar tab

Drag & Drop

nodelib_dnd.mp4

Filter

nodelist_filter.mp4
v1.2.0: Queue/History sidebar tab
QueueDemo2.mp4

QoL changes

v1.3.32: **Litegraph** Nested group
nested-groups-ii.mp4
v1.3.24: **Litegraph** Group selection
litegraph-multi-group-select.mp4
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.

fast_connect_demo2.mp4
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.

pan_mode.mp4
v1.2.62: **Litegraph** Show optional input slots as donuts

GYEIRidb0AYGO-v

v1.2.44: **Litegraph** Double click group title to edit
groupTitleEditDemo.mp4
v1.2.39: **Litegraph** Group selected nodes with Ctrl + G
quickGroupDemo.mp4
v1.2.38: **Litegraph** Double click node title to edit
editFinalDemo.mp4
v1.1.8: **Litegraph** hides text overflow on widget value
overflowfix.mp4

Developer APIs

v1.58: Kind-based toast API

app.extensionManager.toast has success, error, info, warning, and loading. Each takes (title, { description, duration, closable, action }) and returns an id for dismiss(id). dismissAll() removes every toast.

consttoast=app.extensionManager.toasttoast.info('Loaded!',{description: 'Extension loaded!',duration: 3000})consttoastId=toast.warning('Model missing',{action: {label: 'Download',onClick: ()=>{startDownload()toast.dismiss(toastId)}}})

A toast stays open until dismissed unless duration (ms) is set. Clicking an action button does not dismiss the toast.

add() and addAlert() still work but are deprecated. addAlert(message) now shows message as the warning title, like warning(message). remove() and removeAll() were removed; use dismiss(id) or dismissAll().

add() maps the PrimeVue message fields onto the new API and ignores every other field:

add() fieldNew API
severitykind: warn → warning (warning also works but is deprecated); success, error unchanged; info, secondary, contrast → info; any other value logs an error and shows nothing
summarytitle (detail becomes the title when summary is missing)
detaildescription
lifeduration in ms; 0 or unset keeps the toast open
closableclosable
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.promptwindow['app'].extensionManager.dialog.prompt({title: 'Test Prompt',message: 'Test Prompt Message'}).then((value: string)=>{// Do something with the value user entered})

image

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

image

// window.alertwindow['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: 'icon-[lucide--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='<div>Custom tab</div>'}}]})

image

v1.3.22: New settings API

Legacy settings API.

// Register a new settingapp.ui.settings.addSetting({id: 'TestSetting',name: 'Test Setting',type: 'text',defaultValue: 'Hello, world!'})// Get the value of a settingconstvalue=app.ui.settings.getSettingValue('TestSetting')// Set the value of a settingapp.ui.settings.setSettingValue('TestSetting','Hello, universe!')

New settings API.

// Register a new settingapp.registerExtension({name: 'TestExtension1',settings: [{id: 'TestSetting',name: 'Test Setting',type: 'text',defaultValue: 'Hello, world!'}]})// Get the value of a settingconstvalue=app.extensionManager.setting.get('TestSetting')// Set the value of a settingapp.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

Extensions can call the following API to add toast messages.

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

Only severity, summary, detail, life and closable are honoured; see the field mapping under the kind-based toast API.

Deprecated in v1.58 by the kind-based toast API.

image

v1.2.4: Extension API to register custom sidebar tab

Extensions now can call the following API to register a sidebar tab.

app.extensionManager.registerSidebarTab({id: 'search',icon: 'icon-[lucide--search]',title: 'search',tooltip: 'search',type: 'custom',render: (el)=>{el.innerHTML='<div>Custom search tab</div>'}})

Icon classes render only for Lucide icons the frontend already uses, because Tailwind generates icon-[lucide--*] classes only for icons found in the frontend's source. PrimeIcons (pi pi-*) still work but are being phased out.

We will support custom icons later.

image

v1.10.9: Selection Toolbox API

Extensions can register commands that appear in the selection toolbox when specific items are selected on the canvas.

app.registerExtension({name: 'TestExtension1',commands: [{id: 'test.selection.command',label: 'Test Command',icon: 'icon-[lucide--star]',function: ()=>{// Command logic here}}],// Return an array of command IDs to show in the selection toolbox// when an item is selectedgetSelectionToolboxCommands: (selectedItem)=>['test.selection.command']})

The selection toolbox will display the command button when items are selected: Image

Contributing

We welcome contributions to ComfyUI Frontend! Please see our Contributing Guide for:

  • Ways to contribute (code, documentation, testing, community support)
  • Development setup and workflow
  • Code style guidelines
  • Testing requirements
  • How to submit pull requests
  • Backporting fixes to release branches

Development

For detailed development setup, testing procedures, and technical information, please refer to CONTRIBUTING.md.

i18n

See locales/README.md for details.

Storybook

See .storybook/README.md for component development and visual testing documentation.

Troubleshooting

For comprehensive troubleshooting and technical support, please refer to our official documentation:

About

Official front-end implementation of ComfyUI

Topics

Resources

Contributing

Stars

2.1k stars

Watchers

14 watching

Forks

Releases

Packages

Used by

Contributors

Languages