From 2311998dd643d4a06b1ecfcb05577ac74c9c56d5 Mon Sep 17 00:00:00 2001 From: shambukorgal-dev Date: Tue, 9 Dec 2025 15:22:21 +0530 Subject: [PATCH 1/7] feat:logo and text at the login page configurable --- client/src/components/Auth/AuthLayout.tsx | 45 +++++++++++++--------- packages/data-provider/src/config.ts | 2 + packages/data-schemas/src/app/interface.ts | 2 + 3 files changed, 30 insertions(+), 19 deletions(-) diff --git a/client/src/components/Auth/AuthLayout.tsx b/client/src/components/Auth/AuthLayout.tsx index f2290350ce..c1ce5e3068 100644 --- a/client/src/components/Auth/AuthLayout.tsx +++ b/client/src/components/Auth/AuthLayout.tsx @@ -6,6 +6,7 @@ import SocialLoginRender from './SocialLoginRender'; import { BlinkAnimation } from './BlinkAnimation'; import { Banner } from '../Banners'; import Footer from './Footer'; +import MarkdownLite from '~/components/Chat/Messages/Content/MarkdownLite'; function AuthLayout({ children, @@ -55,41 +56,47 @@ function AuthLayout({ } return null; }; + const logo_url = startupConfig?.interface?.loginImageUrl; + const logo_text = startupConfig?.interface?.loginText; + console.log('Login Image URL:', logo_url); + console.log('Login Logo Text:', logo_text); + console.log('Startup Config:', startupConfig); return (
-
+
{localize('com_ui_logo',
+
+
+ {children} + {(pathname.includes('login') || pathname.includes('register')) && ( + + )} +
+
+ {/* ——— WELCOME SECTIONS ——— */} +
+
+
+ +
+
+
+ {/* — end welcome sections — */} +
-
-
- {!hasStartupConfigError && !isFetching && header && ( -

- {header} -

- )} - {children} - {!pathname.includes('2fa') && - (pathname.includes('login') || pathname.includes('register')) && ( - - )} -
-
); diff --git a/packages/data-provider/src/config.ts b/packages/data-provider/src/config.ts index 495d7cae6d..a5cd05636e 100644 --- a/packages/data-provider/src/config.ts +++ b/packages/data-provider/src/config.ts @@ -531,6 +531,8 @@ export const interfaceSchema = z .optional(), termsOfService: termsOfServiceSchema.optional(), customWelcome: z.string().optional(), + loginImageUrl: z.string().optional(), + loginText: z.string().optional(), mcpServers: mcpServersSchema.optional(), endpointsMenu: z.boolean().optional(), modelSelect: z.boolean().optional(), diff --git a/packages/data-schemas/src/app/interface.ts b/packages/data-schemas/src/app/interface.ts index f8afdefd33..54089ed063 100644 --- a/packages/data-schemas/src/app/interface.ts +++ b/packages/data-schemas/src/app/interface.ts @@ -41,6 +41,8 @@ export async function loadDefaultInterface({ termsOfService: interfaceConfig?.termsOfService ?? defaults.termsOfService, mcpServers: interfaceConfig?.mcpServers ?? defaults.mcpServers, customWelcome: interfaceConfig?.customWelcome ?? defaults.customWelcome, + loginImageUrl: interfaceConfig?.loginImageUrl ?? defaults.loginImageUrl, + loginText: interfaceConfig?.loginText ?? defaults.loginText, // Permissions - only include if explicitly configured bookmarks: interfaceConfig?.bookmarks, From ea531c0090050120cca6211fe6a43ca008a2607c Mon Sep 17 00:00:00 2001 From: shambukorgal-dev Date: Wed, 17 Dec 2025 14:26:23 +0530 Subject: [PATCH 2/7] feat:Add librechat.yaml config --- client/src/components/Auth/AuthLayout.tsx | 3 --- librechat.example.yaml | 5 ++++- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/client/src/components/Auth/AuthLayout.tsx b/client/src/components/Auth/AuthLayout.tsx index c1ce5e3068..0692e38093 100644 --- a/client/src/components/Auth/AuthLayout.tsx +++ b/client/src/components/Auth/AuthLayout.tsx @@ -58,9 +58,6 @@ function AuthLayout({ }; const logo_url = startupConfig?.interface?.loginImageUrl; const logo_text = startupConfig?.interface?.loginText; - console.log('Login Image URL:', logo_url); - console.log('Login Logo Text:', logo_text); - console.log('Startup Config:', startupConfig); return (
diff --git a/librechat.example.yaml b/librechat.example.yaml index f163f8d4ac..79f3f827df 100644 --- a/librechat.example.yaml +++ b/librechat.example.yaml @@ -98,7 +98,10 @@ interface: fileCitations: true # Temporary chat retention period in hours (default: 720, min: 1, max: 8760) # temporaryChatRetention: 1 - + loginImageUrl: 'https://librechat.ai/assets/logo.png' + loginText: | + ## Welcome to LibreChat! Your AI companion for seamless conversations. + # Example Cloudflare turnstile (optional) #turnstile: # siteKey: "your-site-key-here" From 7cea11316a69d4f13a535acbdaf8e21ea8f685d1 Mon Sep 17 00:00:00 2001 From: shambukorgal-dev Date: Wed, 14 Jan 2026 15:34:37 +0530 Subject: [PATCH 3/7] Use custome logo if logo_url is provided in librechat.yaml else use default logo. --- client/src/components/Auth/AuthLayout.tsx | 55 +++++++++++++++-------- 1 file changed, 36 insertions(+), 19 deletions(-) diff --git a/client/src/components/Auth/AuthLayout.tsx b/client/src/components/Auth/AuthLayout.tsx index 4de5889aa1..c8b143d0ee 100644 --- a/client/src/components/Auth/AuthLayout.tsx +++ b/client/src/components/Auth/AuthLayout.tsx @@ -63,14 +63,43 @@ function AuthLayout({
-
- {localize('com_ui_logo', -
+ {logo_url ? ( +
+ {localize('com_ui_logo', +
+ ) : ( +
+ {localize('com_ui_logo', +
+ )}
+ + {/* Welcome back header and login buttons below logo */} + {!hasStartupConfigError && !isFetching && header && ( +
+

+ {header} +

+ {!pathname.includes('2fa') && + (pathname.includes('login') || pathname.includes('register')) && ( +
+ +
+ )} +
+ )} + {/* ——— WELCOME SECTIONS ——— */}
@@ -87,19 +116,7 @@ function AuthLayout({
- {!hasStartupConfigError && !isFetching && header && ( -

- {header} -

- )} {children} - {!pathname.includes('2fa') && - (pathname.includes('login') || pathname.includes('register')) && ( - - )}