diff --git a/desktop/src/features/channels/ui/ChannelComposerActivityAccessory.tsx b/desktop/src/features/channels/ui/ChannelComposerActivityAccessory.tsx index f99888f011..68c4e29348 100644 --- a/desktop/src/features/channels/ui/ChannelComposerActivityAccessory.tsx +++ b/desktop/src/features/channels/ui/ChannelComposerActivityAccessory.tsx @@ -1,69 +1,52 @@ import type { ComponentProps } from "react"; -import { CardMintComposerChip } from "@/features/agents/ui/CardMintComposerChip"; import { useCardMintJobs } from "@/features/agents/cardMintStore"; -import { BotActivityComposerAction } from "@/features/channels/ui/BotActivityBar"; +import { CardMintComposerChip } from "@/features/agents/ui/CardMintComposerChip"; +import { ChannelComposerActivityRow } from "@/features/channels/ui/ChannelComposerActivityRow"; import { ComposerActivityAccessory } from "@/features/messages/ui/ComposerActivityAccessory"; -import { TypingIndicatorRow } from "@/features/messages/ui/TypingIndicatorRow"; type ChannelComposerActivityAccessoryProps = { - agents: ComponentProps["agents"]; - channel: ComponentProps["channel"]; - currentPubkey: ComponentProps["currentPubkey"]; + agents: ComponentProps["agents"]; + channel: ComponentProps["channel"]; + currentPubkey: ComponentProps< + typeof ChannelComposerActivityRow + >["currentPubkey"]; onOpenAgentSession: ComponentProps< - typeof BotActivityComposerAction + typeof ChannelComposerActivityRow >["onOpenAgentSession"]; - openAgentSessionPubkey: ComponentProps< - typeof BotActivityComposerAction - >["openAgentSessionPubkey"]; - profiles: ComponentProps["profiles"]; + profiles: ComponentProps["profiles"]; typingPubkeys: string[]; visible: boolean; - workingBotPubkeys: string[]; }; +/** Main's shared channel activity host with the unified live-activity strip. */ export function ChannelComposerActivityAccessory({ agents, channel, currentPubkey, onOpenAgentSession, - openAgentSessionPubkey, profiles, typingPubkeys, visible, - workingBotPubkeys, }: ChannelComposerActivityAccessoryProps) { const cardMintJobs = useCardMintJobs(); + return ( -
+
{cardMintJobs.length > 0 ? : null} - {workingBotPubkeys.length > 0 ? ( -
- -
- ) : null} - {typingPubkeys.length > 0 ? ( - - ) : null} +
); diff --git a/desktop/src/features/channels/ui/ChannelComposerActivityRow.tsx b/desktop/src/features/channels/ui/ChannelComposerActivityRow.tsx index a62afea387..0b7caa00cd 100644 --- a/desktop/src/features/channels/ui/ChannelComposerActivityRow.tsx +++ b/desktop/src/features/channels/ui/ChannelComposerActivityRow.tsx @@ -132,11 +132,7 @@ export function ChannelComposerActivityRow({ }, [agentTypingPubkeys.length, agents, profiles]); return ( -
-
+
{/* One strip hosts both groups: working pills plus the typing group as the strip's trailing slot sibling, so they share the scroller, edge fades, and layout/enter/exit animations. When the row gets @@ -165,7 +161,6 @@ export function ChannelComposerActivityRow({ workingBotPubkeys={pillBotPubkeys} /> ) : null} -
); } diff --git a/desktop/src/features/channels/ui/ChannelPane.tsx b/desktop/src/features/channels/ui/ChannelPane.tsx index 5ba5429276..e91d1fb37e 100644 --- a/desktop/src/features/channels/ui/ChannelPane.tsx +++ b/desktop/src/features/channels/ui/ChannelPane.tsx @@ -38,8 +38,7 @@ import { useFocusDrawerPresence } from "@/features/channels/ui/useFocusDrawerPre import { useChannelWorkingAgentPubkeys } from "@/features/agents/agentWorkingSignal"; import { useCardMintJobs } from "@/features/agents/cardMintStore"; import { BotActivityComposerAction } from "@/features/channels/ui/BotActivityBar"; -import { ChannelComposerActivityRow } from "@/features/channels/ui/ChannelComposerActivityRow"; -import { ComposerActivityAccessory } from "@/features/messages/ui/ComposerActivityAccessory"; +import { ChannelComposerActivityAccessory } from "@/features/channels/ui/ChannelComposerActivityAccessory"; import { TypingIndicatorRow } from "@/features/messages/ui/TypingIndicatorRow"; import { containsWelcomePersonaMention, @@ -740,16 +739,15 @@ export const ChannelPane = React.memo(function ChannelPane({ bottom rail, so fading it cannot change the observed overlay height or move the conversation. Its natural content height remains responsive. */} - - - +
)}