mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-01-26 19:09:52 +00:00
## Summary Add asset browser dialog integration for combo widgets with full animation support and proper state management. (Thank you Claude from saving me me from merge conflict hell on this one.) ## Changes - Widget integration: combo widgets now use AssetBrowserModal for eligible asset types - Dialog animations: added animateHide() for smooth close transitions - Async operations: proper sequencing of widget updates and dialog animations - Service layer: added getAssetsForNodeType() and getAssetDetails() methods - Type safety: comprehensive TypeScript types and error handling - Test coverage: unit tests for all new functionality - Bonus: fixed the hardcoded labels in AssetFilterBar Widget behavior: - Shows asset browser button for eligible widgets when asset API enabled - Handles asset selection with proper callback sequencing - Maintains widget value updates and litegraph notification ## Review Focus I will call out some stuff inline. ## Screenshots https://github.com/user-attachments/assets/9d3a72cf-d2b0-445f-8022-4c49daa04637 ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-5629-feat-integrate-asset-browser-with-widget-system-2726d73d365081a9a98be9a2307aee0b) by [Unito](https://www.unito.io) --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: GitHub Action <action@github.com>
161 lines
5.6 KiB
JSON
161 lines
5.6 KiB
JSON
{
|
|
"name": "@comfyorg/comfyui-frontend",
|
|
"private": true,
|
|
"version": "1.28.0",
|
|
"type": "module",
|
|
"repository": "https://github.com/Comfy-Org/ComfyUI_frontend",
|
|
"homepage": "https://comfy.org",
|
|
"description": "Official front-end implementation of ComfyUI",
|
|
"license": "GPL-3.0-only",
|
|
"scripts": {
|
|
"dev": "nx serve",
|
|
"dev:electron": "nx serve --config vite.electron.config.mts",
|
|
"build": "pnpm typecheck && nx build",
|
|
"build:types": "nx build --config vite.types.config.mts && node scripts/prepare-types.js",
|
|
"zipdist": "node scripts/zipdist.js",
|
|
"typecheck": "vue-tsc --noEmit",
|
|
"format": "prettier --write './**/*.{js,ts,tsx,vue,mts}' --cache --list-different",
|
|
"format:check": "prettier --check './**/*.{js,ts,tsx,vue,mts}' --cache",
|
|
"format:no-cache": "prettier --write './**/*.{js,ts,tsx,vue,mts}' --list-different",
|
|
"format:check:no-cache": "prettier --check './**/*.{js,ts,tsx,vue,mts}'",
|
|
"test:browser": "npx nx e2e",
|
|
"test:unit": "nx run test tests-ui/tests",
|
|
"test:component": "nx run test src/components/",
|
|
"test:litegraph": "vitest run --config vitest.litegraph.config.ts",
|
|
"preinstall": "npx only-allow pnpm",
|
|
"prepare": "husky || true && git config blame.ignoreRevsFile .git-blame-ignore-revs || true",
|
|
"preview": "nx preview",
|
|
"lint": "eslint src --cache",
|
|
"lint:fix": "eslint src --cache --fix",
|
|
"lint:unstaged": "git diff --name-only HEAD | grep -E '\\.(js|ts|vue|mts)$' | xargs -r eslint --cache",
|
|
"lint:unstaged:fix": "git diff --name-only HEAD | grep -E '\\.(js|ts|vue|mts)$' | xargs -r eslint --cache --fix",
|
|
"lint:no-cache": "eslint src",
|
|
"lint:fix:no-cache": "eslint src --fix",
|
|
"knip": "knip --cache",
|
|
"knip:no-cache": "knip",
|
|
"locale": "lobe-i18n locale",
|
|
"collect-i18n": "npx playwright test --config=playwright.i18n.config.ts",
|
|
"json-schema": "tsx scripts/generate-json-schema.ts",
|
|
"storybook": "nx storybook -p 6006",
|
|
"build-storybook": "storybook build"
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/js": "^9.35.0",
|
|
"@iconify-json/lucide": "^1.2.66",
|
|
"@iconify/tailwind": "^1.2.0",
|
|
"@intlify/eslint-plugin-vue-i18n": "^4.1.0",
|
|
"@lobehub/i18n-cli": "^1.25.1",
|
|
"@nx/eslint": "21.4.1",
|
|
"@nx/playwright": "21.4.1",
|
|
"@nx/storybook": "21.4.1",
|
|
"@nx/vite": "21.4.1",
|
|
"@pinia/testing": "^0.1.5",
|
|
"@playwright/test": "^1.52.0",
|
|
"@storybook/addon-docs": "^9.1.1",
|
|
"@storybook/vue3": "^9.1.1",
|
|
"@storybook/vue3-vite": "^9.1.1",
|
|
"@tailwindcss/vite": "^4.1.12",
|
|
"@trivago/prettier-plugin-sort-imports": "^5.2.0",
|
|
"@types/fs-extra": "^11.0.4",
|
|
"@types/jsdom": "^21.1.7",
|
|
"@types/node": "^20.14.8",
|
|
"@types/semver": "^7.7.0",
|
|
"@types/three": "^0.169.0",
|
|
"@vitejs/plugin-vue": "^5.1.4",
|
|
"@vitest/coverage-v8": "^3.2.4",
|
|
"@vitest/ui": "^3.0.0",
|
|
"@vue/test-utils": "^2.4.6",
|
|
"eslint": "^9.34.0",
|
|
"eslint-config-prettier": "^10.1.8",
|
|
"eslint-plugin-prettier": "^5.5.4",
|
|
"eslint-plugin-storybook": "^9.1.6",
|
|
"eslint-plugin-unused-imports": "^4.2.0",
|
|
"eslint-plugin-vue": "^10.4.0",
|
|
"fs-extra": "^11.2.0",
|
|
"globals": "^15.9.0",
|
|
"happy-dom": "^15.11.0",
|
|
"husky": "^9.0.11",
|
|
"jiti": "2.4.2",
|
|
"jsdom": "^26.1.0",
|
|
"knip": "^5.62.0",
|
|
"lint-staged": "^15.2.7",
|
|
"nx": "21.4.1",
|
|
"prettier": "^3.3.2",
|
|
"storybook": "^9.1.6",
|
|
"tailwindcss": "^4.1.12",
|
|
"tailwindcss-primeui": "^0.6.1",
|
|
"tsx": "^4.15.6",
|
|
"tw-animate-css": "^1.3.8",
|
|
"typescript": "^5.4.5",
|
|
"typescript-eslint": "^8.44.0",
|
|
"unplugin-icons": "^0.22.0",
|
|
"unplugin-vue-components": "^0.28.0",
|
|
"uuid": "^11.1.0",
|
|
"vite": "^5.4.19",
|
|
"vite-plugin-dts": "^4.5.4",
|
|
"vite-plugin-html": "^3.2.2",
|
|
"vite-plugin-vue-devtools": "^7.7.6",
|
|
"vitest": "^3.2.4",
|
|
"vue-eslint-parser": "^10.2.0",
|
|
"vue-tsc": "^3.0.7",
|
|
"zip-dir": "^2.0.0",
|
|
"zod-to-json-schema": "^3.24.1"
|
|
},
|
|
"dependencies": {
|
|
"@alloc/quick-lru": "^5.2.0",
|
|
"@atlaskit/pragmatic-drag-and-drop": "^1.3.1",
|
|
"@comfyorg/comfyui-electron-types": "0.4.73-0",
|
|
"@iconify/json": "^2.2.380",
|
|
"@primeuix/forms": "0.0.2",
|
|
"@primeuix/styled": "0.3.2",
|
|
"@primeuix/utils": "^0.3.2",
|
|
"@primevue/core": "^4.2.5",
|
|
"@primevue/forms": "^4.2.5",
|
|
"@primevue/icons": "4.2.5",
|
|
"@primevue/themes": "^4.2.5",
|
|
"@sentry/vue": "^8.48.0",
|
|
"@tiptap/core": "^2.10.4",
|
|
"@tiptap/extension-link": "^2.10.4",
|
|
"@tiptap/extension-table": "^2.10.4",
|
|
"@tiptap/extension-table-cell": "^2.10.4",
|
|
"@tiptap/extension-table-header": "^2.10.4",
|
|
"@tiptap/extension-table-row": "^2.10.4",
|
|
"@tiptap/starter-kit": "^2.10.4",
|
|
"@vueuse/core": "^11.0.0",
|
|
"@xterm/addon-fit": "^0.10.0",
|
|
"@xterm/addon-serialize": "^0.13.0",
|
|
"@xterm/xterm": "^5.5.0",
|
|
"algoliasearch": "^5.21.0",
|
|
"axios": "^1.8.2",
|
|
"chart.js": "^4.5.0",
|
|
"clsx": "^2.1.1",
|
|
"dompurify": "^3.2.5",
|
|
"dotenv": "^16.4.5",
|
|
"es-toolkit": "^1.39.9",
|
|
"extendable-media-recorder": "^9.2.27",
|
|
"extendable-media-recorder-wav-encoder": "^7.0.129",
|
|
"fast-glob": "^3.3.3",
|
|
"firebase": "^11.6.0",
|
|
"fuse.js": "^7.0.0",
|
|
"glob": "^11.0.3",
|
|
"jsondiffpatch": "^0.6.0",
|
|
"loglevel": "^1.9.2",
|
|
"marked": "^15.0.11",
|
|
"pinia": "^2.1.7",
|
|
"primeicons": "^7.0.0",
|
|
"primevue": "^4.2.5",
|
|
"reka-ui": "^2.5.0",
|
|
"semver": "^7.7.2",
|
|
"tailwind-merge": "^3.3.1",
|
|
"three": "^0.170.0",
|
|
"tiptap-markdown": "^0.8.10",
|
|
"vue": "^3.5.13",
|
|
"vue-i18n": "^9.14.3",
|
|
"vue-router": "^4.4.3",
|
|
"vuefire": "^3.2.1",
|
|
"yjs": "^13.6.27",
|
|
"zod": "^3.23.8",
|
|
"zod-validation-error": "^3.3.0"
|
|
}
|
|
}
|