feat: add memory limits UI settings for messages in session
This commit is contained in:
@@ -61,6 +61,11 @@ export type DesktopSettings = {
|
||||
queueModeEnabled?: boolean;
|
||||
gitmojiEnabled?: boolean;
|
||||
|
||||
// Memory limits for message viewport management
|
||||
memoryLimitHistorical?: number; // Default fetch limit when loading/syncing (default: 90)
|
||||
memoryLimitViewport?: number; // Trim target when leaving session (default: 120)
|
||||
memoryLimitActiveSession?: number; // Trim target for active session (default: 180)
|
||||
|
||||
// User-added skills catalogs (persisted to ~/.config/openchamber/settings.json)
|
||||
skillCatalogs?: SkillCatalogConfig[];
|
||||
};
|
||||
|
||||
@@ -185,6 +185,17 @@ const applyDesktopUiPreferences = (settings: DesktopSettings) => {
|
||||
store.setAutoDeleteAfterDays(normalized);
|
||||
}
|
||||
}
|
||||
|
||||
if (typeof settings.memoryLimitHistorical === 'number' && Number.isFinite(settings.memoryLimitHistorical)) {
|
||||
store.setMemoryLimitHistorical(settings.memoryLimitHistorical);
|
||||
}
|
||||
if (typeof settings.memoryLimitViewport === 'number' && Number.isFinite(settings.memoryLimitViewport)) {
|
||||
store.setMemoryLimitViewport(settings.memoryLimitViewport);
|
||||
}
|
||||
if (typeof settings.memoryLimitActiveSession === 'number' && Number.isFinite(settings.memoryLimitActiveSession)) {
|
||||
store.setMemoryLimitActiveSession(settings.memoryLimitActiveSession);
|
||||
}
|
||||
|
||||
if (typeof settings.queueModeEnabled === 'boolean' && settings.queueModeEnabled !== queueStore.queueModeEnabled) {
|
||||
queueStore.setQueueMode(settings.queueModeEnabled);
|
||||
}
|
||||
@@ -273,6 +284,16 @@ const sanitizeWebSettings = (payload: unknown): DesktopSettings | null => {
|
||||
result.queueModeEnabled = candidate.queueModeEnabled;
|
||||
}
|
||||
|
||||
if (typeof candidate.memoryLimitHistorical === 'number' && Number.isFinite(candidate.memoryLimitHistorical)) {
|
||||
result.memoryLimitHistorical = candidate.memoryLimitHistorical;
|
||||
}
|
||||
if (typeof candidate.memoryLimitViewport === 'number' && Number.isFinite(candidate.memoryLimitViewport)) {
|
||||
result.memoryLimitViewport = candidate.memoryLimitViewport;
|
||||
}
|
||||
if (typeof candidate.memoryLimitActiveSession === 'number' && Number.isFinite(candidate.memoryLimitActiveSession)) {
|
||||
result.memoryLimitActiveSession = candidate.memoryLimitActiveSession;
|
||||
}
|
||||
|
||||
const skillCatalogs = sanitizeSkillCatalogs(candidate.skillCatalogs);
|
||||
if (skillCatalogs) {
|
||||
result.skillCatalogs = skillCatalogs;
|
||||
|
||||
Reference in New Issue
Block a user