diff --git a/packages/ui/src/components/chat/ChatContainer.tsx b/packages/ui/src/components/chat/ChatContainer.tsx
index d754a54f..90e90874 100644
--- a/packages/ui/src/components/chat/ChatContainer.tsx
+++ b/packages/ui/src/components/chat/ChatContainer.tsx
@@ -148,6 +148,7 @@ type HydratingToolSkeletonRow = {
type ChatViewportProps = {
onStatusOverlayNode: (node: HTMLDivElement | null) => void;
+ statusOverlayHidden: boolean;
currentSessionId: string;
currentSessionKey: string;
isDesktopExpandedInput: boolean;
@@ -192,6 +193,7 @@ type ChatViewportProps = {
const ChatViewport = React.memo(({
onStatusOverlayNode,
+ statusOverlayHidden,
currentSessionId,
currentSessionKey,
isDesktopExpandedInput,
@@ -421,10 +423,15 @@ const ChatViewport = React.memo(({
background — text streams beneath it; the measured height
feeds composerOverlayHeight so the live line never hides
under it. */}
-
+
@@ -445,6 +452,7 @@ const ChatViewport = React.memo(({
);
}, (prev, next) => {
return prev.onStatusOverlayNode === next.onStatusOverlayNode
+ && prev.statusOverlayHidden === next.statusOverlayHidden
&& prev.currentSessionId === next.currentSessionId
&& prev.currentSessionKey === next.currentSessionKey
&& prev.isDesktopExpandedInput === next.isDesktopExpandedInput
@@ -1359,6 +1367,7 @@ export const ChatContainer: React.FC
= ({
return (
= ({
{!draftLayoutVisible && !isDesktopExpandedInput && sessionMessages.length > 0 && (
)}
diff --git a/packages/ui/src/components/chat/components/ScrollToBottomButton.tsx b/packages/ui/src/components/chat/components/ScrollToBottomButton.tsx
index 15726e76..64f0d4e6 100644
--- a/packages/ui/src/components/chat/components/ScrollToBottomButton.tsx
+++ b/packages/ui/src/components/chat/components/ScrollToBottomButton.tsx
@@ -7,26 +7,36 @@ import { useI18n } from '@/lib/i18n';
interface ScrollToBottomButtonProps {
visible: boolean;
+ /** The session is still streaming: the pill carries the activity signal
+ while the floating status row is hidden away from the live edge. */
+ working?: boolean;
onClick: () => void;
}
-const ScrollToBottomButton: React.FC = ({ visible, onClick }) => {
+const ScrollToBottomButton: React.FC = ({ visible, working = false, onClick }) => {
const { t } = useI18n();
return (
);