From fd78633fcfb4d0a37b41d2f3f9b7509b07a6b0cd Mon Sep 17 00:00:00 2001 From: Dhravya Shah Date: Sun, 17 May 2026 00:25:22 -0700 Subject: [PATCH] Brand own space as Nova chats (#957) --- apps/web/components/select-spaces-modal.tsx | 3 ++ apps/web/components/space-selector.tsx | 32 +++++++++++++++++++-- apps/web/lib/ingest-auto-space.ts | 4 +-- 3 files changed, 35 insertions(+), 4 deletions(-) diff --git a/apps/web/components/select-spaces-modal.tsx b/apps/web/components/select-spaces-modal.tsx index 7fdfaefd..7529d521 100644 --- a/apps/web/components/select-spaces-modal.tsx +++ b/apps/web/components/select-spaces-modal.tsx @@ -46,6 +46,7 @@ import { import { InstallSteps, PillButton } from "./integrations/install-steps" import { useProjectMutations } from "@/hooks/use-project-mutations" import { AUTO_CHAT_SPACE_ID } from "@/lib/chat-auto-space" +import NovaOrb from "@/components/nova/nova-orb" interface SelectSpacesModalProps { isOpen: boolean @@ -705,6 +706,8 @@ export function SelectSpacesModal({ {pluginInitial(plugin.label)} ) + ) : isOwnSpace ? ( + ) : ( {project.emoji || "📁"} diff --git a/apps/web/components/space-selector.tsx b/apps/web/components/space-selector.tsx index 40d5947e..73d42e2a 100644 --- a/apps/web/components/space-selector.tsx +++ b/apps/web/components/space-selector.tsx @@ -35,10 +35,12 @@ import { useAuth } from "@lib/auth-context" import { analytics } from "@/lib/analytics" import { compareSpacesUserFirst, + isOwnConversationSpace, spaceSelectorDisplayName, } from "@/lib/ingest-auto-space" import { detectPluginSpace, pluginInitial } from "@/lib/plugin-space" import { usePluginSpaceMeta } from "@/hooks/use-plugin-space-meta" +import NovaOrb from "@/components/nova/nova-orb" export interface SpaceSelectorProps { selectedProjects: string[] @@ -182,18 +184,32 @@ export function SpaceSelector({ emoji: string | null plugin: ReturnType isAuto: boolean + isOwnSpace: boolean }>(() => { const containerTag = selectedProjects[0] ?? "" if (includeAuto && containerTag === AUTO_CHAT_SPACE_ID) { - return { name: "Auto", emoji: null, plugin: null, isAuto: true } + return { + name: "Auto", + emoji: null, + plugin: null, + isAuto: true, + isOwnSpace: false, + } } if (!containerTag || containerTag === DEFAULT_PROJECT_ID) { - return { name: "My Space", emoji: "📁", plugin: null, isAuto: false } + return { + name: "My Space", + emoji: "📁", + plugin: null, + isAuto: false, + isOwnSpace: false, + } } const found = allProjects.find( (p: ContainerTagListType) => p.containerTag === containerTag, ) const plugin = detectPluginSpace(containerTag) + const isOwnSpace = isOwnConversationSpace({ containerTag }, user?.id) const projectName = pluginMetaMap.get(containerTag)?.projectName const idForLabel = projectName || plugin?.projectId return { @@ -207,6 +223,7 @@ export function SpaceSelector({ emoji: found?.emoji || "📁", plugin, isAuto: false, + isOwnSpace, } }, [allProjects, selectedProjects, pluginMetaMap, includeAuto, user?.id]) @@ -370,6 +387,11 @@ export function SpaceSelector({ > {displayInfo.isAuto ? ( + ) : displayInfo.isOwnSpace ? ( + ) : displayInfo.plugin ? ( displayInfo.plugin.iconSrc ? ( { const plugin = detectPluginSpace(p.containerTag) + const isOwnSpace = isOwnConversationSpace(p, user?.id) return ( ) + ) : isOwnSpace ? ( + ) : ( {p.emoji || "📁"} )} diff --git a/apps/web/lib/ingest-auto-space.ts b/apps/web/lib/ingest-auto-space.ts index 3f38a85a..a4d2f8dc 100644 --- a/apps/web/lib/ingest-auto-space.ts +++ b/apps/web/lib/ingest-auto-space.ts @@ -1,7 +1,7 @@ import { DEFAULT_PROJECT_ID } from "@lib/constants" import type { ContainerTagListType } from "@lib/types" -export const OWN_CONVERSATIONS_SPACE_NAME = "Your conversations" +export const OWN_CHAT_SPACE_NAME = "Nova chats" /** * Spaces auto-created on first ingest use `name === \`Space ${containerTag}\`` @@ -40,7 +40,7 @@ export function spaceSelectorDisplayName( ): string { const containerTag = p?.containerTag ?? fallback if (containerTag === options?.currentUserId) { - return OWN_CONVERSATIONS_SPACE_NAME + return OWN_CHAT_SPACE_NAME } if (!p) return fallback const name = p.name ?? p.containerTag