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 */} -
+
)} + {isFullscreenPreviewMode ? ( +
+ + {floatingComposerStatus} + + Preview +
+ ) : null}
{activePendingApproval ? ( -
+
) : pendingUserInputs.length > 0 ? ( -
+
) : showPlanFollowUpPrompt && activeProposedPlan ? ( -
+
- {isGitRepo && ( + {!isFullscreenPreviewMode && isGitRepo && ( )} - {pullRequestDialogState ? ( + {!isFullscreenPreviewMode && pullRequestDialogState ? (