Skip to content

Commit ce26667

Browse files
committed
Squashed commit of the following:
commit 7ae5c710e3ecf4c559a77ca4f60c363b0ae4af37 Author: Jonathan Addington <[email protected]> Date: Tue Apr 8 14:11:34 2025 +0000 chore: misc changes to devcontainer for local dev commit 9d4ab0abb9562b167bf9e61d92497aeedce56f11 Merge: c351f807 4a01302d Author: Jonathan Addington <[email protected]> Date: Mon Apr 7 19:55:20 2025 -0400 Merge branch 'jm-production' of https://github.com/jmaddington/LibreChat into jm-production commit c351f807a32f2841e3051308f033264d180a7deb Author: Jonathan Addington <[email protected]> Date: Mon Apr 7 19:55:14 2025 -0400 Make branch parameter optional in deploy-jm workflow to support easier manual triggering commit 4a01302d8a61c3ee001dc20601d2728caa6cb855 Author: JM Addington <[email protected]> Date: Wed Apr 2 23:29:23 2025 -0400 Feature/status badges (#65) * Add workflow status badges to README and create build-only workflow * Enable manual workflow triggering and include jm-production branch * Add tracking/* and feature/* branches to workflow triggers * Fix Docker Build Only badge in README * Fix duplicate FluxAPI declarations in handleTools.js * Fix frontend build by externalizing problematic dependencies * Add clean-set to externalized dependencies * chore: misc package and readme updates * Fix TimeAPI test module import path * Fix TimeAPI test and remove console.error in config/index.js commit d5f7fab7d972c0b53f1211506d16e048249b9510 Author: Jonathan Addington <[email protected]> Date: Wed Apr 2 19:42:45 2025 -0400 Enhance deploy-jm workflow with manual trigger options - Add input parameters for manual workflow runs - Make branch, tag, and dockerfile configurable - Add caching for faster builds - Improve inline documentation 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> commit 3cecf16f8529ffeb44516b25f737f89d564b859a Author: JM Addington <[email protected]> Date: Wed Apr 2 19:38:16 2025 -0400 Update README.md to document tracking branch naming convention (#62) commit a983b07180014facd15dbffc41238324589b6550 Merge: a33927c6 9da63b48 Author: Jonathan Addington <[email protected]> Date: Wed Apr 2 19:34:51 2025 -0400 Merge files from danny-main branch verbatim Merge specific files from danny-main branch taking their versions verbatim: - CHANGELOG.md - api/app/clients/GoogleClient.js - api/server/controllers/UserController.js - api/server/middleware/abortMiddleware.js - api/server/services/Config/getCustomConfig.js - api/server/services/Files/S3/crud.js - api/server/services/MCP.js - api/app/clients/tools/structured/FluxAPI.js - client and package files - Removed test files that don't exist in danny-main 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> commit 9da63b48376b73ef283113e9ff025ba60bce94b1 Author: Jonathan Addington <[email protected]> Date: Wed Apr 2 19:30:37 2025 -0400 Merge files from danny-main branch verbatim Merge specific files from danny-main branch taking their versions verbatim: - CHANGELOG.md - api/app/clients/GoogleClient.js - api/server/controllers/UserController.js - api/server/middleware/abortMiddleware.js - api/server/services/Config/getCustomConfig.js - api/server/services/Files/S3/crud.js - api/server/services/MCP.js - client and package files - Removed test files that don't exist in danny-main 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> commit a33927c6f6e0d06f74895fc9b0cfe6d4fbf06ffc Author: JM Addington <[email protected]> Date: Wed Apr 2 19:05:09 2025 -0400 Tracking/2025/04/02 (#60) * 🧠 feat: Reasoning UI for Agents (#5904) * chore: bump https-proxy-agent and @librechat/agents * refactor: Improve error logging in OllamaClient for API fetch failures * feat: Add DeepSeek provider support and enhance provider name handling * refactor: Use Providers.OLLAMA constant for model name check in fetchModels function * feat: Enhance formatAgentMessages to handle reasoning content type * feat: OpenRouter Agent Reasoning * hard work and dedicationgit add .env.example :) * fix: Handle Google social login with missing last name Social login with Google was previously displaying 'undefined' when a user's last name was empty or not provided. Changes: - Conditionally render last name only if it exists - Prevent displaying 'undefined' when last name is missing * fix: add missing file endings for developers yml,yaml and log --------- Co-authored-by: Mohamed Al-Duraji <[email protected]> Co-authored-by: Deepak Kendole <[email protected]> Co-authored-by: Peter Rothlaender <[email protected]> * 🐞 fix: Add Null Checks for BaseURL in Agent Config (#5908) * ⚙️ refactor: Enhance Logging, Navigation And Error Handling (#5910) * refactor: Ensure Axios Errors are less Verbose if No Response * refactor: Improve error handling in logAxiosError function * fix: Prevent ModelSelect from rendering for Agent Endpoints * refactor: Enhance logging functions with type parameter for better clarity * refactor: Update buildDefaultConvo function to use optional endpoint parameter since we pass a default value for undefined * refactor: Replace console logs with logger warnings and errors in useNavigateToConvo hook, and handle removed endpoint edge case * chore: import order * ⚖️ docs: Update LICENSE.md Year: 2024 -> 2025 (#5915) * 🔒 feat: Two-Factor Authentication with Backup Codes & QR support (#5685) * 🔒 feat: add Two-Factor Authentication (2FA) with backup codes & QR support (#5684) * working version for generating TOTP and authenticate. * better looking UI * refactored + better TOTP logic * fixed issue with UI * fixed issue: remove initial setup when closing window before completion. * added: onKeyDown for verify and disable * refactored some code and cleaned it up a bit. * refactored some code and cleaned it up a bit. * refactored some code and cleaned it up a bit. * refactored some code and cleaned it up a bit. * fixed issue after updating to new main branch * updated example * refactored controllers * removed `passport-totp` not used. * update the generateBackupCodes function to generate 10 codes by default: * update the backup codes to an object. * fixed issue with backup codes not working * be able to disable 2FA with backup codes. * removed new env. replaced with JWT_SECRET * ✨ style: improved a11y and style for TwoFactorAuthentication * 🔒 fix: small types checks * ✨ feat: improve 2FA UI components * fix: remove unnecessary console log * add option to disable 2FA with backup codes * - add option to refresh backup codes - (optional) maybe show the user which backup codes have already been used? * removed text to be able to merge the main. * removed eng tx to be able to merge * fix: migrated lang to new format. * feat: rewrote whole 2FA UI + refactored 2FA backend * chore: resolving conflicts * chore: resolving conflicts * fix: missing packages, because of resolving conflicts. * fix: UI issue and improved a11y * fix: 2FA backup code not working * fix: update localization keys for UI consistency * fix: update button label to use localized text * fix: refactor backup codes regeneration and update localization keys * fix: remove outdated translation for shared links management * fix: remove outdated 2FA code prompts from translation.json * fix: add cursor styles for backup codes item based on usage state * fix: resolve conflict issue * fix: resolve conflict issue * fix: resolve conflict issue * fix: missing packages in package-lock.json * fix: add disabled opacity to the verify button in TwoFactorScreen * ⚙ fix: update 2FA logic to rely on backup codes instead of TOTP status * ⚙️ fix: Simplify user retrieval in 2FA logic by removing unnecessary TOTP secret query * ⚙️ test: Add unit tests for TwoFactorAuthController and twoFactorControllers * ⚙️ fix: Ensure backup codes are validated as an array before usage in 2FA components * ⚙️ fix: Update module path mappings in tests to use relative paths * ⚙️ fix: Update moduleNameMapper in jest.config.js to remove the caret from path mapping * ⚙️ refactor: Simplify import paths in TwoFactorAuthController and twoFactorControllers test files * ⚙️ test: Mock twoFactorService methods in twoFactorControllers tests * ⚙️ refactor: Comment out unused imports and mock setups in test files for two-factor authentication * ⚙️ refactor: removed files * refactor: Exclude totpSecret from user data retrieval in AuthController, LoginController, and jwtStrategy * refactor: Consolidate backup code verification to apply DRY and remove default array in user schema * refactor: Enhance two-factor authentication ux/flow with improved error handling and loading state management, prevent redirect to /login --------- Co-authored-by: Marco Beretta <[email protected]> Co-authored-by: Danny Avila <[email protected]> * 🛠 refactor: Ensure File Deletions, File Naming, and Agent Resource Updates (#5928) * refactor: Improve error logging for file upload and processing functions to prevent verbosity * refactor: Add uploads directory to Docker Compose to persist file uploads * refactor: `addAgentResourceFile` to handle edge case of non-existing `tool_resource` array * refactor: Remove version specification from deploy-compose.yml * refactor: Prefix filenames with file_id to ensure uniqueness in file uploads * refactor: Enhance error handling in deleteVectors to log warnings for non-404 errors * refactor: Limit file search results to top 5 based on relevance score * 🌍 i18n: Update translation.json with latest translations --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * 🐛 fix: RAG Results Sorted By Distance (#5931) * refactor: Extract file unlinking logic into a separate function and don't throw error * fix: RAG results are actually in distance, not score * 📜 ci: Automate`CHANGELOG.md` (#5838) * feat: started with automated CHANGELOG.md * fix: no `configuration.json` found * refactor: `configuration.json` * fix: missing label `configuration.json` * fix: missing label `configuration.json` * fix: missing label `configuration.json` * fix: missing label `configuration.json` * fix: missing label `configuration.json` * ci: test new workflow action * ci: test new workflow action * ci: test new workflow action * feat: working CHANGELOG.md generation * feat: working CHANGELOG.md generation * feat: working CHANGELOG.md generation * feat: working CHANGELOG.md generation * feat: working CHANGELOG.md generation * feat: working CHANGELOG.md generation * feat: working CHANGELOG.md generation * fix: separate release and Unreleased workflows CHANGELOG.md generation * fix: separate release and Unreleased workflows CHANGELOG.md generation * fix: separate release and Unreleased workflows CHANGELOG.md generation * fix: separate release and Unreleased workflows CHANGELOG.md generation * fix: separate release and Unreleased workflows CHANGELOG.md generation * fix: separate release and Unreleased workflows CHANGELOG.md generation * fix: separate release and Unreleased workflows CHANGELOG.md generation * fix: separate release and Unreleased workflows CHANGELOG.md generation * fix: separate release and Unreleased workflows CHANGELOG.md generation * fix: separate release and Unreleased workflows CHANGELOG.md generation * fix: separate release and Unreleased workflows CHANGELOG.md generation * fix: separate release and Unreleased workflows CHANGELOG.md generation * fix: separate release and Unreleased workflows CHANGELOG.md generation * fix: separate release and Unreleased workflows CHANGELOG.md generation * fix: separate release and Unreleased workflows CHANGELOG.md generation * fix: separate release and Unreleased workflows CHANGELOG.md generation * fix: separate release and Unreleased workflows CHANGELOG.md generation * fix: separate release and Unreleased workflows CHANGELOG.md generation * fix: separate release and Unreleased workflows CHANGELOG.md generation * fix: separate release and Unreleased workflows CHANGELOG.md generation * fix: separate release and Unreleased workflows CHANGELOG.md generation * fix: separate release and Unreleased workflows CHANGELOG.md generation * fix: separate release and Unreleased workflows CHANGELOG.md generation * refactor: only trigger the `unreleased-changelog` action on push to `main` and `generate-release-changelog` only when pushing a tag with `v*.*.*` * refactor: Runs only every Monday at 00:00 UTC * 🔒 fix: 2FA Encrypt TOTP Secrets & Improve Docs (#5933) * 🔒 fix: Integrate TOTP secret retrieval and encryption in Two-Factor Authentication * 🔒 refactor: Simplify TOTP verification by removing commented-out code * 🔧 fix: Resizable Panel Unmount Error & Code Env. File Re-Upload (#5947) * 🔧 refactor: handle full path for code env. file re-upload * fix: update react-resizable-panels to version 2.1.7 to resolve error thrown on unmount of artifacts; ref: https://github.com/bvaughn/react-resizable-panels/issues/372 * refactor: replace promptPrefix with systemMessage in GoogleClient for improved clarity, and to prevent saving LibreChat feature-specific instructions to the user's custom instructions * ✨ style: Enhance Styling & Accessibility (#5956) * ✨ feat: Enhance UI Components with Shadows and Accessibility Improvements * 🔧 fix: Correct Category Labels and Values in API Model & Adjust Button Class in Prompt List * 🔢 chore: Remove Dollar Sign from Balance Display (#5948) * 🚀 feat: Support Redis Clusters, Trusted Proxy Setting, And Toggle Meilisearch Indexing (#5963) * refactor: Improve MeiliSearch integration with environment-based configuration for running index sync * chore: Remove Question issue template from GitHub repository * feat: Enable indexing in MeiliSearch configuration and clean up error handling in indexSync * feat: Update .env.example to include optional indexing configuration * refactor: rename env var for disabling index sync to MEILI_NO_SYNC * Added the option to change the default trusted proxy * feat: Add TRUST_PROXY configuration to .env.example for reverse proxy settings * feat: Enhance Redis support with cluster configuration and TLS options * feat(redis): add cluster support, environment config and url mapping - Add Redis cluster configuration with isEnabled flag - Configure prefix and max listeners settings - Improve code formatting and readability - Fix URL vs host parameter handling - Update environment variables and regex patterns --------- Co-authored-by: Gil Assunção <[email protected]> Co-authored-by: Pedro Reis <[email protected]> Co-authored-by: João Trigo Soares <[email protected]> * 👐 refactor: Agents Accessibility and Gemini Error Handling (#5972) * style: Enhance ControlCombobox with Carat Display, ClassName, and Disabled State * refactor(ModelPanel): replace SelectDropdown with ControlCombobox for improved accessibility * style: Adjust padding and positioning in ModelPanel for improved layout * style(ControlCombobox): add containerClassName and iconSide props for enhanced customization * style(ControlCombobox): add iconClassName prop for customizable icon styling * refactor(AgentPanel): enhance layout with new button for creating agents and adjust structure for better alignment * refactor(AgentSelect): replace SelectDropDown with ControlCombobox for improved accessibility and layout * feat(translation): add new translation key for improved UI clarity * style(AgentSwitcher, AssistantSwitcher): add iconClassName prop for customizable icon styling * refactor(AgentPanelSkeleton): improve layout of skeleton components to match new visual structure * style(AgentPanel, AgentPanelSkeleton): add margin to flex container for improved layout consistency * a11y(AgentSelect, ControlCombobox): add selectId prop for preventing focus going to start to page after agent selection * fix(AgentSelect): update SELECT_ID constant for improved clarity in component identification * fix(GoogleClient): update type annotation, add abort handling for content generation requests, catch "uncaught" abort errors and GoogleGenerativeAI errors from `@google/generative-ai` * 🌍 i18n: Update translation.json with latest translations (#5946) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * ⚙️ ci: Trigger Restriction for `Detect Unused NPM Packages` (#5844) The workflow now only runs on pull requests that modify: - The root `package.json` or `package-lock.json` file - Any file under the client folder - Any file under the api folder * 🤖 feat: 192x192 Icon for Android PWA (#5966) * fix: Add 192x192 icon to allow the PWA to install on Android devices using Chrome. * fix: Use less whitespace on icon-192x192.png. Re-generate maskable-icon.png and apple-touch-icon-180x180.png to be higher quality, cripser and use less kilobytes. * 🌟 feat: Enhance User Experience and SEO with Accessibility Updates and robots.txt (#5392) * 🔈 fix: Refactor AudioRecorder to use button element for improved accessibility * 🔈 fix: Update conversation menu button ID for improved accessibility * 🔈 fix: Remove redundant role attribute from SidePanel for improved accessibility * feat: Add robots.txt to manage web crawler access * feat: Update index.html with meta description and remove legacy file * fix: resolve merge conflicts. * fix: resolve merge conflicts. * fix: resolve merge conflicts. * feat: Update index.html with meta description and remove legacy file * 🔧 feat: Add legacy support and improve SidePanel accessibility * 🔧 feat: Integrate express-static-gzip for improved static file serving and add new plugins for enhanced functionality * 🔧 chore: Remove unused HTML ESLint plugin configurations and dependencies --------- Co-authored-by: Ruben Talstra <[email protected]> * 🚀 feat: Add Custom Welcome Message in `librechat.yaml` (#5870) * feat: Custom Welcome Message (#2967) * don't think I'm on the right path? * ✨ feat: Implement custom welcome message configuration in interface * 🔼 feat: "Run Code" Button Toggle (#5988) * feat: Add 'Run Code' and 'Temporary Chat' permissions to role management * feat: Add NextFunction typedef to api/typedefs.js * feat: Add temporary chat and run code permissions to role schema * refactor: Enhance access check middleware with logging for permission errors and better typing * refactor: Set default value of USE permission to true in multiConvoPermissionsSchema * refactor: Implement checkAccess function for separation of permission validation logic from middleware * feat: Integrate permission checks for tool execution and enhance Markdown code block with execution capability * fix: Convert REDIS_MAX_LISTENERS to a number, closes #5979 * 🚀 feat: Claude 3.7 Support + Reasoning (#6008) * fix: missing console color methods for admin scripts * feat: Anthropic Claude 3.7 Sonnet Support * feat: update eventsource to version 3.0.2 and upgrade @modelcontextprotocol/sdk to 1.4.1 * fix: update DynamicInput to handle number type and improve initial value logic * feat: first pass Anthropic Reasoning (Claude 3.7) * feat: implement streaming support in AnthropicClient with reasoning UI handling * feat: add missing xAI (grok) models * 🔗 fix: Shared Link with Markdown Code Error (#6016) * refactor: Export AuthContext from AuthContextProvider * refactor: Update useHasAccess to utilize useContext for AuthContext * refactor: Enhance type definitions in useHasAccess for better type safety * sandbox sessions storage * sandbox sessions storage * 🌍 i18n: Add Georgian Language and Update Fallback Languages (#6022) * ✨ feat: Anthropic Agents Prompt Caching & UI Accessibility Enhancements (#6045) * chore: remove auto-focus for now * refactor: move react-hook-form Controller Logic to AgentSelect from AgentPanel * fix: a11y focus issue with AgentSelect by never replacing it in its component tree * fix: maintain ComboBox focus and force re-render on agent ID change in AgentPanel * chore: `gemini-2.0-flash-lite-preview-02-05` (deprecated) * refactor: extract cache control logic and headers configuration to helper functions in AnthropicClient * feat: anthropic agents prompt caching * chore: bump @librechat/agents and related dependencies * fix: typo * 🔧 refactor: Improve Params Handling, Remove Legacy Items, & Update Configs (#6074) * chore: include all assets for service worker, remove unused tsconfig.node.json, eslint ignore vite config * chore: exclude image files from service worker caching * refactor: simplify googleSchema transformation and error handling * fix: max output tokens cap for 3.7 models * fix: skip index fixing in CI, development, and test environments * ci: add maxOutputTokens handling tests for Claude models * refactor: drop top_k and top_p parameters for claude-3.7 in AnthropicClient and add tests for new behavior * refactor: conditionally include top_k and top_p parameters for non-claude-3.7 models * ci: add unit tests for getLLMConfig function with various model options * chore: remove all OPENROUTER_API_KEY legacy logic * refactor: optimize stream chunk handling * feat: reset model parameters button * refactor: remove unused examples field from convoSchema and presetSchema * chore: update librechat-data-provider version to 0.7.6993 * refactor: move excludedKeys set to data-provider for better reusability * feat: enhance saveMessageToDatabase to handle unset fields and fetched conversation state * feat: add 'iconURL' and 'greeting' to excludedKeys in data provider config * fix: add optional chaining to user ID retrieval in getConvo call * 🌍 i18n: Update translation.json with latest translations (#6009) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * 🚀 feat: Agent Cache Tokens & Anthropic Reasoning Support (#6098) * fix: handling of top_k and top_p parameters for Claude-3.7 models (allowed without reasoning) * feat: bump @librechat/agents for Anthropic Reasoning support * fix: update reasoning handling for OpenRouter integration * fix: enhance agent token spending logic to include cache creation and read details * fix: update logic for thinking status in ContentParts component * refactor: improve agent title handling * chore: bump @librechat/agents to version 2.1.7 for parallel tool calling for Google models * 🚀 feat: GPT-4.5, Anthropic Tool Header, and OpenAPI Ref Resolution (#6118) * 🔧 refactor: Update settings to use 'as const' for improved type safety and make gpt-4o-mini default model (cheapest) * 📖 docs: Update README to reflect support for GPT-4.5 in image analysis feature * 🔧 refactor: Update model handling to use default settings and improve encoding logic * 🔧 refactor: Enhance model version extraction logic for improved compatibility with future GPT and omni models * feat: GPT-4.5 tx/token update, vision support * fix: $ref resolution logic in OpenAPI handling * feat: add new 'anthropic-beta' header for Claude 3.7 to include token-efficient tools; ref: https://docs.anthropic.com/en/docs/build-with-claude/tool-use/token-efficient-tool-use * 🖼️ refactor: Enhance Env Extraction & Agent Image Handling (#6131) * refactor: use new image output format for agents using DALL-E tools * refactor: Enhance image fetching with proxy support and adjust logging placement in DALL-E 3 integration * refactor: Enhance StableDiffusionAPI to support agent-specific return values and display message for generated images * refactor: Add unit test execution for librechat-mcp in backend review workflow * refactor: Update environment variable extraction logic, export from serpate module to avoid circular refs, and remove deprecated tests * refactor: Add unit tests for environment variable extraction and enhance StdioOptionsSchema to process env variables * 🐼 feat: Add Flux Image Generation Tool (#6147) * 🔧 fix: Log warning for aborted operations in AgentClient * ci: Remove unused saveMessageToDatabase mock in FakeClient initialization * ci: test actual implementation of saveMessageToDatabase * refactor: Change log level from warning to error for aborted operations in AgentClient * refactor: Add className prop to Image component for customizable styling, use theme selectors * feat: FLUX Image Generation tool * 🌍 i18n: Update translation.json with latest translations (#6132) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * 🧠 feat: Bedrock Anthropic Reasoning & Update Endpoint Handling (#6163) * feat: Add thinking and thinkingBudget parameters for Bedrock Anthropic models * chore: Update @librechat/agents to version 2.1.8 * refactor: change region order in params * refactor: Add maxTokens parameter to conversation preset schema * refactor: Update agent client to use bedrockInputSchema and improve error handling for model parameters * refactor: streamline/optimize llmConfig initialization and saving for bedrock * fix: ensure config titleModel is used for all endpoints * refactor: enhance OpenAIClient and agent initialization to support endpoint checks for OpenRouter * chore: bump @google/generative-ai * 🌍 i18n: Update translation.json with latest translations (#6159) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * 🚀 feat: Enhance Model Handling, Logging & xAI Agent Support (#6182) * chore: update @librechat/agents to version 2.1.9 * feat: xAI standalone provider for agents * chore: bump librechat-data-provider version to 0.7.6997 * fix: reorder import statements and enhance user listing output * fix: Update Docker Compose commands to support v2 syntax with fallback * 🔧 fix: drop `reasoning_effort` for o1-preview/mini models * chore: requireLocalAuth logging * fix: edge case artifact message editing logic to handle `new` conversation IDs * fix: remove `temperature` from model options in OpenAIClient if o1-mini/preview * fix: update type annotation for fetchPromisesMap to use Promise<string[]> instead of string[] * feat: anthropic model fetching * fix: update model name to use EModelEndpoint.openAI in fetchModels and fetchOpenAIModels * fix: add error handling to modelController for loadModels * fix: add error handling and logging for model fetching in loadDefaultModels * ci: update getAnthropicModels tests to be asynchronous * feat: add user ID to model options in OpenAI and custom endpoint initialization --------- Co-authored-by: Andrei Berceanu <[email protected]> Co-authored-by: KiGamji <[email protected]> * 🪄 feat: Customize Sandpack `bundlerURL` for Artifacts (#6191) * 🕒 feat: Add Configurable MCP Server Timeouts (#6199) * 🚀 feat: Add Code API Proxy Support and Update MCP SDK (#6203) * chore: bump mcp sdk * feat: Add proxy support for file download and upload in Code Environment CRUD operations * chore: remove unused files * chore: change output format from CommonJS to ES module in server rollup config * ✨ v0.7.7 (#6206) * v0.7.7 * chore: Bump librechat-mcp version to 1.1.0 * action: update Unreleased changelog * Update CHANGELOG.md --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Ruben Talstra <[email protected]> * 📦 refactor: Move DB Models to `@librechat/data-schemas` (#6210) * 🚀 feat: Introduce data schemas and refactor models to use @librechat/data-schemas * 🚀 feat: Add installation step for Data Schemas Package in backend review workflow * chore: Add `data-schemas` package to update/rebuild packages scripts * chore: Update Dockerfile to include data-schemas package build process * fix: add missing @rollup/plugin-typescript package * chore: Add GitHub Actions workflow for publishing data-schemas package --------- Co-authored-by: Danny Avila <[email protected]> * 🌍 i18n: Add Thai Language Support and Update Translations (#6219) * 🌍 i18n: Add Thai Language Support and Update Translations * 📝 docs: Update Locize Logo in README.md * 📦 ci: `npm publish` access to public for `data-schemas` * 📦 ci: Update workflow to publish `@librechat/data-schemas` to NPM with manual trigger option * 📦 ci: Refactor workflow to combine build and publish steps with version check for `@librechat/data-schemas` * 📦 ci: Update npm authentication token for publishing in workflow * 🌍 i18n: Update translation.json with latest translations (#6220) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * 📦 chore: Patch `axios` to address CVE-2025-27152 (#6222) * 📦 chore: remove `langchain` (no longer used) * chore: patch `axios` to address CVE-2025-27152 * 🐛 fix: Avatar Type Definitions in Agent/Assistant Schemas (#6235) * fix: Simplify avatar type definition in agent and assistant schemas * fix: Update regex to correctly match OpenAI model identifiers * 🌍 i18n: Update translation.json with latest translations (#6240) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * 🔧 fix: MeiliSearch Field Error and Patch Incorrect Import by #6210 (#6245) * 📦 refactor: Update MeiliSearch integration and improve schema handling * Update indexSync.js * 📦 refactor: Update Conversation model import path in indexSync.js * 📦 refactor: Update import paths for Conversation and Message models in indexSync.js * 🔏 fix: Enhance Two-Factor Authentication (#6247) * 🌟 feat: Implement Two-Factor Authentication (2FA) functionality * fix: Two-Factor Authentication Logic and State Management * 🌟 feat: Add LICENSE file and update package version to 0.0.2 with MIT license * ⚠️ refactor: Use Error Content Part Instead Of Throwing Error for Agents (#6262) * 🐛 fix: Await saveMessage in abortMiddleware to ensure proper execution (#6248) * 🌍 i18n: Update translation.json with latest translations (#6241) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * 🔍 feat: Mistral OCR API / Upload Files as Text (#6274) * refactor: move `loadAuthValues` to `~/services/Tools/credentials` * feat: add createAxiosInstance function to configure axios with proxy support * WIP: First pass mistral ocr * refactor: replace getConvoFiles with getToolFiles for improved file retrieval logic * refactor: improve document formatting in encodeAndFormat function * refactor: remove unused resendFiles parameter from buildOptions function (this option comes from the agent config) * fix: update getFiles call to include files with `text` property as well * refactor: move file handling to `initializeAgentOptions` * refactor: enhance addImageURLs method to handle OCR text and improve message formatting * refactor: update message formatting to handle OCR text in various content types * refactor: remove unused resendFiles property from compactAgentsSchema * fix: add error handling for Mistral OCR document upload and logging * refactor: integrate OCR capability into file upload options and configuration * refactor: skip processing for text source files in delete request, as they are directly tied to database * feat: add metadata field to ExtendedFile type and update PanelColumns and PanelTable components for localization and metadata handling * fix: source icon styling * wip: first pass, frontend file context agent resources * refactor: add hover card with contextual information for File Context (OCR) in FileContext component * feat: enhance file processing by integrating file retrieval for OCR resources in agent initialization * feat: implement OCR config; fix: agent resource deletion for ocr files * feat: enhance agent initialization by adding OCR capability check in resource priming * ci: fix `~/config` module mock * ci: add OCR property expectation in AppService tests * refactor: simplify OCR config loading by removing environment variable extraction, to be done when OCR is actually performed * ci: add unit test to ensure environment variable references are not parsed in OCR config * refactor: disable base64 image inclusion in OCR request * refactor: enhance OCR configuration handling by validating environment variables and providing defaults * refactor: use file stream from disk for mistral ocr api * 🎨 a11y: Update Model Spec Description Text (#6294) * 🔧 fix: Axios Proxy Usage And Bump `mongoose` (#6298) * fix: bump mongoose to fix nested schema errors * fix: Enhance Axios instance creation with improved proxy handling and error logging * fix: Refactor Axios instance creation and remove proxy handling from file upload functions * fix: Update proxy configuration in Axios instance creation and add unit tests * 🤖 feat: Support OpenAI Web Search models (#6313) * fix: reorder vision model entries for cheaper models first * fix: add endpoint property to bedrock client initialization * fix: exclude unsupported parameters for OpenAI Web Search models * fix: enhance options to exclude unsupported parameters for Web Search models * 🔧 fix: comment out MCP servers to resolve service run issues (#6316) Co-authored-by: Coding Wizard <[email protected]> * 🔗 feat: Agent Chain (Mixture-of-Agents) (#6374) * wip: first pass, dropdown for selecting sequential agents * refactor: Improve agent selection logic and enhance performance in SequentialAgents component * wip: seq. agents working ideas * wip: sequential agents style change * refactor: move agent form options/submission outside of AgentConfig * refactor: prevent repeating code * refactor: simplify current agent display in SequentialAgents component * feat: persist form value handling in AgentSelect component for agent_ids * feat: first pass, sequential agnets agent update * feat: enhance message display with agent updates and empty text handling * chore: update Icon component to use EModelEndpoint for agent endpoints * feat: update content type checks in BaseClient to use constants for better readability * feat: adjust max context tokens calculation to use 90% of the model's max tokens * feat: first pass, agent run message pruning * chore: increase max listeners for abort controller to prevent memory leaks * feat: enhance runAgent function to include current index count map for improved token tracking * chore: update @librechat/agents dependency to version 2.2.5 * feat: update icons and style of SequentialAgents component for improved UI consistency * feat: add AdvancedButton and AdvancedPanel components for enhanced agent settings navigation, update styling for agent form * chore: adjust minimum height of AdvancedPanel component for better layout consistency * chore: update @librechat/agents dependency to version 2.2.6 * feat: enhance message formatting by incorporating tool set into agent message processing, in order to allow better mix/matching of agents (as tool calls for tools not found in set will be stringified) * refactor: reorder components in AgentConfig for improved readability and maintainability * refactor: enhance layout of AgentUpdate component for improved visual structure * feat: add DeepSeek provider to Bedrock settings and schemas * feat: enhance link styling in mobile.css for better visibility and accessibility * fix: update banner model import in update banner script; export Banner model * refactor: `duplicateAgentHandler` to include tool_resources only for OCR context files * feat: add 'qwen-vl' to visionModels for enhanced model support * fix: change image format from JPEG to PNG in DALLE3 response * feat: reorganize Advanced components and add localizations * refactor: simplify JSX structure in AgentChain component to defer container styling to parent * feat: add FormInput component for reusable input handling * feat: make agent recursion limit configurable from builder * feat: add support for agent capabilities chain in AdvancedPanel and update data-provider version * feat: add maxRecursionLimit configuration for agents and update related documentation * fix: update CONFIG_VERSION to 1.2.3 in data provider configuration * feat: replace recursion limit input with MaxAgentSteps component and enhance input handling * feat: enhance AgentChain component with hover card for additional information and update related labels * fix: pass request and response objects to `createActionTool` when using assistant actions to prevent auth error * feat: update AgentChain component layout to include agent count display * feat: increase default max listeners and implement capability check function for agent chain * fix: update link styles in mobile.css for better visibility in dark mode * chore: temp. remove agents package while bumping shared packages * chore: update @langchain/google-genai package to version 0.1.11 * chore: update @langchain/google-vertexai package to version 0.2.2 * chore: add @librechat/agents package at version 2.2.8 * feat: add deepseek.r1 model with token rate and context values for bedrock * 🔧 fix: Update Token Calculations/Mapping, MCP `env` Initialization (#6406) * fix: Enhance MCP initialization to process environment variables * fix: only build tokenCountMap with messages that are being used in the payload * fix: Adjust maxContextTokens calculation to account for maxOutputTokens * refactor: Make processMCPEnv optional in MCPManager initialization * chore: Bump version of librechat-data-provider to 0.7.73 * ⌛ feat: `initTimeout` for Slow Starting MCP Servers (#6383) * feat: make mcp server connect timeout configurable with initTimeout * style: add missing semicolon to connection.ts * 🚀 feat: `S3` Integration for File handling and Image uploads (#6142) * French Translation Update * French Translation Update * test * Add fileStrategy S3 Config * update s3 crud.js * 🔧 chore: downgrade dotenv to version 16.0.3 and add aws-sdk to package-lock.json * 🔧 chore: remove aws-sdk from package.json * 🚀 feat: Integrate AWS SDK for S3 with enhanced upload and retrieval functionalities * 🚀 feat: Implement S3 integration for file upload and retrieval functionalities * 🚀 feat: Enhance S3 initialization to support default credentials and improved error handling --------- Co-authored-by: Gael Martins <[email protected]> * 🐞 fix: Agent "Resend" Message Attachments + Source Icon Styling (#6408) * style: Update text file source icon background color for improved visibility in light mode * style: Update `vectordb` source icon background color for better visibility * fix: resend files behavior for tool resource message attachments (code interpreter and file search); Rename `getToolFiles` to `getConvoFiles` and simplify file retrieval logic; add `getToolFilesByIds` for fetching tool files by IDs * 🐛 fix: Prevent Crash on Duplicate Message ID (#6392) * fix: prevent crash on duplicate message ID Added error handling for MongoDB error code 11000 (duplicate key error) in saveMessage function. This prevents the application from crashing when trying to save messages with duplicate IDs, which can happen during aborted requests. Now logs a warning and continues execution safely. Closes: #5774 Closes: #5776 * fix: address ESLint issues in Message.js --------- Co-authored-by: odrec <[email protected]> * 🌍 i18n: Update translation.json with latest translations (#6277) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * 🔒feat: Enable OpenID Auto-Redirect (#6066) * added feature for oidc auto redirection * Added Cooldown logic for OIDC auto redirect for failed login attempts * 🔧 feat: Implement custom logout redirect handling and enhance OpenID auto-redirect logic * 🔧 refactor: Update getLoginError to use TranslationKeys for improved type safety * 🔧 feat: Localize redirect message to OpenID provider in Login component --------- Co-authored-by: Ruben Talstra <[email protected]> * 🚀 feat: Integrate `Azure Blob Storage` for file handling and image uploads (#6153) * 🚀 feat: Integrate Azure Blob Storage for file handling and image uploads * 🐼 refactor: Correct module import case for Azure in strategies.js * 🚀 feat: Add Azure support in SourceIcon component * 🚀 feat: Enhance Azure Blob Service initialization with Managed Identity support * 🐼 refactor: Remove unused Azure dependencies from package.json and package-lock.json * 🐼 refactor: Remove unused Azure dependencies from package.json and package-lock.json * 🐼 refactor: Remove unused Azure dependencies from package.json and package-lock.json * 🚀 feat: Add Azure SDK dependencies for identity and storage blob * 🔧 fix: Reorganize imports in strategies.js for better clarity * 🔧 fix: Correct comment formatting in strategies.js for consistency * 🔧 fix: Improve comment formatting in strategies.js for consistency * ⚡ build(deps-dev): bump @babel/helpers from 7.26.9 to 7.26.10 (#6413) Bumps [@babel/helpers](https://github.com/babel/babel/tree/HEAD/packages/babel-helpers) from 7.26.9 to 7.26.10. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.26.10/packages/babel-helpers) --- updated-dependencies: - dependency-name: "@babel/helpers" dependency-type: indirect ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * 🚀 feat: Add support for custom AWS endpoint in S3 initialization (#6431) * 🔐 fix: Invalid Key Length in 2FA Encryption (#6432) * 🚀 feat: Implement v3 encryption and decryption methods for TOTP secrets * 🚀 feat: Refactor Two-Factor Authentication methods and enhance 2FA verification process * 🚀 feat: Update encryption methods to use hex decoding for legacy keys and improve error handling for AES-256-CTR * 🚀 feat: Update import paths in TwoFactorController for consistency and clarity * 🏃‍♂️ refactor: Improve Agent Run Context & Misc. Changes (#6448) * chore: bump Model Context Protocol SDK dependencies * fix: correct indentation in MCPConnection class * refactor: enhance SSE transport with abort controller and add error handling for empty results * chore: remove outdated Model Context Protocol SDK dependency * chore: update @modelcontextprotocol/sdk dependency to version 1.7.0 * chore: add debugging comments for PingRequest handling in MCPConnection class * refactor: update callTool method to accept structured arguments and options * refactor: simplify maxContextTokens calculation in initializeAgentOptions * chore: update @babel/runtime dependency to version 7.26.10 * chore: update @librechat/agents dependency to version 2.2.9 * chore: update @librechat/agents dependency to version 2.3.6 * refactor: imports and prevent s3 initialization if strategy not configured * refactor: mark redis as non-experimental * refactor: add missing `maxContextTokens` for OpenAI parameters * refactor: improve log message for Redis initialization * chore: update @librechat/agents dependency to version 2.3.8 * refactor: extend `streamBuffer` condition to include BEDROCK provider as easily gets throttled by AWS * refactor: filter out 'think' parts from message content in Anthropic and OpenAI clients * 🚀 feat: Add support for LDAP STARTTLS in LDAP Auth (#6438) * 🚀 feat: Refactor schema exports and update package version to 0.0.4 (#6455) * 📝 docs: librechat.example.yaml (#6442) Correctly comment commented comments: ``` ``` to ``` ``` To allow for simple removal of the 1st level comments. * 🔼 feat: Add Auto Submit For URL Query Params (#6440) * feat: Add submit query param to auto submit a prompt passed in via URL * refactor: add case-insensitive value for auto-submit --------- Co-authored-by: Danny Avila <[email protected]> * 🛠 feat: Enhance Redis Integration, Rate Limiters & Log Headers (#6462) * feat: Implement Redis-based rate limiting, initially import limits * feat: Enhance rate limiters with Redis support and custom prefixes * chore: import orders * chore: update JSDoc for next middleware parameter type in ban and limiter middleware * feat: add logHeaders middleware to log forwarded headers in requests * refactor: change log level from info to debug for Redis rate limiters * feat: increase Redis max listeners and refactor session storage to use Keyv * 💵 feat: Add Automatic Balance Refill (#6452) * 🚀 feat: Add automatic refill settings to balance schema * 🚀 feat: Refactor balance feature to use global interface configuration * 🚀 feat: Implement auto-refill functionality for balance management * 🚀 feat: Enhance auto-refill logic and configuration for balance management * 🚀 chore: Bump version to 0.7.74 in package.json and package-lock.json * 🚀 chore: Bump version to 0.0.5 in package.json and package-lock.json * 🚀 docs: Update comment for balance settings in librechat.example.yaml * chore: space in `.env.example` * 🚀 feat: Implement balance configuration loading and refactor related components * 🚀 test: Refactor tests to use custom config for balance feature * 🚀 fix: Update balance response handling in Transaction.js to use Balance model * 🚀 test: Update AppService tests to include balance configuration in mock setup * 🚀 test: Enhance AppService tests with complete balance configuration scenarios * 🚀 refactor: Rename balanceConfig to balance and update related tests for clarity * 🚀 refactor: Remove loadDefaultBalance and update balance handling in AppService * 🚀 test: Update AppService tests to reflect new balance structure and defaults * 🚀 test: Mock getCustomConfig in BaseClient tests to control balance configuration * 🚀 test: Add get method to mockCache in OpenAIClient tests for improved cache handling * 🚀 test: Mock getCustomConfig in OpenAIClient tests to control balance configuration * 🚀 test: Remove mock for getCustomConfig in OpenAIClient tests to streamline configuration handling * 🚀 fix: Update balance configuration reference in config.js for consistency * refactor: Add getBalanceConfig function to retrieve balance configuration * chore: Comment out example balance settings in librechat.example.yaml * refactor: Replace getCustomConfig with getBalanceConfig for balance handling * fix: tests * refactor: Replace getBalanceConfig call with balance from request locals * refactor: Update balance handling to use environment variables for configuration * refactor: Replace getBalanceConfig calls with balance from request locals * refactor: Simplify balance configuration logic in getBalanceConfig --------- Co-authored-by: Danny Avila <[email protected]> * 🏃‍♂️ refactor: More Agent Context Improvements during Run (#6477) * fix: Add optional chaining utility and update agent parameter types * v2.3.9 * chore: Update @librechat/agents version to 2.3.93 * 🌍 i18n: Update translation.json with latest translations (#6414) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * 🏗️ fix: Agents Token Spend Race Conditions, Add Auto-refill Tx, Add Relevant Tests (#6480) * 🏗️ refactor: Improve spendTokens logic to handle zero completion tokens and enhance test coverage * 🏗️ test: Add tests to ensure balance does not go below zero when spending tokens * 🏗️ fix: Ensure proper continuation in AgentClient when handling errors * fix: spend token race conditions * 🏗️ test: Add test for handling multiple concurrent transactions with high balance * fix: Handle Omni models prompt prefix handling for user messages with array content in OpenAIClient * refactor: Update checkBalance import paths to use new balanceMethods module * refactor: Update checkBalance imports and implement updateBalance function for atomic balance updates * fix: import from replace method * feat: Add createAutoRefillTransaction method to handle non-balance updating transactions * refactor: Move auto-refill logic to balanceMethods and enhance checkBalance functionality * feat: Implement logging for auto-refill transactions in balance checks * refactor: Remove logRefill calls from multiple client and handler files * refactor: Move balance checking and auto-refill logic to balanceMethods for improved structure * refactor: Simplify balance check calls by removing unnecessary balanceRecord assignments * fix: Prevent negative rawAmount in spendTokens when promptTokens is zero * fix: Update balanceMethods to use Balance model for findOneAndUpdate * chore: import order * refactor: remove unused txMethods file to streamline codebase * feat: enhance updateBalance and createAutoRefillTransaction methods to support additional parameters for improved balance management * 🗣️ feat: add support for `gpt-4o-transcribe` models (#6483) * 🔃 fix: Draft Clearing, Claude Titles, Remove Default Vision Max Tokens (#6501) * refactor: remove legacy max_tokens setting for vision models in OpenAIClient (intended for gpt-4-preview) * refactor: streamline capability checks in loadAgentTools function, still allow actions if tools are disabled * fix: enhance error handling for token limits in AnthropicClient and update error message in translations * feat: append timestamp to cloned agent names for better identification * chore: update @librechat/agents dependency to version 2.3.94 * refactor: remove clearDraft helper from useSubmitMessage and centralize draft clearing logic to SSE handling, helps prevent user message loss if logout occurs * refactor: increase debounce time for clearDraft function to improve auto-save performance * 🌍 i18n: Update translation.json with latest translations (#6505) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * separate sandboxes by users * 🔃 refactor: Allow streaming for o1 models in OpenAIClient and agent runs (#6509) * 🎨 feat: UI Refresh for Enhanced UX (#6346) * ✨ feat: Add Expand Chat functionality and improve UI components * ✨ feat: Introduce Chat Badges feature with editing capabilities and UI enhancements * ✨ feat: re-implement file attachment functionality with new components and improved UI * ✨ feat: Enhance BadgeRow component with drag-and-drop functionality and add animations for better user experience * ✨ feat: Add useChatBadges hook and enhance Badge component with animations and toggle functionality * feat: Improve Add/Delete Badges + style and bug fixes * ✨ feat: Refactor EditBadges component and optimize useChatBadges hook for improved performance and readability * ✨ feat: Add type definition for LucideIcon in EditBadges component * refactor: Clean up BadgeRow component by removing outdated comment and improving code readability * refactor: Rename app-icon class to badge-icon for consistency and improve badge styling * feat: Add Center Chat Input toggle and update related components for improved UI/UX * refactor: Simplify ChatView and MessagesView components for improved readability and performance * refactor: Improve layout and positioning of scroll button in MessagesView component * refactor: Adjust scroll button position in MessagesView component for better visibility * refactor: Remove redundant background class from Badge component for cleaner styling * feat: disable chat badges * refactor: adjust positioning of scroll button and popover for improved layout * refactor: simplify class names in ChatForm and RemoveFile components for cleaner code * refactor: move Switcher to HeaderOptions from SidePanel * fix(Landing): duplicate description * feat: add SplitText component for animated text display and update Landing component to use it * feat(Chat): add ConversationStarters component and integrate it into ChatView; remove ConvoStarter component * feat(Chat): enhance Message component layout and styling for improved readability * feat(ControlCombobox, Select): enhance styling and add animation for improved UI experience * feat(Chat): update Header and HeaderNewChat components for improved layout and styling * feat(Chat): add ModelDropdown (now includes both endpoint and model) and refactor Menu components for improved UI * feat(ModelDropdown): add Agent Select; removed old AgentSwitcher components * feat(ModelDropdown): add settings button for user key configuration * fix(ModelDropdown): the model dropdown wasn't opening automatically when opening the endpoint one * refactor(Chat): remove unused EndpointsMenu and related components to streamline codebase * feat: enhance greeting message and improve accessibility fro ModelDropdown * refactor(Endpoints): add new hooks and components for endpoint management * feat(Endpoint): add support for modelSpecs * feat(Endpoints): add mobile support * fix: type issues * fix(modelSpec): type issue * fix(EndpointMenuDropdown): double overflow scroller in mobile model list * fix: search model on mobile * refactor: Endpoint/Model/modelSpec dropdown * refactor: reorganize imports in Endpoint components * refactor: remove unused translation keys from English locale * BREAKING: moving to ariakit with new CustomMenu * refactor: remove unnecessary comments * refactor: remove EndpointItem, ModelDropdownButton, SpecIcon, and SpecItem components * 🔧 fix: AI Icon bump when regenerating message * wip: chat UI refactoring, fix issues * chore: add recent update to useAutoSave * feat: add access control for agent permissions in useMentions hook * refactor: streamline ModelSelector by removing unused endpoints logic * refactor: enhance ModelSelector and context by integrating endpointsConfig and improving type usage * feat: update ModelSelectorContext to utilize conversation data for initial state * feat: add selector effects for synced endpoint handling * feat: add guard clause for conversation endpoint in useSelectorEffects hook * fix: safely call onSelectMention and add autofocus to mention input * chore: typing * refactor: ModelSelector to streamline key dialog handling and improve endpoint rendering * refactor: extract SettingsButton component for cleaner endpoint item rendering * wip: first pass, expand set api key * wip: first pass, expanding set key * refactor: update EndpointItem styles for improved layout and hover effects * refactor: adjust padding in EndpointItem for improved layout consistency * refactor: update preset structure in useSelectMention to include spec as null * refactor: rename setKeyDialogOpen to onOpenChange for clarity and consistency, bring focus back to button that opened dialog * feat: add SpecIcon component for dynamic model spec icons in menu, adjust icon styling * refactor: update getSelectedIcon to accept additional parameters and improve icon rendering logic * fix: adjust padding in MessageRender for improved layout * refactor: remove inline style for menu width in CustomMenu component * refactor: enhance layout and styling in ModelSpecItem component for better responsiveness * refactor: update getDefaultModelSpec to accept startupConfig and improve model spec retrieval logic * refactor: improve key management and default values in ModelSelector and related components * refactor: adjust menu width and improve responsiveness in CustomMenu and EndpointItem components * refactor: enhance focus styles and responsiveness in EndpointItem component * refactor: improve layout and spacing in Header and ModelSelector components for better responsiveness * refactor: adjust button styles for consistency and improved layout in AddMultiConvo and PresetsMenu components * fix: initial fix of assistant names * fix: assistants handling * chore: update version of librechat-data-provider to 0.7.75 and add 'spec' to excludedKeys * fix: improve endpoint filtering logic based on interface configuration and access rights * fix: remove unused HeaderOptions import and set spec to null in presets and mentions * fix: ensure currentExample is always an object when updating examples * fix: update interfaceConfig checks to ensure modelSelect is considered for rendering components * fix: update model selection logic to consider interface configuration when prioritizing model specs * fix: add missing localizations * fix: remove unused agent and assistant selection translations * fix: implement debounced state updates for selected values in useSelectorEffects * style: minor style changes related to the ModelSelector * fix: adjust maximum height for popover and set fixed height for model item * fix: update placeholders for model and endpoint search inputs * fix: refactor MessageRender and ContentRender components to better match each other * fix: remove convo fallback for iconURL in MessageRender and ContentRender components * fix: update handling of spec, iconURL, and modelLabel in conversation presets, to allow better interchangeability * fix: replace chatGptLabel with modelLabel in OpenAI settings configuration (fully deprecate chatGptLabel) * fix: remove console log for assistantNames in useEndpoints hook * refactor: add cleanInput and cleanOutput options to default conversation handling * chore: update bun.lockb * fix: set default value for showIconInHeader in getSelectedIcon function * refactor: enhance error handling in message processing when latest message has existing content blocks * chore: allow import/no-cycle for messages * fix: adjust flex properties in BookmarkMenu for better layout * feat: support both 'prompt' and 'q' as query parameters in useQueryParams hook * feat: re-enable Badges components * refactor: disable edit badge component * chore: rename assistantMap to assistantsMap for consistency * chore: rename assistantMap to assistantsMap for consistency in Mention component * feat: set staleTime for various queries to improve data freshness * feat: add spec field to tQueryParamsSchema for model specification * feat: enhance useQueryParams to handle model specs --------- Co-authored-by: Danny Avila <[email protected]> * 🔧 fix: Update username reference to use user.name in greeting display (#6534) * 🎨 style: Update background color of CodeBlock component to gray-900 (#6540) * 🔒 Security: Update Vite to version 6.2.3 (`CVE-2025-30208`, `GHSA-67mh-4wv8-2f99`) (#6541) * security: Update Vite to version 6.1.2 * 🔧 fix: Update Vite to version 6.2.3 * 🔧 chore: `Vite` Plugin Upgrades & Config Optimizations (#6547) * 🔧 fix: Update compression plugin to version 2 and adjust configuration * 🔧 fix: Adjust compression plugin configuration to set threshold to 10240 * 🔧 fix: Update vite-plugin-node-polyfills to version 0.23.0 and add external polyfills in configuration * 🔧 fix: Downgrade vite-plugin-node-polyfills to version 0.17.0 and remove external polyfills from configuration * 🔧 fix: Update vite-plugin-node-polyfills to version 0.23.0 and remove outdated version from package.json * 🔧 fix: Update vite-plugin-node-polyfills to version 0.23.0 and remove outdated version from package.json * chore: fix vite-plugin-node-polyfills workspace installation --------- Co-authored-by: Danny Avila <[email protected]> * 🌍 feat: Add support for Hungarian language localization (#6508) * 🔧 refactor: Consolidate Logging, Model Selection & Actions Optimizations, Minor Fixes (#6553) * 🔧 feat: Enhance logging configuration for production and debug environments * 🔒 feat: Implement encryption and decryption functions for sensitive values in ActionService with URL encoding/decoding * refactor: optimize action service for agent tools * refactor: optimize action processing for Assistants API * fix: handle case where agent is not found in loadAgent function * refactor: improve error handling in API calls by throwing new Error with logAxiosError output * chore: bump @librechat/agents to 2.3.95, fixes "Invalid tool call structure: No preceding AIMessage with tool_call_ids" * refactor: enhance error logging in logAxiosError function to include response status * refactor: remove unused useModelSelection hook from Endpoint * refactor: add support for assistants in useSelectorEffects hook * refactor: replace string easing with imported easings in Landing component * chore: remove duplicate translation * refactor: update model selection logic and improve localization for UI elements * refactor: replace endpoint value checks with helper functions for agents and assistants * refactor: optimize display value logic and utilize useMemo for performance improvements * refactor: clean up imports and optimize display/icon value logic in endpoint components, fix spec selection * refactor: enhance error logging in axios utility to include stack traces for better debugging * refactor: update logging configuration to use DEBUG_LOGGING and streamline log level handling * refactor: adjust className for export menu button to improve layout consistency and remove unused title prop from ShareButton * refactor: update import path for logAxiosError utility to improve module organization and clarity * …
1 parent 910c733 commit ce26667

