From f0ab71f4f4add789df2ce79b532702ecb20fcd17 Mon Sep 17 00:00:00 2001 From: Danny Avila Date: Wed, 6 May 2026 19:53:53 -0400 Subject: [PATCH] =?UTF-8?q?=E2=8F=B3=20fix:=20Preserve=20Temporary=20Chat?= =?UTF-8?q?=20Retention=20Config=20(#12985)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data-schemas/src/app/interface.spec.ts | 29 +++++++++++++++++++ packages/data-schemas/src/app/interface.ts | 3 +- 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 packages/data-schemas/src/app/interface.spec.ts diff --git a/packages/data-schemas/src/app/interface.spec.ts b/packages/data-schemas/src/app/interface.spec.ts new file mode 100644 index 0000000000..3d59f394a5 --- /dev/null +++ b/packages/data-schemas/src/app/interface.spec.ts @@ -0,0 +1,29 @@ +import { getConfigDefaults } from 'librechat-data-provider'; +import type { TCustomConfig } from 'librechat-data-provider'; +import { loadDefaultInterface } from './interface'; + +describe('loadDefaultInterface', () => { + it('preserves the configured temporary chat retention period', async () => { + const config: Partial = { + interface: { + temporaryChatRetention: 24, + }, + }; + + const interfaceConfig = await loadDefaultInterface({ + config, + configDefaults: getConfigDefaults(), + }); + + expect(interfaceConfig?.temporaryChatRetention).toBe(24); + }); + + it('omits temporary chat retention when it is not explicitly configured', async () => { + const interfaceConfig = await loadDefaultInterface({ + config: {}, + configDefaults: getConfigDefaults(), + }); + + expect(interfaceConfig).not.toHaveProperty('temporaryChatRetention'); + }); +}); diff --git a/packages/data-schemas/src/app/interface.ts b/packages/data-schemas/src/app/interface.ts index 8768f6fcae..f5ea50fb25 100644 --- a/packages/data-schemas/src/app/interface.ts +++ b/packages/data-schemas/src/app/interface.ts @@ -39,13 +39,14 @@ export async function loadDefaultInterface({ mcpServers: interfaceConfig?.mcpServers ?? defaults.mcpServers, customWelcome: interfaceConfig?.customWelcome ?? defaults.customWelcome, - // Permissions - only include if explicitly configured + // Permissions and related settings - only include if explicitly configured bookmarks: interfaceConfig?.bookmarks, memories: shouldDisableMemories ? false : interfaceConfig?.memories, prompts: interfaceConfig?.prompts, multiConvo: interfaceConfig?.multiConvo, agents: interfaceConfig?.agents, temporaryChat: interfaceConfig?.temporaryChat, + temporaryChatRetention: interfaceConfig?.temporaryChatRetention, runCode: interfaceConfig?.runCode, webSearch: interfaceConfig?.webSearch, fileSearch: interfaceConfig?.fileSearch,