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 @@
-
+
@@ -27,38 +36,65 @@
:show-arrow="false"
:pt="{
root: {
- class: 'rounded-lg'
+ class: 'rounded-lg w-80'
}
}"
>
-
+
+
+
+