diff --git a/src/App.vue b/src/App.vue index 6b7c56be0..a6ff7c4f4 100644 --- a/src/App.vue +++ b/src/App.vue @@ -17,6 +17,7 @@ import { computed, onMounted } from 'vue' import GlobalDialog from '@/components/dialog/GlobalDialog.vue' import config from '@/config' import { t } from '@/i18n' +import { useSettingStore } from '@/platform/settings/settingStore' import { useWorkflowStore } from '@/platform/workflow/management/stores/workflowStore' import { app } from '@/scripts/app' import { useDialogService } from '@/services/dialogService' @@ -47,7 +48,7 @@ const showContextMenu = (event: MouseEvent) => { } } -onMounted(() => { +onMounted(async () => { window['__COMFYUI_FRONTEND_VERSION__'] = config.app_version if (isElectron()) { @@ -77,5 +78,17 @@ onMounted(() => { // Initialize conflict detection in background // This runs async and doesn't block UI setup void conflictDetection.initializeConflictDetection() + + // Show cloud notification for macOS desktop users (one-time) + const isMacOS = navigator.platform.toLowerCase().includes('mac') + const settingStore = useSettingStore() + const hasShownNotification = settingStore.get( + 'Comfy.Desktop.CloudNotificationShown' + ) + + if (isElectron() && isMacOS && !hasShownNotification) { + dialogService.showCloudNotification() + await settingStore.set('Comfy.Desktop.CloudNotificationShown', true) + } }) diff --git a/src/components/dialog/content/CloudNotificationContent.vue b/src/components/dialog/content/CloudNotificationContent.vue new file mode 100644 index 000000000..657d9dcb9 --- /dev/null +++ b/src/components/dialog/content/CloudNotificationContent.vue @@ -0,0 +1,104 @@ + + + diff --git a/src/components/topbar/TopbarBadges.vue b/src/components/topbar/TopbarBadges.vue index 301973960..de0d8386f 100644 --- a/src/components/topbar/TopbarBadges.vue +++ b/src/components/topbar/TopbarBadges.vue @@ -1,5 +1,22 @@