diff --git a/apps/web/components/select-spaces-modal.tsx b/apps/web/components/select-spaces-modal.tsx
index fa283b3b..c9a06dd0 100644
--- a/apps/web/components/select-spaces-modal.tsx
+++ b/apps/web/components/select-spaces-modal.tsx
@@ -47,7 +47,7 @@ import {
spacePluginIdToCatalogId,
type PluginInfo,
} from "@/lib/plugin-catalog"
-import { InstallSteps, PillButton } from "./integrations/install-steps"
+import { INSET, 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"
@@ -1660,15 +1660,16 @@ function AgentsDiscoverPanel({
newKey?.pluginId ?? catalogIds[0] ?? "codex",
)
+ // snap to the just-connected plugin only when the key changes, so manual tab clicks aren't overridden
+ useEffect(() => {
+ if (newKey?.pluginId) setActiveCatalogId(newKey.pluginId)
+ }, [newKey?.pluginId])
+
useEffect(() => {
- if (newKey?.pluginId && catalogIds.includes(newKey.pluginId)) {
- setActiveCatalogId(newKey.pluginId)
- return
- }
if (!catalogIds.includes(activeCatalogId)) {
setActiveCatalogId(catalogIds[0] ?? "codex")
}
- }, [activeCatalogId, catalogIds, newKey?.pluginId])
+ }, [activeCatalogId, catalogIds])
if (catalogIds.length === 0) {
return (
@@ -1680,39 +1681,32 @@ function AgentsDiscoverPanel({
return (
-
-
-
-
-
-
Agents
-
- Claude Code, Codex, and OpenCode share project memory
-
-
+
{catalogIds.map((catalogId) => {
const info = PLUGIN_CATALOG[catalogId]
if (!info) return null
+ const isActive = activeCatalogId === catalogId
return (
)
})}
onConnect(activeCatalogId)}
@@ -1728,12 +1722,14 @@ function DiscoverPanel({
newKey,
onConnect,
onDismissKey,
+ hideHeader,
}: {
catalogId: string
isConnecting: boolean
newKey: string | null
onConnect: () => void
onDismissKey: () => void
+ hideHeader?: boolean
}) {
const info = PLUGIN_CATALOG[catalogId]
if (!info) {
@@ -1763,30 +1759,36 @@ function DiscoverPanel({
return (
-
-
-
+ {hideHeader ? (
+
+ {info.tagline}
+
+ ) : (
+
+
+
+
+
+
+ {info.name}
+
+
+ {info.tagline}
+
+
-
-
- {info.name}
-
-
- {info.tagline}
-
-
-
+ )}
{isConnected && (
@@ -1811,19 +1813,11 @@ function DiscoverPanel({
)}
-
-
-
-
-
- {!isConnected && (
-
+ {isConnected ? (
+
+ ) : (
+ <>
+
{isConnecting ? (
<>
@@ -1840,7 +1834,7 @@ function DiscoverPanel({
rel="noopener noreferrer"
className={cn(
dmSans125ClassName(),
- "flex h-8 min-w-[94px] items-center justify-center gap-1.5 rounded-full px-3 sm:h-9 sm:min-w-[116px] sm:px-5",
+ "flex h-8 items-center justify-center gap-1.5 rounded-full px-3 sm:h-9 sm:px-4",
"text-[12px] font-medium text-[#A1A1AA] sm:text-[14px]",
"transition-colors hover:text-[#FAFAFA]",
)}
@@ -1849,8 +1843,30 @@ function DiscoverPanel({
)}
- )}
-
+
+
+ What you'll do next
+
+
+ {setupSteps.map((step, i) => (
+ -
+
+ {i + 1}
+
+
+ {step.title}
+
+
+ ))}
+
+
+ >
+ )}
)
}