diff --git a/public/assets/images/favicon_progress_16x16/frame_0.png b/public/assets/images/favicon_progress_16x16/frame_0.png new file mode 100644 index 000000000..15b27f5a6 Binary files /dev/null and b/public/assets/images/favicon_progress_16x16/frame_0.png differ diff --git a/public/assets/images/favicon_progress_16x16/frame_1.png b/public/assets/images/favicon_progress_16x16/frame_1.png new file mode 100644 index 000000000..f82c375c9 Binary files /dev/null and b/public/assets/images/favicon_progress_16x16/frame_1.png differ diff --git a/public/assets/images/favicon_progress_16x16/frame_2.png b/public/assets/images/favicon_progress_16x16/frame_2.png new file mode 100644 index 000000000..a75dcf838 Binary files /dev/null and b/public/assets/images/favicon_progress_16x16/frame_2.png differ diff --git a/public/assets/images/favicon_progress_16x16/frame_3.png b/public/assets/images/favicon_progress_16x16/frame_3.png new file mode 100644 index 000000000..a53315bba Binary files /dev/null and b/public/assets/images/favicon_progress_16x16/frame_3.png differ diff --git a/public/assets/images/favicon_progress_16x16/frame_4.png b/public/assets/images/favicon_progress_16x16/frame_4.png new file mode 100644 index 000000000..349c3a1c2 Binary files /dev/null and b/public/assets/images/favicon_progress_16x16/frame_4.png differ diff --git a/public/assets/images/favicon_progress_16x16/frame_5.png b/public/assets/images/favicon_progress_16x16/frame_5.png new file mode 100644 index 000000000..d48690744 Binary files /dev/null and b/public/assets/images/favicon_progress_16x16/frame_5.png differ diff --git a/public/assets/images/favicon_progress_16x16/frame_6.png b/public/assets/images/favicon_progress_16x16/frame_6.png new file mode 100644 index 000000000..71e26301f Binary files /dev/null and b/public/assets/images/favicon_progress_16x16/frame_6.png differ diff --git a/public/assets/images/favicon_progress_16x16/frame_7.png b/public/assets/images/favicon_progress_16x16/frame_7.png new file mode 100644 index 000000000..32964243a Binary files /dev/null and b/public/assets/images/favicon_progress_16x16/frame_7.png differ diff --git a/public/assets/images/favicon_progress_16x16/frame_8.png b/public/assets/images/favicon_progress_16x16/frame_8.png new file mode 100644 index 000000000..221c75a03 Binary files /dev/null and b/public/assets/images/favicon_progress_16x16/frame_8.png differ diff --git a/public/assets/images/favicon_progress_16x16/frame_9.png b/public/assets/images/favicon_progress_16x16/frame_9.png new file mode 100644 index 000000000..741abad60 Binary files /dev/null and b/public/assets/images/favicon_progress_16x16/frame_9.png differ diff --git a/src/composables/useProgressFavicon.ts b/src/composables/useProgressFavicon.ts new file mode 100644 index 000000000..0326274f4 --- /dev/null +++ b/src/composables/useProgressFavicon.ts @@ -0,0 +1,23 @@ +import { useFavicon } from '@vueuse/core' +import { watch } from 'vue' + +import { useExecutionStore } from '@/stores/executionStore' + +export const useProgressFavicon = () => { + const defaultFavicon = '/assets/images/favicon_progress_16x16/frame_9.png' + const favicon = useFavicon(defaultFavicon) + const executionStore = useExecutionStore() + const totalFrames = 10 + + watch( + [() => executionStore.executionProgress, () => executionStore.isIdle], + ([progress, isIdle]) => { + if (isIdle) { + favicon.value = defaultFavicon + } else { + const frame = Math.floor(progress * totalFrames) + favicon.value = `/assets/images/favicon_progress_16x16/frame_${frame}.png` + } + } + ) +} diff --git a/src/stores/extensionStore.ts b/src/stores/extensionStore.ts index 0ba23846d..2756b7593 100644 --- a/src/stores/extensionStore.ts +++ b/src/stores/extensionStore.ts @@ -16,7 +16,11 @@ export const ALWAYS_DISABLED_EXTENSIONS: readonly string[] = [ // pysssss.SnapToGrid tries to write global app.shiftDown state, which is no longer // allowed since v1.3.12. // https://github.com/Comfy-Org/ComfyUI_frontend/issues/1176 - 'pysssss.SnapToGrid' + 'pysssss.SnapToGrid', + // Favicon status is implemented in ComfyUI core in v1.20. + // https://github.com/Comfy-Org/ComfyUI_frontend/pull/3880 + 'pysssss.FaviconStatus', + 'KJNodes.browserstatus' ] export const useExtensionStore = defineStore('extension', () => { diff --git a/src/views/GraphView.vue b/src/views/GraphView.vue index 322b523ea..0ebce7e44 100644 --- a/src/views/GraphView.vue +++ b/src/views/GraphView.vue @@ -36,6 +36,7 @@ import RerouteMigrationToast from '@/components/toast/RerouteMigrationToast.vue' import TopMenubar from '@/components/topbar/TopMenubar.vue' import { useCoreCommands } from '@/composables/useCoreCommands' import { useErrorHandling } from '@/composables/useErrorHandling' +import { useProgressFavicon } from '@/composables/useProgressFavicon' import { SERVER_CONFIG_ITEMS } from '@/constants/serverConfig' import { i18n } from '@/i18n' import { StatusWsMessageStatus } from '@/schemas/apiSchema' @@ -62,6 +63,7 @@ import { useWorkspaceStore } from '@/stores/workspaceStore' import { electronAPI, isElectron } from '@/utils/envUtil' setupAutoQueueHandler() +useProgressFavicon() const { t } = useI18n() const toast = useToast()