From 3a9e6865330e79a11a71b3cee00576ded6dd306f Mon Sep 17 00:00:00 2001 From: SiriusXT <1160925501@qq.com> Date: Sun, 4 Jan 2026 18:49:08 +0800 Subject: [PATCH] chore(window): simplify replacement logic for open windows --- apps/client/src/components/tab_manager.ts | 33 +++++++---------------- 1 file changed, 10 insertions(+), 23 deletions(-) diff --git a/apps/client/src/components/tab_manager.ts b/apps/client/src/components/tab_manager.ts index fdd918722..8799a80c2 100644 --- a/apps/client/src/components/tab_manager.ts +++ b/apps/client/src/components/tab_manager.ts @@ -149,31 +149,18 @@ export default class TabManager extends Component { currentWin.contexts = filteredNoteContexts; } else { if (savedWindows?.length >= MAX_SAVED_WINDOWS) { - // Filter out the oldest entry + // Filter out a window to remove // 1) Never remove the "main" window - // 2) Prefer removing the oldest closed window (closedAt !== 0) - // 3) If no closed window exists, remove the window with the oldest created window - let oldestClosedIndex = -1; - let oldestClosedTime = Infinity; - let oldestCreatedIndex = -1; - let oldestCreatedTime = Infinity; - savedWindows.forEach((w: WindowState, i: number) => { - if (w.windowId === "main") return; - if (w.closedAt !== 0) { - if (w.closedAt < oldestClosedTime) { - oldestClosedTime = w.closedAt; - oldestClosedIndex = i; - } - } else { - if (w.createdAt < oldestCreatedTime) { - oldestCreatedTime = w.createdAt; - oldestCreatedIndex = i; - } + // 2) Remove the window with the oldest creation time + let windowToRemove: WindowState | null = null; + for (const win of savedWindows) { + if (win.windowId === "main") continue; // never remove main + if (!windowToRemove || win.createdAt < windowToRemove.createdAt) { + windowToRemove = win; } - }); - const indexToRemove = oldestClosedIndex !== -1 ? oldestClosedIndex : oldestCreatedIndex; - if (indexToRemove !== -1) { - savedWindows.splice(indexToRemove, 1); + } + if (windowToRemove) { + savedWindows.splice(savedWindows.indexOf(windowToRemove), 1); } }