From 2e677ef6853705a339d0c1a66b127cdb9a663e71 Mon Sep 17 00:00:00 2001 From: --list <18093452+simula-r@users.noreply.github.com> Date: Tue, 20 Jan 2026 12:10:10 -0800 Subject: [PATCH] feat(workspace): add core flow integration - Add teamWorkspacesEnabled feature flag with isCloud guard - Update firebaseAuthStore.getAuthHeader() to prioritize workspace token - Add getFirebaseAuthHeader() for user-scoped endpoints - Initialize workspace store in router guard before app loads - Load invite from URL in GraphCanvas after app initialization - Update CurrentUserButton to show workspace popover when enabled BREAKING: When teamWorkspacesEnabled flag is true: - API calls use workspace-scoped tokens - User menu shows workspace context - Settings panel shows workspace mode layout --- src/components/graph/GraphCanvas.vue | 10 +++++ src/components/topbar/CurrentUserButton.vue | 48 ++++++++++++++++++--- src/composables/useFeatureFlags.ts | 3 ++ src/router.ts | 22 ++++++++++ src/stores/firebaseAuthStore.ts | 29 ++++++++----- src/views/GraphView.vue | 2 + 6 files changed, 98 insertions(+), 16 deletions(-) diff --git a/src/components/graph/GraphCanvas.vue b/src/components/graph/GraphCanvas.vue index 48d82e44b..60b0e6d26 100644 --- a/src/components/graph/GraphCanvas.vue +++ b/src/components/graph/GraphCanvas.vue @@ -126,11 +126,13 @@ import { useNodeBadge } from '@/composables/node/useNodeBadge' import { useCanvasDrop } from '@/composables/useCanvasDrop' import { useContextMenuTranslation } from '@/composables/useContextMenuTranslation' import { useCopy } from '@/composables/useCopy' +import { useFeatureFlags } from '@/composables/useFeatureFlags' import { useGlobalLitegraph } from '@/composables/useGlobalLitegraph' import { usePaste } from '@/composables/usePaste' import { useVueFeatureFlags } from '@/composables/useVueFeatureFlags' import { mergeCustomNodesI18n, t } from '@/i18n' import { LiteGraph } from '@/lib/litegraph/src/litegraph' +import { isCloud } from '@/platform/distribution/types' import { useLitegraphSettings } from '@/platform/settings/composables/useLitegraphSettings' import { CORE_SETTINGS } from '@/platform/settings/constants/coreSettings' import { useSettingStore } from '@/platform/settings/settingStore' @@ -394,6 +396,7 @@ const loadCustomNodesI18n = async () => { const comfyAppReady = ref(false) const workflowPersistence = useWorkflowPersistence() +const { flags } = useFeatureFlags() useCanvasDrop(canvasRef) useLitegraphSettings() useNodeBadge() @@ -459,6 +462,13 @@ onMounted(async () => { // Load template from URL if present await workflowPersistence.loadTemplateFromUrlIfPresent() + // Accept workspace invite from URL if present (e.g., ?invite=TOKEN) + if (isCloud && flags.teamWorkspacesEnabled) { + const { useInviteUrlLoader } = + await import('@/platform/workspace/composables/useInviteUrlLoader') + await useInviteUrlLoader().loadInviteFromUrl() + } + // Initialize release store to fetch releases from comfy-api (fire-and-forget) const { useReleaseStore } = await import('@/platform/updates/common/releaseStore') diff --git a/src/components/topbar/CurrentUserButton.vue b/src/components/topbar/CurrentUserButton.vue index 151dfd405..849a9ba25 100644 --- a/src/components/topbar/CurrentUserButton.vue +++ b/src/components/topbar/CurrentUserButton.vue @@ -1,4 +1,4 @@ - +