From 5996880be15b3e60b4c4888b832d2cfa839aac82 Mon Sep 17 00:00:00 2001 From: Matthew Daniell Date: Tue, 31 Mar 2026 13:41:25 +1030 Subject: [PATCH] fix: correct client image resize threshold handling Add configurable minFileSizeKB support to clientImageResize and pass it through to shouldResizeImage so typical user photos are eligible for resize. Also document minFileSizeKB in librechat.example.yaml with a practical default. Made-with: Cursor --- client/src/hooks/Files/useClientResize.ts | 8 +++++--- librechat.example.yaml | 1 + packages/data-provider/src/file-config.ts | 2 ++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/client/src/hooks/Files/useClientResize.ts b/client/src/hooks/Files/useClientResize.ts index 1da3848aeb..fcd1838a46 100644 --- a/client/src/hooks/Files/useClientResize.ts +++ b/client/src/hooks/Files/useClientResize.ts @@ -25,8 +25,10 @@ export const useClientResize = () => { maxWidth: 1900, maxHeight: 1900, quality: 0.92, + minFileSizeKB: 1024, }; const isEnabled = config?.enabled ?? false; + const minFileSizeBytes = (config?.minFileSizeKB ?? 1024) * 1024; /** * Resizes an image if client-side resizing is enabled and supported @@ -50,8 +52,8 @@ export const useClientResize = () => { return { file, resized: false }; } - // Return original file if it doesn't need resizing - if (!shouldResizeImage(file)) { + // Return original file if it's below the minimum size threshold + if (!shouldResizeImage(file, minFileSizeBytes)) { return { file, resized: false }; } @@ -70,7 +72,7 @@ export const useClientResize = () => { return { file, resized: false }; } }, - [isEnabled, config], + [isEnabled, config, minFileSizeBytes], ); return { diff --git a/librechat.example.yaml b/librechat.example.yaml index 03bb5f5bc2..6facac0765 100644 --- a/librechat.example.yaml +++ b/librechat.example.yaml @@ -570,6 +570,7 @@ endpoints: # maxWidth: 1900 # Maximum width for resized images (default: 1900) # maxHeight: 1900 # Maximum height for resized images (default: 1900) # quality: 0.92 # JPEG quality for compression (0.0-1.0, default: 0.92) +# minFileSizeKB: 1024 # Skip resizing files smaller than this size in KB (default: 1024) # # See the Custom Configuration Guide for more information on Assistants Config: # # https://www.librechat.ai/docs/configuration/librechat_yaml/object_structure/assistants_endpoint diff --git a/packages/data-provider/src/file-config.ts b/packages/data-provider/src/file-config.ts index 32a1a28cc9..e8781ba6b2 100644 --- a/packages/data-provider/src/file-config.ts +++ b/packages/data-provider/src/file-config.ts @@ -427,6 +427,7 @@ export const fileConfig = { maxWidth: 1900, maxHeight: 1900, quality: 0.92, + minFileSizeKB: 1024, }, ocr: { supportedMimeTypes: defaultOCRMimeTypes, @@ -484,6 +485,7 @@ export const fileConfigSchema = z.object({ maxWidth: z.number().min(0).optional(), maxHeight: z.number().min(0).optional(), quality: z.number().min(0).max(1).optional(), + minFileSizeKB: z.number().min(0).optional(), }) .optional(), ocr: z