mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-01-26 19:09:52 +00:00
This pull request refactors and simplifies the template workflow card components and related UI in the codebase. The main changes focus on removing unused or redundant components, improving visual and interaction consistency, and enhancing error handling for images. Below are the most important changes grouped by theme: **Template Workflow Card Refactor and Cleanup** * Removed the `TemplateWorkflowCard.vue` component and its associated test file `TemplateWorkflowCard.spec.ts`, as well as the `TemplateWorkflowCardSkeleton.vue` and `TemplateWorkflowList.vue` components, indicating a shift away from the previous card-based template workflow UI. [[1]](diffhunk://#diff-49569af0404058e8257f3cc0716b066517ce7397dd58744b02aa0d0c61f2a815L1-L139) [[2]](diffhunk://#diff-9fa6fc1470371f0b520d4deda4129fb313b1bea69888a376556f4bd824f9d751L1-L263) [[3]](diffhunk://#diff-bc35b6f77d1cee6e86b05d0da80b7bd40013c7a6a97a89706d3bc52573e1c574L1-L30) [[4]](diffhunk://#diff-48171f792b22022526fca411d3c3a366d48b675dab77943a20846ae079cbaf3bL1-L68) * Removed the `TemplateSearchBar.vue` component, suggesting a redesign or replacement of the search/filter UI for templates. **UI and Interaction Improvements** * Improved the `CardBottom.vue` component by making its height configurable via a `fullHeight` prop, enhancing layout flexibility. * Updated the `CardContainer.vue` component to add hover effects (background, border, shadow, and padding) and support a new `none` aspect ratio for more flexible card layouts. **Image and Input Enhancements** * Enhanced the `LazyImage.vue` component to display a default placeholder image when an image fails to load, improving error handling and user experience. * Improved the `SearchBox.vue` component by making the input focusable when clicking anywhere on the wrapper, and added a template ref for better accessibility and usability. [[1]](diffhunk://#diff-08f3b0c51fbfe63171509b9944bf7558228f6c2596a1ef5338e88ab64585791bL2-R5) [[2]](diffhunk://#diff-08f3b0c51fbfe63171509b9944bf7558228f6c2596a1ef5338e88ab64585791bL16-R17) [[3]](diffhunk://#diff-08f3b0c51fbfe63171509b9944bf7558228f6c2596a1ef5338e88ab64585791bR33-R39) **Minor UI Tweaks** * Adjusted label styling in `SingleSelect.vue` to remove unnecessary overflow handling, simplifying the visual layout. --------- Co-authored-by: Benjamin Lu <benceruleanlu@proton.me> Co-authored-by: Alexander Brown <drjkl@comfy.org> Co-authored-by: github-actions <github-actions@github.com> Co-authored-by: Christian Byrne <cbyrne@comfy.org> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: snomiao <snomiao@gmail.com> Co-authored-by: GitHub Action <action@github.com> Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com> Co-authored-by: Comfy Org PR Bot <snomiao+comfy-pr@gmail.com> Co-authored-by: Jin Yi <jin12cc@gmail.com>
162 lines
5.7 KiB
JSON
162 lines
5.7 KiB
JSON
{
|
|
"name": "@comfyorg/comfyui-frontend",
|
|
"private": true,
|
|
"version": "1.28.2",
|
|
"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:all": "nx run test",
|
|
"test:browser": "pnpm exec nx e2e",
|
|
"test:component": "nx run test src/components/",
|
|
"test:litegraph": "vitest run --config vitest.litegraph.config.ts",
|
|
"test:unit": "nx run test tests-ui/tests",
|
|
"preinstall": "pnpm dlx 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": "pnpm exec 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-component-type-helpers": "^3.0.7",
|
|
"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",
|
|
"@comfyorg/tailwind-utils": "workspace:*",
|
|
"@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",
|
|
"@vueuse/integrations": "^13.9.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",
|
|
"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",
|
|
"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"
|
|
}
|
|
} |