37 files changed

+16522
-20753
lines changed

.devcontainer/Dockerfile

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
FROM node:18-bullseye
22

3+
RUN npm install -g @anthropic-ai/claude-code
34
RUN useradd -m -s /bin/bash vscode
5+
6+
# Install sudo and grant vscode user sudo privileges without password
7+
RUN apt-get update && apt-get install -y sudo \
8+
&& adduser vscode sudo \
9+
&& echo "vscode ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/vscode-nopasswd \
10+
&& apt-get clean \
11+
&& rm -rf /var/lib/apt/lists/*
12+
413
RUN mkdir -p /workspaces && chown -R vscode:vscode /workspaces
514
WORKDIR /workspaces

.devcontainer/devcontainer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"dockerComposeFile": "docker-compose.yml",
3-
"service": "app",
3+
"service": "app-lcdevcontainer",
44
"workspaceFolder": "/workspaces",
55
"customizations": {
66
"vscode": {

.devcontainer/docker-compose.yml

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,30 @@
11
services:
2-
app:
2+
app-lcdevcontainer:
33
build:
44
context: ..
55
dockerfile: .devcontainer/Dockerfile
66
# restart: always
77
links:
8-
- mongodb
9-
- meilisearch
10-
# ports:
11-
# - 3080:3080 # Change it to 9000:3080 to use nginx
12-
extra_hosts: # if you are running APIs on docker you need access to, you will need to uncomment this line and next
13-
- "host.docker.internal:host-gateway"
8+
- mongodb-lcdevcontainer
9+
- meilisearch-lcdevcontainer
10+
ports:
11+
- 80:80
12+
- 3080:3090 # Change it to 9000:3080 to use nginx
13+
- 3090:3090
14+
# extra_hosts: # if you are running APIs on docker you need access to, you will need to uncomment this line and next
15+
# - "host.docker.internal:host-gateway"
1416

1517
volumes:
1618
# This is where VS Code should expect to find your project's source code and the value of "workspaceFolder" in .devcontainer/devcontainer.json
1719
- ..:/workspaces:cached
1820
# Uncomment the next line to use Docker from inside the container. See https://aka.ms/vscode-remote/samples/docker-from-docker-compose for details.
1921
# - /var/run/docker.sock:/var/run/docker.sock
2022
environment:
21-
- HOST=0.0.0.0
22-
- MONGO_URI=mongodb://mongodb:27017/LibreChat
23+
# - HOST=0.0.0.0
24+
- MONGO_URI=mongodb://mongodb-lcdevcontainer:27017/LibreChat
2325
# - CHATGPT_REVERSE_PROXY=http://host.docker.internal:8080/api/conversation # if you are hosting your own chatgpt reverse proxy with docker
2426
# - OPENAI_REVERSE_PROXY=http://host.docker.internal:8070/v1/chat/completions # if you are hosting your own chatgpt reverse proxy with docker
25-
- MEILI_HOST=http://meilisearch:7700
27+
- MEILI_HOST=http://meilisearch-lcdevcontainer:7700
2628

2729
# Runs app on the same network as the service container, allows "forwardPorts" in devcontainer.json function.
2830
# network_mode: service:another-service
@@ -36,26 +38,26 @@ services:
3638
# Overrides default command so things don't shut down after the process ends.
3739
command: /bin/sh -c "while sleep 1000; do :; done"
3840

39-
mongodb:
40-
container_name: chat-mongodb
41+
mongodb-lcdevcontainer:
42+
container_name: chat-mongodb-lcdevcontainer
4143
expose:
4244
- 27017
4345
# ports:
44-
# - 27018:27017
46+
- 27017:27017
4547
image: mongo
4648
# restart: always
4749
volumes:
4850
- ./data-node:/data/db
4951
command: mongod --noauth
50-
meilisearch:
51-
container_name: chat-meilisearch
52+
meilisearch-lcdevcontainer:
53+
container_name: chat-meilisearch-lcdevcontainer
5254
image: getmeili/meilisearch:v1.5
5355
# restart: always
5456
expose:
5557
- 7700
5658
# Uncomment this to access meilisearch from outside docker
57-
# ports:
58-
# - 7700:7700 # if exposing these ports, make sure your master key is not the default value
59+
ports:
60+
- 7700:7700 # if exposing these ports, make sure your master key is not the default value
5961
environment:
6062
- MEILI_NO_ANALYTICS=true
6163
- MEILI_MASTER_KEY=5c71cf56d672d009e36070b5bc5e47b743535ae55c818ae3b735bb6ebfb4ba63

.github/workflows/a11y.yml

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,28 @@ name: Lint for accessibility issues
22

33
on:
44
pull_request:
5+
branches:
6+
- main
7+
- dev
8+
- jm-production
9+
- release/*
10+
- 'tracking/**'
11+
- 'feature/**'
512
paths:
613
- 'client/src/**'
714
workflow_dispatch:
815
inputs:
916
run_workflow:
1017
description: 'Set to true to run this workflow'
11-
required: true
12-
default: 'false'
18+
required: false
19+
default: 'true'
1320

1421
jobs:
1522
axe-linter:
1623
runs-on: ubuntu-latest
1724
if: >
18-
(github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == 'danny-avila/LibreChat') ||
19-
(github.event_name == 'workflow_dispatch' && github.event.inputs.run_workflow == 'true')
25+
(github.event_name == 'pull_request' && (github.event.pull_request.head.repo.full_name == 'jmaddington/LibreChat' || github.event.pull_request.head.repo.full_name == 'danny-avila/LibreChat')) ||
26+
(github.event_name == 'workflow_dispatch')
2027
2128
steps:
2229
- uses: actions/checkout@v4

.github/workflows/backend-review.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,14 @@ on:
44
branches:
55
- main
66
- dev
7+
- jm-production
78
- release/*
9+
- 'tracking/**'
10+
- 'feature/**'
811
paths:
912
- 'api/**'
13+
workflow_dispatch:
14+
# Allow manual triggering
1015
jobs:
1116
tests_Backend:
1217
name: Run Backend unit tests
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: Docker Build Only (No Push)
2+
3+
on:
4+
# Allow manual triggering with custom parameters
5+
workflow_dispatch:
6+
inputs:
7+
branch:
8+
description: 'Branch to build from'
9+
required: true
10+
default: 'jm-production'
11+
type: string
12+
dockerfile:
13+
description: 'Dockerfile to use'
14+
required: false
15+
default: 'Dockerfile.multi'
16+
type: string
17+
18+
jobs:
19+
build-docker-image:
20+
runs-on: ubuntu-latest
21+
steps:
22+
- name: 'Checkout GitHub Action'
23+
uses: actions/checkout@v4
24+
with:
25+
# Use the specified branch from manual input or jm-production for auto runs
26+
ref: ${{ github.event.inputs.branch || 'jm-production' }}
27+
28+
- name: Set up Docker Buildx
29+
uses: docker/setup-buildx-action@v2
30+
31+
- name: Build Docker image (without push)
32+
uses: docker/build-push-action@v4
33+
with:
34+
context: .
35+
# Use specified Dockerfile or default
36+
file: ${{ github.event.inputs.dockerfile || 'Dockerfile.multi' }}
37+
push: false
38+
# Add build cache for faster builds
39+
cache-from: type=gha
40+
cache-to: type=gha,mode=max
41+
# Output built image to local Docker engine
42+
load: true
43+
tags: librechat:local-build

.github/workflows/deploy-jm.yml

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
name: Docker Build and Push to GHCR
2+
3+
on:
4+
# Allow manual triggering with custom parameters
5+
workflow_dispatch:
6+
inputs:
7+
branch:
8+
description: 'Branch to build from'
9+
required: false
10+
default: 'jm-production'
11+
type: string
12+
tag:
13+
description: 'Docker image tag (default: latest)'
14+
required: false
15+
default: 'latest'
16+
type: string
17+
dockerfile:
18+
description: 'Dockerfile to use'
19+
required: false
20+
default: 'Dockerfile.multi'
21+
type: string
22+
23+
# Automatic build on push to jm-production
24+
push:
25+
branches:
26+
- jm-production
27+
28+
jobs:
29+
deploy-gh-runner-aci:
30+
runs-on: ubuntu-latest
31+
steps:
32+
- name: 'Checkout GitHub Action'
33+
uses: actions/checkout@v4
34+
with:
35+
# Use the specified branch from manual input or jm-production for auto runs
36+
ref: ${{ github.event.inputs.branch || 'jm-production' }}
37+
38+
- name: Set up Docker Buildx
39+
uses: docker/setup-buildx-action@v2
40+
41+
- name: Log in to GitHub Docker Registry
42+
uses: docker/login-action@v2
43+
with:
44+
registry: ghcr.io
45+
username: ${{ github.repository_owner }}
46+
password: ${{ secrets.GITHUB_TOKEN }}
47+
48+
- name: Build and push Docker image
49+
uses: docker/build-push-action@v4
50+
with:
51+
context: .
52+
# Use specified Dockerfile or default
53+
file: ${{ github.event.inputs.dockerfile || 'Dockerfile.multi' }}
54+
push: true
55+
# Use specified tag or default to latest
56+
tags: ghcr.io/jmaddington/librechat:${{ github.event.inputs.tag || 'latest' }}
57+
# Add build cache for faster builds
58+
cache-from: type=gha
59+
cache-to: type=gha,mode=max
60+
61+
- name: Log out from GitHub Docker Registry
62+
run: docker logout ghcr.io

.github/workflows/eslint-ci.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,15 @@ on:
55
branches:
66
- main
77
- dev
8+
- jm-production
89
- release/*
10+
- 'tracking/**'
11+
- 'feature/**'
912
paths:
1013
- 'api/**'
1114
- 'client/**'
15+
workflow_dispatch:
16+
# Allow manual triggering
1217

1318
jobs:
1419
eslint_checks:

.github/workflows/frontend-review.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,15 @@ on:
55
branches:
66
- main
77
- dev
8+
- jm-production
89
- release/*
10+
- 'tracking/**'
11+
- 'feature/**'
912
paths:
1013
- 'client/**'
1114
- 'packages/**'
15+
workflow_dispatch:
16+
# Allow manual triggering
1217

1318
jobs:
1419
tests_frontend_ubuntu:

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,3 +111,5 @@ uploads/
111111
# owner
112112
release/
113113
!/client/src/@types/i18next.d.ts
114+
115+
e2btemplates.yml

0 commit comments

Comments
 (0)