| @@ -2352,6 +2352,7 @@ function ChatViewContent(props: ChatViewProps) { · 2351 unmodified lines |
| 2352 | 2352 | terminalUiLaunchContext?.threadId === activeThreadId ? terminalUiLaunchContext : null; |
| 2353 | 2353 | // Default true while loading to avoid toolbar flicker. |
| 2354 | 2354 | const isGitRepo = gitStatusQuery.data?.isRepo ?? true; |
| 2355 | + const showComposerContextStrip = isGitRepo && activeProject !== null; |
| 2355 | 2356 | const initialDiffPanelGitScope = |
| 2356 | 2357 | gitStatusQuery.data?.hasWorkingTreeChanges === true ? "unstaged" : "branch"; |
| 2357 | 2358 | const diffPanelGitStatusResolutionKey = gitStatusQuery.data ? "resolved" : "pending"; |
| @@ -5592,119 +5593,128 @@ function ChatViewContent(props: ChatViewProps) { · 3234 unmodified lines |
| 5592 | 5593 | : undefined |
| 5593 | 5594 | } |
| 5594 | 5595 | > |
| 5595 | | − <div className="chat-composer-glass-host relative z-10 mx-auto w-full max-w-3xl rounded-[22px]"> |
| 5596 | | − <div ref={attachDraftHeroComposerAnchorRef} className="relative z-10"> |
| 5597 | | − <ChatComposer |
| 5598 | | − composerRef={composerRef} |
| 5599 | | − composerDraftTarget={composerDraftTarget} |
| 5600 | | − environmentId={environmentId} |
| 5601 | | − routeKind={routeKind} |
| 5602 | | − routeThreadRef={routeThreadRef} |
| 5603 | | − draftId={draftId} |
| 5604 | | − activeThreadId={activeThreadId} |
| 5605 | | − activeThreadEnvironmentId={activeThread?.environmentId} |
| 5606 | | − activeThread={activeThread} |
| 5607 | | − isServerThread={isServerThread} |
| 5608 | | − isLocalDraftThread={isLocalDraftThread} |
| 5609 | | − forceExpandedOnMobile={forceExpandedMobileComposer && isDraftHeroState} |
| 5610 | | − projectSelectionRequired={isLocalDraftThread && activeProject === null} |
| 5611 | | − phase={phase} |
| 5612 | | − isConnecting={isConnecting} |
| 5613 | | − isSendBusy={isSendBusy} |
| 5614 | | − isPreparingWorktree={isPreparingWorktree} |
| 5615 | | − environmentUnavailable={activeEnvironmentUnavailableState} |
| 5616 | | − activePendingApproval={activePendingApproval} |
| 5617 | | − pendingApprovals={pendingApprovals} |
| 5618 | | − pendingUserInputs={pendingUserInputs} |
| 5619 | | − activePendingProgress={activePendingProgress} |
| 5620 | | − activePendingResolvedAnswers={activePendingResolvedAnswers} |
| 5621 | | − activePendingIsResponding={activePendingIsResponding} |
| 5622 | | − activePendingDraftAnswers={activePendingDraftAnswers} |
| 5623 | | − activePendingQuestionIndex={activePendingQuestionIndex} |
| 5624 | | − respondingRequestIds={respondingRequestIds} |
| 5625 | | − showPlanFollowUpPrompt={showPlanFollowUpPrompt} |
| 5626 | | − activeProposedPlan={activeProposedPlan} |
| 5627 | | − activePlan={activePlan as { turnId?: TurnId } | null} |
| 5628 | | − sidebarProposedPlan={sidebarProposedPlan as { turnId?: TurnId } | null} |
| 5629 | | − planSidebarLabel={planSidebarLabel} |
| 5630 | | − planSidebarOpen={planSidebarOpen} |
| 5631 | | − runtimeMode={runtimeMode} |
| 5632 | | − interactionMode={interactionMode} |
| 5633 | | − lockedProvider={lockedProvider} |
| 5634 | | − providerStatuses={providerStatuses as ServerProvider[]} |
| 5635 | | − activeProjectDefaultModelSelection={activeProject?.defaultModelSelection} |
| 5636 | | − activeThreadModelSelection={activeThread?.modelSelection} |
| 5637 | | − activeThreadActivities={activeThread?.activities} |
| 5638 | | − resolvedTheme={resolvedTheme} |
| 5639 | | − settings={settings} |
| 5640 | | − keybindings={keybindings} |
| 5641 | | − terminalOpen={Boolean(terminalUiState.terminalOpen)} |
| 5642 | | − gitCwd={gitCwd} |
| 5643 | | − promptRef={promptRef} |
| 5644 | | − composerImagesRef={composerImagesRef} |
| 5645 | | − composerTerminalContextsRef={composerTerminalContextsRef} |
| 5646 | | − composerElementContextsRef={composerElementContextsRef} |
| 5647 | | − onSend={onSend} |
| 5648 | | − onInterrupt={onInterrupt} |
| 5649 | | − onImplementPlanInNewThread={onImplementPlanInNewThread} |
| 5650 | | − onRespondToApproval={onRespondToApproval} |
| 5651 | | − onSelectActivePendingUserInputOption={ |
| 5652 | | − onSelectActivePendingUserInputOption |
| 5653 | | − } |
| 5654 | | − onAdvanceActivePendingUserInput={onAdvanceActivePendingUserInput} |
| 5655 | | − onPreviousActivePendingUserInputQuestion={ |
| 5656 | | − onPreviousActivePendingUserInputQuestion |
| 5657 | | − } |
| 5658 | | − onChangeActivePendingUserInputCustomAnswer={ |
| 5659 | | − onChangeActivePendingUserInputCustomAnswer |
| 5660 | | − } |
| 5661 | | − onProviderModelSelect={onProviderModelSelect} |
| 5662 | | − getModelDisabledReason={getModelDisabledReason} |
| 5663 | | − toggleInteractionMode={toggleInteractionMode} |
| 5664 | | − handleRuntimeModeChange={handleRuntimeModeChange} |
| 5665 | | − handleInteractionModeChange={handleInteractionModeChange} |
| 5666 | | − togglePlanSidebar={togglePlanSidebar} |
| 5667 | | − focusComposer={focusComposer} |
| 5668 | | − scheduleComposerFocus={scheduleComposerFocus} |
| 5669 | | − setThreadError={setThreadError} |
| 5670 | | − onExpandImage={onExpandTimelineImage} |
| 5671 | | − /> |
| 5596 | + <div |
| 5597 | + className={cn( |
| 5598 | + "chat-composer-glass-shell relative mx-auto w-full max-w-3xl", |
| 5599 | + showComposerContextStrip && "chat-composer-glass-shell-with-context", |
| 5600 | + )} |
| 5601 | + > |
| 5602 | + <div className="chat-composer-glass-host relative z-10 w-full rounded-[22px]"> |
| 5603 | + <div ref={attachDraftHeroComposerAnchorRef} className="relative z-10"> |
| 5604 | + <ChatComposer |
| 5605 | + composerRef={composerRef} |
| 5606 | + composerDraftTarget={composerDraftTarget} |
| 5607 | + environmentId={environmentId} |
| 5608 | + routeKind={routeKind} |
| 5609 | + routeThreadRef={routeThreadRef} |
| 5610 | + draftId={draftId} |
| 5611 | + activeThreadId={activeThreadId} |
| 5612 | + activeThreadEnvironmentId={activeThread?.environmentId} |
| 5613 | + activeThread={activeThread} |
| 5614 | + isServerThread={isServerThread} |
| 5615 | + isLocalDraftThread={isLocalDraftThread} |
| 5616 | + forceExpandedOnMobile={forceExpandedMobileComposer && isDraftHeroState} |
| 5617 | + projectSelectionRequired={isLocalDraftThread && activeProject === null} |
| 5618 | + phase={phase} |
| 5619 | + isConnecting={isConnecting} |
| 5620 | + isSendBusy={isSendBusy} |
| 5621 | + isPreparingWorktree={isPreparingWorktree} |
| 5622 | + environmentUnavailable={activeEnvironmentUnavailableState} |
| 5623 | + activePendingApproval={activePendingApproval} |
| 5624 | + pendingApprovals={pendingApprovals} |
| 5625 | + pendingUserInputs={pendingUserInputs} |
| 5626 | + activePendingProgress={activePendingProgress} |
| 5627 | + activePendingResolvedAnswers={activePendingResolvedAnswers} |
| 5628 | + activePendingIsResponding={activePendingIsResponding} |
| 5629 | + activePendingDraftAnswers={activePendingDraftAnswers} |
| 5630 | + activePendingQuestionIndex={activePendingQuestionIndex} |
| 5631 | + respondingRequestIds={respondingRequestIds} |
| 5632 | + showPlanFollowUpPrompt={showPlanFollowUpPrompt} |
| 5633 | + activeProposedPlan={activeProposedPlan} |
| 5634 | + activePlan={activePlan as { turnId?: TurnId } | null} |
| 5635 | + sidebarProposedPlan={sidebarProposedPlan as { turnId?: TurnId } | null} |
| 5636 | + planSidebarLabel={planSidebarLabel} |
| 5637 | + planSidebarOpen={planSidebarOpen} |
| 5638 | + runtimeMode={runtimeMode} |
| 5639 | + interactionMode={interactionMode} |
| 5640 | + lockedProvider={lockedProvider} |
| 5641 | + providerStatuses={providerStatuses as ServerProvider[]} |
| 5642 | + activeProjectDefaultModelSelection={ |
| 5643 | + activeProject?.defaultModelSelection |
| 5644 | + } |
| 5645 | + activeThreadModelSelection={activeThread?.modelSelection} |
| 5646 | + activeThreadActivities={activeThread?.activities} |
| 5647 | + resolvedTheme={resolvedTheme} |
| 5648 | + settings={settings} |
| 5649 | + keybindings={keybindings} |
| 5650 | + terminalOpen={Boolean(terminalUiState.terminalOpen)} |
| 5651 | + gitCwd={gitCwd} |
| 5652 | + promptRef={promptRef} |
| 5653 | + composerImagesRef={composerImagesRef} |
| 5654 | + composerTerminalContextsRef={composerTerminalContextsRef} |
| 5655 | + composerElementContextsRef={composerElementContextsRef} |
| 5656 | + onSend={onSend} |
| 5657 | + onInterrupt={onInterrupt} |
| 5658 | + onImplementPlanInNewThread={onImplementPlanInNewThread} |
| 5659 | + onRespondToApproval={onRespondToApproval} |
| 5660 | + onSelectActivePendingUserInputOption={ |
| 5661 | + onSelectActivePendingUserInputOption |
| 5662 | + } |
| 5663 | + onAdvanceActivePendingUserInput={onAdvanceActivePendingUserInput} |
| 5664 | + onPreviousActivePendingUserInputQuestion={ |
| 5665 | + onPreviousActivePendingUserInputQuestion |
| 5666 | + } |
| 5667 | + onChangeActivePendingUserInputCustomAnswer={ |
| 5668 | + onChangeActivePendingUserInputCustomAnswer |
| 5669 | + } |
| 5670 | + onProviderModelSelect={onProviderModelSelect} |
| 5671 | + getModelDisabledReason={getModelDisabledReason} |
| 5672 | + toggleInteractionMode={toggleInteractionMode} |
| 5673 | + handleRuntimeModeChange={handleRuntimeModeChange} |
| 5674 | + handleInteractionModeChange={handleInteractionModeChange} |
| 5675 | + togglePlanSidebar={togglePlanSidebar} |
| 5676 | + focusComposer={focusComposer} |
| 5677 | + scheduleComposerFocus={scheduleComposerFocus} |
| 5678 | + setThreadError={setThreadError} |
| 5679 | + onExpandImage={onExpandTimelineImage} |
| 5680 | + /> |
| 5681 | + </div> |
| 5672 | 5682 | </div> |
| 5673 | | − </div> |
| 5674 | | − <div className="min-h-0"> |
| 5675 | | − <div |
| 5676 | | − data-terminal-open={terminalUiState.terminalOpen ? "true" : undefined} |
| 5677 | | − className="relative z-0" |
| 5678 | | − > |
| 5679 | | − {isGitRepo && ( |
| 5680 | | − <div className="pointer-events-auto"> |
| 5681 | | − <BranchToolbar |
| 5682 | | − environmentId={activeThread.environmentId} |
| 5683 | | − threadId={activeThread.id} |
| 5684 | | − {...(routeKind === "draft" && draftId ? { draftId } : {})} |
| 5685 | | − onEnvModeChange={onEnvModeChange} |
| 5686 | | − startFromOrigin={startFromOrigin} |
| 5687 | | − onStartFromOriginChange={onStartFromOriginChange} |
| 5688 | | − {...(canOverrideServerThreadEnvMode |
| 5689 | | − ? { effectiveEnvModeOverride: envMode } |
| 5690 | | − : {})} |
| 5691 | | − {...(canOverrideServerThreadEnvMode |
| 5692 | | − ? { |
| 5693 | | − activeThreadBranchOverride: activeThreadBranch, |
| 5694 | | − onActiveThreadBranchOverrideChange: |
| 5695 | | − setPendingServerThreadBranch, |
| 5696 | | − } |
| 5697 | | − : {})} |
| 5698 | | − envLocked={envLocked} |
| 5699 | | − onComposerFocusRequest={scheduleComposerFocus} |
| 5700 | | − {...(canCheckoutPullRequestIntoThread |
| 5701 | | − ? { onCheckoutPullRequestRequest: openPullRequestDialog } |
| 5702 | | − : {})} |
| 5703 | | − {...(hasMultipleEnvironments ? { onEnvironmentChange } : {})} |
| 5704 | | − availableEnvironments={logicalProjectEnvironments} |
| 5705 | | − /> |
| 5706 | | − </div> |
| 5707 | | − )} |
| 5683 | + <div className="min-h-0"> |
| 5684 | + <div |
| 5685 | + data-terminal-open={terminalUiState.terminalOpen ? "true" : undefined} |
| 5686 | + className="relative z-0" |
| 5687 | + > |
| 5688 | + {showComposerContextStrip && ( |
| 5689 | + <div className="pointer-events-auto"> |
| 5690 | + <BranchToolbar |
| 5691 | + environmentId={activeThread.environmentId} |
| 5692 | + threadId={activeThread.id} |
| 5693 | + {...(routeKind === "draft" && draftId ? { draftId } : {})} |
| 5694 | + onEnvModeChange={onEnvModeChange} |
| 5695 | + startFromOrigin={startFromOrigin} |
| 5696 | + onStartFromOriginChange={onStartFromOriginChange} |
| 5697 | + {...(canOverrideServerThreadEnvMode |
| 5698 | + ? { effectiveEnvModeOverride: envMode } |
| 5699 | + : {})} |
| 5700 | + {...(canOverrideServerThreadEnvMode |
| 5701 | + ? { |
| 5702 | + activeThreadBranchOverride: activeThreadBranch, |
| 5703 | + onActiveThreadBranchOverrideChange: |
| 5704 | + setPendingServerThreadBranch, |
| 5705 | + } |
| 5706 | + : {})} |
| 5707 | + envLocked={envLocked} |
| 5708 | + onComposerFocusRequest={scheduleComposerFocus} |
| 5709 | + {...(canCheckoutPullRequestIntoThread |
| 5710 | + ? { onCheckoutPullRequestRequest: openPullRequestDialog } |
| 5711 | + : {})} |
| 5712 | + {...(hasMultipleEnvironments ? { onEnvironmentChange } : {})} |
| 5713 | + availableEnvironments={logicalProjectEnvironments} |
| 5714 | + /> |
| 5715 | + </div> |
| 5716 | + )} |
| 5717 | + </div> |
| 5708 | 5718 | </div> |
| 5709 | 5719 | </div> |
| 5710 | 5720 | <div |