diff --git a/apps/web/src/components/ChatView.tsx b/apps/web/src/components/ChatView.tsx
index 79eed3a6..8f457b1f 100644
--- a/apps/web/src/components/ChatView.tsx
+++ b/apps/web/src/components/ChatView.tsx
@@ -4914,6 +4914,16 @@ export default function ChatView({
) : null;
+ const isFullscreenPreviewMode = Boolean(
+ previewOpen && activeProject && previewLayoutMode === "fullscreen",
+ );
+ const floatingComposerStatus = isTurnActive
+ ? `Working for ${formatElapsed(activeWorkStartedAt, nowIso)}`
+ : showPlanFollowUpPrompt && activeProposedPlan
+ ? "Plan ready for follow-up"
+ : phase === "disconnected"
+ ? "Chat offline"
+ : "Ready for follow-up";
return (
@@ -4982,7 +4992,7 @@ export default function ChatView({
) : null}
- {/* Chat column — hidden in fullscreen preview mode */}
+ {/* Chat column */}
- {isMobileCompanion ? (
+ {!isFullscreenPreviewMode && isMobileCompanion ? (
) : null}
{/* Messages Wrapper */}
-
- {/* Messages */}
-
-
0}
- isWorking={isWorking}
- activeTurnInProgress={isWorking || !latestTurnSettled}
- activeTurnStartedAt={activeWorkStartedAt}
- scrollContainer={messagesScrollElement}
- timelineEntries={timelineEntries}
- completionDividerBeforeEntryId={completionDividerBeforeEntryId}
- completionSummary={completionSummary}
- turnDiffSummaryByAssistantMessageId={turnDiffSummaryByAssistantMessageId}
- nowIso={nowIso}
- expandedWorkGroups={expandedWorkGroups}
- onToggleWorkGroup={onToggleWorkGroup}
- revertTurnCountByUserMessageId={revertTurnCountByUserMessageId}
- onRevertUserMessage={onRevertUserMessage}
- isRevertingCheckpoint={isRevertingCheckpoint}
- onImageExpand={onExpandTimelineImage}
- markdownCwd={gitCwd ?? undefined}
- resolvedTheme={resolvedTheme}
- showReasoningContent={showReasoningContent}
- timestampFormat={timestampFormat}
- workspaceRoot={activeProject?.cwd ?? undefined}
- shortcutGuides={chatShortcutGuides}
- onRemoveQueuedMessage={onRemoveQueuedMessage}
- onOpenSettings={() => void navigate({ to: "/settings" })}
- onOpenTurnDiff={handleOpenTurnDiff}
- />
-
-
-
- {/* scroll to bottom pill — shown when user has scrolled away from the bottom */}
- {showScrollToBottom && (
-
-
+ {!isFullscreenPreviewMode ? (
+
+ {/* Messages */}
+
+
0}
+ isWorking={isWorking}
+ activeTurnInProgress={isWorking || !latestTurnSettled}
+ activeTurnStartedAt={activeWorkStartedAt}
+ scrollContainer={messagesScrollElement}
+ timelineEntries={timelineEntries}
+ completionDividerBeforeEntryId={completionDividerBeforeEntryId}
+ completionSummary={completionSummary}
+ turnDiffSummaryByAssistantMessageId={turnDiffSummaryByAssistantMessageId}
+ nowIso={nowIso}
+ expandedWorkGroups={expandedWorkGroups}
+ onToggleWorkGroup={onToggleWorkGroup}
+ revertTurnCountByUserMessageId={revertTurnCountByUserMessageId}
+ onRevertUserMessage={onRevertUserMessage}
+ isRevertingCheckpoint={isRevertingCheckpoint}
+ onImageExpand={onExpandTimelineImage}
+ markdownCwd={gitCwd ?? undefined}
+ resolvedTheme={resolvedTheme}
+ showReasoningContent={showReasoningContent}
+ timestampFormat={timestampFormat}
+ workspaceRoot={activeProject?.cwd ?? undefined}
+ shortcutGuides={chatShortcutGuides}
+ onRemoveQueuedMessage={onRemoveQueuedMessage}
+ onOpenSettings={() => void navigate({ to: "/settings" })}
+ onOpenTurnDiff={handleOpenTurnDiff}
+ />
+
- )}
-
+
+ {/* scroll to bottom pill — shown when user has scrolled away from the bottom */}
+ {showScrollToBottom && (
+
+
+
+ )}
+
+ ) : null}
{/* Input bar */}
-