From 616c0c0e88d157a8f655143765bbb95ee0261830 Mon Sep 17 00:00:00 2001 From: ZhenYi <434836402@qq.com> Date: Sat, 25 Apr 2026 09:52:58 +0800 Subject: [PATCH] fix(room): scroll-to-bottom logic and AI sender display name - Remove duplicate smooth scroll effect from DiscordChatPanel; handle all scroll logic in MessageList instead - MessageList: track isInitialLoadRef to instant-jump to bottom on first load (no animation), and only auto-scroll for new messages when user is already near the bottom - sender.ts: getSenderDisplayName rejects UUID values and falls back to 'AI' for AI messages; getSenderModelId uses display_name --- src/components/room/DiscordChatPanel.tsx | 4 +- src/components/room/message/MessageBubble.tsx | 34 +++++++++++-- src/components/room/message/MessageList.tsx | 34 +++++++++++-- src/components/room/sender.ts | 23 ++++++--- src/contexts/room-context.tsx | 48 ++++++++++++++++++- src/lib/room-ws-client.ts | 15 +++++- src/lib/room.ts | 1 + src/lib/ws-protocol.ts | 10 ++++ 8 files changed, 151 insertions(+), 18 deletions(-) diff --git a/src/components/room/DiscordChatPanel.tsx b/src/components/room/DiscordChatPanel.tsx index d4c2c95..5e0f693 100644 --- a/src/components/room/DiscordChatPanel.tsx +++ b/src/components/room/DiscordChatPanel.tsx @@ -195,9 +195,7 @@ export function DiscordChatPanel({ room, isAdmin, onClose, onDelete, onToggleCha [room.id, updateRoom], ); - useEffect(() => { - messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' }); - }, [messages.length]); + // Scroll handling is done entirely by MessageList useEffect(() => { setReplyingTo(null); diff --git a/src/components/room/message/MessageBubble.tsx b/src/components/room/message/MessageBubble.tsx index 08b4c4d..1fbb878 100644 --- a/src/components/room/message/MessageBubble.tsx +++ b/src/components/room/message/MessageBubble.tsx @@ -316,18 +316,46 @@ export const MessageBubble = memo(function MessageBubble({