feat: 添加终端回滚行数设置

This commit is contained in:
Baobhan Sith
2025-05-05 17:06:10 +08:00
parent d3cae06c63
commit 4c983945db
8 changed files with 136 additions and 5 deletions
+23 -2
View File
@@ -56,6 +56,7 @@ interface SettingsState {
showConnectionTags?: string; // 'true' or 'false'
showQuickCommandTags?: string; // 'true' or 'false'
layoutLocked?: string; // 'true' or 'false' - NEW: 布局锁定状态
terminalScrollbackLimit?: string; // NEW: 终端回滚行数上限 (e.g., '5000', '0' for unlimited)
[key: string]: string | undefined;
}
@@ -270,6 +271,11 @@ export const useSettingsStore = defineStore('settings', () => {
} else {
console.log(`[SettingsStore] layoutLocked found in fetched settings: ${settings.value.layoutLocked}`);
}
// NEW: Terminal scrollback limit default
if (settings.value.terminalScrollbackLimit === undefined) {
settings.value.terminalScrollbackLimit = '5000'; // 默认 5000 行
console.log(`[SettingsStore] terminalScrollbackLimit not found, set to default: ${settings.value.terminalScrollbackLimit}`);
}
// --- 语言设置 ---
@@ -357,7 +363,8 @@ export const useSettingsStore = defineStore('settings', () => {
'dashboardSortOrder',
'showConnectionTags', // NEW
'showQuickCommandTags', // NEW
'layoutLocked' // NEW
'layoutLocked', // NEW
'terminalScrollbackLimit' // NEW
];
if (!allowedKeys.includes(key)) {
console.error(`[SettingsStore] 尝试更新不允许的设置键: ${key}`);
@@ -442,7 +449,8 @@ export const useSettingsStore = defineStore('settings', () => {
'dashboardSortOrder',
'showConnectionTags', // NEW
'showQuickCommandTags', // NEW
'layoutLocked' // NEW
'layoutLocked', // NEW
'terminalScrollbackLimit' // NEW
];
const filteredUpdates: Partial<SettingsState> = {};
let languageUpdate: string | undefined = undefined;
@@ -717,6 +725,18 @@ export const useSettingsStore = defineStore('settings', () => {
return settings.value.layoutLocked === 'true';
});
// NEW: Getter for terminal scrollback limit, returning number (0 means Infinity for xterm)
const terminalScrollbackLimitNumber = computed(() => {
const valStr = settings.value.terminalScrollbackLimit;
if (valStr === null || valStr === undefined || valStr.trim() === '') {
return 5000; // Default value if not set or empty
}
const val = parseInt(valStr, 10);
if (isNaN(val) || val < 0) {
return 5000; // Default value if invalid number or negative
}
return val; // Return 0 if it's 0, or the positive number
});
return {
settings, // 只包含通用设置
@@ -758,5 +778,6 @@ export const useSettingsStore = defineStore('settings', () => {
showQuickCommandTagsBoolean,
// NEW: Expose layout locked getter
layoutLockedBoolean,
terminalScrollbackLimitNumber, // NEW: Expose terminal scrollback limit getter
};
});