{"id":17967519,"url":"https://github.com/Comfy-Org/ComfyUI_frontend","last_synced_at":"2025-03-25T08:31:21.452Z","repository":{"id":244156670,"uuid":"814403270","full_name":"Comfy-Org/ComfyUI_frontend","owner":"Comfy-Org","description":"Official front-end implementation of ComfyUI","archived":false,"fork":false,"pushed_at":"2025-03-19T18:26:24.000Z","size":138738,"stargazers_count":934,"open_issues_count":226,"forks_count":210,"subscribers_count":21,"default_branch":"main","last_synced_at":"2025-03-19T19:28:35.632Z","etag":null,"topics":["generative-ai","machine-learning"],"latest_commit_sha":null,"homepage":"https://www.comfy.org/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Comfy-Org.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-13T00:22:24.000Z","updated_at":"2025-03-19T18:26:27.000Z","dependencies_parsed_at":"2024-09-05T18:02:37.317Z","dependency_job_id":"9c4c0de3-10ae-449b-aa4e-b3fc600b4057","html_url":"https://github.com/Comfy-Org/ComfyUI_frontend","commit_stats":null,"previous_names":["huchenlei/comfyui_frontend"],"tags_count":262,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Comfy-Org%2FComfyUI_frontend","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Comfy-Org%2FComfyUI_frontend/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Comfy-Org%2FComfyUI_frontend/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Comfy-Org%2FComfyUI_frontend/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Comfy-Org","download_url":"https://codeload.github.com/Comfy-Org/ComfyUI_frontend/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245426256,"owners_count":20613319,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["generative-ai","machine-learning"],"created_at":"2024-10-29T14:09:03.172Z","updated_at":"2025-03-25T08:31:21.444Z","avatar_url":"https://github.com/Comfy-Org.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# ComfyUI_frontend\n\n**Official front-end implementation of [ComfyUI](https://github.com/comfyanonymous/ComfyUI).**\n\n[![Website][website-shield]][website-url]\n[![Discord][discord-shield]][discord-url]\n[![Matrix][matrix-shield]][matrix-url]\n\u003cbr\u003e\n[![][github-release-shield]][github-release-link]\n[![][github-release-date-shield]][github-release-link]\n[![][github-downloads-shield]][github-downloads-link]\n[![][github-downloads-latest-shield]][github-downloads-link]\n\n\n[github-release-shield]: https://img.shields.io/github/v/release/Comfy-Org/ComfyUI_frontend?style=flat\u0026sort=semver\n[github-release-link]: https://github.com/Comfy-Org/ComfyUI_frontend/releases\n[github-release-date-shield]: https://img.shields.io/github/release-date/Comfy-Org/ComfyUI_frontend?style=flat\n[github-downloads-shield]: https://img.shields.io/github/downloads/Comfy-Org/ComfyUI_frontend/total?style=flat\n[github-downloads-latest-shield]: https://img.shields.io/github/downloads/Comfy-Org/ComfyUI_frontend/latest/total?style=flat\u0026label=downloads%40latest\n[github-downloads-link]: https://github.com/Comfy-Org/ComfyUI_frontend/releases\n[matrix-shield]: https://img.shields.io/badge/Matrix-000000?style=flat\u0026logo=matrix\u0026logoColor=white\n[matrix-url]: https://app.element.io/#/room/%23comfyui_space%3Amatrix.org\n[website-shield]: https://img.shields.io/badge/ComfyOrg-4285F4?style=flat\n[website-url]: https://www.comfy.org/\n[discord-shield]: https://img.shields.io/discord/1218270712402415686?style=flat\u0026logo=discord\u0026logoColor=white\u0026label=Discord\n[discord-url]: https://www.comfy.org/discord\n\n\u003c/div\u003e\n\n## Release Schedule\n\nThe project follows a structured release process for each minor version, consisting of three distinct phases:\n\n1. **Development Phase** - 1 week\n   - Active development of new features\n   - Code changes merged to the development branch\n\n2. **Feature Freeze** - 1 week\n   - No new features accepted\n   - Only bug fixes are cherry-picked to the release branch\n   - Testing and stabilization of the codebase\n\n3. **Publication**\n   - Release is published at the end of the freeze period\n   - Version is finalized and made available to all users\n\n### Nightly Releases\nNightly releases are published daily at [https://github.com/Comfy-Org/ComfyUI_frontend/releases](https://github.com/Comfy-Org/ComfyUI_frontend/releases).\n\nTo use the latest nightly release, add the following command line argument to your ComfyUI launch script:\n\n```bat\n--front-end-version Comfy-Org/ComfyUI_frontend@latest\n```\n\n## Overlapping Release Cycles\nThe development of successive minor versions overlaps. For example, while version 1.1 is in feature freeze, development for version 1.2 begins simultaneously.\n\n### Example Release Cycle\n\n| Week | Date Range | Version 1.1 | Version 1.2 | Version 1.3 | Patch Releases |\n|------|------------|-------------|-------------|-------------|----------------|\n| 1 | Mar 1-7 | Development | - | - | - |\n| 2 | Mar 8-14 | Feature Freeze | Development | - | 1.1.0 through 1.1.6 (daily) |\n| 3 | Mar 15-21 | Released | Feature Freeze | Development | 1.1.7 through 1.1.13 (daily)\u003cbr\u003e1.2.0 through 1.2.6 (daily) |\n| 4 | Mar 22-28 | - | Released | Feature Freeze | 1.2.7 through 1.2.13 (daily)\u003cbr\u003e1.3.0 through 1.3.6 (daily) |\n\n## Release Summary\n\n### Major features\n\n\u003cdetails id='feature-native-translation'\u003e\n  \u003csummary\u003ev1.5: Native translation (i18n)\u003c/summary\u003e\n\n  ComfyUI now includes built-in translation support, replacing the need for third-party translation extensions. Select your language\n  in `Comfy \u003e Locale \u003e Language` to translate the interface into English, Chinese (Simplified), Russian, Japanese, or Korean. This native\n  implementation offers better performance, reliability, and maintainability compared to previous solutions.\u003cbr\u003e\n\n  More details available here: https://blog.comfy.org/p/native-localization-support-i18n\n\u003c/details\u003e\n\n\u003cdetails id='feature-mask-editor'\u003e\n  \u003csummary\u003ev1.4: New mask editor\u003c/summary\u003e\n\n  https://github.com/Comfy-Org/ComfyUI_frontend/pull/1284 implements a new mask editor.\n\n  ![image](https://github.com/user-attachments/assets/f0ea6ee5-00ee-4e5d-a09c-6938e86a1f17)\n\u003c/details\u003e\n\n\u003cdetails id='feature-integrated-server-terminal'\u003e\n  \u003csummary\u003ev1.3.22: Integrated server terminal\u003c/summary\u003e\n\nPress Ctrl + ` to toggle integrated terminal.\n\nhttps://github.com/user-attachments/assets/eddedc6a-07a3-4a83-9475-63b3977f6d94\n\u003c/details\u003e\n\n\u003cdetails id='feature-keybinding-customization'\u003e\n  \u003csummary\u003ev1.3.7: Keybinding customization\u003c/summary\u003e\n\n## Basic UI\n![image](https://github.com/user-attachments/assets/c84a1609-3880-48e0-a746-011f36beda68)\n\n## Reset button\n![image](https://github.com/user-attachments/assets/4d2922da-bb4f-4f90-8017-a8e4a0db07c7)\n\n## Edit Keybinding\n![image](https://github.com/user-attachments/assets/77626b7a-cb46-48f8-9465-e03120aac66a)\n![image](https://github.com/user-attachments/assets/79131a4e-75c6-4715-bd11-c6aaed887779)\n\n[rec.webm](https://github.com/user-attachments/assets/a3984ed9-eb28-4d47-86c0-7fc3efc2b5d0)\n\n\u003c/details\u003e\n\n\u003cdetails id='feature-node-library-sidebar'\u003e\n  \u003csummary\u003ev1.2.4: Node library sidebar tab\u003c/summary\u003e\n\n  #### Drag \u0026 Drop\nhttps://github.com/user-attachments/assets/853e20b7-bc0e-49c9-bbce-a2ba7566f92f\n\n  #### Filter\nhttps://github.com/user-attachments/assets/4bbca3ee-318f-4cf0-be32-a5a5541066cf\n\u003c/details\u003e\n\n\u003cdetails id='feature-queue-sidebar'\u003e\n  \u003csummary\u003ev1.2.0: Queue/History sidebar tab\u003c/summary\u003e\n\n  https://github.com/user-attachments/assets/86e264fe-4d26-4f07-aa9a-83bdd2d02b8f\n\u003c/details\u003e\n\n\u003cdetails id='feature-node-search'\u003e\n  \u003csummary\u003ev1.1.0: Node search box\u003c/summary\u003e\n\n  #### Fuzzy search \u0026 Node preview\n  ![image](https://github.com/user-attachments/assets/94733e32-ea4e-4a9c-b321-c1a05db48709)\n\n  #### Release link with shift\n  https://github.com/user-attachments/assets/a1b2b5c3-10d1-4256-b620-345de6858f25\n\u003c/details\u003e\n\n### QoL changes\n\n\u003cdetails id='feature-nested-group'\u003e\n  \u003csummary\u003ev1.3.32: **Litegraph** Nested group\u003c/summary\u003e\n\nhttps://github.com/user-attachments/assets/f51adeb1-028e-40af-81e4-0ac13075198a\n\u003c/details\u003e\n\n\u003cdetails id='feature-group-selection'\u003e\n  \u003csummary\u003ev1.3.24: **Litegraph** Group selection\u003c/summary\u003e\n\nhttps://github.com/user-attachments/assets/e6230a94-411e-4fba-90cb-6c694200adaa\n\u003c/details\u003e\n\n\u003cdetails id='feature-toggle-link-visibility'\u003e\n  \u003csummary\u003ev1.3.6: **Litegraph** Toggle link visibility\u003c/summary\u003e\n\n[rec.webm](https://github.com/user-attachments/assets/34e460ac-fbbc-44ef-bfbb-99a84c2ae2be)\n\n\u003c/details\u003e\n\n\u003cdetails id='feature-auto-widget-conversion'\u003e\n  \u003csummary\u003ev1.3.4: **Litegraph** Auto widget to input conversion\u003c/summary\u003e\n\nDropping a link of correct type on node widget will automatically convert the widget to input.\n\n[rec.webm](https://github.com/user-attachments/assets/15cea0b0-b225-4bec-af50-2cdb16dc46bf)\n\n\u003c/details\u003e\n\n\u003cdetails id='feature-pan-mode'\u003e\n  \u003csummary\u003ev1.3.4: **Litegraph** Canvas pan mode\u003c/summary\u003e\n\nThe canvas becomes readonly in pan mode. Pan mode is activated by clicking the pan mode button on the canvas menu\nor by holding the space key.\n\n[rec.webm](https://github.com/user-attachments/assets/c7872532-a2ac-44c1-9e7d-9e03b5d1a80b)\n\n\u003c/details\u003e\n\n\u003cdetails id='feature-shift-drag-link-creation'\u003e\n  \u003csummary\u003ev1.3.1: **Litegraph** Shift drag link to create a new link\u003c/summary\u003e\n\n[rec.webm](https://github.com/user-attachments/assets/7e73aaf9-79e2-4c3c-a26a-911cba3b85e4)\n\n\u003c/details\u003e\n\n\u003cdetails id='feature-optional-input-donuts'\u003e\n  \u003csummary\u003ev1.2.62: **Litegraph** Show optional input slots as donuts\u003c/summary\u003e\n\n![GYEIRidb0AYGO-v](https://github.com/user-attachments/assets/e6cde0b6-654b-4afd-a117-133657a410b1)\n\n\u003c/details\u003e\n\n\u003cdetails id='feature-group-title-edit'\u003e\n  \u003csummary\u003ev1.2.44: **Litegraph** Double click group title to edit\u003c/summary\u003e\n\nhttps://github.com/user-attachments/assets/5bf0e2b6-8b3a-40a7-b44f-f0879e9ad26f\n\n\u003c/details\u003e\n\n\u003cdetails id='feature-group-selection-shortcut'\u003e\n  \u003csummary\u003ev1.2.39: **Litegraph** Group selected nodes with Ctrl + G\u003c/summary\u003e\n\nhttps://github.com/user-attachments/assets/7805dc54-0854-4a28-8bcd-4b007fa01151\n\n\u003c/details\u003e\n\n\u003cdetails id='feature-node-title-edit'\u003e\n  \u003csummary\u003ev1.2.38: **Litegraph** Double click node title to edit\u003c/summary\u003e\n\nhttps://github.com/user-attachments/assets/d61d5d0e-f200-4153-b293-3e3f6a212b30\n\n\u003c/details\u003e\n\n\u003cdetails id='feature-drag-multi-link'\u003e\n  \u003csummary\u003ev1.2.7: **Litegraph** drags multiple links with shift pressed\u003c/summary\u003e\n\nhttps://github.com/user-attachments/assets/68826715-bb55-4b2a-be6e-675cfc424afe\n\nhttps://github.com/user-attachments/assets/c142c43f-2fe9-4030-8196-b3bfd4c6977d\n\n\u003c/details\u003e\n\n\u003cdetails id='feature-auto-connect-link'\u003e\n  \u003csummary\u003ev1.2.2: **Litegraph** auto connects to correct slot\u003c/summary\u003e\n\n  #### Before\n  https://github.com/user-attachments/assets/c253f778-82d5-4e6f-aec0-ea2ccf421651\n\n  #### After\n  https://github.com/user-attachments/assets/b6360ac0-f0d2-447c-9daa-8a2e20c0dc1d\n\u003c/details\u003e\n\n\u003cdetails id='feature-hide-text-overflow'\u003e\n  \u003csummary\u003ev1.1.8: **Litegraph** hides text overflow on widget value\u003c/summary\u003e\n\n  https://github.com/user-attachments/assets/5696a89d-4a47-4fcc-9e8c-71e1264943f2\n\u003c/details\u003e\n\n### Developer APIs\n\n\u003cdetails\u003e\n  \u003csummary\u003ev1.6.13: prompt/confirm/alert replacements for ComfyUI desktop\u003c/summary\u003e\n\nSeveral browser-only APIs are not available in ComfyUI desktop's electron environment.\n\n- `window.prompt`\n- `window.confirm`\n- `window.alert`\n\nPlease use the following APIs as replacements.\n\n```js\n// window.prompt\nwindow['app'].extensionManager.dialog\n  .prompt({\n    title: 'Test Prompt',\n    message: 'Test Prompt Message'\n  })\n  .then((value: string) =\u003e {\n    // Do something with the value user entered\n  })\n```\n\n![image](https://github.com/user-attachments/assets/c73f74d0-9bb4-4555-8d56-83f1be4a1d7e)\n\n```js\n// window.confirm\nwindow['app'].extensionManager.dialog\n  .confirm({\n    title: 'Test Confirm',\n    message: 'Test Confirm Message'\n  })\n  .then((value: boolean) =\u003e {\n    // Do something with the value user entered\n  })\n```\n\n![image](https://github.com/user-attachments/assets/8dec7a42-7443-4245-85be-ceefb1116e96)\n\n```js\n// window.alert\nwindow['app'].extensionManager.toast\n  .addAlert(\"Test Alert\")\n```\n\n![image](https://github.com/user-attachments/assets/9b18bdca-76ef-4432-95de-5cd2369684f2)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003ev1.3.34: Register about panel badges\u003c/summary\u003e\n\n```js\napp.registerExtension({\n  name: 'TestExtension1',\n  aboutPageBadges: [\n    {\n      label: 'Test Badge',\n      url: 'https://example.com',\n      icon: 'pi pi-box'\n    }\n  ]\n})\n```\n\n![image](https://github.com/user-attachments/assets/099e77ee-16ad-4141-b2fc-5e9d5075188b)\n\n\u003c/details\u003e\n\n\u003cdetails id='extension-api-bottom-panel-tabs'\u003e\n  \u003csummary\u003ev1.3.22: Register bottom panel tabs\u003c/summary\u003e\n\n```js\napp.registerExtension({\n  name: 'TestExtension',\n  bottomPanelTabs: [\n    {\n      id: 'TestTab',\n      title: 'Test Tab',\n      type: 'custom',\n      render: (el) =\u003e {\n        el.innerHTML = '\u003cdiv\u003eCustom tab\u003c/div\u003e'\n      }\n    }\n  ]\n})\n```\n\n![image](https://github.com/user-attachments/assets/2114f8b8-2f55-414b-b027-78e61c870b64)\n\n\u003c/details\u003e\n\n\u003cdetails id='extension-api-settings'\u003e\n  \u003csummary\u003ev1.3.22: New settings API\u003c/summary\u003e\n\nLegacy settings API.\n\n```js\n// Register a new setting\napp.ui.settings.addSetting({\n  id: 'TestSetting',\n  name: 'Test Setting',\n  type: 'text',\n  defaultValue: 'Hello, world!'\n})\n\n// Get the value of a setting\nconst value = app.ui.settings.getSettingValue('TestSetting')\n\n// Set the value of a setting\napp.ui.settings.setSettingValue('TestSetting', 'Hello, universe!')\n```\n\nNew settings API.\n\n```js\n// Register a new setting\napp.registerExtension({\n  name: 'TestExtension1',\n  settings: [\n    {\n      id: 'TestSetting',\n      name: 'Test Setting',\n      type: 'text',\n      defaultValue: 'Hello, world!'\n    }\n  ]\n})\n\n// Get the value of a setting\nconst value = app.extensionManager.setting.get('TestSetting')\n\n// Set the value of a setting\napp.extensionManager.setting.set('TestSetting', 'Hello, universe!')\n```\n\n\u003c/details\u003e\n\n\u003cdetails id='extension-api-commands-keybindings'\u003e\n  \u003csummary\u003ev1.3.7: Register commands and keybindings\u003c/summary\u003e\n\n  Extensions can call the following API to register commands and keybindings. Do\n  note that keybindings defined in core cannot be overwritten, and some keybindings\n  are reserved by the browser.\n\n```js\n  app.registerExtension({\n    name: 'TestExtension1',\n    commands: [\n      {\n        id: 'TestCommand',\n        function: () =\u003e {\n          alert('TestCommand')\n        }\n      }\n    ],\n    keybindings: [\n      {\n        combo: { key: 'k' },\n        commandId: 'TestCommand'\n      }\n    ]\n  })\n```\n\n\u003c/details\u003e\n\n\u003cdetails id='extension-api-topbar-menu'\u003e\n  \u003csummary\u003ev1.3.1: Extension API to register custom topbar menu items\u003c/summary\u003e\n\n  Extensions can call the following API to register custom topbar menu items.\n\n```js\n  app.registerExtension({\n    name: 'TestExtension1',\n    commands: [\n      {\n        id: 'foo-id',\n        label: 'foo',\n        function: () =\u003e {\n          alert(1)\n        }\n      }\n    ],\n    menuCommands: [\n      {\n        path: ['ext', 'ext2'],\n        commands: ['foo-id']\n      }\n    ]\n  })\n```\n\n![image](https://github.com/user-attachments/assets/ae7b082f-7ce9-4549-a446-4563567102fe)\n\u003c/details\u003e\n\n\u003cdetails id='extension-api-toast'\u003e\n  \u003csummary\u003ev1.2.27: Extension API to add toast message\u003c/summary\u003ei\n\n  Extensions can call the following API to add toast messages.\n\n```js\n  app.extensionManager.toast.add({\n    severity: 'info',\n    summary: 'Loaded!',\n    detail: 'Extension loaded!',\n    life: 3000\n  })\n```\nDocumentation of all supported options can be found here: \u003chttps://primevue.org/toast/#api.toast.interfaces.ToastMessageOptions\u003e\n\n![image](https://github.com/user-attachments/assets/de02cd7e-cd81-43d1-a0b0-bccef92ff487)\n\u003c/details\u003e\n\n\u003cdetails id='extension-api-sidebar-tab'\u003e\n  \u003csummary\u003ev1.2.4: Extension API to register custom sidebar tab\u003c/summary\u003e\n\n  Extensions now can call the following API to register a sidebar tab.\n\n```js\n  app.extensionManager.registerSidebarTab({\n    id: \"search\",\n    icon: \"pi pi-search\",\n    title: \"search\",\n    tooltip: \"search\",\n    type: \"custom\",\n    render: (el) =\u003e {\n      el.innerHTML = \"\u003cdiv\u003eCustom search tab\u003c/div\u003e\";\n    },\n  });\n```\n\nThe list of supported icons can be found here: \u003chttps://primevue.org/icons/#list\u003e\n\nWe will support custom icons later.\n\n![image](https://github.com/user-attachments/assets/7bff028a-bf91-4cab-bf97-55c243b3f5e0)\n\u003c/details\u003e\n\n\u003cdetails id='extension-api-selection-toolbox'\u003e\n  \u003csummary\u003ev1.10.9: Selection Toolbox API\u003c/summary\u003e\n\nExtensions can register commands that appear in the selection toolbox when specific items are selected on the canvas.\n\n```js\napp.registerExtension({\n  name: 'TestExtension1',\n  commands: [\n    {\n      id: 'test.selection.command',\n      label: 'Test Command',\n      icon: 'pi pi-star',\n      function: () =\u003e {\n        // Command logic here\n      }\n    }\n  ],\n  // Return an array of command IDs to show in the selection toolbox\n  // when an item is selected\n  getSelectionToolboxCommands: (selectedItem) =\u003e ['test.selection.command']\n})\n```\n\nThe selection toolbox will display the command button when items are selected:\n![Image](https://github.com/user-attachments/assets/28d91267-c0a9-4bd5-a7c4-36e8ec44c9bd)\n\n\u003c/details\u003e\n\n## Development\n\n### Tech Stack\n\n- [Vue 3](https://vuejs.org/) with [TypeScript](https://www.typescriptlang.org/)\n- [Pinia](https://pinia.vuejs.org/) for state management\n- [PrimeVue](https://primevue.org/) with [TailwindCSS](https://tailwindcss.com/) for UI\n- [litegraph.js](https://github.com/Comfy-Org/litegraph.js) for node editor\n- [zod](https://zod.dev/) for schema validation\n- [vue-i18n](https://github.com/intlify/vue-i18n) for internationalization\n\n### Git pre-commit hooks\n\nRun `npm run prepare` to install Git pre-commit hooks. Currently, the pre-commit\nhook is used to auto-format code on commit.\n\n### Dev Server\n\nNote: The dev server will NOT load any extension from the ComfyUI server. Only\ncore extensions will be loaded.\n\n- Start local ComfyUI backend at `localhost:8188`\n- Run `npm run dev` to start the dev server\n- Run `npm run dev:electron` to start the dev server with electron API mocked\n\n#### Access dev server on touch devices\n\nEnable remote access to the dev server by setting `VITE_REMOTE_DEV` in `.env` to `true`.\n\nAfter you start the dev server, you should see following logs:\n\n```\n\u003e comfyui-frontend@1.3.42 dev\n\u003e vite\n\n\n  VITE v5.4.6  ready in 488 ms\n\n  ➜  Local:   http://localhost:5173/\n  ➜  Network: http://172.21.80.1:5173/\n  ➜  Network: http://192.168.2.20:5173/\n  ➜  press h + enter to show help\n```\n\nMake sure your desktop machine and touch device are on the same network. On your touch device,\nnavigate to `http://\u003cserver_ip\u003e:5173` (e.g. `http://192.168.2.20:5173` here), to access the ComfyUI frontend.\n\n### Unit Test\n\n- `npm i` to install all dependencies\n- `npm run test:unit` to execute all unit tests.\n\n### Component Test\n\nComponent test verifies Vue components in `src/components/`.\n\n- `npm run test:component` to execute all component tests.\n\n### Playwright Test\n\nPlaywright test verifies the whole app. See \u003chttps://github.com/Comfy-Org/ComfyUI_frontend/blob/main/browser_tests/README.md\u003e for details.\n\n### litegraph.js\n\nThis repo is using litegraph package hosted on \u003chttps://github.com/Comfy-Org/litegraph.js\u003e. Any changes to litegraph should be submitted in that repo instead.\n\n#### Test litegraph.js changes\n\n- Run `npm link` in the local litegraph repo.\n- Run `npm link @comfyorg/litegraph` in this repo.\n\nThis will replace the litegraph package in this repo with the local litegraph repo.\n\n### i18n\n\nSee [locales/README.md](src/locales/README.md) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FComfy-Org%2FComfyUI_frontend","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FComfy-Org%2FComfyUI_frontend","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FComfy-Org%2FComfyUI_frontend/lists"}