From fd4afbfe8704dc53a2b925ea9f4d08858577d8e2 Mon Sep 17 00:00:00 2001 From: JonathanLab Date: Wed, 3 Dec 2025 18:53:49 +0100 Subject: [PATCH] feat: get rid of start session prompt, autoload --- .../features/logs/components/LogView.tsx | 18 +++------- .../task-detail/components/TaskLogsPanel.tsx | 35 +++++++++---------- 2 files changed, 21 insertions(+), 32 deletions(-) diff --git a/apps/array/src/renderer/features/logs/components/LogView.tsx b/apps/array/src/renderer/features/logs/components/LogView.tsx index c9630785..5fb40aa5 100644 --- a/apps/array/src/renderer/features/logs/components/LogView.tsx +++ b/apps/array/src/renderer/features/logs/components/LogView.tsx @@ -7,11 +7,11 @@ import { } from "@phosphor-icons/react"; import { Box, - Button, Code, ContextMenu, Flex, IconButton, + Spinner, Text, TextArea, Tooltip, @@ -25,7 +25,6 @@ interface LogViewProps { isPromptPending?: boolean; onSendPrompt?: (text: string) => Promise; onCancelPrompt?: () => void; - onStartSession?: () => void; } function renderNotification(notification: SessionNotification): string { @@ -61,7 +60,6 @@ export function LogView({ isPromptPending = false, onSendPrompt, onCancelPrompt, - onStartSession, }: LogViewProps) { const [inputValue, setInputValue] = useState(""); const [showRawLogs, setShowRawLogs] = useState(false); @@ -133,7 +131,7 @@ export function LogView({ } } - // Show start session prompt when no session + // Show initializing state when no session yet if (!sessionId && !isRunning) { return ( - - No active session - {onStartSession && ( - - )} - + + Initializing session... ); } diff --git a/apps/array/src/renderer/features/task-detail/components/TaskLogsPanel.tsx b/apps/array/src/renderer/features/task-detail/components/TaskLogsPanel.tsx index 9b035e34..8a0ad42a 100644 --- a/apps/array/src/renderer/features/task-detail/components/TaskLogsPanel.tsx +++ b/apps/array/src/renderer/features/task-detail/components/TaskLogsPanel.tsx @@ -32,37 +32,35 @@ export function TaskLogsPanel({ taskId, task }: TaskLogsPanelProps) { const isRunning = session?.status === "connected" || session?.status === "connecting"; - // Auto-reconnect on mount if there's a previous run + // Auto-connect on mount const hasAttemptedConnect = useRef(false); useEffect(() => { if (hasAttemptedConnect.current) return; if (!repoPath) return; - if (session) return; // Already have a session - if (!task.latest_run?.id || !task.latest_run?.log_url) return; + if (session) return; hasAttemptedConnect.current = true; - connectToTask({ - taskId: task.id, - repoPath, - latestRunId: task.latest_run.id, - latestRunLogUrl: task.latest_run.log_url, - }); - }, [task.id, task.latest_run, repoPath, session, connectToTask]); - - const handleStartSession = useCallback(async () => { - if (!repoPath) { - log.error("No repo path available"); - return; - } + const isNewSession = !task.latest_run?.id; - await connectToTask({ + connectToTask({ taskId: task.id, repoPath, latestRunId: task.latest_run?.id, latestRunLogUrl: task.latest_run?.log_url, + initialPrompt: + isNewSession && task.description + ? [{ type: "text", text: task.description }] + : undefined, }); - }, [repoPath, task.id, task.latest_run, connectToTask]); + }, [ + task.id, + task.description, + task.latest_run, + repoPath, + session, + connectToTask, + ]); const handleSendPrompt = useCallback( async (text: string) => { @@ -91,7 +89,6 @@ export function TaskLogsPanel({ taskId, task }: TaskLogsPanelProps) { isPromptPending={session?.isPromptPending} onSendPrompt={handleSendPrompt} onCancelPrompt={handleCancelPrompt} - onStartSession={handleStartSession} />