refactor: streamline chat scroll manager

- Removed unused activeTurnAnchorId and activeTurnSpacerHeight from MemoryDebugPanel.
- Simplified useChatScrollManager by eliminating unnecessary state and functions related to active turn anchoring.
- Updated loadMessages function signatures to accept an optional limit parameter across message and session stores.
- Enhanced scroll behavior in useScrollEngine to support dynamic bottom tracking during animations.
- Improved event stream handling to allow for resyncing messages with a specified limit.
- Cleaned up session memory state to remove active turn properties, focusing on viewport anchoring.
This commit is contained in:
Bohdan Triapitsyn
2026-01-20 03:23:39 +02:00
parent 8fa16baf3b
commit 6544b12e78
15 changed files with 318 additions and 937 deletions
@@ -4,15 +4,16 @@ import { cn } from '@/lib/utils';
interface FadeInOnRevealProps {
children: React.ReactNode;
className?: string;
skipAnimation?: boolean;
}
const FADE_ANIMATION_ENABLED = true;
export const FadeInOnReveal: React.FC<FadeInOnRevealProps> = ({ children, className }) => {
const [visible, setVisible] = React.useState(false);
export const FadeInOnReveal: React.FC<FadeInOnRevealProps> = ({ children, className, skipAnimation }) => {
const [visible, setVisible] = React.useState(skipAnimation ?? false);
React.useEffect(() => {
if (!FADE_ANIMATION_ENABLED) {
if (!FADE_ANIMATION_ENABLED || skipAnimation) {
return;
}
@@ -35,9 +36,9 @@ export const FadeInOnReveal: React.FC<FadeInOnRevealProps> = ({ children, classN
window.cancelAnimationFrame(frame);
}
};
}, []);
}, [skipAnimation]);
if (!FADE_ANIMATION_ENABLED) {
if (!FADE_ANIMATION_ENABLED || skipAnimation) {
return <>{children}</>;
}