diff --git a/src/components/dialog/content/ManagerProgressDialogContent.vue b/src/components/dialog/content/ManagerProgressDialogContent.vue new file mode 100644 index 000000000..a89a760f8 --- /dev/null +++ b/src/components/dialog/content/ManagerProgressDialogContent.vue @@ -0,0 +1,114 @@ + + + diff --git a/src/components/dialog/footer/ManagerProgressFooter.vue b/src/components/dialog/footer/ManagerProgressFooter.vue new file mode 100644 index 000000000..1b816cce4 --- /dev/null +++ b/src/components/dialog/footer/ManagerProgressFooter.vue @@ -0,0 +1,107 @@ + + + diff --git a/src/components/dialog/header/ManagerProgressHeader.vue b/src/components/dialog/header/ManagerProgressHeader.vue new file mode 100644 index 000000000..939c80e65 --- /dev/null +++ b/src/components/dialog/header/ManagerProgressHeader.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/composables/useCoreCommands.ts b/src/composables/useCoreCommands.ts index 5e77023c9..a98bf1b2c 100644 --- a/src/composables/useCoreCommands.ts +++ b/src/composables/useCoreCommands.ts @@ -590,6 +590,15 @@ export function useCoreCommands(): ComfyCommand[] { function: () => { dialogService.showManagerDialog() } + }, + { + id: 'Comfy.Manager.ToggleManagerProgressDialog', + icon: 'pi pi-spinner', + label: 'Toggle Progress Dialog', + versionAdded: '1.13.9', + function: () => { + dialogService.showManagerProgressDialog() + } } ] } diff --git a/src/locales/en/commands.json b/src/locales/en/commands.json index c48685efb..b72f6812b 100644 --- a/src/locales/en/commands.json +++ b/src/locales/en/commands.json @@ -128,6 +128,9 @@ "Comfy_Manager_CustomNodesManager": { "label": "Custom Nodes Manager" }, + "Comfy_Manager_ToggleManagerProgressDialog": { + "label": "Toggle Progress Dialog" + }, "Comfy_NewBlankWorkflow": { "label": "New Blank Workflow" }, diff --git a/src/locales/en/main.json b/src/locales/en/main.json index 3d23bc151..97b85118f 100644 --- a/src/locales/en/main.json +++ b/src/locales/en/main.json @@ -94,10 +94,12 @@ "filter": "Filter", "apply": "Apply", "enabled": "Enabled", - "installed": "Installed" + "installed": "Installed", + "restart": "Restart" }, "manager": { "title": "Custom Nodes Manager", + "restartToApplyChanges": "To apply changes, please restart ComfyUI", "loadingVersions": "Loading versions...", "selectVersion": "Select Version", "downloads": "Downloads", @@ -615,6 +617,7 @@ "Interrupt": "Interrupt", "Load Default Workflow": "Load Default Workflow", "Custom Nodes Manager": "Custom Nodes Manager", + "Toggle Progress Dialog": "Toggle Progress Dialog", "New": "New", "Clipspace": "Clipspace", "Open": "Open", diff --git a/src/locales/fr/commands.json b/src/locales/fr/commands.json index 2b446e1d3..642c08a81 100644 --- a/src/locales/fr/commands.json +++ b/src/locales/fr/commands.json @@ -128,6 +128,9 @@ "Comfy_Manager_CustomNodesManager": { "label": "Gestionnaire de Nœuds Personnalisés" }, + "Comfy_Manager_ToggleManagerProgressDialog": { + "label": "Basculer la boîte de dialogue de progression" + }, "Comfy_NewBlankWorkflow": { "label": "Nouveau flux de travail vierge" }, diff --git a/src/locales/fr/main.json b/src/locales/fr/main.json index 793014b3d..83a6fc7ce 100644 --- a/src/locales/fr/main.json +++ b/src/locales/fr/main.json @@ -188,6 +188,7 @@ "reportSent": "Rapport soumis", "reset": "Réinitialiser", "resetKeybindingsTooltip": "Réinitialiser les raccourcis clavier par défaut", + "restart": "Redémarrer", "resultsCount": "{count} Résultats Trouvés", "save": "Enregistrer", "saving": "Enregistrement", @@ -397,6 +398,7 @@ "nodePack": "Pack de Nœuds", "packsSelected": "Packs sélectionnés", "repository": "Référentiel", + "restartToApplyChanges": "Pour appliquer les modifications, veuillez redémarrer ComfyUI", "searchPlaceholder": "Recherche", "selectVersion": "Sélectionner la version", "sort": { @@ -530,6 +532,7 @@ "Toggle Logs Bottom Panel": "Basculer le panneau inférieur des journaux", "Toggle Model Library Sidebar": "Basculer la barre latérale de la bibliothèque de modèles", "Toggle Node Library Sidebar": "Basculer la barre latérale de la bibliothèque de nœuds", + "Toggle Progress Dialog": "Basculer la boîte de dialogue de progression", "Toggle Queue Sidebar": "Basculer la barre latérale de la file d'attente", "Toggle Search Box": "Basculer la boîte de recherche", "Toggle Terminal Bottom Panel": "Basculer le panneau inférieur du terminal", diff --git a/src/locales/ja/commands.json b/src/locales/ja/commands.json index 76b9919ca..2f59ddae2 100644 --- a/src/locales/ja/commands.json +++ b/src/locales/ja/commands.json @@ -128,6 +128,9 @@ "Comfy_Manager_CustomNodesManager": { "label": "カスタムノードマネージャ" }, + "Comfy_Manager_ToggleManagerProgressDialog": { + "label": "プログレスダイアログの切り替え" + }, "Comfy_NewBlankWorkflow": { "label": "新しい空のワークフロー" }, diff --git a/src/locales/ja/main.json b/src/locales/ja/main.json index 218657033..f1e3316f4 100644 --- a/src/locales/ja/main.json +++ b/src/locales/ja/main.json @@ -188,6 +188,7 @@ "reportSent": "レポートが送信されました", "reset": "リセット", "resetKeybindingsTooltip": "キーバインディングをデフォルトにリセット", + "restart": "再起動", "resultsCount": "{count}件の結果が見つかりました", "save": "保存", "saving": "保存中", @@ -397,6 +398,7 @@ "nodePack": "ノードパック", "packsSelected": "選択したパック", "repository": "リポジトリ", + "restartToApplyChanges": "変更を適用するには、ComfyUIを再起動してください", "searchPlaceholder": "検索", "selectVersion": "バージョンを選択", "sort": { @@ -530,6 +532,7 @@ "Toggle Logs Bottom Panel": "ログパネル下部を切り替え", "Toggle Model Library Sidebar": "モデルライブラリサイドバーを切り替え", "Toggle Node Library Sidebar": "ノードライブラリサイドバーを切り替え", + "Toggle Progress Dialog": "進行状況ダイアログの切り替え", "Toggle Queue Sidebar": "キューサイドバーを切り替え", "Toggle Search Box": "検索ボックスの切り替え", "Toggle Terminal Bottom Panel": "ターミナルパネル下部を切り替え", diff --git a/src/locales/ko/commands.json b/src/locales/ko/commands.json index 4653e4c86..6372ac671 100644 --- a/src/locales/ko/commands.json +++ b/src/locales/ko/commands.json @@ -128,6 +128,9 @@ "Comfy_Manager_CustomNodesManager": { "label": "사용자 정의 노드 관리자" }, + "Comfy_Manager_ToggleManagerProgressDialog": { + "label": "프로그레스 대화 상자 전환" + }, "Comfy_NewBlankWorkflow": { "label": "새로운 빈 워크플로" }, diff --git a/src/locales/ko/main.json b/src/locales/ko/main.json index baee4aaff..471303114 100644 --- a/src/locales/ko/main.json +++ b/src/locales/ko/main.json @@ -188,6 +188,7 @@ "reportSent": "보고서 제출됨", "reset": "재설정", "resetKeybindingsTooltip": "키 바인딩을 기본값으로 재설정", + "restart": "재시작", "resultsCount": "{count} 개의 결과를 찾았습니다", "save": "저장", "saving": "저장 중", @@ -397,6 +398,7 @@ "nodePack": "노드 팩", "packsSelected": "선택한 팩", "repository": "저장소", + "restartToApplyChanges": "변경 사항을 적용하려면 ComfyUI를 재시작해 주세요", "searchPlaceholder": "검색", "selectVersion": "버전 선택", "sort": { @@ -530,6 +532,7 @@ "Toggle Logs Bottom Panel": "로그 하단 패널 전환", "Toggle Model Library Sidebar": "모델 라이브러리 사이드바 전환", "Toggle Node Library Sidebar": "노드 라이브러리 사이드바 전환", + "Toggle Progress Dialog": "진행 상황 대화 상자 전환", "Toggle Queue Sidebar": "실행 큐 사이드바 전환", "Toggle Search Box": "검색 상자 전환", "Toggle Terminal Bottom Panel": "터미널 하단 패널 전환", diff --git a/src/locales/ru/commands.json b/src/locales/ru/commands.json index 45d2a5867..34d6dbd42 100644 --- a/src/locales/ru/commands.json +++ b/src/locales/ru/commands.json @@ -128,6 +128,9 @@ "Comfy_Manager_CustomNodesManager": { "label": "Менеджер Пользовательских Узлов" }, + "Comfy_Manager_ToggleManagerProgressDialog": { + "label": "Переключить диалоговое окно прогресса" + }, "Comfy_NewBlankWorkflow": { "label": "Новый пустой рабочий процесс" }, diff --git a/src/locales/ru/main.json b/src/locales/ru/main.json index c45da3c1f..734b96773 100644 --- a/src/locales/ru/main.json +++ b/src/locales/ru/main.json @@ -188,6 +188,7 @@ "reportSent": "Отчёт отправлен", "reset": "Сбросить", "resetKeybindingsTooltip": "Сбросить сочетания клавиш по умолчанию", + "restart": "Перезапустить", "resultsCount": "Найдено {count} результатов", "save": "Сохранить", "saving": "Сохранение", @@ -397,6 +398,7 @@ "nodePack": "Пакет Узлов", "packsSelected": "Выбрано пакетов", "repository": "Репозиторий", + "restartToApplyChanges": "Чтобы применить изменения, пожалуйста, перезапустите ComfyUI", "searchPlaceholder": "Поиск", "selectVersion": "Выберите версию", "sort": { @@ -530,6 +532,7 @@ "Toggle Logs Bottom Panel": "Переключение нижней панели журналов", "Toggle Model Library Sidebar": "Переключение боковой панели библиотеки моделей", "Toggle Node Library Sidebar": "Переключение боковой панели библиотеки нод", + "Toggle Progress Dialog": "Переключить диалоговое окно прогресса", "Toggle Queue Sidebar": "Переключение боковой панели очереди", "Toggle Search Box": "Переключить поисковую панель", "Toggle Terminal Bottom Panel": "Переключение нижней панели терминала", diff --git a/src/locales/zh/commands.json b/src/locales/zh/commands.json index d4a7cf93e..8d1e45b40 100644 --- a/src/locales/zh/commands.json +++ b/src/locales/zh/commands.json @@ -128,6 +128,9 @@ "Comfy_Manager_CustomNodesManager": { "label": "自定义节点管理器" }, + "Comfy_Manager_ToggleManagerProgressDialog": { + "label": "切换进度对话框" + }, "Comfy_NewBlankWorkflow": { "label": "新建空白工作流" }, diff --git a/src/locales/zh/main.json b/src/locales/zh/main.json index d78d1c530..62a4f8ba9 100644 --- a/src/locales/zh/main.json +++ b/src/locales/zh/main.json @@ -188,6 +188,7 @@ "reportSent": "报告已提交", "reset": "重置", "resetKeybindingsTooltip": "将快捷键重置为默认", + "restart": "重新启动", "resultsCount": "找到 {count} 个结果", "save": "保存", "saving": "正在保存", @@ -397,6 +398,7 @@ "nodePack": "节点包", "packsSelected": "选定的包", "repository": "仓库", + "restartToApplyChanges": "要应用更改,请重新启动ComfyUI", "searchPlaceholder": "搜索", "selectVersion": "选择版本", "sort": { @@ -530,6 +532,7 @@ "Toggle Logs Bottom Panel": "切换日志底部面板", "Toggle Model Library Sidebar": "切换模型库侧边栏", "Toggle Node Library Sidebar": "切换节点库侧边栏", + "Toggle Progress Dialog": "切换进度对话框", "Toggle Queue Sidebar": "切换队列侧边栏", "Toggle Search Box": "切换搜索框", "Toggle Terminal Bottom Panel": "切换终端底部面板", diff --git a/src/services/dialogService.ts b/src/services/dialogService.ts index adc49a9d9..b3aa83f6a 100644 --- a/src/services/dialogService.ts +++ b/src/services/dialogService.ts @@ -2,11 +2,14 @@ import ConfirmationDialogContent from '@/components/dialog/content/ConfirmationD import ExecutionErrorDialogContent from '@/components/dialog/content/ExecutionErrorDialogContent.vue' import IssueReportDialogContent from '@/components/dialog/content/IssueReportDialogContent.vue' import LoadWorkflowWarning from '@/components/dialog/content/LoadWorkflowWarning.vue' +import ManagerProgressDialogContent from '@/components/dialog/content/ManagerProgressDialogContent.vue' import MissingModelsWarning from '@/components/dialog/content/MissingModelsWarning.vue' import PromptDialogContent from '@/components/dialog/content/PromptDialogContent.vue' import SettingDialogContent from '@/components/dialog/content/SettingDialogContent.vue' import ManagerDialogContent from '@/components/dialog/content/manager/ManagerDialogContent.vue' import ManagerHeader from '@/components/dialog/content/manager/ManagerHeader.vue' +import ManagerProgressFooter from '@/components/dialog/footer/ManagerProgressFooter.vue' +import ManagerProgressHeader from '@/components/dialog/header/ManagerProgressHeader.vue' import SettingDialogHeader from '@/components/dialog/header/SettingDialogHeader.vue' import TemplateWorkflowsContent from '@/components/templates/TemplateWorkflowsContent.vue' import TemplateWorkflowsDialogHeader from '@/components/templates/TemplateWorkflowsDialogHeader.vue' @@ -121,6 +124,29 @@ export const useDialogService = () => { }) } + function showManagerProgressDialog(options?: { + props?: InstanceType['$props'] + }) { + return dialogStore.showDialog({ + key: 'global-manager-progress-dialog', + component: ManagerProgressDialogContent, + headerComponent: ManagerProgressHeader, + footerComponent: ManagerProgressFooter, + props: options?.props, + dialogComponentProps: { + closable: false, + modal: false, + position: 'bottom', + pt: { + root: { class: 'w-[80%] max-w-2xl mx-auto border-none' }, + content: { class: '!p-0' }, + header: { class: '!p-0 border-none' }, + footer: { class: '!p-0 border-none' } + } + } + }) + } + async function prompt({ title, message, @@ -203,6 +229,7 @@ export const useDialogService = () => { showTemplateWorkflowsDialog, showIssueReportDialog, showManagerDialog, + showManagerProgressDialog, prompt, confirm } diff --git a/src/stores/comfyManagerStore.ts b/src/stores/comfyManagerStore.ts index 5e342e141..9352daf9a 100644 --- a/src/stores/comfyManagerStore.ts +++ b/src/stores/comfyManagerStore.ts @@ -6,6 +6,7 @@ import { useCachedRequest } from '@/composables/useCachedRequest' import { useManagerQueue } from '@/composables/useManagerQueue' import { useServerLogs } from '@/composables/useServerLogs' import { useComfyManagerService } from '@/services/comfyManagerService' +import { useDialogService } from '@/services/dialogService' import { InstallPackParams, InstalledPacksResponse, @@ -20,6 +21,8 @@ import { */ export const useComfyManagerStore = defineStore('comfyManager', () => { const managerService = useComfyManagerService() + const { showManagerProgressDialog } = useDialogService() + const installedPacks = ref({}) const enabledPacksIds = ref>(new Set()) const disabledPacksIds = ref>(new Set()) @@ -110,6 +113,7 @@ export const useComfyManagerStore = defineStore('comfyManager', () => { } whenever(isStale, refreshInstalledList, { immediate: true }) + whenever(uncompletedCount, () => showManagerProgressDialog()) const withLogs = (task: () => Promise, taskName: string) => { const { startListening, stopListening, logs } = useServerLogs() @@ -213,3 +217,33 @@ export const useComfyManagerStore = defineStore('comfyManager', () => { enablePack: installPack // Enable is done via install endpoint with a disabled pack } }) + +/** + * Store for state of the manager progress dialog content. + * The dialog itself is managed by the dialog store. This store is used to + * manage the visibility of the dialog's content, header, footer. + */ +export const useManagerProgressDialogStore = defineStore( + 'managerProgressDialog', + () => { + const isExpanded = ref(false) + + const toggle = () => { + isExpanded.value = !isExpanded.value + } + + const collapse = () => { + isExpanded.value = false + } + + const expand = () => { + isExpanded.value = true + } + return { + isExpanded, + toggle, + collapse, + expand + } + } +)