diff --git a/web/src/components/AgentChatComponent.vue b/web/src/components/AgentChatComponent.vue
index 010dcd18..c4134a78 100644
--- a/web/src/components/AgentChatComponent.vue
+++ b/web/src/components/AgentChatComponent.vue
@@ -5,12 +5,13 @@
:current-chat-id="currentChatId"
:chats-list="chatsList"
:is-sidebar-open="state.isSidebarOpen"
+ :is-initial-render="state.isInitialRender"
@create-chat="createNewChat"
@select-chat="selectChat"
@delete-chat="deleteChat"
@rename-chat="renameChat"
@toggle-sidebar="toggleSidebar"
- :class="{'floating-sidebar': isSmallContainer, 'collapsed': !state.isSidebarOpen && isSmallContainer}"
+ :class="{'floating-sidebar': isSmallContainer, 'sidebar-open': state.isSidebarOpen, 'no-transition': state.isInitialRender}"
/>
@@ -129,10 +130,11 @@ const props = defineProps({
const state = reactive({
...props.state,
debug_mode: computed(() => props.state.debug_mode ?? false),
- isSidebarOpen: false,
+ isSidebarOpen: localStorage.getItem('chat_sidebar_open') === 'true' || false,
waitingServerResponse: false,
isProcessingRequest: false,
- creatingNewChat: false
+ creatingNewChat: false,
+ isInitialRender: true
});
// 容器宽度检测
@@ -159,6 +161,11 @@ onMounted(() => {
resizeObserver.observe(chatContainerRef.value);
}
});
+
+ // 延迟移除初始渲染标记,防止切换动画
+ setTimeout(() => {
+ state.isInitialRender = false;
+ }, 300);
});
onUnmounted(() => {
@@ -671,6 +678,7 @@ const scrollToBottom = async () => {
const toggleSidebar = () => {
state.isSidebarOpen = !state.isSidebarOpen;
+ localStorage.setItem('chat_sidebar_open', state.isSidebarOpen);
console.log("toggleSidebar", state.isSidebarOpen);
}
@@ -774,6 +782,10 @@ const mergeMessageChunk = (chunks) => {
width: 80% !important;
max-width: 300px;
+ &.no-transition {
+ transition: none !important;
+ }
+
&.collapsed {
transform: translateX(-100%);
}
diff --git a/web/src/components/ChatSidebarComponent.vue b/web/src/components/ChatSidebarComponent.vue
index d43ee114..c6517f48 100644
--- a/web/src/components/ChatSidebarComponent.vue
+++ b/web/src/components/ChatSidebarComponent.vue
@@ -1,5 +1,5 @@
-