fix(ui): 终端侧边栏自动开关改为仅数量变化时触发一次
- 旧逻辑每次轮询都执行开关,导致面板关不掉/瞬间关闭 - 新增 previousTerminalCount 追踪,仅 0→>0 时开、>0→0 时关
This commit is contained in:
parent
2e54f2c343
commit
7d716b8b90
@ -2277,15 +2277,22 @@ export const uiMethods = {
|
||||
if (name) sessions[name] = {};
|
||||
}
|
||||
this.terminalSessions = sessions;
|
||||
// 自动打开/关闭终端面板
|
||||
// 自动打开/关闭终端面板(仅在数量变化时触发一次)
|
||||
const personalizationStore = usePersonalizationStore();
|
||||
const autoOpen = personalizationStore.form.auto_open_terminal_panel !== false;
|
||||
const hasTerminals = Object.keys(sessions).length > 0;
|
||||
if (autoOpen && hasTerminals && !this.terminalPanelOpen) {
|
||||
this.toggleTerminalPanel();
|
||||
} else if (autoOpen && !hasTerminals && this.terminalPanelOpen) {
|
||||
this.closeTerminalPanel();
|
||||
const count = Object.keys(sessions).length;
|
||||
const prevCount = this.previousTerminalCount ?? 0;
|
||||
if (autoOpen) {
|
||||
// 终端从无到有 → 如果面板没开,打开一次
|
||||
if (prevCount === 0 && count > 0 && !this.terminalPanelOpen) {
|
||||
this.toggleTerminalPanel();
|
||||
}
|
||||
// 终端从有到无 → 如果面板开着,关闭一次
|
||||
else if (prevCount > 0 && count === 0 && this.terminalPanelOpen) {
|
||||
this.closeTerminalPanel();
|
||||
}
|
||||
}
|
||||
this.previousTerminalCount = count;
|
||||
}
|
||||
} catch {}
|
||||
},
|
||||
|
||||
@ -54,6 +54,8 @@ export function dataState() {
|
||||
terminalSessionLogs: {} as Record<string, string>,
|
||||
terminalHydrated: {} as Record<string, boolean>,
|
||||
terminalCount: 0,
|
||||
// 上一次检测到的终端数量,用于判断 0→>0(自动开)和 >0→0(自动关)
|
||||
previousTerminalCount: 0,
|
||||
// 右侧面板上下分割比例(终端占比 0.15~0.85)
|
||||
rightSplitRatio: 0.5,
|
||||
// 输入区动态保留高度(用于同步扩大消息区可滚动范围)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user