Split the 2,267-line ChatScreen.kt into 11 single-purpose files under
ui/chat/components/, keeping ChatScreen.kt as a thin (~530 line)
entry compositor that delegates rendering to the new components.
Files extracted:
- ChatConnectionBanner.kt — top banner (reconnecting/disconnected/auth-expired)
- ChatMessageList.kt — message list + search bar overlay + empty state
- ChatComposer.kt — input bar + attachment chips + slash dropdown
- ChatSearchBar.kt — CompactSearchInput + SearchBarRow
- ChatDialogs.kt — ClarifyDialog, SudoPromptDialog, SecretPromptDialog, ReloginDialog
- ChatIndicators.kt — ThinkingIndicator, ReasoningIndicator, SubagentIndicatorRow
- ChatScrollFab.kt — scrollToBottom utils + FAB
- ChatLifecycleEffects.kt — session switch, lifecycle observer, auto-scroll, error snackbars
- ChatReactions.kt — ReactionHeartsOverlay + FloatingHeart animation
- ChatStreaming.kt — StreamingBubbleWithTypingEffect
- ChatLoadingOverlay.kt — full-screen semi-transparent loading overlay
No behavioral change. All composables are public where they need to be
called from ChatScreen, otherwise keep their original visibility.
Unblocks #583 and #584 which were previously too risky to attempt in
the 2.2k-line file.
Co-authored-by: M57 <hy4ri@users.noreply.github.com>