From d9e11226770256b660a59ab271dd99153c14b50b Mon Sep 17 00:00:00 2001 From: Terry Jia Date: Fri, 23 Jan 2026 18:16:13 -0500 Subject: [PATCH 001/241] fix: replace vite preload error reload with error logging (#8261) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary The reload approach didn't fully work because CSS and other preload errors emit different error types. Log errors for Sentry tracking instead, to be solved on the backend by serving chunks from past deployments. fix https://github.com/Comfy-Org/ComfyUI_frontend/issues/8153 ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-8261-fix-replace-vite-preload-error-reload-with-error-logging-2f16d73d365081e3b309f5470412506a) by [Unito](https://www.unito.io) --------- Co-authored-by: Alexander Brown --- src/App.vue | 31 +++++++++---------------------- src/locales/en/main.json | 2 -- 2 files changed, 9 insertions(+), 24 deletions(-) diff --git a/src/App.vue b/src/App.vue index 6b7c56be07..c3a879b17d 100644 --- a/src/App.vue +++ b/src/App.vue @@ -9,6 +9,7 @@ -
+
+ Loading ComfyUI... + +
From bcb4d6e403ca5ed37892e9023eef9b8147b1f06a Mon Sep 17 00:00:00 2001 From: Alexander Brown Date: Tue, 27 Jan 2026 14:04:35 -0800 Subject: [PATCH 041/241] fix: await needsLogin (#8340) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Add additional protection for bootstrap order issues. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-8340-fix-await-needsLogin-2f56d73d365081c9b3c6d5a091c1eb8d) by [Unito](https://www.unito.io) --------- Co-authored-by: Amp --- src/stores/bootstrapStore.test.ts | 4 +++- src/stores/bootstrapStore.ts | 25 +++++++++++++++---------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/stores/bootstrapStore.test.ts b/src/stores/bootstrapStore.test.ts index ad85a4eafe..1fb36413c9 100644 --- a/src/stores/bootstrapStore.test.ts +++ b/src/stores/bootstrapStore.test.ts @@ -42,10 +42,11 @@ vi.mock('@/platform/workflow/management/stores/workflowStore', () => ({ })) })) +const mockNeedsLogin = ref(false) vi.mock('@/stores/userStore', () => ({ useUserStore: vi.fn(() => ({ initialize: vi.fn().mockResolvedValue(undefined), - needsLogin: false + needsLogin: mockNeedsLogin })) })) @@ -65,6 +66,7 @@ describe('bootstrapStore', () => { beforeEach(() => { mockIsSettingsReady.value = false mockIsFirebaseInitialized.value = false + mockNeedsLogin.value = false mockDistributionTypes.isCloud = false setActivePinia(createTestingPinia({ stubActions: false })) vi.clearAllMocks() diff --git a/src/stores/bootstrapStore.ts b/src/stores/bootstrapStore.ts index 63eb00715a..5b27f2ead8 100644 --- a/src/stores/bootstrapStore.ts +++ b/src/stores/bootstrapStore.ts @@ -1,12 +1,12 @@ import { until, useAsyncState } from '@vueuse/core' import { defineStore, storeToRefs } from 'pinia' +import { isCloud } from '@/platform/distribution/types' import { useSettingStore } from '@/platform/settings/settingStore' import { useWorkflowStore } from '@/platform/workflow/management/stores/workflowStore' import { api } from '@/scripts/api' -import { useUserStore } from '@/stores/userStore' -import { isCloud } from '@/platform/distribution/types' import { useFirebaseAuthStore } from '@/stores/firebaseAuthStore' +import { useUserStore } from '@/stores/userStore' export const useBootstrapStore = defineStore('bootstrap', () => { const settingStore = useSettingStore() @@ -26,9 +26,16 @@ export const useBootstrapStore = defineStore('bootstrap', () => { { immediate: false } ) + let storesLoaded = false + + function loadAuthenticatedStores() { + if (storesLoaded) return + storesLoaded = true + void settingStore.load() + void workflowStore.loadWorkflows() + } + async function startStoreBootstrap() { - // Defer settings and workflows if multi-user login is required - // (settings API requires authentication in multi-user mode) const userStore = useUserStore() await userStore.initialize() @@ -37,13 +44,11 @@ export const useBootstrapStore = defineStore('bootstrap', () => { await until(isInitialized).toBe(true) } - // i18n can load without authentication - void loadI18n() + const { needsLogin } = storeToRefs(userStore) + await until(needsLogin).toBe(false) - if (!userStore.needsLogin) { - void settingStore.load() - void workflowStore.loadWorkflows() - } + void loadI18n() + loadAuthenticatedStores() } return { From 68f3f2f537ff478ee5009a3149f9d5925d2bff78 Mon Sep 17 00:00:00 2001 From: Zhiqi Yao Date: Wed, 28 Jan 2026 08:43:31 +0800 Subject: [PATCH 042/241] Fix Chinese translation "paste" misspelling (#8316) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Fixed the `站贴` misspelling. The original translation is a common misspelling using Pinyin IME because they are pronounced the same in Chinese. ## Changes - Change translation: `站贴` to `粘贴` ## Review Focus Check the fact that `粘贴` is correct in Chinese. If you're not a Chinese speaker, copy `粘贴` to Google Translate, and it should be `paste` exactly. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-8316-Fix-Chinese-translation-paste-misspelling-2f46d73d3650814884e3e4adf8edeb5d) by [Unito](https://www.unito.io) --- src/locales/zh/main.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/locales/zh/main.json b/src/locales/zh/main.json index 726ea9400a..c7d5ab939d 100644 --- a/src/locales/zh/main.json +++ b/src/locales/zh/main.json @@ -142,7 +142,7 @@ "uploadFailed": "导入失败", "uploadModel": "导入模型", "uploadModelDescription1": "粘贴 Civitai 模型下载链接,将其添加到库中。", - "uploadModelDescription1Generic": "站贴模型下载链接,将其添加到模型库中。", + "uploadModelDescription1Generic": "粘贴模型下载链接,将其添加到模型库中。", "uploadModelDescription2": "目前仅支持 https://civitai.com 链接。", "uploadModelDescription2Generic": "仅支持来自以下提供服务的 URL :", "uploadModelDescription2Link": "https://civitai.com/models", @@ -482,7 +482,7 @@ "Open Image": "打开图像", "Open in Mask Editor": "用遮罩编辑器打开", "Outputs": "输出", - "Paste": "站贴", + "Paste": "粘贴", "Pin": "固定", "Properties": "属性", "Properties Panel": "属性面板", @@ -2809,4 +2809,4 @@ "showMinimap": "显示小地图", "zoomToFit": "适合画面" } -} +} \ No newline at end of file From f0eecdfdfa2d5641a529b69323a2e3861b3b5a37 Mon Sep 17 00:00:00 2001 From: Kelly Yang <124ykl@gmail.com> Date: Tue, 27 Jan 2026 17:25:58 -0800 Subject: [PATCH 043/241] Refactor DropZone to use VueUse useDropZone (#8174) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Refactor DropZone to use VueUse useDropZone. (#7971, #7734) ## Changes - **What**: Replaced `@dragover`, `@dragleave`, and `@drop` bindings with `useDropZone`. ## Review Focus ## Screenshots ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-8174-Refactor-DropZone-to-use-VueUse-useDropZone-2ee6d73d365081ed9d31d68f7cf42263) by [Unito](https://www.unito.io) --- .../extensions/linearMode/DropZone.vue | 35 +++++++++++++------ 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/src/renderer/extensions/linearMode/DropZone.vue b/src/renderer/extensions/linearMode/DropZone.vue index ca6330aef8..c8fd3b9c18 100644 --- a/src/renderer/extensions/linearMode/DropZone.vue +++ b/src/renderer/extensions/linearMode/DropZone.vue @@ -1,9 +1,10 @@