之前是会话tab激活的会话不被空闲回收,现在改为会话tab所有的会话都不被空闲回收

This commit is contained in:
xintaofei
2026-03-22 21:45:45 +08:00
parent 06ac2be0b1
commit 046289748b
2 changed files with 37 additions and 3 deletions

View File

@@ -1,6 +1,13 @@
"use client"
import { Suspense, useCallback, useEffect, useRef, useState } from "react"
import {
Suspense,
useMemo,
useCallback,
useEffect,
useRef,
useState,
} from "react"
import { useSearchParams } from "next/navigation"
import type { ImperativePanelGroupHandle } from "react-resizable-panels"
import { FolderTitleBar } from "@/components/layout/folder-title-bar"
@@ -9,9 +16,12 @@ import { StatusBar } from "@/components/layout/status-bar"
import { FolderProvider } from "@/contexts/folder-context"
import { TaskProvider } from "@/contexts/task-context"
import { AlertProvider } from "@/contexts/alert-context"
import { AcpConnectionsProvider } from "@/contexts/acp-connections-context"
import {
AcpConnectionsProvider,
useAcpActions,
} from "@/contexts/acp-connections-context"
import { ConversationRuntimeProvider } from "@/contexts/conversation-runtime-context"
import { TabProvider } from "@/contexts/tab-context"
import { TabProvider, useTabContext } from "@/contexts/tab-context"
import { SessionStatsProvider } from "@/contexts/session-stats-context"
import { SidebarProvider, useSidebarContext } from "@/contexts/sidebar-context"
import {
@@ -58,6 +68,17 @@ const MIN_CENTER_WIDTH_PX = 420
const MIN_WORKSPACE_HEIGHT_PX = 220
const LAYOUT_EPSILON = 0.25
/** Syncs open tab keys from TabProvider to AcpConnectionsProvider */
function TabKeysSync() {
const { tabs } = useTabContext()
const { registerOpenTabKeys } = useAcpActions()
const keys = useMemo(() => new Set(tabs.map((t) => t.id)), [tabs])
useEffect(() => {
registerOpenTabKeys(keys)
}, [keys, registerOpenTabKeys])
return null
}
function isSameLayout(a: number[], b: number[]): boolean {
if (a.length !== b.length) return false
return a.every((value, index) => Math.abs(value - b[index]) <= LAYOUT_EPSILON)
@@ -649,6 +670,7 @@ function FolderLayoutInner({ children }: { children: React.ReactNode }) {
<ConversationRuntimeProvider>
<WorkspaceProvider key={`workspace-${normalizedFolderId}`}>
<TabProvider>
<TabKeysSync />
<SessionStatsProvider>
<SidebarProvider
key={`left-sidebar-${normalizedFolderId}`}