diff --git a/.changeset/fn-7386-activity-expand.md b/.changeset/fn-7386-activity-expand.md new file mode 100644 index 0000000000..4d0cc1783e --- /dev/null +++ b/.changeset/fn-7386-activity-expand.md @@ -0,0 +1,7 @@ +--- +"@runfusion/fusion": patch +--- + +summary: Fix Activity expand controls so Live and Feed overlay content and Raw has one fullscreen button. +category: fix +dev: Updates task-detail Activity Live/Feed overlay controls and keeps Raw on AgentLogViewer fullscreen. diff --git a/packages/dashboard/app/components/AgentLogViewer.css b/packages/dashboard/app/components/AgentLogViewer.css index 60de50ad46..a14bd70218 100644 --- a/packages/dashboard/app/components/AgentLogViewer.css +++ b/packages/dashboard/app/components/AgentLogViewer.css @@ -42,6 +42,12 @@ background: var(--text-muted); } +.agent-log-empty-header { + display: flex; + justify-content: flex-end; + padding: var(--space-sm) var(--space-md) 0; +} + .agent-log-loading, .agent-log-empty { display: flex; diff --git a/packages/dashboard/app/components/AgentLogViewer.tsx b/packages/dashboard/app/components/AgentLogViewer.tsx index 0b052b67c9..bb50d6cbb8 100644 --- a/packages/dashboard/app/components/AgentLogViewer.tsx +++ b/packages/dashboard/app/components/AgentLogViewer.tsx @@ -451,6 +451,18 @@ export function AgentLogViewer({ const hasValidatorOverride = validatorModel?.provider && validatorModel?.modelId; const hasPlanningOverride = planningModel?.provider && planningModel?.modelId; + const fullscreenToggle = ( + + ); + const modelProviders = useMemo(() => { const providers: Array<{ role: string; provider: string; modelId?: string }> = []; if (hasExecutorOverride) { @@ -486,7 +498,11 @@ export function AgentLogViewer({ if (loading && entries.length === 0) { return ( -
+
+ {/* FNXC:TaskDetailActivity 2026-07-01-00:00: Activity → Raw owns one fullscreen affordance through AgentLogViewer even while logs are loading, because TaskDetailModal intentionally omits its Activity-level expand button on Raw to avoid duplicate controls. */} +
+
{fullscreenToggle}
+
{t("agentLog.loading", "Loading agent logs…")}
); @@ -494,7 +510,11 @@ export function AgentLogViewer({ if (entries.length === 0) { return ( -
+
+ {/* FNXC:TaskDetailActivity 2026-07-01-00:00: Empty Raw logs still expose the single AgentLogViewer fullscreen button so Raw never needs the duplicate Activity expand toggle. */} +
+
{fullscreenToggle}
+
{t("agentLog.empty", "No agent output yet.")}
); @@ -549,15 +569,7 @@ export function AgentLogViewer({ > {showToolOutput ? t("agentLog.toolsOn", "Tools: On") : t("agentLog.toolsOff", "Tools: Off")} - + {fullscreenToggle}
{modelHeaderExpanded && ( diff --git a/packages/dashboard/app/components/TaskChatTab.tsx b/packages/dashboard/app/components/TaskChatTab.tsx index d5d9f2b8af..c706f59a15 100644 --- a/packages/dashboard/app/components/TaskChatTab.tsx +++ b/packages/dashboard/app/components/TaskChatTab.tsx @@ -874,7 +874,7 @@ export function TaskChatTab({ task, projectId, active, addToast, onTaskUpdated, aria-pressed={expanded} data-testid="task-chat-expand-toggle" > - {/* FNXC:TaskDetailActivity 2026-06-30-23:55: The legacy TaskChatTab expand affordance now uses Activity-wide copy when a caller still renders it; TaskDetailModal owns the visible Activity-level toggle across Live, Feed, and Raw Logs. */} + {/* FNXC:TaskDetailActivity 2026-07-01-00:00: TaskDetailModal passes Activity-expanded state into Live so this existing chat overlay remains the single Live expand affordance without adding a separate toolbar row. */} {expanded ?