From d6500f7eb32b518c16193b34b527a4185e245187 Mon Sep 17 00:00:00 2001 From: constanttime Date: Thu, 2 Oct 2025 17:42:57 +0530 Subject: [PATCH] feat: Add configurable thinking indicator text - Add thinkingIndicatorText field to interface configuration schema - Update ContentParts component to use configurable text instead of hardcoded translation - Update example config with new option - Maintain backward compatibility by falling back to default translation --- client/src/components/Chat/Messages/Content/ContentParts.tsx | 4 +++- librechat.example.yaml | 1 + packages/data-provider/src/config.ts | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/client/src/components/Chat/Messages/Content/ContentParts.tsx b/client/src/components/Chat/Messages/Content/ContentParts.tsx index d9efa34cc4..284bde81e2 100644 --- a/client/src/components/Chat/Messages/Content/ContentParts.tsx +++ b/client/src/components/Chat/Messages/Content/ContentParts.tsx @@ -14,6 +14,7 @@ import Sources from '~/components/Web/Sources'; import { mapAttachments } from '~/utils/map'; import { EditTextPart } from './Parts'; import { useLocalize } from '~/hooks'; +import { useGetStartupConfig } from '~/data-provider'; import store from '~/store'; import Part from './Part'; @@ -53,6 +54,7 @@ const ContentParts = memo( setSiblingIdx, }: ContentPartsProps) => { const localize = useLocalize(); + const { data: startupConfig } = useGetStartupConfig(); const [showThinking, setShowThinking] = useRecoilState(store.showThinking); const [isExpanded, setIsExpanded] = useState(showThinking); const attachmentMap = useMemo(() => mapAttachments(attachments ?? []), [attachments]); @@ -139,7 +141,7 @@ const ContentParts = memo( } label={ effectiveIsSubmitting && isLast - ? localize('com_ui_thinking') + ? startupConfig?.interface?.thinkingIndicatorText || localize('com_ui_thinking') : localize('com_ui_thoughts') } /> diff --git a/librechat.example.yaml b/librechat.example.yaml index 6f034910dc..123982a967 100644 --- a/librechat.example.yaml +++ b/librechat.example.yaml @@ -96,6 +96,7 @@ interface: marketplace: use: false fileCitations: true + # thinkingIndicatorText: "Thinking..." # Text shown while AI is generating a response (default: "Thinking...") # Temporary chat retention period in hours (default: 720, min: 1, max: 8760) # temporaryChatRetention: 1 diff --git a/packages/data-provider/src/config.ts b/packages/data-provider/src/config.ts index 1747cd7511..30cd6fe725 100644 --- a/packages/data-provider/src/config.ts +++ b/packages/data-provider/src/config.ts @@ -550,6 +550,7 @@ export const interfaceSchema = z .optional(), fileSearch: z.boolean().optional(), fileCitations: z.boolean().optional(), + thinkingIndicatorText: z.string().optional(), }) .default({ endpointsMenu: true,