Skip to content

🎨 feat: add copy-tex to improve copying KaTeX #7308

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
May 15, 2025

Conversation

andresgit
Copy link
Contributor

Summary

Previously when copy-pasting equations selected by mouse from the chat output, it would include many new lines and would have some stuff missing and other problems like this:

old

But with the copy-tex extension enabled it copies the latex source code, so you can use it for example to ask questions about some equations it outputted before, or you want to copy one equation to somewhere else etc:

new

Change Type

  • New feature (non-breaking change which adds functionality)

Testing

Selected equations by mouse and tested copy-pasting them into the text input before and after, see the screenshots.

Checklist

Please delete any irrelevant options.

  • My code adheres to this project's style guidelines
  • I have performed a self-review of my own code
  • My changes do not introduce new warnings

When selecting equations and using copy paste, uses the correct latex code.
@rubentalstra rubentalstra added ✨ enhancement New feature or request 🎨 design UI/UX improvements and removed ✨ enhancement New feature or request labels May 14, 2025
@rubentalstra rubentalstra added this to the v0.7.9 milestone May 14, 2025
Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Introduces the KaTeX copy-tex extension so that selecting rendered equations copies their original LaTeX source instead of formatted output.

  • Adds the copy-tex.js import alongside the existing KaTeX CSS
  • Enables seamless copy-paste of LaTeX from rendered math

@danny-avila danny-avila changed the base branch from main to dev May 15, 2025 13:34
@danny-avila danny-avila changed the title feat: add copy-tex feature 🎨 feat: add copy-tex to improve copying KaTeX May 15, 2025
@danny-avila danny-avila merged commit e3acd18 into danny-avila:dev May 15, 2025
6 checks passed
danny-avila pushed a commit that referenced this pull request May 15, 2025
When selecting equations and using copy paste, uses the correct latex code.

Co-authored-by: Ruben Talstra <[email protected]>
danny-avila pushed a commit that referenced this pull request May 15, 2025
* 🔒 feat: Add Content Security Policy using Helmet middleware

* 🔒 feat: Set trust proxy and refine Content Security Policy directives

* 🎨 feat: add `copy-tex` to improve copying KaTeX (#7308)

When selecting equations and using copy paste, uses the correct latex code.

Co-authored-by: Ruben Talstra <[email protected]>

* 🔃 refactor: `AgentFooter` to conditionally render buttons based on `activePanel` (#7306)

* 🚀 feat: Add `Cloudflare Turnstile` support (#5987)

* 🚀 feat: Add @marsidev/react-turnstile dependency to package.json and package-lock.json

* 🚀 feat: Integrate Cloudflare Turnstile configuration support in AppService and add schema validation

* 🚀 feat: Implemented Cloudflare Turnstile integration in Login and Registration forms

* 🚀 feat: Enhance AppService tests with additional mocks and configuration setups

* 🚀 feat: Comment out outdated config version warning tests in AppService.spec.js

* 🚀 feat: Remove outdated warning tests and add new checks for environment variables and API health

* 🔧 test: Update AppService.spec.js to use expect.anything() for paths validation

* 🔧 test: Refactor AppService.spec.js to streamline mocks and enhance clarity

* 🔧 chore: removed not needed test

* Potential fix for code scanning alert no. 5638: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5629: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5642: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Update turnstile.js

* Potential fix for code scanning alert no. 5634: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5646: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5647: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

---------

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* 🔒 feat: Refactor Content Security Policy setup to use Helmet middleware with custom directives

* 🔒 feat: Enhance Content Security Policy to include Sandpack Bundler URL

* 🔒 feat: Update Content Security Policy and integrate Turnstile captcha support

---------

Co-authored-by: andresgit <[email protected]>
Co-authored-by: matt burnett <[email protected]>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
atefbellaaj-at-slalom pushed a commit to daimlertruck/SRC-LibreChat that referenced this pull request May 19, 2025
When selecting equations and using copy paste, uses the correct latex code.

Co-authored-by: Ruben Talstra <[email protected]>
atefbellaaj-at-slalom pushed a commit to daimlertruck/SRC-LibreChat that referenced this pull request May 19, 2025
…ila#7377)

* 🔒 feat: Add Content Security Policy using Helmet middleware

* 🔒 feat: Set trust proxy and refine Content Security Policy directives

* 🎨 feat: add `copy-tex` to improve copying KaTeX (danny-avila#7308)

When selecting equations and using copy paste, uses the correct latex code.

Co-authored-by: Ruben Talstra <[email protected]>

* 🔃 refactor: `AgentFooter` to conditionally render buttons based on `activePanel` (danny-avila#7306)

* 🚀 feat: Add `Cloudflare Turnstile` support (danny-avila#5987)

* 🚀 feat: Add @marsidev/react-turnstile dependency to package.json and package-lock.json

* 🚀 feat: Integrate Cloudflare Turnstile configuration support in AppService and add schema validation

* 🚀 feat: Implemented Cloudflare Turnstile integration in Login and Registration forms

* 🚀 feat: Enhance AppService tests with additional mocks and configuration setups

* 🚀 feat: Comment out outdated config version warning tests in AppService.spec.js

* 🚀 feat: Remove outdated warning tests and add new checks for environment variables and API health

* 🔧 test: Update AppService.spec.js to use expect.anything() for paths validation

* 🔧 test: Refactor AppService.spec.js to streamline mocks and enhance clarity

* 🔧 chore: removed not needed test

* Potential fix for code scanning alert no. 5638: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5629: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5642: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Update turnstile.js

* Potential fix for code scanning alert no. 5634: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5646: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5647: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

---------

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* 🔒 feat: Refactor Content Security Policy setup to use Helmet middleware with custom directives

* 🔒 feat: Enhance Content Security Policy to include Sandpack Bundler URL

* 🔒 feat: Update Content Security Policy and integrate Turnstile captcha support

---------

Co-authored-by: andresgit <[email protected]>
Co-authored-by: matt burnett <[email protected]>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
oxeone added a commit to oxeone/LibreChat that referenced this pull request May 23, 2025
commit 22654133873f754326ae48702e1b0c482f47049d
Author: Danny Avila <[email protected]>
Date:   Fri May 23 00:42:51 2025 -0400

    🪨 feat: Bedrock Support for Claude-4 Reasoning (#7517)

    * 🗑️ chore: Update .gitignore to reflect AI-related files

    * chore: linting in Bedrock options.js

    * 🪨 feat: Bedrock Claude-4 Reasoning

commit 7e98702a87e1eb39690183b4f83aecb58a7dfff3
Author: hofq <[email protected]>
Date:   Fri May 23 05:53:19 2025 +0200

    📊 chore: Remove Old Helm Chart (#7512)

    Co-authored-by: hofq <[email protected]>

commit a2f330e6ca47e9c2295b8e6e665abb935cf6c945
Author: Danny Avila <[email protected]>
Date:   Thu May 22 15:00:44 2025 -0400

    🦾 feat: Claude-4 Support (#7509)

    * refactor: Update AnthropicClient to support Claude model naming changes

    * Renamed `isClaude3` to `isClaudeLatest` to accommodate newer Claude models.
    * Updated logic to determine if the model is part of the Claude family.
    * Adjusted `useMessages` property to reflect the new model naming convention.
    * Cleaned up client properties during disposal to match the updated naming.

    * feat: Claude-4 Support

    * feat: Add Thinking and Prompt caching support for Claude 4

    * chore: Update ANTHROPIC_MODELS in .env.example for latest model versions

commit 28b76ce339b17bf4fd38ed311099d5b77c27ec28
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date:   Tue May 20 14:59:18 2025 -0400

    🌍 i18n: Update translation.json with latest translations (#7468)

    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

commit eb1668ff228471d3b5ce1dc303b36113f1c0061d
Author: Danny Avila <[email protected]>
Date:   Tue May 20 13:51:56 2025 -0400

    📂 refactor: Improve `FileAttachment` & File Form Deletion (#7471)

    * refactor: optional attachment properties for `FileAttachment`

    * refactor: update ActionButton to use localized text

    * chore: localize text in DataTableFile, add missing translation, imports order, and linting

    * chore: linting in DataTable

    * fix: integrate Recoil state management for file deletion in DataTableFile

    * fix: integrate Recoil state management for file deletion in DataTable

    * fix: add temp_file_id to BatchFile type and update deleteFiles logic to properly remove files that are mapped to temp_file_id

commit e86842fd192bd2b36f9affec4711271e20cdde87
Author: Sebastien Bruel <[email protected]>
Date:   Tue May 20 22:26:58 2025 +0900

    ✅ fix: Emojis rendering in `SplitText` Animation (#7460)

commit af96666ff440922a0f515c4790c5b5f89c89b53c
Author: Danny Avila <[email protected]>
Date:   Tue May 20 09:24:52 2025 -0400

    🖼️ chore: Linting & Transition Styling in UI Components (#7467)

    * chore: linting

    * 🔧 fix: Correctly parse dimensions for image width and height in OpenAIImageGen component

    * style: overlay class for DialogImage component to improve visibility

    * style: Update transition timing function for PixelCard component to rely on style props

commit 59109cd2dd4cfad47e119d8b9efab4392ad0a596
Author: arthurolivierfortin <[email protected]>
Date:   Tue May 20 08:43:12 2025 -0400

    🔬 fix: File Search Request Format (Azure Assistants API) (#7404)

    * fix: The request format for file analysis with Azure OpenAI assistants

      The request format for file analysis with Azure OpenAI assistants differs from that of OpenAI. This fix updates the API to use attachments instead of file_ids. danny-avila#7379

    * chore: ESLint Error

    ---------

    Co-authored-by: Danny Avila <[email protected]>

commit c8f5f5131e57874af2410405c2f298b90ded991a
Author: Danny Avila <[email protected]>
Date:   Tue May 20 08:37:39 2025 -0400

    🔧 fix: File Deletion for Azure Assistants API (#7466)

commit 8c0be0e2f059155803b2bbc56ccde390621a7d2a
Author: Amgad Hasan <[email protected]>
Date:   Tue May 20 02:43:44 2025 +0300

    🦙 chore: Add `llama-4` to Vision Models List (#7433)

commit f8cb0cdcda470518454a719697be6b6ecfed516f
Author: Ben Verhees <[email protected]>
Date:   Tue May 20 01:37:21 2025 +0200

    🔗 feat: Support Environment Variables in MCP URL Config (#7424)

commit 55d52d07f21dba844c18aa1b0e696e6888234e8b
Author: René Honig <[email protected]>
Date:   Tue May 20 01:35:05 2025 +0200

    📃 fix: Ensure MCP Resources Pass Name and Description Fields to LLM (#7442)

commit 7ce782fec699497e1e995b31cee6232aca23f17f
Author: Theo N. Truong <[email protected]>
Date:   Mon May 19 17:33:25 2025 -0600

    🎚️ feat: Custom Parameters (#7342)

    * #

    * - refactor: simplified getCustomConfig func

    * #

    * - feature: persist values for parameters with optionType of custom

    * #

    * - refactor: moved `Parameters/settings.ts` into `data-provider` so that both frontend and backend code can use it.

    * - feature: loadCustomConfig can now parse and validate customParams property for `endpoints.custom` in `librechat.yaml`

    * # fixed linter

    * # removed .strict() in config.ts

    * change: added packages/data-provider/src to SOURCE_DIRS for i18n check

    * # removed unnecessary lodash imports

    * # addressed PR comments
    # fixed lint for updated files

    * # better import for lodash (w/o relying on tree-shaking)

commit c79ee32006db3240ce8cfcb533278d189fa4ed67
Author: Marco Beretta <[email protected]>
Date:   Fri May 16 17:50:18 2025 +0200

    🖼️ feat: Tool Call and Loading UI Refresh, Image Resize Config (#7086)

    * ✨ feat: Enhance Spinner component with customizable properties and improved animation

    * 🔧 fix: Replace Loader with Spinner in RunCode component and update FilePreview to use Spinner for progress indication

    * ✨ feat: Refactor icons in CodeProgress and CancelledIcon components; enhance animation and styling in ExecuteCode and ProgressText components

    * ✨ feat: Refactor attachment handling in ExecuteCode component; replace individual attachment rendering with AttachmentGroup for improved structure

    * ✨ feat: Refactor dialog components for improved accessibility and styling; integrate Skeleton loading state in Image component

    * ✨ feat: Refactor ToolCall component to use ToolCallInfo for better structure; replace ToolPopover with AttachmentGroup; enhance ProgressText with error handling and improved UI elements

    * 🔧 fix: Remove unnecessary whitespace in ProgressText

    * 🔧 fix: Remove unnecessary margin from AgentFooter and AgentPanel components; clean up SidePanel imports

    * ✨ feat: Enhance ToolCall and ToolCallInfo components with improved styling; update translations and add warning text color to Tailwind config

    * 🔧 fix: Update import statement for useLocalize in ToolCallInfo component; fix: chatform transition

    * ✨ feat: Refactor ToolCall and ToolCallInfo components for improved structure and styling; add optimized code block for better output display

    * ✨ feat: Implement OpenAI image generation component; add progress tracking and localization for user feedback

    * 🔧 fix: Adjust base duration values for image generation; optimize timing for quality settings

    * chore: remove unnecessary space

    * ✨ feat: Enhance OpenAI image generation with editing capabilities; update localization for progress feedback

    * ✨ feat: Add download functionality to images; enhance DialogImage component with download button

    * ✨ feat: Enhance image resizing functionality; support custom percentage and pixel dimensions in resizeImageBuffer

commit 739b0d30128a983bded1f37e7ec0855f56967bde
Author: Danny Avila <[email protected]>
Date:   Mon May 19 19:22:43 2025 -0400

    🛡️ chore: `multer` v2.0.0 for CVE-2025-47935 and CVE-2025-47944 (#7454)

    * chore: bump multer to v2.0.0 to resolve CVE-2025-47935 and CVE-2025-47944

    * chore: temp. remove helmet dependency to appease unused NPM package workflow

commit 9c9fe4e03a3592e6b39edccc1136a63c72b39066
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date:   Mon May 19 10:28:18 2025 -0400

    📜 docs: Unreleased Changelog (#7434)

    * action: update Unreleased changelog

    * Update CHANGELOG.md

    ---------

    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
    Co-authored-by: Danny Avila <[email protected]>

commit 844bbbb1620bdc8a2b2293116399738c21ef28b1
Author: hofq <[email protected]>
Date:   Sat May 17 21:52:16 2025 +0200

    📊 feat: Improve Helm Chart (#3638)

    * Replaced Helm Charts with Blue Atlas Charts

    * Fix Workflow

    * improve docs

    * update gitignore

    * Update docs

    * change values order, add hpa

    * change tls example domain

    * Default: Enable liveness and readiness

    * chore: bump base chart

    * apply requested changes

    * add Release fix

    * add: error handling

    * chore: cleanup and testing

    * fix: adjust Chart.yaml

    ---------

    Co-authored-by: hofq <[email protected]>
    Co-authored-by: Ruben Talstra <[email protected]>

commit 26780bddf058081e1471d4fc158377a9195466aa
Author: Danny Avila <[email protected]>
Date:   Fri May 16 11:39:57 2025 -0400

    ✨ feat: Add Normalization for MCP Server Names (#7421)

commit 353adceb0c9e1922e6a1ef16814e63c7c92d0a9a
Author: Sebastien Bruel <[email protected]>
Date:   Fri May 16 23:18:52 2025 +0900

    💽 fix: Exclude index page `/` from static cache settings (#7382)

    * Disable default static caching for app's index page

    * Update index.html related environment variables in `.env.example`

    * Fix linting

    * Update index.spec.js

    ---------

    Co-authored-by: Danny Avila <[email protected]>

commit a92ac23c445165d95aeede6a2bff74b31f47276c
Author: Danny Avila <[email protected]>
Date:   Fri May 16 09:16:32 2025 -0400

    🛡️ fix: Temporarily Remove CSP until Configurable (#7419)

commit 2a3bf259aa9a84fef4d89632706f668ee3c45322
Author: Danny Avila <[email protected]>
Date:   Thu May 15 18:05:45 2025 -0400

    🎨 style: revert email and password classes in LoginForm changed in #7377

commit 3152a1e536c9c49071a9bcea6b773d490e64b380
Author: Theo N. Truong <[email protected]>
Date:   Thu May 15 15:50:09 2025 -0600

    🌘 fix: artifact of preview text is illegible in dark mode (#7405)

commit 2f4a03b581ab72997299acf19e8986d8ca06412d
Author: Danny Avila <[email protected]>
Date:   Thu May 15 17:46:48 2025 -0400

    🛡️ fix: Preset and Validation Logic for URL Query Params (#7407)

    * chore(store/families): linting

    * refactor: Update `createChatSearchParams` to use `tQueryParamsSchema` for allowed parameters and add `modelLabel` to schema

    * refactor: Enhance `useQueryParams` to streamline parameter processing and improve submission handling

    * chore: linting

    * fix: Add `disableParams` option to conversation handling and related schemas to prevent search params from updating due to use of default preset

    * fix: Update `createChatSearchParams` to correctly ignore `agent_id` when it matches `EPHEMERAL_AGENT_ID`

    * chore: revert modelLabel addition to query params, as no longer necessary due to `disableParams`

    * fix: Refine logic for `disableParams` to ensure correct handling of active preset comparison

    * fix: Add `disableParams` option to `NewConversationParams` and update related hooks for preset handling

    * fix: Refactor validation logic in `validateSettingDefinitions` to improve handling of `includeInput` and update conversation schema

    * fix: Bump version of `librechat-data-provider` to 0.7.83

commit 7a91f6ca62865b0e6b94b816e59f0f39382a9832
Author: Ruben Talstra <[email protected]>
Date:   Thu May 15 22:25:10 2025 +0200

    🔒 feat: Add Content Security Policy using Helmet middleware (#7377)

    * 🔒 feat: Add Content Security Policy using Helmet middleware

    * 🔒 feat: Set trust proxy and refine Content Security Policy directives

    * 🎨 feat: add `copy-tex` to improve copying KaTeX (#7308)

    When selecting equations and using copy paste, uses the correct latex code.

    Co-authored-by: Ruben Talstra <[email protected]>

    * 🔃 refactor: `AgentFooter` to conditionally render buttons based on `activePanel` (#7306)

    * 🚀 feat: Add `Cloudflare Turnstile` support (#5987)

    * 🚀 feat: Add @marsidev/react-turnstile dependency to package.json and package-lock.json

    * 🚀 feat: Integrate Cloudflare Turnstile configuration support in AppService and add schema validation

    * 🚀 feat: Implemented Cloudflare Turnstile integration in Login and Registration forms

    * 🚀 feat: Enhance AppService tests with additional mocks and configuration setups

    * 🚀 feat: Comment out outdated config version warning tests in AppService.spec.js

    * 🚀 feat: Remove outdated warning tests and add new checks for environment variables and API health

    * 🔧 test: Update AppService.spec.js to use expect.anything() for paths validation

    * 🔧 test: Refactor AppService.spec.js to streamline mocks and enhance clarity

    * 🔧 chore: removed not needed test

    * Potential fix for code scanning alert no. 5638: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

    Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

    * Potential fix for code scanning alert no. 5629: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

    Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

    * Potential fix for code scanning alert no. 5642: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

    Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

    * Update turnstile.js

    * Potential fix for code scanning alert no. 5634: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

    Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

    * Potential fix for code scanning alert no. 5646: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

    Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

    * Potential fix for code scanning alert no. 5647: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

    Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

    ---------

    Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

    * 🔒 feat: Refactor Content Security Policy setup to use Helmet middleware with custom directives

    * 🔒 feat: Enhance Content Security Policy to include Sandpack Bundler URL

    * 🔒 feat: Update Content Security Policy and integrate Turnstile captcha support

    ---------

    Co-authored-by: andresgit <[email protected]>
    Co-authored-by: matt burnett <[email protected]>
    Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

commit fe311df96915ea341dc60568dcc5c348f4c0f8bf
Author: Danny Avila <[email protected]>
Date:   Thu May 15 12:17:17 2025 -0400

    🔄 fix: Improve MCP Connection Cleanup (#7400)

    * chore: linting for mcp related modules

    * fix: update `isConnected` method to return a Promise and handle connection state asynchronously to properly handle/cleanup disconnected user connections

commit 535e7798b36a9ef69ac10710c37a086a5f61c703
Author: Ruben Talstra <[email protected]>
Date:   Thu May 15 15:38:58 2025 +0200

    🚀 feat: Add `Cloudflare Turnstile` support (#5987)

    * 🚀 feat: Add @marsidev/react-turnstile dependency to package.json and package-lock.json

    * 🚀 feat: Integrate Cloudflare Turnstile configuration support in AppService and add schema validation

    * 🚀 feat: Implemented Cloudflare Turnstile integration in Login and Registration forms

    * 🚀 feat: Enhance AppService tests with additional mocks and configuration setups

    * 🚀 feat: Comment out outdated config version warning tests in AppService.spec.js

    * 🚀 feat: Remove outdated warning tests and add new checks for environment variables and API health

    * 🔧 test: Update AppService.spec.js to use expect.anything() for paths validation

    * 🔧 test: Refactor AppService.spec.js to streamline mocks and enhance clarity

    * 🔧 chore: removed not needed test

    * Potential fix for code scanning alert no. 5638: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

    Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

    * Potential fix for code scanning alert no. 5629: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

    Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

    * Potential fix for code scanning alert no. 5642: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

    Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

    * Update turnstile.js

    * Potential fix for code scanning alert no. 5634: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

    Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

    * Potential fix for code scanning alert no. 5646: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

    Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

    * Potential fix for code scanning alert no. 5647: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

    Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

    ---------

    Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

commit 621fa6e1aa2330f9d8fa1da6a8706fabbd787202
Author: matt burnett <[email protected]>
Date:   Thu May 15 09:37:14 2025 -0400

    🔃 refactor: `AgentFooter` to conditionally render buttons based on `activePanel` (#7306)

commit f6cc394eabc3298916abfa898b16c5d415bacf0f
Author: andresgit <[email protected]>
Date:   Thu May 15 16:35:48 2025 +0300

    🎨 feat: add `copy-tex` to improve copying KaTeX (#7308)

    When selecting equations and using copy paste, uses the correct latex code.

    Co-authored-by: Ruben Talstra <[email protected]>

commit 5b402a755e83fa668c206c20b7d10aed938b3a07
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date:   Wed May 14 13:09:52 2025 -0400

    🌍 i18n: Update translation.json with latest translations (#7375)

    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

commit b0405be9eadb377f6a9ce185fe432fb78e3b186c
Author: Ruben Talstra <[email protected]>
Date:   Wed May 14 19:08:06 2025 +0200

    🌍 i18n: Add `Danish` and `Czech` and `Catalan` localization support (#7373)

    * 🌍 i18n: Add Danish and Czech localization support

    * 🌍 i18n: Correct Czech language code from 'sc-CZ' to 'cs-CZ'

    * 🌍 i18n: Add Catalan localization support

commit 3f4dd08589f13bd31221ac6830b89f63936036cb
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date:   Wed May 14 13:07:21 2025 -0400

    📜 docs: Unreleased Changelog (#7321)

    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

commit d5b399550e9c02b6790783ec7d46cc3a526f9a2b
Author: Danny Avila <[email protected]>
Date:   Tue May 13 15:31:06 2025 -0400

    📦 chore: Update API Package Dependencies (#7359)

    * chore: temporarily remove @librechat/agents

    * chore: bump @langchain/google-genai to v0.2.8

    * chore: bump @langchain/google-vertexai to v0.2.8

    * chore: bump @langchain/core to v0.3.55

    * chore: bump @librechat/agents to v2.4.316

    * chore: bump @librechat/agents to v2.4.317

    * chore: update title for Unreleased Changelog PR to include documentation emoji

    * chore: add workflow_dispatch trigger and update Pull Request title for changelog

commit a5ff8253a42339dac2768e2d42d3e3744d91df8c
Author: Danny Avila <[email protected]>
Date:   Tue May 13 13:26:37 2025 -0400

    🎏 feat: Add MCP support for Streamable HTTP Transport [2/2] (#7353)

    - fixes type/packages issues not resolved in #7353

commit 0b44142383bfcb45966c80ed8157bbcc1bfc41b8
Author: Ben Verhees <[email protected]>
Date:   Tue May 13 19:14:15 2025 +0200

    🎏 feat: Add MCP support for Streamable HTTP Transport (#7353)

commit 502617db2495f3204cb747541d046c4ca30fa628
Author: matt burnett <[email protected]>
Date:   Tue May 13 08:24:40 2025 -0400

    🔄 fix: update navigation logic in `useFocusChatEffect` to ensure correct search parameters are used (#7340)

commit f2f285ca1efa2eb4e3f22f8fce04806e82b22d6c
Author: Danny Avila <[email protected]>
Date:   Mon May 12 14:35:14 2025 -0400

    🔑 fix: use `apiKey` instead of `openAIApiKey` in OpenAI-like Config (#7337)

commit 6dd1b3988651ea4b56b2b84d9ae8e042fbdd0bc1
Author: Marco Beretta <[email protected]>
Date:   Mon May 12 14:12:51 2025 +0200

    💬 fix: update aria-label for accessibility in `ConvoLink` (#7320)

commit 5a43f875849f5d650c873b3f494ecf14710b13fc
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date:   Mon May 12 08:10:58 2025 -0400

    📜 docs: CHANGELOG for release v0.7.8 (#7290)

    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

commit 4af72aac9b469a6aa179e8c348cd0476687293b0
Author: matt burnett <[email protected]>
Date:   Fri May 9 13:03:33 2025 -0400

    ✨ feat: implement search parameter updates (#7151)

    * feat: implement search parameter updates

    * Update url params when values change

    reset params on new chat

    move logic to families.ts

    revert unchanged files

    ---------

    Co-authored-by: Danny Avila <[email protected]>

commit f7777a2723e8e51f3ff464d4e672db46905964a5
Author: Danny Avila <[email protected]>
Date:   Thu May 8 13:28:40 2025 -0400

    ✨ v0.7.8 (#7287)

    * ✨ v0.7.8

    * chore: bump data-provider to v0.7.82

    * chore: update CONFIG_VERSION to 1.2.5

    * chore: bump librechat-mcp version to 1.2.2

    * chore: bump @librechat/data-schemas version to 0.0.7

commit e5b234bc7237fa30606d06f68110fa9d2a811fc7
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date:   Thu May 8 13:09:30 2025 -0400

    📜 docs: Unreleased Changelog (#7214)

    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

commit 4f2ed4645056b4a04bcb1f73810e925f99bcdd86
Author: Josh Nichols <[email protected]>
Date:   Thu May 8 12:32:12 2025 -0400

    🐋 feat: Add python to Dockerfile for increased MCP compatibility (#7270)

    Without this, it's not possible to run any MCPs that use python, only node.

    So, add these to enable using things that use `uvx` similar to what
    the documentation already talks about for `npx`.

commit 66093b1eb38462b74d187a89a8f4d0075f40d2c4
Author: Danny Avila <[email protected]>
Date:   Thu May 8 12:12:36 2025 -0400

    💬 refactor: MCP Chat Visibility Option, Google Rates, Remove OpenAPI Plugins (#7286)

    * fix: Update Gemini 2.5 Pro Preview Model Name in Token Values

    * refactor: Update DeleteButton to close menu when deletion is successful

    * refactor: Add unmountOnHide prop to DropdownPopup in multiple components

    * chore: linting

    * chore: linting

    * feat: Add `chatMenu` option for MCP Servers to control visibility in MCPSelect dropdown

    * refactor: Update loadManifestTools to return combined tool manifest with MCP tools first

    * chore: remove deprecated openapi plugins

    * chore: linting

    * chore(AgentClient): linting, remove unnecessary `checkVisionRequest` logger

    * refactor(AuthService): change logoutUser logging from error to debug level

    * chore: new Gemini models token values and rates

    * chore(AskController): linting

commit d7390d24ec1a88cc7d049652709467c5cc793a0e
Author: Danny Avila <[email protected]>
Date:   Wed May 7 17:49:42 2025 -0400

    🔄 fix: Ollama Think Tag Edge Case with Tools (#7275)

commit 71105cd49c8d151f67755a4fba8531ee2b59c871
Author: Danny Avila <[email protected]>
Date:   Wed May 7 17:11:33 2025 -0400

    🔄 fix: Assistants Endpoint & Minor Issues (#7274)

    * 🔄 fix: Include usage in stream options for OpenAI and Azure endpoints

    * fix: Agents support for Azure serverless endpoints

    * fix: Refactor condition for assistants and azureAssistants endpoint handling

    * AWS Titan via Bedrock: model doesn't support system messages, Closes #6456

    * fix: Add EndpointSchemaKey type to endpoint parameters in buildDefaultConvo and ensure assistantId is always defined

    * fix: Handle new conversation state for assistants endpoint in finalHandler

    * fix: Add spec and iconURL parameters to `saveAssistantMessage` to persist modelSpec fields

    * fix: Handle assistant unlinking even if no valid files to delete

    * chore: move type definitions from callbacks.js to typedefs.js

    * chore: Add StandardGraph typedef to typedefs.js

    * chore: Update parameter type for graph in ModelEndHandler to StandardGraph

    ---------

    Co-authored-by: Andres Restrepo <[email protected]>

commit 3606349a0f1c9ad2242e3c1ea15e09181374f407
Author: Marlon <[email protected]>
Date:   Wed May 7 17:19:06 2025 +0200

    📝 docs: Update `.env.example` Google models (#7254)

    This pull request updates the GOOGLE_MODELS and GOOGLE_TITLE_MODEL examples in the .env.example file to reflect the currently available models on Google AI Studio (Gemini API) and Vertex AI.
    Many of the models previously listed in the example file have since been deprecated or are no longer the primary recommended versions. This discrepancy could lead to confusion for new users setting up the project, potentially causing them to select non-functional or outdated model identifiers, resulting in errors or suboptimal performance.
    The changes in this PR ensure that:
    - The model lists for both Gemini API (AI Studio) and Vertex AI are synchronized with the current offerings.
    - New users have a more accurate and reliable starting point when configuring their environment.
    - The likelihood of encountering issues due to deprecated model names during initial setup is significantly reduced.

commit e3e796293c11c9980dce0449d0d9405ccdc14c74
Author: glowforge-opensource <[email protected]>
Date:   Tue May 6 19:50:11 2025 -0700

    🔍 feat: Additional Tavily API Tool Parameters (#7232)

    * feat: expose additional Tavily API parameters for tool

    The following parameters are part of Tavily API but were previously not exposed for agents to use via the tool. Now they are. The source documentation is here: https://docs.tavily.com/documentation/api-reference/endpoint/search

    include_raw_content - returns the full text of found web pages (default is false)
    include_domains - limit search to this list of domains (default is none)
    exclude_domains - exclude this list of domains form search (default is none)
    topic - enum of "general", "news", or "finance" (default is "general")
    time_range - enum of "day", "week", "month", or "year" (default unlimited)
    days - number of days to search (default is 7, but only applicable to topic == "news")
    include_image_descriptions - include a description of the image in the search results (default is false)

    It is a little odd that they have both time_range and days, but there it is.

    I have noticed that this change requires a little bit of care in prompting to make sure that it doesn't use "news" when you wanted "general". I've attemtped to hint that in the tool description.

    * correct lint error

    * more lint

    ---------

    Co-authored-by: Michael Natkin <[email protected]>

commit 7c4c3a87966e18495724f3cfa34fb7a3cd7609c4
Author: Danny Avila <[email protected]>
Date:   Tue May 6 22:49:12 2025 -0400

    🔄 fix: URL Param Race Condition and File Draft Persistence (#7257)

    * chore(useAutoSave): linting

    * fix: files attached during streaming disappear when stream finishes

    * fix(useQueryParams): query parameter processing race condition with submission handling, add JSDocs to all functions/hooks

    * test(useQueryParams): add comprehensive tests for query parameter handling and submission logic

commit 20c9f1a78346a58d7700b9c15e10d74ecdb09c5a
Author: andresgit <[email protected]>
Date:   Tue May 6 17:50:09 2025 +0300

    🎨 style: Improve KaTeX Rendering for LaTeX Equations (#7223)

commit 8e1012c5aa30b3eb8779565b9aec178ceb9cb6a9
Author: Danny Avila <[email protected]>
Date:   Tue May 6 10:29:05 2025 -0400

    🛡️ fix: Deep Clone `MCPOptions` for User MCP Connections (#7247)

    * Fix: Prevent side effects in `processMCPEnv` by deep cloning MCPOptions

    The `processMCPEnv` function was modifying the original `MCPOptions` object, leading to unintended side effects where `LIBRECHAT_USER_ID` could be incorrectly shared across different users. This commit addresses this issue by performing a deep clone of the `MCPOptions` object before processing, ensuring that modifications are isolated and do not affect other users.

    * ci: Add tests for processMCPEnv to ensure deep cloning, user ID isolation and environment variable processing

    ---------

    Co-authored-by: Alex C <[email protected]>

commit 7c92cef2b7f2faf816970c7a8bca73c8ad6e4be0
Author: Danny Avila <[email protected]>
Date:   Tue May 6 10:14:17 2025 -0400

    🔖 fix: Custom Headers for Initial MCP SSE Connection (#7246)

    * refactor: add custom  to  as workaround to include custom headers to the initial connection request

    * chore: bump MCP client version to 1.2.1 in package-lock and package.json for librechat-mcp

commit 4fbb81c77489c484d3fa5f4e08faf7d91f783b39
Author: Danny Avila <[email protected]>
Date:   Tue May 6 08:40:00 2025 -0400

    🔄 fix: o-Series Model Regex for System Messages (#7245)

    * fix: no system message only for o1-preview and o1-mini

    * chore(OpenAIClient): linting

    * fix: update regex to include o1-preview and o1-mini in noSystemModelRegex

    * refactor: rename variable for consistency with AgentClient

    ---------

    Co-authored-by: Andres <[email protected]>

commit fc6e14efe28e0c40f6453c0e5d9943377ccbfacd
Author: Marco Beretta <[email protected]>
Date:   Mon May 5 15:23:38 2025 +0200

    ✨ feat: Enhance form submission for touch screens (#7198)

    * ✨ feat: Enhance form submission for touch screens

    * chore: add comment

    Co-authored-by: Copilot <[email protected]>

    * chore: add comment

    Co-authored-by: Copilot <[email protected]>

    * chore: linting in AnthropicClient

    * chore: Add anthropic model outputs for Claude 3.7

    * refactor: Simplify touch-screen detection in message submission

    * fix: Correct button rendering order for chat collapse/expand icons

    * Revert "refactor: Simplify touch-screen detection in message submission"

    This reverts commit 8638442a4ce64f4f89e6430e09893cf1736de3d1.

    * refactor: Improve touchscreen detection for focus handling in ChatForm and useFocusChatEffect

    * chore: EditMessage linting

    * refactor: Reorder dropdown items in ExportAndShareMenu

    ---------

    Co-authored-by: Copilot <[email protected]>
    Co-authored-by: Danny Avila <[email protected]>

commit 6e663b24800775e4ce13bf605631fe80b7708263
Author: Danny Avila <[email protected]>
Date:   Sun May 4 10:44:40 2025 -0400

    🛠️ fix: Conversation Navigation State (#7210)

    * refactor: Enhance initial conversation query condition for better state management and prevent unused network requests

    * ifx: Add Prettier plugin to ESLint configuration

    * chore: linting and typing in convos.spec.ts

    * fix: add back fresh data fetching and improve error handling for  conversation navigation

    * fix: set conversation only with  conversation state change intent, to prevent double queries for messages

commit ddb2141eaca6e31a8e70bf21e0a16a9f7600df7a
Author: matt burnett <[email protected]>
Date:   Fri May 2 15:13:31 2025 -0400

    🧰 chore: ESLint configuration to enforce Prettier formatting rules (#7186)

commit 37b50736bcb6e96c0965aaf6e1cfad28fbf55be0
Author: Danny Avila <[email protected]>
Date:   Fri May 2 15:11:50 2025 -0400

    🔧 fix: Google Gemma Support & OpenAI Reasoning Instructions (#7196)

    * 🔄 chore: Update @langchain/google-vertexai to version 0.2.5 in package.json and package-lock.json

    * chore: temp remove agents

    * 🔄 chore: Update @langchain/google-genai to version 0.2.5 in package.json and package-lock.json

    * 🔄 chore: Update @langchain/community to version 0.3.42 in package.json and package-lock.json

    * 🔄 chore: Add license information for @langchain/textsplitters in package-lock.json

    * 🔄 chore: Update @langchain/core to version 0.3.51 in package.json and package-lock.json

    * 🔄 chore: Update openai dependency to version 4.96.2 in package.json and package-lock.json

    * chore: @librechat/agents to v2.4.30

    * fix: streaming condition in ModelEndHandler to account for boundModel `disableStreaming` setting

    * fix: update regex for noSystemModel and refactor message handling in AgentClient

    * feat: Google Gemma models

    * chore: remove unnecessary empty JSX fragment in PopoverButtons component

commit 5d6d13efe81efb404697f9f78c0c4ab02fcff8ea
Author: Danny Avila <[email protected]>
Date:   Fri May 2 02:43:59 2025 -0400

    🌿 refactor: Unmount Fork Popover on Hide for Performance (#7189)

commit 5efad8f646a8efb7c010e85f355d9ac88b823048
Author: Danny Avila <[email protected]>
Date:   Thu May 1 15:02:51 2025 -0400

    📦 chore: Bump Package Security (#7183)

    * 🔄 chore: bump supertest to 7.1.0, resolves CVE-2025-46653

    * 🔄 chore: update vite to version 6.3.4 and add fdir, picomatch, and tinyglobby as dev dependencies

    * 🔄 chore: npm audit fix: remove unused dependencies fdir, picomatch, and tinyglobby from package-lock.json

commit 9a7f763714898ad3b5fbb63821ad7776f0c91ba1
Author: Danny Avila <[email protected]>
Date:   Thu May 1 14:40:39 2025 -0400

    🔄 refactor: Artifact Visibility Management (#7181)

    * fix: Reset artifacts on unmount and remove useIdChangeEffect hook

    * feat: Replace SVG icons with Lucide icons for improved consistency

    * fix: Refactor artifact reset logic on unmount and conversation change

    * refactor: Rename artifactsVisible to artifactsVisibility for consistency

    * feat: Replace custom SVG icons with Lucide icons for improved consistency

    * feat: Add visibleArtifacts atom for managing visibility state

    * feat: Implement debounced visibility state management for artifacts

    * refactor: Add useIdChangeEffect hook to reset visible artifacts on conversation ID change

    * refactor: Remove unnecessary dependency from useMemo in TextPart component

    * refactor: Enhance artifact visibility management by incorporating location checks for search path

    * refactor: Improve transition effects for artifact visibility in Artifacts component

    * chore: Remove preprocessCodeArtifacts function and related tests

    * fix: Update regex for detecting enclosed artifacts in latest message

    * refactor: Update artifact visibility checks to be more generic (not just search)

    * chore: Enhance artifact visibility logging

    * refactor: Extract closeArtifacts function to improve button click handling

    * refactor: remove nested logic from use artifacts effect

    * refactor: Update regex for detecting enclosed artifacts to handle new line variations

commit e6e7935fd8d5b84481c57ef1d46d7f155af73aaf
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date:   Wed Apr 30 08:54:43 2025 -0400

    📜 docs: CHANGELOG for release v0.7.8-rc1 (#7153)

    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

commit 18dc3f8686661dde46d3d347d604c2dab970a68e
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date:   Tue Apr 29 17:59:11 2025 -0400

    📜 docs: Unreleased changelog (#6265)

    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

commit fe512005fca961c6c602bc0b70cd6ad29b6d643b
Author: Danny Avila <[email protected]>
Date:   Tue Apr 29 17:55:25 2025 -0400

    ✨ v0.7.8-rc1 (#7149)

    * ✨ v0.7.8-rc1

    * chore: Enable manual triggering of the Generate Unreleased Changelog workflow

commit da131b6c590b0b32d5ff4fc5be19e96c1ff31a80
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date:   Tue Apr 29 17:40:50 2025 -0400

    🌍 i18n: Update translation.json with latest translations (#7148)

    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

commit dd23559d1fd7404be1ada9bd74706efb1d26f2cf
Author: Danny Avila <[email protected]>
Date:   Tue Apr 29 17:39:12 2025 -0400

    👐 a11y: Improve Fork and SplitText Accessibility (#7147)

    * refactor: Replace Popover with Ariakit components for improved accessibility and UX

    * wip: first pass, fork a11y

    * feat(i18n): Add localization for fork options and related UI elements

    * fix: Ensure Dropdown component has correct z-index for proper layering

    * style: Update Fork PopoverButton styles and remove unused sideOffset prop

    * style: Update text colors and spacing in Fork component for improved readability

    * style: Enhance Fork component's UI by adding select-none class to prevent text selection

    * chore: Remove unused Checkbox import from Fork component

    * fix: Add sr-only span for accessibility in SplitText component

    * chore: Reorder imports in Fork component for better organization

commit a6f0a8244f1ad1696d819a8d087130d226570765
Author: Peter <[email protected]>
Date:   Tue Apr 29 16:02:38 2025 +0200

    🐙 fix: Add Redis Ping Interval to Prevent Connection Drops (#7127)

    Co-authored-by: Peter Rothlaender <[email protected]>

commit f04f8f53be6322f70cbf374d308a55d6c66ed8cc
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date:   Tue Apr 29 09:58:48 2025 -0400

    🌍 i18n: Update translation.json with latest translations (#7126)

    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

commit a89a3f414648a68e6babced77a995f5f4e9bbbaf
Author: Danny Avila <[email protected]>
Date:   Tue Apr 29 09:55:43 2025 -0400

    🐋 fix: Improve Deepseek Compatbility (#7132)

    * refactor: Update schema conversion to allow nullable optional fields

    * feat: Add support for 'Deepseek' model in response sender logic

    * fix: Normalize endpoint case for legacy content handling in AgentClient (fixes `deepseek-chat` followup issues)

commit 55f5f2d11a29a45ba460c46dab49add019e3b13c
Author: Danny Avila <[email protected]>
Date:   Tue Apr 29 03:49:02 2025 -0400

    🗓️ feat: Add Special Variables for Prompts & Agents, Prompt UI Improvements (#7123)

    * wip: Add Instructions component for agent configuration

    * ✨ feat: Implement DropdownPopup for variable insertion in instructions

    * refactor: Enhance variable handling by exporting specialVariables and updating Markdown components

    * feat: Add special variable support for current date and user in Instructions component

    * refactor: Update handleAddVariable to include localized label

    * feat: replace special variables in instructions presets

    * chore: update parameter type for user in getListAgents function

    * refactor: integrate dayjs for date handling and move replaceSpecialVars function to data-provider

    * feat: enhance replaceSpecialVars to include day number in current date format

    * feat: integrate replaceSpecialVars for processing agent instructions

    * feat: add support for current date & time in replaceSpecialVars function

    * feat: add iso_datetime support in replaceSpecialVars function

    * fix: enforce text parameter to be a required field in replaceSpecialVars function

    * feat: add ISO datetime support in translation file

    * fix: disable eslint warning for autoFocus in TextareaAutosize component

    * feat: add VariablesDropdown component and integrate it into CreatePromptForm and PromptEditor; update translation for special variables

    * fix: CategorySelector and related localizations

    * fix: add z-index class to LanguageSTTDropdown for proper stacking context

    * fix: add max-height and overflow styles to OGDialogContent in VariableDialog and PreviewPrompt components

    * fix: update variable detection logic to exclude special variables and improve regex matching

    * fix: improve accessibility text for actions menu in ChatGroupItem component

    * fix: adjust max-width and height styles for dialog components and improve markdown rendering for light vs. dark, height/widths, etc.

    * fix: remove commented-out code for better readability in PromptVariableGfm component

    * fix: handle undefined input parameter in setParams function call

    * fix: update variable label types to use TSpecialVarLabel for consistency

    * fix: remove outdated information from special variables description in translation file

    * fix: enhance unused i18next keys detection for special variable keys

    * fix: update color classes for consistency/a11y in category and prompt variable components

    * fix: update PromptVariableGfm component and special variable styles for consistency

    * fix: improve variable highlighting logic in VariableForm component

    * fix: update background color classes for consistency in VariableForm component

    * fix: add missing ref parameter to Dialog component in OriginalDialog

    * refactor: move navigate call for new conversation to after setConversation update

    * refactor: move message query hook to client workspace; fix: handle edge case for navigation from finalHandler creating race condition for response message DB save

    * chore: bump librechat-data-provider to 0.7.793

    * ci: add unit tests for replaceSpecialVars function

    * fix: implement getToolkitKey function for image_gen_oai toolkit filtering/including

    * ci: enhance dayjs mock for consistent date/time values in tests

    * fix: MCP stdio server fail to start when passing env property

    * fix: use optional chaining for clientRef dereferencing in AskController and EditController
    feat: add context to saveMessage call in streamResponse utility

    * fix: only save error messages if the userMessageId was initialized

    * refactor: add isNotAppendable check to disable inputs in ChatForm and useTextarea

    * feat: enhance error handling in useEventHandlers and update conversation state in useNewConvo

    * refactor: prepend underscore to conversationId in newConversation template

    * feat: log aborted conversations with minimal messages and use consistent conversationId generation

    ---------

    Co-authored-by: Olivier Schiavo <[email protected]>
    Co-authored-by: aka012 <[email protected]>
    Co-authored-by: jiasheng <[email protected]>

commit 0e8041bcac616949c42a68dfb8f108ccc4db5151
Author: Danny Avila <[email protected]>
Date:   Mon Apr 28 18:18:13 2025 -0400

    🔃 refactor: Streamline Navigation, Message Loading UX (#7118)

    * chore: fix logging for illegal target endpoints in getEndpointFromSetup

    * fix: prevent querying agent by ID for ephemeral agents

    * refactor: reorder variable declarations in MessagesView for clarity

    * fix: localize 'nothing found' message in MessagesView

    * refactor: streamline navigation logic and enhance loading spinner component in ChatView

    * refactor: simplify loading spinner logic in ChatView component

    * fix: ensure message queries are invalidated after new conversation creation in HeaderNewChat, MobileNav, and NewChat components

    * 🐛 First run dev mode will have error occur.

    🐛 First run dev mode will have error occur.

    * fix font-size localstorage presist bug

    * Don't ping meilisearch if the search is disabled via env var

    * simplify logic in search/enable endpoint

    * refactor: simplify enable endpoint condition check

    * feat: add useIdChangeEffect hook and integrate it into ChatRoute

    ---------

    Co-authored-by: Ne0 <[email protected]>
    Co-authored-by: TinyTin <[email protected]>
    Co-authored-by: Denis Palnitsky <[email protected]>

commit fc30482f6543fffcf3a04067ef18233f256f58cf
Author: Danny Avila <[email protected]>
Date:   Sun Apr 27 18:28:28 2025 -0400

    🪶 refactor: Chat Input Focus for Conversation Navigations & ChatForm Optimizations (#7100)

    * refactor: improve ChatView layout by keeping ChatForm mounted

    * feat: implement focusChat functionality for new conversations and navigations

    * refactor: reset artifacts when navigating to prevent any from rendering in a conversation when none exist; edge case, artifacts get created by search route (TODO: use a different artifact renderer for Search markdown)

commit 6826c0ed4308603a842ec589edc87b277d3c17fd
Author: Danny Avila <[email protected]>
Date:   Sun Apr 27 15:13:19 2025 -0400

    🙌 a11y: Searchbar/Conversations List Focus (#7096)

    * chore: remove redundancy of useSetRecoilState and useRecoilValue with useRecoilState in SearchBar

    * refactor: remove unnecessary focus effect on text area in ChatForm

    * refactor: improve searchbar and clear search button accessibility

    * fix: add tabIndex to Conversations component for improved accessibility, moves focus directly conversation items

    * style: adjust margin in Header component for improved layout symmetry with Nav

    * chore: imports order

commit 550c7cc68a626280006a0f1d4d74d903662c7494
Author: Danny Avila <[email protected]>
Date:   Sun Apr 27 14:03:25 2025 -0400

    🧭 refactor: Modernize Nav/Header (#7094)

    * refactor: streamline model preset handling in conversation setup

    * refactor: integrate navigation and location hooks in chat functions and event handlers, prevent cache from fetching on final event handling

    * fix: prevent adding code interpreter non-image output to file list on message attachment event, fix all unhandled edge cases when this is done (treating the file download as an image attachment, undefined fields, message tokenCount issues, use of `startsWith` on undefined "text") although it is now prevent altogether

    * chore: remove unused jailbreak prop from MinimalIcon component in EndpointIcon

    * feat: add new SVG icons (MobileSidebar, Sidebar, XAIcon), fix: xAI styling in dark vs. light modes, adjust styling of Landing icons

    * fix: open conversation in new tab on navigation with ctrl/meta key

    * refactor: update Nav & Header to use close/open sidebar buttons, as well as redesign "New Chat"/"Bookmarks" buttons to the top of the Nav, matching the latest design of ChatGPT for simplicity and to free up space

    * chore: remove unused isToggleHovering state and simplify opacity logic in Nav component

    * style: match mobile nav to mobile header

commit c0ebb434a67c242a62e8c1bd37d5f854e2bd558d
Author: Danny Avila <[email protected]>
Date:   Sat Apr 26 04:30:58 2025 -0400

    🎨 feat: OpenAI Image Tools (GPT-Image-1) (#7079)

    * wip: OpenAI Image Generation Tool with customizable options

    * WIP: First pass OpenAI Image Generation Tool and integrate into existing tools

    * 🔀 fix: Comment out unused validation for image generation tool parameters

    * 🔀 refactor: Update primeResources function parameters for better destructuring

    * feat: Add image_edit resource to EToolResources and update AgentToolResources interface

    * feat: Enhance file retrieval with tool resource filtering for image editing

    * refactor: add OpenAI Image Tools for generation and editing, refactor related components, pass current request image attachments as tool resources for editing

    * refactor: Remove commented-out code and clean up API key retrieval in createOpenAIImageTools function

    * fix: show message attachments in shared links

    * fix: Correct parent message retrieval logic for regenerated messages in useChatFunctions

    * fix: Update primeResources to utilize requestFileSet for image file processing

    * refactor: Improve description for image generation tool and clarify usage conditions, only provide edit tool if there are images available to edit

    * chore: Update OpenAI Image Tools icon to use local asset

    * refactor: Update image generation tool description and logic to prioritize editing tool when files are uploaded

    * refactor: Enhance image tool descriptions to clarify usage conditions and note potential unavailability of uploaded images

    * refactor: Update useAttachmentHandler to accept queryClient to update query cache with newly created file

    * refactor: Add customizable descriptions and prompts for OpenAI image generation and editing tools

    * chore: Update comments to use JSDoc style for better clarity and consistency

    * refactor: Rename config variable to clientConfig for clarity and update signal handling in image generation

    * refactor: Update axios request configuration to include derived signal and baseURL for improved request handling

    * refactor: Update baseURL environment variable for OpenAI image generation tool configuration

    * refactor: Enhance axios request configuration with conditional headers and improved clientConfig setup

    * chore: Update comments for clarity and remove unnecessary lines in OpenAI image tools

    * refactor: Update description for image generation without files to clarify user instructions

    * refactor: Simplify target parent message logic for regeneration and resubmission cases

    * chore: Remove backticks from error messages in image generation and editing functions

    * refactor: Rename toolResources to toolResourceSet for clarity in file retrieval functions

    * chore: Remove redundant comments and clean up TODOs in OpenAI image tools

    * refactor: Rename fileStrategy to appFileStrategy for clarity and improve error handling in image processing

    * chore: Update react-resizable-panels to version 2.1.8 in package.json and package-lock.json

    * chore: Ensure required validation for logs and Code of Conduct agreement in bug report template

    * fix: Update ArtifactPreview to use startupConfig and currentCode from memoized props to prevent unnecessary re-renders

    * fix: improve robustness of `save & submit` when used from a user-message with existing attachments

    * fix: add null check for artifact index in CodeEditor to prevent errors, trigger re-render on artifact ID change

    * fix: standardize default values for artifact properties in Artifact component, avoiding prematurely setting an "empty/default" artifact

    * fix: reset current artifact ID before setting a new one in ArtifactButton to ensure correct state management

    * chore: rename `setArtifactId` variable to `setCurrentArtifactId`  for consistency

    * chore: update type annotations in File and S3 CRUD functions for consistency

    * refactor: improve image handling in OpenAI tools by using image_id references and enhance tool context for image editing

    * fix: update image_ids schema in image_edit_oai to enforce presence and provide clear guidelines for usage

    * fix: enhance file fetching logic to ensure user-specific and dimension-validated results

    * chore: add details on image generation and editing capabilities with various models

commit 0ee1dcc479f421292ad70ca7b68c507fdb61cc69
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date:   Fri Apr 25 09:21:56 2025 -0400

    🌍 i18n: Update translation.json with latest translations (#6667)

    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

commit e467fbebfa3fe1bc988453cdd3eb0f42011a5825
Author: Daniel (dB.) Doubrovkine <[email protected]>
Date:   Fri Apr 25 09:16:46 2025 -0400

    📙 docs: CONTRIBUTING.md (#6831)

commit 7f1d01c35a7c9a916dc6d33f9f3915b4a452b4ad
Author: Danny Avila <[email protected]>
Date:   Wed Apr 23 18:56:06 2025 -0400

    🔀 fix: MCP Improvements, Auto-Save Drafts, Artifact Markup (#7040)

    * feat: Update MCP tool creation to use lowercase provider name

    * refactor: handle MCP image output edge cases where tool outputs must contain string responses

    * feat: Drop 'anyOf' and 'oneOf' fields from JSON schema conversion

    * feat: Transform 'oneOf' and 'anyOf' fields to Zod union in JSON schema conversion

    * fix: artifactPlugin to replace textDirective with expected text, closes #7029

    * fix: auto-save functionality to handle conversation transitions from pending drafts, closes #7027

    * refactor: improve async handling during user disconnection process

    * fix: use correct user ID variable for MCP tool calling

    * fix: improve handling of pending drafts in auto-save functionality

    * fix: add support for additional model names in getValueKey function

    * fix: reset form values on agent deletion when no agents remain

commit 150116eefe6e0b4a0e45b1962ef11d3fc86a2533
Author: Marco Beretta <[email protected]>
Date:   Fri Apr 18 17:36:59 2025 +0200

    🎨 style: standardize dropdown styling & fix z-Index layering (#6939)

    * fix: Dropdown settings

    * refactor: classname cleanup

    * refactor: export modal

    * fix: Export dropdown

commit 52f146dd97354791d6d144a6098ae5e39206fcae
Author: Danny Avila <[email protected]>
Date:   Thu Apr 17 00:40:26 2025 -0400

    🤖 feat: Support `o4-mini` and `o3` Models (#6928)

    * feat: Add support for new OpenAI models (o4-mini, o3) and update related logic

    * 🔧 fix: Rename 'resubmitFiles' to 'isResubmission' for consistency across types and hooks

    * 🔧 fix: Replace hardcoded 'pending_req' with CacheKeys.PENDING_REQ for consistency in cache handling

    * 🔧 fix: Update cache handling to use Time.ONE_MINUTE instead of hardcoded TTL and streamline imports

    * 🔧 fix: Enhance message handling logic to correctly identify parent messages and streamline imports in useSSE

commit 88f4ad7c4799ab5313e48925fbf56a6559479ee4
Author: Marco Beretta <[email protected]>
Date:   Thu Apr 17 03:07:43 2025 +0200

    🔍 refactor: Search & Message Retrieval (#6903)

    * refactor: conversation search fetch

    * refactor: Message and Convo fetch with paramters and search

    * refactor: update search states and cleanup old store states

    * refactor: re-enable search API; fix: search conversation

    * fix: message's convo fetch

    * fix: redirect when searching

    * chore: use logger instead of console

    * fix: search message loading

    * feat: small optimizations

    * feat(Message): remove cache for search path

    * fix: handle delete of all archivedConversation and sharedLinks

    * chore: cleanup

    * fix: search messages

    * style: update ConvoOptions styles

    * refactor(SearchButtons): streamline conversation fetching and remove unused state

    * fix: ensure messages are invalidated after fetching conversation data

    * fix: add iconURL to conversation query selection

    ---------

    Co-authored-by: Danny Avila <[email protected]>

commit 851938e7a68bc19ccdeeb0eb841a06717a73fc8a
Author: Danny Avila <[email protected]>
Date:   Wed Apr 16 18:14:34 2025 -0400

    🔧 fix: Agent Resource Form, Convo Menu Style, Ensure Draft Clears on Submission (#6925)

    * ✨ style: Adjust z-index for popover UI and update className in ConvoOptions

    * ✨ feat: Add 'spec' field to conversation query selection

    * 🛠️ fix: add back conversationId to use Constants.PENDING_CONVO in useSSE hook on submission to allow text drafts to clear

    * ✨ chore: add .clineignore to .gitignore for Cline configuration

    * ✨ refactor: memoize FileSearchCheckbox component for performance optimization

    * fix: agent resource management by adding tool_resource to agent's tools if missing

commit 6edd93f99e207c3461f06ba13020a618ee121520
Author: Peter <[email protected]>
Date:   Thu Apr 17 00:11:03 2025 +0200

    🗺️ feat: Add Parameter Location Mapping for OpenAPI actions (#6858)

    * fix: action parameters are assigned to the correct location (query, parameter, header, body)

    * removed copy/paste error

    * added unit tests, only add contenttype if specified

    ---------

    Co-authored-by: Peter Rothlaender <[email protected]>

commit 16aa5ed466fa4a96df5e918a8cabd188222c2ed7
Author: Danny Avila <[email protected]>
Date:   Wed Apr 16 04:28:46 2025 -0400

    🛠️ fix: Improve Accessibility and Display of Conversation Menu (#6913)

    * 📦 chore: update @ariakit/react-core to version 0.4.17 in package.json and package-lock.json

    * refactor: add additional ariakit menu props and unmount menu if state changes

    * fix: accessibility issues and incompatibility issues due to non-portaled menu

    * fix: improve visibility and accessibility of conversation options, making sure to expand dynamically when becoming active

    * fix: adjust max width for conversation options popover to improve visibility

commit 000f3a37331463b9036cc6d7913c8dadd6a71d1c
Author: Marco Beretta <[email protected]>
Date:   Wed Apr 16 03:00:06 2025 +0200

    📢 fix: Invalid `engineTTS` and Conversation State on Navigation (#6904)

    * fix: handle invalid engineTTS values and prevent VoiceDropdown render errors

    * refactor: add verbose developer logging for debugging conversation state issues

    * refactor: remove unnecessary effect for conversationId changes

    * chore: imports

    * fix: include model and entity IDs in conversation query selection

    * feat: add fetchFreshData function to retrieve conversation data on navigation

    * fix: remove unnecessary comment in fetchFreshData function

    * chore: reorder imports in useNavigateToConvo for consistency

    ---------

    Co-authored-by: Danny Avila <[email protected]>

commit d32f34e5d7f41536a030f66db24a036b3a4b7cfb
Author: Danny Avila <[email protected]>
Date:   Tue Apr 15 18:03:56 2025 -0400

    📝 fix: Mistral OCR Image Support and Azure Agent Titles (#6901)

    * fix: azure title model

    * refactor: typing for uploadMistralOCR

    * fix: update conversation ID handling in useSSE for better state management, only use PENDING_CONVO for new conversations

    * fix: streamline conversation ID handling in useSSE for simplicity, only needs state update to prevent draft from applying

    * fix: update performOCR and tests to support document and image URLs with appropriate types

commit 650e9b4f6c7e1ea063638ce10f95fbd53631f4bd
Author: Marco Beretta <[email protected]>
Date:   Tue Apr 15 10:04:00 2025 +0200

    📜 refactor: Optimize Conversation History Nav with Cursor Pagination (#5785)

    * ✨ feat: improve Nav/Conversations/Convo/NewChat component performance

    * ✨ feat: implement cursor-based pagination for conversations API

    * 🔧 refactor: remove createdAt from conversation selection in API and type definitions

    * 🔧 refactor: include createdAt in conversation selection and update related types

    * ✨ fix: search functionality and bugs with loadMoreConversations

    * feat: move ArchivedChats to cursor and DataTable standard

    * 🔧 refactor: add InfiniteQueryObserverResult type import in Nav component

    * feat: enhance conversation listing with pagination, sorting, and search capabilities

    * 🔧 refactor: remove unnecessary comment regarding lodash/debounce in ArchivedChatsTable

    * 🔧 refactor: remove unused translation keys for archived chats and search results

    * 🔧 fix: Archived Chats, Delete Convo, Duplicate Convo

    * 🔧 refactor: improve conversation components with layout adjustments and new translations

    * 🔧 refactor: simplify archive conversation mutation and improve unarchive handling; fix: update fork mutation

    * 🔧 refactor: decode search query parameter in conversation route; improve error handling in unarchive mutation; clean up DataTable component styles

    * 🔧 refactor: remove unused translation key for empty archived chats

    * 🚀 fix: `archivedConversation` query key not updated correctly while archiving

    * 🧠 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

    * ✨ feat: improve Nav/Conversations/Convo/NewChat component performance

    * 🔧 refactor: remove unnecessary comment regarding lodash/debounce in ArchivedChatsTable

    * 🔧 refactor: update translation keys for clarity; simplify conversation query parameters and improve sorting functionality in SharedLinks component

    * 🔧 refactor: optimize conversation loading logic and improve search handling in Nav component

    * fix: package-lock

    * fix: package-lock 2

    * fix: package lock 3

    * refactor: remove unused utility files and exports to clean up the codebase

    * refactor: remove i18n and useAuthRedirect modules to streamline codebase

    * refactor: optimize Conversations component and remove unused ToggleContext

    * refactor(Convo): add RenameForm and ConvoLink components; enhance Conversations component with responsive design

    * fix: add missing @azure/storage-blob dependency in package.json

    * refactor(Search): add error handling with toast notification for search errors

    * refactor: make createdAt and updatedAt fields of tConvoUpdateSchema less restrictive if timestamps are missing

    * chore: update @azure/storage-blob dependency to version 12.27.0, ensure package-lock is correct

    * refactor(Search): improve conversation handling server side

    * fix: eslint warning and errors

    * refactor(Search): improved search loading state and overall UX

    * Refactors conversation cache management

    Centralizes conversation mutation logic into dedicated utility functions for adding, updating, and removing conversations from query caches.

    Improves reliability and maintainability by:
    - Consolidating duplicate cache manipulation code
    - Adding type safety for infinite query data structures
    - Implementing consistent cache update patterns across all conversation operations
    - Removing obsolete conversation helper functions in favor of standardized utilities

    * fix: conversation handling and SSE event processing

    - Optimizes conversation state management with useMemo and proper hook ordering
    - Impr…
jmaddington pushed a commit to jmaddington/LibreChat that referenced this pull request May 23, 2025
When selecting equations and using copy paste, uses the correct latex code.

Co-authored-by: Ruben Talstra <[email protected]>
jmaddington pushed a commit to jmaddington/LibreChat that referenced this pull request May 23, 2025
…ila#7377)

* 🔒 feat: Add Content Security Policy using Helmet middleware

* 🔒 feat: Set trust proxy and refine Content Security Policy directives

* 🎨 feat: add `copy-tex` to improve copying KaTeX (danny-avila#7308)

When selecting equations and using copy paste, uses the correct latex code.

Co-authored-by: Ruben Talstra <[email protected]>

* 🔃 refactor: `AgentFooter` to conditionally render buttons based on `activePanel` (danny-avila#7306)

* 🚀 feat: Add `Cloudflare Turnstile` support (danny-avila#5987)

* 🚀 feat: Add @marsidev/react-turnstile dependency to package.json and package-lock.json

* 🚀 feat: Integrate Cloudflare Turnstile configuration support in AppService and add schema validation

* 🚀 feat: Implemented Cloudflare Turnstile integration in Login and Registration forms

* 🚀 feat: Enhance AppService tests with additional mocks and configuration setups

* 🚀 feat: Comment out outdated config version warning tests in AppService.spec.js

* 🚀 feat: Remove outdated warning tests and add new checks for environment variables and API health

* 🔧 test: Update AppService.spec.js to use expect.anything() for paths validation

* 🔧 test: Refactor AppService.spec.js to streamline mocks and enhance clarity

* 🔧 chore: removed not needed test

* Potential fix for code scanning alert no. 5638: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5629: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5642: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Update turnstile.js

* Potential fix for code scanning alert no. 5634: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5646: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5647: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

---------

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* 🔒 feat: Refactor Content Security Policy setup to use Helmet middleware with custom directives

* 🔒 feat: Enhance Content Security Policy to include Sandpack Bundler URL

* 🔒 feat: Update Content Security Policy and integrate Turnstile captcha support

---------

Co-authored-by: andresgit <[email protected]>
Co-authored-by: matt burnett <[email protected]>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
danny-avila added a commit that referenced this pull request May 29, 2025
* 🚀 feat: Implement Auto-Refill Settings for Balance

* 🎨 feat: add `copy-tex` to improve copying KaTeX (#7308)

When selecting equations and using copy paste, uses the correct latex code.

Co-authored-by: Ruben Talstra <[email protected]>

* 🔃 refactor: `AgentFooter` to conditionally render buttons based on `activePanel` (#7306)

* 🚀 feat: Add `Cloudflare Turnstile` support (#5987)

* 🚀 feat: Add @marsidev/react-turnstile dependency to package.json and package-lock.json

* 🚀 feat: Integrate Cloudflare Turnstile configuration support in AppService and add schema validation

* 🚀 feat: Implemented Cloudflare Turnstile integration in Login and Registration forms

* 🚀 feat: Enhance AppService tests with additional mocks and configuration setups

* 🚀 feat: Comment out outdated config version warning tests in AppService.spec.js

* 🚀 feat: Remove outdated warning tests and add new checks for environment variables and API health

* 🔧 test: Update AppService.spec.js to use expect.anything() for paths validation

* 🔧 test: Refactor AppService.spec.js to streamline mocks and enhance clarity

* 🔧 chore: removed not needed test

* Potential fix for code scanning alert no. 5638: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5629: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5642: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Update turnstile.js

* Potential fix for code scanning alert no. 5634: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5646: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5647: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

---------

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5764: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5765: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* 🖼️ feat: Tool Call and Loading UI Refresh, Image Resize Config (#7086)

* ✨ feat: Enhance Spinner component with customizable properties and improved animation

* 🔧 fix: Replace Loader with Spinner in RunCode component and update FilePreview to use Spinner for progress indication

* ✨ feat: Refactor icons in CodeProgress and CancelledIcon components; enhance animation and styling in ExecuteCode and ProgressText components

* ✨ feat: Refactor attachment handling in ExecuteCode component; replace individual attachment rendering with AttachmentGroup for improved structure

* ✨ feat: Refactor dialog components for improved accessibility and styling; integrate Skeleton loading state in Image component

* ✨ feat: Refactor ToolCall component to use ToolCallInfo for better structure; replace ToolPopover with AttachmentGroup; enhance ProgressText with error handling and improved UI elements

* 🔧 fix: Remove unnecessary whitespace in ProgressText

* 🔧 fix: Remove unnecessary margin from AgentFooter and AgentPanel components; clean up SidePanel imports

* ✨ feat: Enhance ToolCall and ToolCallInfo components with improved styling; update translations and add warning text color to Tailwind config

* 🔧 fix: Update import statement for useLocalize in ToolCallInfo component; fix: chatform transition

* ✨ feat: Refactor ToolCall and ToolCallInfo components for improved structure and styling; add optimized code block for better output display

* ✨ feat: Implement OpenAI image generation component; add progress tracking and localization for user feedback

* 🔧 fix: Adjust base duration values for image generation; optimize timing for quality settings

* chore: remove unnecessary space

* ✨ feat: Enhance OpenAI image generation with editing capabilities; update localization for progress feedback

* ✨ feat: Add download functionality to images; enhance DialogImage component with download button

* ✨ feat: Enhance image resizing functionality; support custom percentage and pixel dimensions in resizeImageBuffer

* 📊 feat: Improve Helm Chart (#3638)

* Replaced Helm Charts with Blue Atlas Charts

* Fix Workflow

* improve docs

* update gitignore

* Update docs

* change values order, add hpa

* change tls example domain

* Default: Enable liveness and readiness

* chore: bump base chart

* apply requested changes

* add Release fix

* add: error handling

* chore: cleanup and testing

* fix: adjust Chart.yaml

---------

Co-authored-by: hofq <[email protected]>
Co-authored-by: Ruben Talstra <[email protected]>

* 📜 docs: Unreleased Changelog (#7434)

* action: update Unreleased changelog

* Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Danny Avila <[email protected]>

* 🛡️ chore: `multer` v2.0.0 for CVE-2025-47935 and CVE-2025-47944 (#7454)

* chore: bump multer to v2.0.0 to resolve CVE-2025-47935 and CVE-2025-47944

* chore: temp. remove helmet dependency to appease unused NPM package workflow

* 🎚️ feat: Custom Parameters (#7342)

* #

* - refactor: simplified getCustomConfig func

* #

* - feature: persist values for parameters with optionType of custom

* #

* - refactor: moved `Parameters/settings.ts` into `data-provider` so that both frontend and backend code can use it.

* - feature: loadCustomConfig can now parse and validate customParams property for `endpoints.custom` in `librechat.yaml`

* # fixed linter

* # removed .strict() in config.ts

* change: added packages/data-provider/src to SOURCE_DIRS for i18n check

* # removed unnecessary lodash imports

* # addressed PR comments
# fixed lint for updated files

* # better import for lodash (w/o relying on tree-shaking)

* 📃 fix: Ensure MCP Resources Pass Name and Description Fields to LLM (#7442)

* 🔗 feat: Support Environment Variables in MCP URL Config (#7424)

* 🦙 chore: Add `llama-4` to Vision Models List (#7433)

* 🔧 fix: File Deletion for Azure Assistants API (#7466)

* 🔬 fix: File Search Request Format (Azure Assistants API) (#7404)

* fix: The request format for file analysis with Azure OpenAI assistants

  The request format for file analysis with Azure OpenAI assistants differs from that of OpenAI. This fix updates the API to use attachments instead of file_ids. #7379

* chore: ESLint Error

---------

Co-authored-by: Danny Avila <[email protected]>

* 🖼️ chore: Linting & Transition Styling in UI Components (#7467)

* chore: linting

* 🔧 fix: Correctly parse dimensions for image width and height in OpenAIImageGen component

* style: overlay class for DialogImage component to improve visibility

* style: Update transition timing function for PixelCard component to rely on style props

* ✅ fix: Emojis rendering in `SplitText` Animation (#7460)

* 📂 refactor: Improve `FileAttachment` & File Form Deletion (#7471)

* refactor: optional attachment properties for `FileAttachment`

* refactor: update ActionButton to use localized text

* chore: localize text in DataTableFile, add missing translation, imports order, and linting

* chore: linting in DataTable

* fix: integrate Recoil state management for file deletion in DataTableFile

* fix: integrate Recoil state management for file deletion in DataTable

* fix: add temp_file_id to BatchFile type and update deleteFiles logic to properly remove files that are mapped to temp_file_id

* 🌍 i18n: Update translation.json with latest translations (#7468)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* 🦾 feat: Claude-4 Support (#7509)

* refactor: Update AnthropicClient to support Claude model naming changes

* Renamed `isClaude3` to `isClaudeLatest` to accommodate newer Claude models.
* Updated logic to determine if the model is part of the Claude family.
* Adjusted `useMessages` property to reflect the new model naming convention.
* Cleaned up client properties during disposal to match the updated naming.

* feat: Claude-4 Support

* feat: Add Thinking and Prompt caching support for Claude 4

* chore: Update ANTHROPIC_MODELS in .env.example for latest model versions

* 📊 chore: Remove Old Helm Chart (#7512)

Co-authored-by: hofq <[email protected]>

* 🪨 feat: Bedrock Support for Claude-4 Reasoning (#7517)

* 🗑️ chore: Update .gitignore to reflect AI-related files

* chore: linting in Bedrock options.js

* 🪨 feat: Bedrock Claude-4 Reasoning

* 🪖 chore: bump helm app version to v0.7.8 (#7524)

- bump helm app version to match the latest
      release version

* ⌛ feat: Agent Version History and Management (#7455)

* ✨ feat: Enhance agent update functionality to save current state in versions array

- Updated the `updateAgent` function to push the current agent's state into a new `versions` array when an agent is updated.
- Modified the agent schema to include a `versions` field for storing historical states of agents.

* ✨ feat: Add comprehensive CRUD operations for agents in tests

- Introduced a new test suite for CRUD operations on agents, including create, read, update, and delete functionalities.
- Implemented tests for listing agents by author and updating agent projects.
- Enhanced the agent model to support version history tracking during updates.
- Ensured proper environment variable management during tests.

* ✨ feat: Introduce version tracking for agents and enhance UI components

- Added a `version` property to the agent model to track the number of versions.
- Updated the `getAgentHandler` to include the agent's version in the response.
- Introduced a new `VersionButton` component for navigating to the version panel.
- Created a `VersionPanel` component for displaying version-related information.
- Updated the UI to conditionally render the version button and panel based on the active state.
- Added localization for the new version-related UI elements.

* ✨ i18n: Add "version" translation key across multiple languages

- Introduced the "com_ui_agent_version" translation key in various language files to support version tracking for agents.
- Updated Arabic, Czech, German, English, Spanish, Estonian, Persian, Finnish, French, Hebrew, Hungarian, Indonesian, Italian, Japanese, Korean, Dutch, Polish, Portuguese (Brazil and Portugal), Russian, Swedish, Thai, Turkish, Vietnamese, and Chinese (Simplified and Traditional) translations.

* ✨ feat: Update AgentFooter to conditionally render AdminSettings

- Modified the logic for displaying buttons in the AgentFooter component to only show them when the active panel is the builder.
- Ensured that AdminSettings is displayed only when the user has an admin role and the buttons are visible.

* ✨ feat: Enhance AgentPanelSwitch and VersionPanel for improved agent capabilities

- Updated AgentPanelSwitch to include a new VersionPanel for displaying version-related information.
- Enhanced agentsConfig logic to properly handle agent capabilities.
- Modified VersionPanel to improve structure and localization support.
- Integrated createAgent mutation for future agent creation functionality.

* ✨ feat: Enhance VersionPanel to display agent version history and loading states

- Integrated version fetching logic in VersionPanel to retrieve and display agent version history.
- Added loading and error handling states to improve user experience.
- Updated agent schema to use mixed types for versions, allowing for more flexible version data structures.
- Introduced localization support for version-related UI elements.

* ✨ feat: Update VersionPanel and AgentPanelSwitch to enhance agent selection and version display

- Modified AgentPanelSwitch to pass selectedAgentId to VersionPanel for improved agent context.
- Enhanced VersionPanel to handle multiple timestamp formats and display appropriate messages when no agent is selected.
- Improved structure and readability of the VersionPanel component by adding a helper function for timestamp retrieval.

* ✨ feat: Refactor VersionPanel to utilize localization and improve timestamp handling

- Replaced hardcoded text constants with localization support for various UI elements in VersionPanel.
- Enhanced the timestamp retrieval function to handle errors gracefully and utilize localized messages for unknown dates.
- Improved user feedback by displaying localized messages for agent selection, version errors, and empty states.

* ✨ refactor: Clean up VersionPanel by removing unused code and improving timestamp handling

* ✨ feat: Implement agent version reverting functionality

- Added `revertAgentVersion` method in the Agent model to allow reverting to a previous version of an agent.
- Introduced `revertAgentVersionHandler` in the agents controller to handle requests for reverting agent versions.
- Updated API routes to include a new endpoint for reverting agent versions.
- Enhanced the VersionPanel component to support version restoration with user confirmation and feedback.
- Added localization support for success and error messages related to version restoration.

* ✨ i18n: Add localization for agent version restoration messages

* Simplify VersionPanel by removing unused parameters and enhancing agent ID handling

* Refactor Agent model and VersionPanel component to streamline version data handling

* Update version handling in Agent model and VersionPanel

- Enhanced the Agent model to include an `updatedAt` timestamp when pushing new versions.
- Improved the VersionPanel component to sort versions by the `updatedAt` timestamp for better display order.
- Added a new localization entry for indicating the active version of an agent.

* ✨ i18n: Add localization for active agent version across multiple languages

* ✨ feat: Introduce version management components for agent history

- Added `isActiveVersion` utility to determine the active version of an agent based on various criteria.
- Implemented `VersionContent` and `VersionItem` components to display agent version history, including loading and error states.
- Enhanced `VersionPanel` to integrate new components and manage version context effectively.
- Added comprehensive tests for version management functionalities to ensure reliability and correctness.

* Add unit tests for AgentFooter component

* cleanup

* Enhance agent version update handling and add unit tests for update operators

- Updated the `updateAgent` function to properly handle various update operators ($push, $pull, $addToSet) while maintaining version history.
- Modified unit tests to validate the correct behavior of agent updates, including versioning and tool management.

* Enhance version comparison logic and update tests for artifacts handling

- Modified the `isActiveVersion` utility to include artifacts in the version comparison criteria.
- Updated the `VersionPanel` component to support artifacts in the agent state.
- Added new unit tests to validate artifacts matching scenarios and edge cases in the `isActiveVersion` function.

* Implement duplicate version detection in agent updates and enhance error handling

- Added `isDuplicateVersion` function to check for identical versions during agent updates, excluding certain fields.
- Updated `updateAgent` function to throw an error if a duplicate version is detected, with detailed error information.
- Enhanced the `updateAgentHandler` to return appropriate responses for duplicate version errors.
- Modified client-side error handling to display user-friendly messages for duplicate version scenarios.
- Added comprehensive unit tests to validate duplicate version detection and error handling across various update scenarios.

* Update version title localization to include version number across multiple languages

- Modified the `com_ui_agent_version_title` translation key to include a placeholder for the version number in various language files.
- Enhanced the `VersionItem` component to utilize the updated localization for displaying version titles dynamically.

* Enhance agent version handling and add revert functionality

- Updated the `isDuplicateVersion` function to improve version comparison logic, including special handling for `projectIds` and arrays of objects.
- Modified the `updateAgent` function to streamline version updates and removed unnecessary checks for test environments.
- Introduced a new `revertAgentVersion` function to allow reverting agents to specific versions, with detailed documentation.
- Enhanced unit tests to validate duplicate version detection and revert functionality, ensuring robust error handling and version management.

* fix CI issues

* cleanup

* Revert all non-English translations

* clean up tests

* *️⃣ feat: Reuse OpenID Auth Tokens (#7397)

* feat: integrate OpenID Connect support with token reuse

- Added `jwks-rsa` and `new-openid-client` dependencies for OpenID Connect functionality.
- Implemented OpenID token refresh logic in `AuthController`.
- Enhanced `LogoutController` to handle OpenID logout and session termination.
- Updated JWT authentication middleware to support OpenID token provider.
- Modified OAuth routes to accommodate OpenID authentication and token management.
- Created `setOpenIDAuthTokens` function to manage OpenID tokens in cookies.
- Upgraded OpenID strategy with user info fetching and token exchange protocol.
- Introduced `openIdJwtLogin` strategy for handling OpenID JWT tokens.
- Added caching mechanism for exchanged OpenID tokens.
- Updated configuration to include OpenID exchanged tokens cache key.
- updated .env.example to include the new env variables needed for the feature.

* fix: update return type in downloadImage documentation for clarity and fixed openIdJwtLogin env variables

* fix: update Jest configuration and tests for OpenID strategy integration

* fix: update OpenID strategy to include callback URL in setup

* fix: fix optionalJwtAuth middleware to support OpenID token reuse and improve currentUrl method in CustomOpenIDStrategy to override the dynamic host issue related to proxy (e.g. cloudfront)

* fix: fixed code formatting

* Fix: Add mocks for openid-client and passport strategy in Jest configuration to fix unit tests

* fix eslint errors: Format mock file openid-client.

* ✨ feat: Add PKCE support for OpenID and default handling in strategy setup

---------

Co-authored-by: Atef Bellaaj <[email protected]>
Co-authored-by: Ruben Talstra <[email protected]>

* 🔎 feat: Native Web Search with Citation References (#7516)

* WIP: search tool integration

* WIP: Add web search capabilities and API key management to agent actions

* WIP: web search capability to agent configuration and selection

* WIP: Add web search capability to backend agent configuration

* WIP: add web search option to default agent form values

* WIP: add attachments for web search

* feat: add plugin for processing web search citations

* WIP: first pass, Citation UI

* chore: remove console.log

* feat: Add AnimatedTabs component for tabbed UI functionality

* refactor: AnimatedTabs component with CSS animations and stable ID generation

* WIP example content

* feat: SearchContext for managing search results apart from MessageContext

* feat: Enhance AnimatedTabs with underline animation and state management

* WIP: first pass, Implement dynamic tab functionality in Sources component with search results integration

* fix: Update class names for improved styling in Sources and AnimatedTabs components

* feat: Improve styling and layout in Sources component with enhanced button and item designs

* feat: Refactor Sources component to integrate OGDialog for source display and improve layout

* style: Update background color in SourceItem and SourcesGroup components for improved visibility

* refactor: Sources component to enhance SourceItem structure and improve favicon handling

* style: Adjust font size of domain text in SourceItem for better readability

* feat: Add localization for citation source and details in CompositeCitation component

* style: add theming to Citation components

* feat: Enhance SourceItem component with dialog support and improved hovercard functionality

* feat: Add localization for sources tab and image alt text in Sources component

* style: Replace divs with spans for better semantic structure in CompositeCitation and Citation components

* refactor: Sources component to use useMemo for tab generation and improve performance

* chore: bump @librechat/agents to v2.4.318

* chore: update search result types

* fix: search results retrieval in ContentParts component, re-render attachments when expected

* feat: update sources style/types to use latest search result structure

* style: enhance Dialog (expanded) SourceItem component with link wrapping and improved styling

* style: update ImageItem component styling for improved title visibility

* refactor: remove SourceItemBase component and adjust SourceItem layout for improved styling

* chore: linting twcss order

* fix: prevent FileAttachment from rendering search attachments

* fix: append underscore to responseMessageId for unique identification to prevent mapping of previous latest message's attachments

* chore: remove unused parameter 'useSpecs' from loadTools function

* chore: twcss order

* WIP: WebSearch Tool UI

* refactor: add limit parameter to StackedFavicons for customizable source display

* refactor: optimize search results memoization by making more granular and separate conerns

* refactor: integrated StackedFavicons to WebSearch mid-run

* chore: bump @librechat/agents to expose handleToolCallChunks

* chore: use typedefs from dedicated file instead of defining them in AgentClient module

* WIP: first pass, search progress results

* refactor: move createOnSearchResults function to a dedicated search module

* chore: bump @librechat/agents to v2.4.320

* WIP: first pass, search results processed UX

* refactor: consolidate context variables in createOnSearchResults function

* chore: bump @librechat/agents to v2.4.321

* feat: add guidelines for web search tool response formatting in loadTools function

* feat: add isLast prop to Part component and update WebSearch logic for improved state handling

* style: update Hovercard styles for improved UI consistency

* feat: export FaviconImage component for improved accessibility in other modules

* refactor: export getCleanDomain function and use FaviconImage in Citation component for improved source representation

* refactor: implement SourceHovercard component for consistency and DRY compliance

* fix: replace <p> with <span> for snippet and title in SourceItem and SourceHovercard for consistency

* style: `not-prose`

* style: remove 'not-prose' class for consistency in SourceItem, Citation, and SourceHovercard components, adjust style classes

* refactor: `imageUrl` on hover and prevent duplicate sources

* refactor: enhance SourcesGroup dialog layout and improve source item presentation

* refactor: reorganize Web Components, save in same directory

* feat: add 'news' refType to refTypeMap for citation sources

* style: adjust Hovercard width for improved layout

* refactor: update tool usage guidelines for improved clarity and execution

* chore: linting

* feat: add Web Search badge with initial permissions and local storage logic

* feat: add webSearch support to interface and permissions schemas

* feat: implement Web Search API key management and localization updates

* feat: refactor Web Search API key handling and integrate new search API key form

* fix: remove unnecessary visibility state from FileAttachment component

* feat: update WebSearch component to use Globe icon and localized search label

* feat: enhance ApiKeyDialog with dropdown for reranker selection and update translations

* feat: implement dropdown menus for engine, scraper, and reranker selection in ApiKeyDialog

* chore: linting and add unknown instead of `any` type

* feat: refactor ApiKeyDialog and useAuthSearchTool for improved API key management

* refactor: update ocrSchema to use template literals for default apiKey and baseURL

* feat: add web search configuration and utility functions for environment variable extraction

* fix: ensure filepath is defined before checking its prefix in useAttachmentHandler

* feat: enhance web search functionality with improved configuration and environment variable extraction for authFields

* fix: update auth type in TPluginAction and TUpdateUserPlugins to use Partial<Record<string, string>>

* feat: implement web search authentication verification and enhance webSearchAuth structure

* feat: enhance ephemeral agent handling with new web search capability and type definition

* feat: enhance isEphemeralAgent function to include web search selection

* feat: refactor verifyWebSearchAuth to improve key handling and authentication checks

* feat: implement loadWebSearchAuth function for improved web search authentication handling

* feat: enhance web search authentication with new configuration options and refactor related types

* refactor: rename search engine to search provider and update related localization keys

* feat: update verifyWebSearchAuth to handle multiple authentication types and improve error handling

* feat: update ApiKeyDialog to accept authTypes prop and remove isUserProvided check

* feat: add tests for extractWebSearchEnvVars and loadWebSearchAuth functions

* feat: enhance loadWebSearchAuth to support specific service checks for providers, scrapers, and rerankers

* fix: update web search configuration key and adjust auth result handling in loadTools function

* feat: add new progress key for repeated web searching and update localization

* chore: bump @librechat/agents to 2.4.322

* feat: enhance loadTools function to include ISO time and improve search tool logging

* feat: update StackedFavicons to handle negative start index and improve citation attribution styling and text

* chore: update .gitignore to categorize AI-related files

* fix: mobile responsiveness of sources/citations hovercards

* feat: enhance source display with improved line clamping for better readability

* chore: bump @librechat/agents to v2.4.33

* feat: add handling for image sources in references mapping

* chore: bump librechat-data-provider version to 0.7.84

* chore: bump @librechat/agents version to 2.4.34

* fix: update auth handling to support multiple auth types in tools and allow key configuration in agent panel

* chore: remove redundant agent attribution text from search form

* fix: web search auth uninstall

* refactor: convert CheckboxButton to a forwardRef component and update setValue callback signature

* feat: add triggerRef prop to ApiKeyDialog components for improved dialog control

* feat: integrate triggerRef in CodeInterpreter and WebSearch components for enhanced dialog management

* feat: enhance ApiKeyDialog with additional links for Firecrawl and Jina API key guidance

* feat: implement web search configuration handling in ApiKeyDialog and add tests for dropdown visibility

* fix: update webSearchConfig reference in config route for correct payload assignment

* feat: update ApiKeyDialog to conditionally render sections based on authTypes and modify loadWebSearchAuth to correctly categorize authentication types

* feat: refactor ApiKeyDialog and related tests to use SearchCategories and RerankerTypes enums and remove nested ternaries

* refactor: move ThinkingButton rendering to improve layout consistency in ContentParts

* feat: integrate search context into Markdown component to conditionally include unicodeCitation plugin

* chore: bump @librechat/agents to v2.4.35

* chore: remove unused 18n key

* ci: add WEB_SEARCH permission testing and update AppService tests for new webSearch configuration

* ci: add more comprehensive tests for loadWebSearchAuth to validate authentication handling and authTypes structure

* chore: remove debugging console log from web.spec.ts to clean up test output

* 🧹 chore: Bump Agents Dependencies (#7525)

* chore: bump langchain dependencies

* chore: bump @librechat/agents to v2.4.36

* chore: bump @librechat/agents to v2.4.37

* refactor: simplify remark plugins in Markdown component with no conditional usage

* 🔧 refactor: Progress Text Localization for Running Tools (#7526)

* 🔧 chore: Bump Data Provider and Custom Config Versions (#7527)

* 🔧 chore: Update CONFIG_VERSION to 1.2.6

* 🔧 chore: Update librechat-data-provider version to 0.7.85

* 👤 feat: Enhance Agent Versioning to Track User Updates (#7523)

* feat: Enhance agent update functionality to track user updates

- Updated `updateAgent` function to accept an `updatingUserId` parameter for tracking who made changes.
- Modified agent versioning to include `updatedBy` field for better audit trails.
- Adjusted related functions and tests to ensure proper handling of user updates and version history.
- Enhanced tests to verify correct tracking of `updatedBy` during agent updates and restorations.

* fix: Refactor import tests for improved readability and consistency

- Adjusted formatting in `importChatGptConvo` test to enhance clarity.
- Updated expected output string in `processAssistantMessage` test to use double quotes for consistency.
- Modified processing time expectation in `processAssistantMessage` test to allow for CI environment variability.

* 🧩 feat: Web Search Config Validations & Clipboard Citation Processing (#7530)

* 🔧 chore: Add missing optional `scraperTimeout` to webSearchSchema

* chore: Add missing optional `scraperTimeout` to web search authentication result

* chore: linting

* feat: Integrate attachment handling and citation processing in message components

- Added `useAttachments` hook to manage message attachments and search results.
- Updated `MessageParts`, `ContentParts`, and `ContentRender` components to utilize the new hook for improved attachment handling.
- Enhanced `useCopyToClipboard` to format citations correctly, including support for composite citations and deduplication.
- Introduced utility functions for citation processing and cleanup.
- Added tests for the new `useCopyToClipboard` functionality to ensure proper citation formatting and handling.

* feat: Add configuration for LibreChat Code Interpreter API and Web Search variables

* fix: Update searchResults type to use SearchResultData for better type safety

* feat: Add web search configuration validation and logging

- Introduced `checkWebSearchConfig` function to validate web search configuration values, ensuring they are environment variable references.
- Added logging for proper configuration and warnings for incorrect values.
- Created unit tests for `checkWebSearchConfig` to cover various scenarios, including valid and invalid configurations.

* docs: Update README to include Web Search feature details

- Added a section for the Web Search feature, highlighting its capabilities to search the internet and enhance AI context.
- Included links for further information on the Web Search functionality.

* ci: Add mock for checkWebSearchConfig in AppService tests

* chore: linting

* feat: Enhance Shared Messages with Web Search UI by adding searchResults prop to SearchContent and MinimalHoverButtons components

* chore: linting

* refactor: remove Meilisearch index sync from importConversations function

* feat: update safeSearch implementation to use SafeSearchTypes enum

* refactor: remove commented-out code in loadTools function

* fix: ensure responseMessageId handles latestMessage ID correctly

* feat: enhance Vite configuration for improved chunking and caching

- Added additional globIgnores for map files in Workbox configuration.
- Implemented high-impact chunking for various large libraries to optimize performance.
- Increased chunkSizeWarningLimit from 1200 to 1500 for better handling of larger chunks.

* refactor: move health check hook to Root, fix bad setState for Temporary state

- Enhanced the `useHealthCheck` hook to initiate health checks only when the user is authenticated.
- Added logic for managing health check intervals and handling window focus events.
- Introduced a new test suite for `useHealthCheck` to cover various scenarios including authentication state changes and error handling.
- Removed the health check invocation from `ChatRoute` and added it to `Root` for global health monitoring.

* fix: update font alias in Vite configuration for correct path resolution

* 🌍 i18n: Update translation.json with latest translations (#7532)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* 🔧 chore: Update data-provider dependencies for typing (#7533)

- Updated dependencies to include @langchain/core and @types/winston in both package-lock.json and data-provider package.json.

* 🔧 fix: Artifacts Display Crash on Close and Max Width (#7540)

* 🔧 chore: Update react-resizable-panels dependency to version 3.0.2 in package.json and package-lock.json

* fix: Simplify order assignment in SidePanel component based on hasArtifacts condition, fixed frontend crash when artifacts are closed

* refactor: Change throttledSaveLayout to use useMemo for improved performance in SidePanelGroup component

* refactor: Update dependencies in SidePanel component's useEffect hooks for improved responsiveness

* 🏷️ refactor: EditPresetDialog UI and Remove `chatGptLabel` from Presets (#7543)

* fix: add necessary dep., remove unnecessary dep from useMentions memoization

* fix: Migrate deprecated chatGptLabel to modelLabel in cleanupPreset and simplify getPresetTitle logic

* fix: Enhance cleanupPreset to remove empty chatGptLabel and add comprehensive tests for label migration and preset handling

* chore: Update endpointType prop in PopoverButtons to allow null values for better flexibility

* refactor: Replace Dialog with OGDialog in EditPresetDialog for improved UI consistency and structure

* style: Update EditPresetDialog layout and styling for improved responsiveness and consistency

* 📦 refactor: Add Additional Chunking to Vite Config (#7544)

* ⚡ refactor: Add Additional Chunking to Vite Config

* chore: Integrate rollup-plugin-visualizer for bundle analysis in Vite config & add @codemirror chunks

* ⌚ fix: Debounce `setUserContext` and Default State Param for OpenID Auth (#7559)

* fix: Add default random state parameter to OpenID auth request for providers that require it; ensure passport strategy uses it

* ⌚ refactor: debounce setUserContext to avoid race condition

* refactor: Update OpenID authentication to use randomState from openid-client

* chore: linting in presetSettings type definition

* chore: import order in ModelPanel

* refactor: remove `isLegacyOutput` property from AnthropicClient since only used where defined, add latest models to non-legacy patterns, and remove from client cleanup

* refactor: adjust grid layout in Parameters component for improved responsiveness

* refactor: adjust grid layout in ModelPanel for improved display of model parameters

* test: add cases for maxOutputTokens handling in Claude 4 Sonnet and Opus models

* ci: mock loadCustomConfig in server tests and refactor OpenID route for improved authentication handling

* 🚀 feat: Implement Auto-Refill Settings for Balance

* fix: ESLint

* ✨ feat: Enhance Auto-Refill Settings with Validation and Localization

---------

Co-authored-by: andresgit <[email protected]>
Co-authored-by: matt burnett <[email protected]>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: Marco Beretta <[email protected]>
Co-authored-by: hofq <[email protected]>
Co-authored-by: hofq <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Danny Avila <[email protected]>
Co-authored-by: Theo N. Truong <[email protected]>
Co-authored-by: René Honig <[email protected]>
Co-authored-by: Ben Verhees <[email protected]>
Co-authored-by: Amgad Hasan <[email protected]>
Co-authored-by: arthurolivierfortin <[email protected]>
Co-authored-by: Danny Avila <[email protected]>
Co-authored-by: Sebastien Bruel <[email protected]>
Co-authored-by: Austin Barrington <[email protected]>
Co-authored-by: Peter <[email protected]>
Co-authored-by: Atef Bellaaj <[email protected]>
timmanik pushed a commit to timmanik/LibreChat that referenced this pull request Jun 1, 2025
When selecting equations and using copy paste, uses the correct latex code.

Co-authored-by: Ruben Talstra <[email protected]>
timmanik pushed a commit to timmanik/LibreChat that referenced this pull request Jun 1, 2025
…ila#7377)

* 🔒 feat: Add Content Security Policy using Helmet middleware

* 🔒 feat: Set trust proxy and refine Content Security Policy directives

* 🎨 feat: add `copy-tex` to improve copying KaTeX (danny-avila#7308)

When selecting equations and using copy paste, uses the correct latex code.

Co-authored-by: Ruben Talstra <[email protected]>

* 🔃 refactor: `AgentFooter` to conditionally render buttons based on `activePanel` (danny-avila#7306)

* 🚀 feat: Add `Cloudflare Turnstile` support (danny-avila#5987)

* 🚀 feat: Add @marsidev/react-turnstile dependency to package.json and package-lock.json

* 🚀 feat: Integrate Cloudflare Turnstile configuration support in AppService and add schema validation

* 🚀 feat: Implemented Cloudflare Turnstile integration in Login and Registration forms

* 🚀 feat: Enhance AppService tests with additional mocks and configuration setups

* 🚀 feat: Comment out outdated config version warning tests in AppService.spec.js

* 🚀 feat: Remove outdated warning tests and add new checks for environment variables and API health

* 🔧 test: Update AppService.spec.js to use expect.anything() for paths validation

* 🔧 test: Refactor AppService.spec.js to streamline mocks and enhance clarity

* 🔧 chore: removed not needed test

* Potential fix for code scanning alert no. 5638: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5629: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5642: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Update turnstile.js

* Potential fix for code scanning alert no. 5634: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5646: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5647: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

---------

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* 🔒 feat: Refactor Content Security Policy setup to use Helmet middleware with custom directives

* 🔒 feat: Enhance Content Security Policy to include Sandpack Bundler URL

* 🔒 feat: Update Content Security Policy and integrate Turnstile captcha support

---------

Co-authored-by: andresgit <[email protected]>
Co-authored-by: matt burnett <[email protected]>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
timmanik pushed a commit to timmanik/LibreChat that referenced this pull request Jun 1, 2025
* 🚀 feat: Implement Auto-Refill Settings for Balance

* 🎨 feat: add `copy-tex` to improve copying KaTeX (danny-avila#7308)

When selecting equations and using copy paste, uses the correct latex code.

Co-authored-by: Ruben Talstra <[email protected]>

* 🔃 refactor: `AgentFooter` to conditionally render buttons based on `activePanel` (danny-avila#7306)

* 🚀 feat: Add `Cloudflare Turnstile` support (danny-avila#5987)

* 🚀 feat: Add @marsidev/react-turnstile dependency to package.json and package-lock.json

* 🚀 feat: Integrate Cloudflare Turnstile configuration support in AppService and add schema validation

* 🚀 feat: Implemented Cloudflare Turnstile integration in Login and Registration forms

* 🚀 feat: Enhance AppService tests with additional mocks and configuration setups

* 🚀 feat: Comment out outdated config version warning tests in AppService.spec.js

* 🚀 feat: Remove outdated warning tests and add new checks for environment variables and API health

* 🔧 test: Update AppService.spec.js to use expect.anything() for paths validation

* 🔧 test: Refactor AppService.spec.js to streamline mocks and enhance clarity

* 🔧 chore: removed not needed test

* Potential fix for code scanning alert no. 5638: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5629: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5642: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Update turnstile.js

* Potential fix for code scanning alert no. 5634: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5646: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5647: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

---------

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5764: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5765: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* 🖼️ feat: Tool Call and Loading UI Refresh, Image Resize Config (danny-avila#7086)

* ✨ feat: Enhance Spinner component with customizable properties and improved animation

* 🔧 fix: Replace Loader with Spinner in RunCode component and update FilePreview to use Spinner for progress indication

* ✨ feat: Refactor icons in CodeProgress and CancelledIcon components; enhance animation and styling in ExecuteCode and ProgressText components

* ✨ feat: Refactor attachment handling in ExecuteCode component; replace individual attachment rendering with AttachmentGroup for improved structure

* ✨ feat: Refactor dialog components for improved accessibility and styling; integrate Skeleton loading state in Image component

* ✨ feat: Refactor ToolCall component to use ToolCallInfo for better structure; replace ToolPopover with AttachmentGroup; enhance ProgressText with error handling and improved UI elements

* 🔧 fix: Remove unnecessary whitespace in ProgressText

* 🔧 fix: Remove unnecessary margin from AgentFooter and AgentPanel components; clean up SidePanel imports

* ✨ feat: Enhance ToolCall and ToolCallInfo components with improved styling; update translations and add warning text color to Tailwind config

* 🔧 fix: Update import statement for useLocalize in ToolCallInfo component; fix: chatform transition

* ✨ feat: Refactor ToolCall and ToolCallInfo components for improved structure and styling; add optimized code block for better output display

* ✨ feat: Implement OpenAI image generation component; add progress tracking and localization for user feedback

* 🔧 fix: Adjust base duration values for image generation; optimize timing for quality settings

* chore: remove unnecessary space

* ✨ feat: Enhance OpenAI image generation with editing capabilities; update localization for progress feedback

* ✨ feat: Add download functionality to images; enhance DialogImage component with download button

* ✨ feat: Enhance image resizing functionality; support custom percentage and pixel dimensions in resizeImageBuffer

* 📊 feat: Improve Helm Chart (danny-avila#3638)

* Replaced Helm Charts with Blue Atlas Charts

* Fix Workflow

* improve docs

* update gitignore

* Update docs

* change values order, add hpa

* change tls example domain

* Default: Enable liveness and readiness

* chore: bump base chart

* apply requested changes

* add Release fix

* add: error handling

* chore: cleanup and testing

* fix: adjust Chart.yaml

---------

Co-authored-by: hofq <[email protected]>
Co-authored-by: Ruben Talstra <[email protected]>

* 📜 docs: Unreleased Changelog (danny-avila#7434)

* action: update Unreleased changelog

* Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Danny Avila <[email protected]>

* 🛡️ chore: `multer` v2.0.0 for CVE-2025-47935 and CVE-2025-47944 (danny-avila#7454)

* chore: bump multer to v2.0.0 to resolve CVE-2025-47935 and CVE-2025-47944

* chore: temp. remove helmet dependency to appease unused NPM package workflow

* 🎚️ feat: Custom Parameters (danny-avila#7342)

* #

* - refactor: simplified getCustomConfig func

* #

* - feature: persist values for parameters with optionType of custom

* #

* - refactor: moved `Parameters/settings.ts` into `data-provider` so that both frontend and backend code can use it.

* - feature: loadCustomConfig can now parse and validate customParams property for `endpoints.custom` in `librechat.yaml`

* # fixed linter

* # removed .strict() in config.ts

* change: added packages/data-provider/src to SOURCE_DIRS for i18n check

* # removed unnecessary lodash imports

* # addressed PR comments
# fixed lint for updated files

* # better import for lodash (w/o relying on tree-shaking)

* 📃 fix: Ensure MCP Resources Pass Name and Description Fields to LLM (danny-avila#7442)

* 🔗 feat: Support Environment Variables in MCP URL Config (danny-avila#7424)

* 🦙 chore: Add `llama-4` to Vision Models List (danny-avila#7433)

* 🔧 fix: File Deletion for Azure Assistants API (danny-avila#7466)

* 🔬 fix: File Search Request Format (Azure Assistants API) (danny-avila#7404)

* fix: The request format for file analysis with Azure OpenAI assistants

  The request format for file analysis with Azure OpenAI assistants differs from that of OpenAI. This fix updates the API to use attachments instead of file_ids. danny-avila#7379

* chore: ESLint Error

---------

Co-authored-by: Danny Avila <[email protected]>

* 🖼️ chore: Linting & Transition Styling in UI Components (danny-avila#7467)

* chore: linting

* 🔧 fix: Correctly parse dimensions for image width and height in OpenAIImageGen component

* style: overlay class for DialogImage component to improve visibility

* style: Update transition timing function for PixelCard component to rely on style props

* ✅ fix: Emojis rendering in `SplitText` Animation (danny-avila#7460)

* 📂 refactor: Improve `FileAttachment` & File Form Deletion (danny-avila#7471)

* refactor: optional attachment properties for `FileAttachment`

* refactor: update ActionButton to use localized text

* chore: localize text in DataTableFile, add missing translation, imports order, and linting

* chore: linting in DataTable

* fix: integrate Recoil state management for file deletion in DataTableFile

* fix: integrate Recoil state management for file deletion in DataTable

* fix: add temp_file_id to BatchFile type and update deleteFiles logic to properly remove files that are mapped to temp_file_id

* 🌍 i18n: Update translation.json with latest translations (danny-avila#7468)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* 🦾 feat: Claude-4 Support (danny-avila#7509)

* refactor: Update AnthropicClient to support Claude model naming changes

* Renamed `isClaude3` to `isClaudeLatest` to accommodate newer Claude models.
* Updated logic to determine if the model is part of the Claude family.
* Adjusted `useMessages` property to reflect the new model naming convention.
* Cleaned up client properties during disposal to match the updated naming.

* feat: Claude-4 Support

* feat: Add Thinking and Prompt caching support for Claude 4

* chore: Update ANTHROPIC_MODELS in .env.example for latest model versions

* 📊 chore: Remove Old Helm Chart (danny-avila#7512)

Co-authored-by: hofq <[email protected]>

* 🪨 feat: Bedrock Support for Claude-4 Reasoning (danny-avila#7517)

* 🗑️ chore: Update .gitignore to reflect AI-related files

* chore: linting in Bedrock options.js

* 🪨 feat: Bedrock Claude-4 Reasoning

* 🪖 chore: bump helm app version to v0.7.8 (danny-avila#7524)

- bump helm app version to match the latest
      release version

* ⌛ feat: Agent Version History and Management (danny-avila#7455)

* ✨ feat: Enhance agent update functionality to save current state in versions array

- Updated the `updateAgent` function to push the current agent's state into a new `versions` array when an agent is updated.
- Modified the agent schema to include a `versions` field for storing historical states of agents.

* ✨ feat: Add comprehensive CRUD operations for agents in tests

- Introduced a new test suite for CRUD operations on agents, including create, read, update, and delete functionalities.
- Implemented tests for listing agents by author and updating agent projects.
- Enhanced the agent model to support version history tracking during updates.
- Ensured proper environment variable management during tests.

* ✨ feat: Introduce version tracking for agents and enhance UI components

- Added a `version` property to the agent model to track the number of versions.
- Updated the `getAgentHandler` to include the agent's version in the response.
- Introduced a new `VersionButton` component for navigating to the version panel.
- Created a `VersionPanel` component for displaying version-related information.
- Updated the UI to conditionally render the version button and panel based on the active state.
- Added localization for the new version-related UI elements.

* ✨ i18n: Add "version" translation key across multiple languages

- Introduced the "com_ui_agent_version" translation key in various language files to support version tracking for agents.
- Updated Arabic, Czech, German, English, Spanish, Estonian, Persian, Finnish, French, Hebrew, Hungarian, Indonesian, Italian, Japanese, Korean, Dutch, Polish, Portuguese (Brazil and Portugal), Russian, Swedish, Thai, Turkish, Vietnamese, and Chinese (Simplified and Traditional) translations.

* ✨ feat: Update AgentFooter to conditionally render AdminSettings

- Modified the logic for displaying buttons in the AgentFooter component to only show them when the active panel is the builder.
- Ensured that AdminSettings is displayed only when the user has an admin role and the buttons are visible.

* ✨ feat: Enhance AgentPanelSwitch and VersionPanel for improved agent capabilities

- Updated AgentPanelSwitch to include a new VersionPanel for displaying version-related information.
- Enhanced agentsConfig logic to properly handle agent capabilities.
- Modified VersionPanel to improve structure and localization support.
- Integrated createAgent mutation for future agent creation functionality.

* ✨ feat: Enhance VersionPanel to display agent version history and loading states

- Integrated version fetching logic in VersionPanel to retrieve and display agent version history.
- Added loading and error handling states to improve user experience.
- Updated agent schema to use mixed types for versions, allowing for more flexible version data structures.
- Introduced localization support for version-related UI elements.

* ✨ feat: Update VersionPanel and AgentPanelSwitch to enhance agent selection and version display

- Modified AgentPanelSwitch to pass selectedAgentId to VersionPanel for improved agent context.
- Enhanced VersionPanel to handle multiple timestamp formats and display appropriate messages when no agent is selected.
- Improved structure and readability of the VersionPanel component by adding a helper function for timestamp retrieval.

* ✨ feat: Refactor VersionPanel to utilize localization and improve timestamp handling

- Replaced hardcoded text constants with localization support for various UI elements in VersionPanel.
- Enhanced the timestamp retrieval function to handle errors gracefully and utilize localized messages for unknown dates.
- Improved user feedback by displaying localized messages for agent selection, version errors, and empty states.

* ✨ refactor: Clean up VersionPanel by removing unused code and improving timestamp handling

* ✨ feat: Implement agent version reverting functionality

- Added `revertAgentVersion` method in the Agent model to allow reverting to a previous version of an agent.
- Introduced `revertAgentVersionHandler` in the agents controller to handle requests for reverting agent versions.
- Updated API routes to include a new endpoint for reverting agent versions.
- Enhanced the VersionPanel component to support version restoration with user confirmation and feedback.
- Added localization support for success and error messages related to version restoration.

* ✨ i18n: Add localization for agent version restoration messages

* Simplify VersionPanel by removing unused parameters and enhancing agent ID handling

* Refactor Agent model and VersionPanel component to streamline version data handling

* Update version handling in Agent model and VersionPanel

- Enhanced the Agent model to include an `updatedAt` timestamp when pushing new versions.
- Improved the VersionPanel component to sort versions by the `updatedAt` timestamp for better display order.
- Added a new localization entry for indicating the active version of an agent.

* ✨ i18n: Add localization for active agent version across multiple languages

* ✨ feat: Introduce version management components for agent history

- Added `isActiveVersion` utility to determine the active version of an agent based on various criteria.
- Implemented `VersionContent` and `VersionItem` components to display agent version history, including loading and error states.
- Enhanced `VersionPanel` to integrate new components and manage version context effectively.
- Added comprehensive tests for version management functionalities to ensure reliability and correctness.

* Add unit tests for AgentFooter component

* cleanup

* Enhance agent version update handling and add unit tests for update operators

- Updated the `updateAgent` function to properly handle various update operators ($push, $pull, $addToSet) while maintaining version history.
- Modified unit tests to validate the correct behavior of agent updates, including versioning and tool management.

* Enhance version comparison logic and update tests for artifacts handling

- Modified the `isActiveVersion` utility to include artifacts in the version comparison criteria.
- Updated the `VersionPanel` component to support artifacts in the agent state.
- Added new unit tests to validate artifacts matching scenarios and edge cases in the `isActiveVersion` function.

* Implement duplicate version detection in agent updates and enhance error handling

- Added `isDuplicateVersion` function to check for identical versions during agent updates, excluding certain fields.
- Updated `updateAgent` function to throw an error if a duplicate version is detected, with detailed error information.
- Enhanced the `updateAgentHandler` to return appropriate responses for duplicate version errors.
- Modified client-side error handling to display user-friendly messages for duplicate version scenarios.
- Added comprehensive unit tests to validate duplicate version detection and error handling across various update scenarios.

* Update version title localization to include version number across multiple languages

- Modified the `com_ui_agent_version_title` translation key to include a placeholder for the version number in various language files.
- Enhanced the `VersionItem` component to utilize the updated localization for displaying version titles dynamically.

* Enhance agent version handling and add revert functionality

- Updated the `isDuplicateVersion` function to improve version comparison logic, including special handling for `projectIds` and arrays of objects.
- Modified the `updateAgent` function to streamline version updates and removed unnecessary checks for test environments.
- Introduced a new `revertAgentVersion` function to allow reverting agents to specific versions, with detailed documentation.
- Enhanced unit tests to validate duplicate version detection and revert functionality, ensuring robust error handling and version management.

* fix CI issues

* cleanup

* Revert all non-English translations

* clean up tests

* *️⃣ feat: Reuse OpenID Auth Tokens (danny-avila#7397)

* feat: integrate OpenID Connect support with token reuse

- Added `jwks-rsa` and `new-openid-client` dependencies for OpenID Connect functionality.
- Implemented OpenID token refresh logic in `AuthController`.
- Enhanced `LogoutController` to handle OpenID logout and session termination.
- Updated JWT authentication middleware to support OpenID token provider.
- Modified OAuth routes to accommodate OpenID authentication and token management.
- Created `setOpenIDAuthTokens` function to manage OpenID tokens in cookies.
- Upgraded OpenID strategy with user info fetching and token exchange protocol.
- Introduced `openIdJwtLogin` strategy for handling OpenID JWT tokens.
- Added caching mechanism for exchanged OpenID tokens.
- Updated configuration to include OpenID exchanged tokens cache key.
- updated .env.example to include the new env variables needed for the feature.

* fix: update return type in downloadImage documentation for clarity and fixed openIdJwtLogin env variables

* fix: update Jest configuration and tests for OpenID strategy integration

* fix: update OpenID strategy to include callback URL in setup

* fix: fix optionalJwtAuth middleware to support OpenID token reuse and improve currentUrl method in CustomOpenIDStrategy to override the dynamic host issue related to proxy (e.g. cloudfront)

* fix: fixed code formatting

* Fix: Add mocks for openid-client and passport strategy in Jest configuration to fix unit tests

* fix eslint errors: Format mock file openid-client.

* ✨ feat: Add PKCE support for OpenID and default handling in strategy setup

---------

Co-authored-by: Atef Bellaaj <[email protected]>
Co-authored-by: Ruben Talstra <[email protected]>

* 🔎 feat: Native Web Search with Citation References (danny-avila#7516)

* WIP: search tool integration

* WIP: Add web search capabilities and API key management to agent actions

* WIP: web search capability to agent configuration and selection

* WIP: Add web search capability to backend agent configuration

* WIP: add web search option to default agent form values

* WIP: add attachments for web search

* feat: add plugin for processing web search citations

* WIP: first pass, Citation UI

* chore: remove console.log

* feat: Add AnimatedTabs component for tabbed UI functionality

* refactor: AnimatedTabs component with CSS animations and stable ID generation

* WIP example content

* feat: SearchContext for managing search results apart from MessageContext

* feat: Enhance AnimatedTabs with underline animation and state management

* WIP: first pass, Implement dynamic tab functionality in Sources component with search results integration

* fix: Update class names for improved styling in Sources and AnimatedTabs components

* feat: Improve styling and layout in Sources component with enhanced button and item designs

* feat: Refactor Sources component to integrate OGDialog for source display and improve layout

* style: Update background color in SourceItem and SourcesGroup components for improved visibility

* refactor: Sources component to enhance SourceItem structure and improve favicon handling

* style: Adjust font size of domain text in SourceItem for better readability

* feat: Add localization for citation source and details in CompositeCitation component

* style: add theming to Citation components

* feat: Enhance SourceItem component with dialog support and improved hovercard functionality

* feat: Add localization for sources tab and image alt text in Sources component

* style: Replace divs with spans for better semantic structure in CompositeCitation and Citation components

* refactor: Sources component to use useMemo for tab generation and improve performance

* chore: bump @librechat/agents to v2.4.318

* chore: update search result types

* fix: search results retrieval in ContentParts component, re-render attachments when expected

* feat: update sources style/types to use latest search result structure

* style: enhance Dialog (expanded) SourceItem component with link wrapping and improved styling

* style: update ImageItem component styling for improved title visibility

* refactor: remove SourceItemBase component and adjust SourceItem layout for improved styling

* chore: linting twcss order

* fix: prevent FileAttachment from rendering search attachments

* fix: append underscore to responseMessageId for unique identification to prevent mapping of previous latest message's attachments

* chore: remove unused parameter 'useSpecs' from loadTools function

* chore: twcss order

* WIP: WebSearch Tool UI

* refactor: add limit parameter to StackedFavicons for customizable source display

* refactor: optimize search results memoization by making more granular and separate conerns

* refactor: integrated StackedFavicons to WebSearch mid-run

* chore: bump @librechat/agents to expose handleToolCallChunks

* chore: use typedefs from dedicated file instead of defining them in AgentClient module

* WIP: first pass, search progress results

* refactor: move createOnSearchResults function to a dedicated search module

* chore: bump @librechat/agents to v2.4.320

* WIP: first pass, search results processed UX

* refactor: consolidate context variables in createOnSearchResults function

* chore: bump @librechat/agents to v2.4.321

* feat: add guidelines for web search tool response formatting in loadTools function

* feat: add isLast prop to Part component and update WebSearch logic for improved state handling

* style: update Hovercard styles for improved UI consistency

* feat: export FaviconImage component for improved accessibility in other modules

* refactor: export getCleanDomain function and use FaviconImage in Citation component for improved source representation

* refactor: implement SourceHovercard component for consistency and DRY compliance

* fix: replace <p> with <span> for snippet and title in SourceItem and SourceHovercard for consistency

* style: `not-prose`

* style: remove 'not-prose' class for consistency in SourceItem, Citation, and SourceHovercard components, adjust style classes

* refactor: `imageUrl` on hover and prevent duplicate sources

* refactor: enhance SourcesGroup dialog layout and improve source item presentation

* refactor: reorganize Web Components, save in same directory

* feat: add 'news' refType to refTypeMap for citation sources

* style: adjust Hovercard width for improved layout

* refactor: update tool usage guidelines for improved clarity and execution

* chore: linting

* feat: add Web Search badge with initial permissions and local storage logic

* feat: add webSearch support to interface and permissions schemas

* feat: implement Web Search API key management and localization updates

* feat: refactor Web Search API key handling and integrate new search API key form

* fix: remove unnecessary visibility state from FileAttachment component

* feat: update WebSearch component to use Globe icon and localized search label

* feat: enhance ApiKeyDialog with dropdown for reranker selection and update translations

* feat: implement dropdown menus for engine, scraper, and reranker selection in ApiKeyDialog

* chore: linting and add unknown instead of `any` type

* feat: refactor ApiKeyDialog and useAuthSearchTool for improved API key management

* refactor: update ocrSchema to use template literals for default apiKey and baseURL

* feat: add web search configuration and utility functions for environment variable extraction

* fix: ensure filepath is defined before checking its prefix in useAttachmentHandler

* feat: enhance web search functionality with improved configuration and environment variable extraction for authFields

* fix: update auth type in TPluginAction and TUpdateUserPlugins to use Partial<Record<string, string>>

* feat: implement web search authentication verification and enhance webSearchAuth structure

* feat: enhance ephemeral agent handling with new web search capability and type definition

* feat: enhance isEphemeralAgent function to include web search selection

* feat: refactor verifyWebSearchAuth to improve key handling and authentication checks

* feat: implement loadWebSearchAuth function for improved web search authentication handling

* feat: enhance web search authentication with new configuration options and refactor related types

* refactor: rename search engine to search provider and update related localization keys

* feat: update verifyWebSearchAuth to handle multiple authentication types and improve error handling

* feat: update ApiKeyDialog to accept authTypes prop and remove isUserProvided check

* feat: add tests for extractWebSearchEnvVars and loadWebSearchAuth functions

* feat: enhance loadWebSearchAuth to support specific service checks for providers, scrapers, and rerankers

* fix: update web search configuration key and adjust auth result handling in loadTools function

* feat: add new progress key for repeated web searching and update localization

* chore: bump @librechat/agents to 2.4.322

* feat: enhance loadTools function to include ISO time and improve search tool logging

* feat: update StackedFavicons to handle negative start index and improve citation attribution styling and text

* chore: update .gitignore to categorize AI-related files

* fix: mobile responsiveness of sources/citations hovercards

* feat: enhance source display with improved line clamping for better readability

* chore: bump @librechat/agents to v2.4.33

* feat: add handling for image sources in references mapping

* chore: bump librechat-data-provider version to 0.7.84

* chore: bump @librechat/agents version to 2.4.34

* fix: update auth handling to support multiple auth types in tools and allow key configuration in agent panel

* chore: remove redundant agent attribution text from search form

* fix: web search auth uninstall

* refactor: convert CheckboxButton to a forwardRef component and update setValue callback signature

* feat: add triggerRef prop to ApiKeyDialog components for improved dialog control

* feat: integrate triggerRef in CodeInterpreter and WebSearch components for enhanced dialog management

* feat: enhance ApiKeyDialog with additional links for Firecrawl and Jina API key guidance

* feat: implement web search configuration handling in ApiKeyDialog and add tests for dropdown visibility

* fix: update webSearchConfig reference in config route for correct payload assignment

* feat: update ApiKeyDialog to conditionally render sections based on authTypes and modify loadWebSearchAuth to correctly categorize authentication types

* feat: refactor ApiKeyDialog and related tests to use SearchCategories and RerankerTypes enums and remove nested ternaries

* refactor: move ThinkingButton rendering to improve layout consistency in ContentParts

* feat: integrate search context into Markdown component to conditionally include unicodeCitation plugin

* chore: bump @librechat/agents to v2.4.35

* chore: remove unused 18n key

* ci: add WEB_SEARCH permission testing and update AppService tests for new webSearch configuration

* ci: add more comprehensive tests for loadWebSearchAuth to validate authentication handling and authTypes structure

* chore: remove debugging console log from web.spec.ts to clean up test output

* 🧹 chore: Bump Agents Dependencies (danny-avila#7525)

* chore: bump langchain dependencies

* chore: bump @librechat/agents to v2.4.36

* chore: bump @librechat/agents to v2.4.37

* refactor: simplify remark plugins in Markdown component with no conditional usage

* 🔧 refactor: Progress Text Localization for Running Tools (danny-avila#7526)

* 🔧 chore: Bump Data Provider and Custom Config Versions (danny-avila#7527)

* 🔧 chore: Update CONFIG_VERSION to 1.2.6

* 🔧 chore: Update librechat-data-provider version to 0.7.85

* 👤 feat: Enhance Agent Versioning to Track User Updates (danny-avila#7523)

* feat: Enhance agent update functionality to track user updates

- Updated `updateAgent` function to accept an `updatingUserId` parameter for tracking who made changes.
- Modified agent versioning to include `updatedBy` field for better audit trails.
- Adjusted related functions and tests to ensure proper handling of user updates and version history.
- Enhanced tests to verify correct tracking of `updatedBy` during agent updates and restorations.

* fix: Refactor import tests for improved readability and consistency

- Adjusted formatting in `importChatGptConvo` test to enhance clarity.
- Updated expected output string in `processAssistantMessage` test to use double quotes for consistency.
- Modified processing time expectation in `processAssistantMessage` test to allow for CI environment variability.

* 🧩 feat: Web Search Config Validations & Clipboard Citation Processing (danny-avila#7530)

* 🔧 chore: Add missing optional `scraperTimeout` to webSearchSchema

* chore: Add missing optional `scraperTimeout` to web search authentication result

* chore: linting

* feat: Integrate attachment handling and citation processing in message components

- Added `useAttachments` hook to manage message attachments and search results.
- Updated `MessageParts`, `ContentParts`, and `ContentRender` components to utilize the new hook for improved attachment handling.
- Enhanced `useCopyToClipboard` to format citations correctly, including support for composite citations and deduplication.
- Introduced utility functions for citation processing and cleanup.
- Added tests for the new `useCopyToClipboard` functionality to ensure proper citation formatting and handling.

* feat: Add configuration for LibreChat Code Interpreter API and Web Search variables

* fix: Update searchResults type to use SearchResultData for better type safety

* feat: Add web search configuration validation and logging

- Introduced `checkWebSearchConfig` function to validate web search configuration values, ensuring they are environment variable references.
- Added logging for proper configuration and warnings for incorrect values.
- Created unit tests for `checkWebSearchConfig` to cover various scenarios, including valid and invalid configurations.

* docs: Update README to include Web Search feature details

- Added a section for the Web Search feature, highlighting its capabilities to search the internet and enhance AI context.
- Included links for further information on the Web Search functionality.

* ci: Add mock for checkWebSearchConfig in AppService tests

* chore: linting

* feat: Enhance Shared Messages with Web Search UI by adding searchResults prop to SearchContent and MinimalHoverButtons components

* chore: linting

* refactor: remove Meilisearch index sync from importConversations function

* feat: update safeSearch implementation to use SafeSearchTypes enum

* refactor: remove commented-out code in loadTools function

* fix: ensure responseMessageId handles latestMessage ID correctly

* feat: enhance Vite configuration for improved chunking and caching

- Added additional globIgnores for map files in Workbox configuration.
- Implemented high-impact chunking for various large libraries to optimize performance.
- Increased chunkSizeWarningLimit from 1200 to 1500 for better handling of larger chunks.

* refactor: move health check hook to Root, fix bad setState for Temporary state

- Enhanced the `useHealthCheck` hook to initiate health checks only when the user is authenticated.
- Added logic for managing health check intervals and handling window focus events.
- Introduced a new test suite for `useHealthCheck` to cover various scenarios including authentication state changes and error handling.
- Removed the health check invocation from `ChatRoute` and added it to `Root` for global health monitoring.

* fix: update font alias in Vite configuration for correct path resolution

* 🌍 i18n: Update translation.json with latest translations (danny-avila#7532)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* 🔧 chore: Update data-provider dependencies for typing (danny-avila#7533)

- Updated dependencies to include @langchain/core and @types/winston in both package-lock.json and data-provider package.json.

* 🔧 fix: Artifacts Display Crash on Close and Max Width (danny-avila#7540)

* 🔧 chore: Update react-resizable-panels dependency to version 3.0.2 in package.json and package-lock.json

* fix: Simplify order assignment in SidePanel component based on hasArtifacts condition, fixed frontend crash when artifacts are closed

* refactor: Change throttledSaveLayout to use useMemo for improved performance in SidePanelGroup component

* refactor: Update dependencies in SidePanel component's useEffect hooks for improved responsiveness

* 🏷️ refactor: EditPresetDialog UI and Remove `chatGptLabel` from Presets (danny-avila#7543)

* fix: add necessary dep., remove unnecessary dep from useMentions memoization

* fix: Migrate deprecated chatGptLabel to modelLabel in cleanupPreset and simplify getPresetTitle logic

* fix: Enhance cleanupPreset to remove empty chatGptLabel and add comprehensive tests for label migration and preset handling

* chore: Update endpointType prop in PopoverButtons to allow null values for better flexibility

* refactor: Replace Dialog with OGDialog in EditPresetDialog for improved UI consistency and structure

* style: Update EditPresetDialog layout and styling for improved responsiveness and consistency

* 📦 refactor: Add Additional Chunking to Vite Config (danny-avila#7544)

* ⚡ refactor: Add Additional Chunking to Vite Config

* chore: Integrate rollup-plugin-visualizer for bundle analysis in Vite config & add @codemirror chunks

* ⌚ fix: Debounce `setUserContext` and Default State Param for OpenID Auth (danny-avila#7559)

* fix: Add default random state parameter to OpenID auth request for providers that require it; ensure passport strategy uses it

* ⌚ refactor: debounce setUserContext to avoid race condition

* refactor: Update OpenID authentication to use randomState from openid-client

* chore: linting in presetSettings type definition

* chore: import order in ModelPanel

* refactor: remove `isLegacyOutput` property from AnthropicClient since only used where defined, add latest models to non-legacy patterns, and remove from client cleanup

* refactor: adjust grid layout in Parameters component for improved responsiveness

* refactor: adjust grid layout in ModelPanel for improved display of model parameters

* test: add cases for maxOutputTokens handling in Claude 4 Sonnet and Opus models

* ci: mock loadCustomConfig in server tests and refactor OpenID route for improved authentication handling

* 🚀 feat: Implement Auto-Refill Settings for Balance

* fix: ESLint

* ✨ feat: Enhance Auto-Refill Settings with Validation and Localization

---------

Co-authored-by: andresgit <[email protected]>
Co-authored-by: matt burnett <[email protected]>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: Marco Beretta <[email protected]>
Co-authored-by: hofq <[email protected]>
Co-authored-by: hofq <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Danny Avila <[email protected]>
Co-authored-by: Theo N. Truong <[email protected]>
Co-authored-by: René Honig <[email protected]>
Co-authored-by: Ben Verhees <[email protected]>
Co-authored-by: Amgad Hasan <[email protected]>
Co-authored-by: arthurolivierfortin <[email protected]>
Co-authored-by: Danny Avila <[email protected]>
Co-authored-by: Sebastien Bruel <[email protected]>
Co-authored-by: Austin Barrington <[email protected]>
Co-authored-by: Peter <[email protected]>
Co-authored-by: Atef Bellaaj <[email protected]>
derhelge pushed a commit to derhelge/LibreChat that referenced this pull request Jun 1, 2025
* 🚀 feat: Implement Auto-Refill Settings for Balance

* 🎨 feat: add `copy-tex` to improve copying KaTeX (danny-avila#7308)

When selecting equations and using copy paste, uses the correct latex code.

Co-authored-by: Ruben Talstra <[email protected]>

* 🔃 refactor: `AgentFooter` to conditionally render buttons based on `activePanel` (danny-avila#7306)

* 🚀 feat: Add `Cloudflare Turnstile` support (danny-avila#5987)

* 🚀 feat: Add @marsidev/react-turnstile dependency to package.json and package-lock.json

* 🚀 feat: Integrate Cloudflare Turnstile configuration support in AppService and add schema validation

* 🚀 feat: Implemented Cloudflare Turnstile integration in Login and Registration forms

* 🚀 feat: Enhance AppService tests with additional mocks and configuration setups

* 🚀 feat: Comment out outdated config version warning tests in AppService.spec.js

* 🚀 feat: Remove outdated warning tests and add new checks for environment variables and API health

* 🔧 test: Update AppService.spec.js to use expect.anything() for paths validation

* 🔧 test: Refactor AppService.spec.js to streamline mocks and enhance clarity

* 🔧 chore: removed not needed test

* Potential fix for code scanning alert no. 5638: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5629: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5642: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Update turnstile.js

* Potential fix for code scanning alert no. 5634: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5646: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5647: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

---------

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5764: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5765: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* 🖼️ feat: Tool Call and Loading UI Refresh, Image Resize Config (danny-avila#7086)

* ✨ feat: Enhance Spinner component with customizable properties and improved animation

* 🔧 fix: Replace Loader with Spinner in RunCode component and update FilePreview to use Spinner for progress indication

* ✨ feat: Refactor icons in CodeProgress and CancelledIcon components; enhance animation and styling in ExecuteCode and ProgressText components

* ✨ feat: Refactor attachment handling in ExecuteCode component; replace individual attachment rendering with AttachmentGroup for improved structure

* ✨ feat: Refactor dialog components for improved accessibility and styling; integrate Skeleton loading state in Image component

* ✨ feat: Refactor ToolCall component to use ToolCallInfo for better structure; replace ToolPopover with AttachmentGroup; enhance ProgressText with error handling and improved UI elements

* 🔧 fix: Remove unnecessary whitespace in ProgressText

* 🔧 fix: Remove unnecessary margin from AgentFooter and AgentPanel components; clean up SidePanel imports

* ✨ feat: Enhance ToolCall and ToolCallInfo components with improved styling; update translations and add warning text color to Tailwind config

* 🔧 fix: Update import statement for useLocalize in ToolCallInfo component; fix: chatform transition

* ✨ feat: Refactor ToolCall and ToolCallInfo components for improved structure and styling; add optimized code block for better output display

* ✨ feat: Implement OpenAI image generation component; add progress tracking and localization for user feedback

* 🔧 fix: Adjust base duration values for image generation; optimize timing for quality settings

* chore: remove unnecessary space

* ✨ feat: Enhance OpenAI image generation with editing capabilities; update localization for progress feedback

* ✨ feat: Add download functionality to images; enhance DialogImage component with download button

* ✨ feat: Enhance image resizing functionality; support custom percentage and pixel dimensions in resizeImageBuffer

* 📊 feat: Improve Helm Chart (danny-avila#3638)

* Replaced Helm Charts with Blue Atlas Charts

* Fix Workflow

* improve docs

* update gitignore

* Update docs

* change values order, add hpa

* change tls example domain

* Default: Enable liveness and readiness

* chore: bump base chart

* apply requested changes

* add Release fix

* add: error handling

* chore: cleanup and testing

* fix: adjust Chart.yaml

---------

Co-authored-by: hofq <[email protected]>
Co-authored-by: Ruben Talstra <[email protected]>

* 📜 docs: Unreleased Changelog (danny-avila#7434)

* action: update Unreleased changelog

* Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Danny Avila <[email protected]>

* 🛡️ chore: `multer` v2.0.0 for CVE-2025-47935 and CVE-2025-47944 (danny-avila#7454)

* chore: bump multer to v2.0.0 to resolve CVE-2025-47935 and CVE-2025-47944

* chore: temp. remove helmet dependency to appease unused NPM package workflow

* 🎚️ feat: Custom Parameters (danny-avila#7342)

* #

* - refactor: simplified getCustomConfig func

* #

* - feature: persist values for parameters with optionType of custom

* #

* - refactor: moved `Parameters/settings.ts` into `data-provider` so that both frontend and backend code can use it.

* - feature: loadCustomConfig can now parse and validate customParams property for `endpoints.custom` in `librechat.yaml`

* # fixed linter

* # removed .strict() in config.ts

* change: added packages/data-provider/src to SOURCE_DIRS for i18n check

* # removed unnecessary lodash imports

* # addressed PR comments

* # better import for lodash (w/o relying on tree-shaking)

* 📃 fix: Ensure MCP Resources Pass Name and Description Fields to LLM (danny-avila#7442)

* 🔗 feat: Support Environment Variables in MCP URL Config (danny-avila#7424)

* 🦙 chore: Add `llama-4` to Vision Models List (danny-avila#7433)

* 🔧 fix: File Deletion for Azure Assistants API (danny-avila#7466)

* 🔬 fix: File Search Request Format (Azure Assistants API) (danny-avila#7404)

* fix: The request format for file analysis with Azure OpenAI assistants

  The request format for file analysis with Azure OpenAI assistants differs from that of OpenAI. This fix updates the API to use attachments instead of file_ids. danny-avila#7379

* chore: ESLint Error

---------

Co-authored-by: Danny Avila <[email protected]>

* 🖼️ chore: Linting & Transition Styling in UI Components (danny-avila#7467)

* chore: linting

* 🔧 fix: Correctly parse dimensions for image width and height in OpenAIImageGen component

* style: overlay class for DialogImage component to improve visibility

* style: Update transition timing function for PixelCard component to rely on style props

* ✅ fix: Emojis rendering in `SplitText` Animation (danny-avila#7460)

* 📂 refactor: Improve `FileAttachment` & File Form Deletion (danny-avila#7471)

* refactor: optional attachment properties for `FileAttachment`

* refactor: update ActionButton to use localized text

* chore: localize text in DataTableFile, add missing translation, imports order, and linting

* chore: linting in DataTable

* fix: integrate Recoil state management for file deletion in DataTableFile

* fix: integrate Recoil state management for file deletion in DataTable

* fix: add temp_file_id to BatchFile type and update deleteFiles logic to properly remove files that are mapped to temp_file_id

* 🌍 i18n: Update translation.json with latest translations (danny-avila#7468)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* 🦾 feat: Claude-4 Support (danny-avila#7509)

* refactor: Update AnthropicClient to support Claude model naming changes

* Renamed `isClaude3` to `isClaudeLatest` to accommodate newer Claude models.
* Updated logic to determine if the model is part of the Claude family.
* Adjusted `useMessages` property to reflect the new model naming convention.
* Cleaned up client properties during disposal to match the updated naming.

* feat: Claude-4 Support

* feat: Add Thinking and Prompt caching support for Claude 4

* chore: Update ANTHROPIC_MODELS in .env.example for latest model versions

* 📊 chore: Remove Old Helm Chart (danny-avila#7512)

Co-authored-by: hofq <[email protected]>

* 🪨 feat: Bedrock Support for Claude-4 Reasoning (danny-avila#7517)

* 🗑️ chore: Update .gitignore to reflect AI-related files

* chore: linting in Bedrock options.js

* 🪨 feat: Bedrock Claude-4 Reasoning

* 🪖 chore: bump helm app version to v0.7.8 (danny-avila#7524)

- bump helm app version to match the latest
      release version

* ⌛ feat: Agent Version History and Management (danny-avila#7455)

* ✨ feat: Enhance agent update functionality to save current state in versions array

- Updated the `updateAgent` function to push the current agent's state into a new `versions` array when an agent is updated.
- Modified the agent schema to include a `versions` field for storing historical states of agents.

* ✨ feat: Add comprehensive CRUD operations for agents in tests

- Introduced a new test suite for CRUD operations on agents, including create, read, update, and delete functionalities.
- Implemented tests for listing agents by author and updating agent projects.
- Enhanced the agent model to support version history tracking during updates.
- Ensured proper environment variable management during tests.

* ✨ feat: Introduce version tracking for agents and enhance UI components

- Added a `version` property to the agent model to track the number of versions.
- Updated the `getAgentHandler` to include the agent's version in the response.
- Introduced a new `VersionButton` component for navigating to the version panel.
- Created a `VersionPanel` component for displaying version-related information.
- Updated the UI to conditionally render the version button and panel based on the active state.
- Added localization for the new version-related UI elements.

* ✨ i18n: Add "version" translation key across multiple languages

- Introduced the "com_ui_agent_version" translation key in various language files to support version tracking for agents.
- Updated Arabic, Czech, German, English, Spanish, Estonian, Persian, Finnish, French, Hebrew, Hungarian, Indonesian, Italian, Japanese, Korean, Dutch, Polish, Portuguese (Brazil and Portugal), Russian, Swedish, Thai, Turkish, Vietnamese, and Chinese (Simplified and Traditional) translations.

* ✨ feat: Update AgentFooter to conditionally render AdminSettings

- Modified the logic for displaying buttons in the AgentFooter component to only show them when the active panel is the builder.
- Ensured that AdminSettings is displayed only when the user has an admin role and the buttons are visible.

* ✨ feat: Enhance AgentPanelSwitch and VersionPanel for improved agent capabilities

- Updated AgentPanelSwitch to include a new VersionPanel for displaying version-related information.
- Enhanced agentsConfig logic to properly handle agent capabilities.
- Modified VersionPanel to improve structure and localization support.
- Integrated createAgent mutation for future agent creation functionality.

* ✨ feat: Enhance VersionPanel to display agent version history and loading states

- Integrated version fetching logic in VersionPanel to retrieve and display agent version history.
- Added loading and error handling states to improve user experience.
- Updated agent schema to use mixed types for versions, allowing for more flexible version data structures.
- Introduced localization support for version-related UI elements.

* ✨ feat: Update VersionPanel and AgentPanelSwitch to enhance agent selection and version display

- Modified AgentPanelSwitch to pass selectedAgentId to VersionPanel for improved agent context.
- Enhanced VersionPanel to handle multiple timestamp formats and display appropriate messages when no agent is selected.
- Improved structure and readability of the VersionPanel component by adding a helper function for timestamp retrieval.

* ✨ feat: Refactor VersionPanel to utilize localization and improve timestamp handling

- Replaced hardcoded text constants with localization support for various UI elements in VersionPanel.
- Enhanced the timestamp retrieval function to handle errors gracefully and utilize localized messages for unknown dates.
- Improved user feedback by displaying localized messages for agent selection, version errors, and empty states.

* ✨ refactor: Clean up VersionPanel by removing unused code and improving timestamp handling

* ✨ feat: Implement agent version reverting functionality

- Added `revertAgentVersion` method in the Agent model to allow reverting to a previous version of an agent.
- Introduced `revertAgentVersionHandler` in the agents controller to handle requests for reverting agent versions.
- Updated API routes to include a new endpoint for reverting agent versions.
- Enhanced the VersionPanel component to support version restoration with user confirmation and feedback.
- Added localization support for success and error messages related to version restoration.

* ✨ i18n: Add localization for agent version restoration messages

* Simplify VersionPanel by removing unused parameters and enhancing agent ID handling

* Refactor Agent model and VersionPanel component to streamline version data handling

* Update version handling in Agent model and VersionPanel

- Enhanced the Agent model to include an `updatedAt` timestamp when pushing new versions.
- Improved the VersionPanel component to sort versions by the `updatedAt` timestamp for better display order.
- Added a new localization entry for indicating the active version of an agent.

* ✨ i18n: Add localization for active agent version across multiple languages

* ✨ feat: Introduce version management components for agent history

- Added `isActiveVersion` utility to determine the active version of an agent based on various criteria.
- Implemented `VersionContent` and `VersionItem` components to display agent version history, including loading and error states.
- Enhanced `VersionPanel` to integrate new components and manage version context effectively.
- Added comprehensive tests for version management functionalities to ensure reliability and correctness.

* Add unit tests for AgentFooter component

* cleanup

* Enhance agent version update handling and add unit tests for update operators

- Updated the `updateAgent` function to properly handle various update operators ($push, $pull, $addToSet) while maintaining version history.
- Modified unit tests to validate the correct behavior of agent updates, including versioning and tool management.

* Enhance version comparison logic and update tests for artifacts handling

- Modified the `isActiveVersion` utility to include artifacts in the version comparison criteria.
- Updated the `VersionPanel` component to support artifacts in the agent state.
- Added new unit tests to validate artifacts matching scenarios and edge cases in the `isActiveVersion` function.

* Implement duplicate version detection in agent updates and enhance error handling

- Added `isDuplicateVersion` function to check for identical versions during agent updates, excluding certain fields.
- Updated `updateAgent` function to throw an error if a duplicate version is detected, with detailed error information.
- Enhanced the `updateAgentHandler` to return appropriate responses for duplicate version errors.
- Modified client-side error handling to display user-friendly messages for duplicate version scenarios.
- Added comprehensive unit tests to validate duplicate version detection and error handling across various update scenarios.

* Update version title localization to include version number across multiple languages

- Modified the `com_ui_agent_version_title` translation key to include a placeholder for the version number in various language files.
- Enhanced the `VersionItem` component to utilize the updated localization for displaying version titles dynamically.

* Enhance agent version handling and add revert functionality

- Updated the `isDuplicateVersion` function to improve version comparison logic, including special handling for `projectIds` and arrays of objects.
- Modified the `updateAgent` function to streamline version updates and removed unnecessary checks for test environments.
- Introduced a new `revertAgentVersion` function to allow reverting agents to specific versions, with detailed documentation.
- Enhanced unit tests to validate duplicate version detection and revert functionality, ensuring robust error handling and version management.

* fix CI issues

* cleanup

* Revert all non-English translations

* clean up tests

* *️⃣ feat: Reuse OpenID Auth Tokens (danny-avila#7397)

* feat: integrate OpenID Connect support with token reuse

- Added `jwks-rsa` and `new-openid-client` dependencies for OpenID Connect functionality.
- Implemented OpenID token refresh logic in `AuthController`.
- Enhanced `LogoutController` to handle OpenID logout and session termination.
- Updated JWT authentication middleware to support OpenID token provider.
- Modified OAuth routes to accommodate OpenID authentication and token management.
- Created `setOpenIDAuthTokens` function to manage OpenID tokens in cookies.
- Upgraded OpenID strategy with user info fetching and token exchange protocol.
- Introduced `openIdJwtLogin` strategy for handling OpenID JWT tokens.
- Added caching mechanism for exchanged OpenID tokens.
- Updated configuration to include OpenID exchanged tokens cache key.
- updated .env.example to include the new env variables needed for the feature.

* fix: update return type in downloadImage documentation for clarity and fixed openIdJwtLogin env variables

* fix: update Jest configuration and tests for OpenID strategy integration

* fix: update OpenID strategy to include callback URL in setup

* fix: fix optionalJwtAuth middleware to support OpenID token reuse and improve currentUrl method in CustomOpenIDStrategy to override the dynamic host issue related to proxy (e.g. cloudfront)

* fix: fixed code formatting

* Fix: Add mocks for openid-client and passport strategy in Jest configuration to fix unit tests

* fix eslint errors: Format mock file openid-client.

* ✨ feat: Add PKCE support for OpenID and default handling in strategy setup

---------

Co-authored-by: Atef Bellaaj <[email protected]>
Co-authored-by: Ruben Talstra <[email protected]>

* 🔎 feat: Native Web Search with Citation References (danny-avila#7516)

* WIP: search tool integration

* WIP: Add web search capabilities and API key management to agent actions

* WIP: web search capability to agent configuration and selection

* WIP: Add web search capability to backend agent configuration

* WIP: add web search option to default agent form values

* WIP: add attachments for web search

* feat: add plugin for processing web search citations

* WIP: first pass, Citation UI

* chore: remove console.log

* feat: Add AnimatedTabs component for tabbed UI functionality

* refactor: AnimatedTabs component with CSS animations and stable ID generation

* WIP example content

* feat: SearchContext for managing search results apart from MessageContext

* feat: Enhance AnimatedTabs with underline animation and state management

* WIP: first pass, Implement dynamic tab functionality in Sources component with search results integration

* fix: Update class names for improved styling in Sources and AnimatedTabs components

* feat: Improve styling and layout in Sources component with enhanced button and item designs

* feat: Refactor Sources component to integrate OGDialog for source display and improve layout

* style: Update background color in SourceItem and SourcesGroup components for improved visibility

* refactor: Sources component to enhance SourceItem structure and improve favicon handling

* style: Adjust font size of domain text in SourceItem for better readability

* feat: Add localization for citation source and details in CompositeCitation component

* style: add theming to Citation components

* feat: Enhance SourceItem component with dialog support and improved hovercard functionality

* feat: Add localization for sources tab and image alt text in Sources component

* style: Replace divs with spans for better semantic structure in CompositeCitation and Citation components

* refactor: Sources component to use useMemo for tab generation and improve performance

* chore: bump @librechat/agents to v2.4.318

* chore: update search result types

* fix: search results retrieval in ContentParts component, re-render attachments when expected

* feat: update sources style/types to use latest search result structure

* style: enhance Dialog (expanded) SourceItem component with link wrapping and improved styling

* style: update ImageItem component styling for improved title visibility

* refactor: remove SourceItemBase component and adjust SourceItem layout for improved styling

* chore: linting twcss order

* fix: prevent FileAttachment from rendering search attachments

* fix: append underscore to responseMessageId for unique identification to prevent mapping of previous latest message's attachments

* chore: remove unused parameter 'useSpecs' from loadTools function

* chore: twcss order

* WIP: WebSearch Tool UI

* refactor: add limit parameter to StackedFavicons for customizable source display

* refactor: optimize search results memoization by making more granular and separate conerns

* refactor: integrated StackedFavicons to WebSearch mid-run

* chore: bump @librechat/agents to expose handleToolCallChunks

* chore: use typedefs from dedicated file instead of defining them in AgentClient module

* WIP: first pass, search progress results

* refactor: move createOnSearchResults function to a dedicated search module

* chore: bump @librechat/agents to v2.4.320

* WIP: first pass, search results processed UX

* refactor: consolidate context variables in createOnSearchResults function

* chore: bump @librechat/agents to v2.4.321

* feat: add guidelines for web search tool response formatting in loadTools function

* feat: add isLast prop to Part component and update WebSearch logic for improved state handling

* style: update Hovercard styles for improved UI consistency

* feat: export FaviconImage component for improved accessibility in other modules

* refactor: export getCleanDomain function and use FaviconImage in Citation component for improved source representation

* refactor: implement SourceHovercard component for consistency and DRY compliance

* fix: replace <p> with <span> for snippet and title in SourceItem and SourceHovercard for consistency

* style: `not-prose`

* style: remove 'not-prose' class for consistency in SourceItem, Citation, and SourceHovercard components, adjust style classes

* refactor: `imageUrl` on hover and prevent duplicate sources

* refactor: enhance SourcesGroup dialog layout and improve source item presentation

* refactor: reorganize Web Components, save in same directory

* feat: add 'news' refType to refTypeMap for citation sources

* style: adjust Hovercard width for improved layout

* refactor: update tool usage guidelines for improved clarity and execution

* chore: linting

* feat: add Web Search badge with initial permissions and local storage logic

* feat: add webSearch support to interface and permissions schemas

* feat: implement Web Search API key management and localization updates

* feat: refactor Web Search API key handling and integrate new search API key form

* fix: remove unnecessary visibility state from FileAttachment component

* feat: update WebSearch component to use Globe icon and localized search label

* feat: enhance ApiKeyDialog with dropdown for reranker selection and update translations

* feat: implement dropdown menus for engine, scraper, and reranker selection in ApiKeyDialog

* chore: linting and add unknown instead of `any` type

* feat: refactor ApiKeyDialog and useAuthSearchTool for improved API key management

* refactor: update ocrSchema to use template literals for default apiKey and baseURL

* feat: add web search configuration and utility functions for environment variable extraction

* fix: ensure filepath is defined before checking its prefix in useAttachmentHandler

* feat: enhance web search functionality with improved configuration and environment variable extraction for authFields

* fix: update auth type in TPluginAction and TUpdateUserPlugins to use Partial<Record<string, string>>

* feat: implement web search authentication verification and enhance webSearchAuth structure

* feat: enhance ephemeral agent handling with new web search capability and type definition

* feat: enhance isEphemeralAgent function to include web search selection

* feat: refactor verifyWebSearchAuth to improve key handling and authentication checks

* feat: implement loadWebSearchAuth function for improved web search authentication handling

* feat: enhance web search authentication with new configuration options and refactor related types

* refactor: rename search engine to search provider and update related localization keys

* feat: update verifyWebSearchAuth to handle multiple authentication types and improve error handling

* feat: update ApiKeyDialog to accept authTypes prop and remove isUserProvided check

* feat: add tests for extractWebSearchEnvVars and loadWebSearchAuth functions

* feat: enhance loadWebSearchAuth to support specific service checks for providers, scrapers, and rerankers

* fix: update web search configuration key and adjust auth result handling in loadTools function

* feat: add new progress key for repeated web searching and update localization

* chore: bump @librechat/agents to 2.4.322

* feat: enhance loadTools function to include ISO time and improve search tool logging

* feat: update StackedFavicons to handle negative start index and improve citation attribution styling and text

* chore: update .gitignore to categorize AI-related files

* fix: mobile responsiveness of sources/citations hovercards

* feat: enhance source display with improved line clamping for better readability

* chore: bump @librechat/agents to v2.4.33

* feat: add handling for image sources in references mapping

* chore: bump librechat-data-provider version to 0.7.84

* chore: bump @librechat/agents version to 2.4.34

* fix: update auth handling to support multiple auth types in tools and allow key configuration in agent panel

* chore: remove redundant agent attribution text from search form

* fix: web search auth uninstall

* refactor: convert CheckboxButton to a forwardRef component and update setValue callback signature

* feat: add triggerRef prop to ApiKeyDialog components for improved dialog control

* feat: integrate triggerRef in CodeInterpreter and WebSearch components for enhanced dialog management

* feat: enhance ApiKeyDialog with additional links for Firecrawl and Jina API key guidance

* feat: implement web search configuration handling in ApiKeyDialog and add tests for dropdown visibility

* fix: update webSearchConfig reference in config route for correct payload assignment

* feat: update ApiKeyDialog to conditionally render sections based on authTypes and modify loadWebSearchAuth to correctly categorize authentication types

* feat: refactor ApiKeyDialog and related tests to use SearchCategories and RerankerTypes enums and remove nested ternaries

* refactor: move ThinkingButton rendering to improve layout consistency in ContentParts

* feat: integrate search context into Markdown component to conditionally include unicodeCitation plugin

* chore: bump @librechat/agents to v2.4.35

* chore: remove unused 18n key

* ci: add WEB_SEARCH permission testing and update AppService tests for new webSearch configuration

* ci: add more comprehensive tests for loadWebSearchAuth to validate authentication handling and authTypes structure

* chore: remove debugging console log from web.spec.ts to clean up test output

* 🧹 chore: Bump Agents Dependencies (danny-avila#7525)

* chore: bump langchain dependencies

* chore: bump @librechat/agents to v2.4.36

* chore: bump @librechat/agents to v2.4.37

* refactor: simplify remark plugins in Markdown component with no conditional usage

* 🔧 refactor: Progress Text Localization for Running Tools (danny-avila#7526)

* 🔧 chore: Bump Data Provider and Custom Config Versions (danny-avila#7527)

* 🔧 chore: Update CONFIG_VERSION to 1.2.6

* 🔧 chore: Update librechat-data-provider version to 0.7.85

* 👤 feat: Enhance Agent Versioning to Track User Updates (danny-avila#7523)

* feat: Enhance agent update functionality to track user updates

- Updated `updateAgent` function to accept an `updatingUserId` parameter for tracking who made changes.
- Modified agent versioning to include `updatedBy` field for better audit trails.
- Adjusted related functions and tests to ensure proper handling of user updates and version history.
- Enhanced tests to verify correct tracking of `updatedBy` during agent updates and restorations.

* fix: Refactor import tests for improved readability and consistency

- Adjusted formatting in `importChatGptConvo` test to enhance clarity.
- Updated expected output string in `processAssistantMessage` test to use double quotes for consistency.
- Modified processing time expectation in `processAssistantMessage` test to allow for CI environment variability.

* 🧩 feat: Web Search Config Validations & Clipboard Citation Processing (danny-avila#7530)

* 🔧 chore: Add missing optional `scraperTimeout` to webSearchSchema

* chore: Add missing optional `scraperTimeout` to web search authentication result

* chore: linting

* feat: Integrate attachment handling and citation processing in message components

- Added `useAttachments` hook to manage message attachments and search results.
- Updated `MessageParts`, `ContentParts`, and `ContentRender` components to utilize the new hook for improved attachment handling.
- Enhanced `useCopyToClipboard` to format citations correctly, including support for composite citations and deduplication.
- Introduced utility functions for citation processing and cleanup.
- Added tests for the new `useCopyToClipboard` functionality to ensure proper citation formatting and handling.

* feat: Add configuration for LibreChat Code Interpreter API and Web Search variables

* fix: Update searchResults type to use SearchResultData for better type safety

* feat: Add web search configuration validation and logging

- Introduced `checkWebSearchConfig` function to validate web search configuration values, ensuring they are environment variable references.
- Added logging for proper configuration and warnings for incorrect values.
- Created unit tests for `checkWebSearchConfig` to cover various scenarios, including valid and invalid configurations.

* docs: Update README to include Web Search feature details

- Added a section for the Web Search feature, highlighting its capabilities to search the internet and enhance AI context.
- Included links for further information on the Web Search functionality.

* ci: Add mock for checkWebSearchConfig in AppService tests

* chore: linting

* feat: Enhance Shared Messages with Web Search UI by adding searchResults prop to SearchContent and MinimalHoverButtons components

* chore: linting

* refactor: remove Meilisearch index sync from importConversations function

* feat: update safeSearch implementation to use SafeSearchTypes enum

* refactor: remove commented-out code in loadTools function

* fix: ensure responseMessageId handles latestMessage ID correctly

* feat: enhance Vite configuration for improved chunking and caching

- Added additional globIgnores for map files in Workbox configuration.
- Implemented high-impact chunking for various large libraries to optimize performance.
- Increased chunkSizeWarningLimit from 1200 to 1500 for better handling of larger chunks.

* refactor: move health check hook to Root, fix bad setState for Temporary state

- Enhanced the `useHealthCheck` hook to initiate health checks only when the user is authenticated.
- Added logic for managing health check intervals and handling window focus events.
- Introduced a new test suite for `useHealthCheck` to cover various scenarios including authentication state changes and error handling.
- Removed the health check invocation from `ChatRoute` and added it to `Root` for global health monitoring.

* fix: update font alias in Vite configuration for correct path resolution

* 🌍 i18n: Update translation.json with latest translations (danny-avila#7532)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* 🔧 chore: Update data-provider dependencies for typing (danny-avila#7533)

- Updated dependencies to include @langchain/core and @types/winston in both package-lock.json and data-provider package.json.

* 🔧 fix: Artifacts Display Crash on Close and Max Width (danny-avila#7540)

* 🔧 chore: Update react-resizable-panels dependency to version 3.0.2 in package.json and package-lock.json

* fix: Simplify order assignment in SidePanel component based on hasArtifacts condition, fixed frontend crash when artifacts are closed

* refactor: Change throttledSaveLayout to use useMemo for improved performance in SidePanelGroup component

* refactor: Update dependencies in SidePanel component's useEffect hooks for improved responsiveness

* 🏷️ refactor: EditPresetDialog UI and Remove `chatGptLabel` from Presets (danny-avila#7543)

* fix: add necessary dep., remove unnecessary dep from useMentions memoization

* fix: Migrate deprecated chatGptLabel to modelLabel in cleanupPreset and simplify getPresetTitle logic

* fix: Enhance cleanupPreset to remove empty chatGptLabel and add comprehensive tests for label migration and preset handling

* chore: Update endpointType prop in PopoverButtons to allow null values for better flexibility

* refactor: Replace Dialog with OGDialog in EditPresetDialog for improved UI consistency and structure

* style: Update EditPresetDialog layout and styling for improved responsiveness and consistency

* 📦 refactor: Add Additional Chunking to Vite Config (danny-avila#7544)

* ⚡ refactor: Add Additional Chunking to Vite Config

* chore: Integrate rollup-plugin-visualizer for bundle analysis in Vite config & add @codemirror chunks

* ⌚ fix: Debounce `setUserContext` and Default State Param for OpenID Auth (danny-avila#7559)

* fix: Add default random state parameter to OpenID auth request for providers that require it; ensure passport strategy uses it

* ⌚ refactor: debounce setUserContext to avoid race condition

* refactor: Update OpenID authentication to use randomState from openid-client

* chore: linting in presetSettings type definition

* chore: import order in ModelPanel

* refactor: remove `isLegacyOutput` property from AnthropicClient since only used where defined, add latest models to non-legacy patterns, and remove from client cleanup

* refactor: adjust grid layout in Parameters component for improved responsiveness

* refactor: adjust grid layout in ModelPanel for improved display of model parameters

* test: add cases for maxOutputTokens handling in Claude 4 Sonnet and Opus models

* ci: mock loadCustomConfig in server tests and refactor OpenID route for improved authentication handling

* 🚀 feat: Implement Auto-Refill Settings for Balance

* fix: ESLint

* ✨ feat: Enhance Auto-Refill Settings with Validation and Localization

---------

Co-authored-by: andresgit <[email protected]>
Co-authored-by: matt burnett <[email protected]>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: Marco Beretta <[email protected]>
Co-authored-by: hofq <[email protected]>
Co-authored-by: hofq <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Danny Avila <[email protected]>
Co-authored-by: Theo N. Truong <[email protected]>
Co-authored-by: René Honig <[email protected]>
Co-authored-by: Ben Verhees <[email protected]>
Co-authored-by: Amgad Hasan <[email protected]>
Co-authored-by: arthurolivierfortin <[email protected]>
Co-authored-by: Danny Avila <[email protected]>
Co-authored-by: Sebastien Bruel <[email protected]>
Co-authored-by: Austin Barrington <[email protected]>
Co-authored-by: Peter <[email protected]>
Co-authored-by: Atef Bellaaj <[email protected]>
arthurolivierfortin added a commit to arthurolivierfortin/LibreChat-Fork that referenced this pull request Jun 4, 2025
* 🚀 feat: Implement Auto-Refill Settings for Balance

* 🎨 feat: add `copy-tex` to improve copying KaTeX (danny-avila#7308)

When selecting equations and using copy paste, uses the correct latex code.

Co-authored-by: Ruben Talstra <[email protected]>

* 🔃 refactor: `AgentFooter` to conditionally render buttons based on `activePanel` (danny-avila#7306)

* 🚀 feat: Add `Cloudflare Turnstile` support (danny-avila#5987)

* 🚀 feat: Add @marsidev/react-turnstile dependency to package.json and package-lock.json

* 🚀 feat: Integrate Cloudflare Turnstile configuration support in AppService and add schema validation

* 🚀 feat: Implemented Cloudflare Turnstile integration in Login and Registration forms

* 🚀 feat: Enhance AppService tests with additional mocks and configuration setups

* 🚀 feat: Comment out outdated config version warning tests in AppService.spec.js

* 🚀 feat: Remove outdated warning tests and add new checks for environment variables and API health

* 🔧 test: Update AppService.spec.js to use expect.anything() for paths validation

* 🔧 test: Refactor AppService.spec.js to streamline mocks and enhance clarity

* 🔧 chore: removed not needed test

* Potential fix for code scanning alert no. 5638: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5629: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5642: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Update turnstile.js

* Potential fix for code scanning alert no. 5634: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5646: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5647: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

---------

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5764: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5765: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* 🖼️ feat: Tool Call and Loading UI Refresh, Image Resize Config (danny-avila#7086)

* ✨ feat: Enhance Spinner component with customizable properties and improved animation

* 🔧 fix: Replace Loader with Spinner in RunCode component and update FilePreview to use Spinner for progress indication

* ✨ feat: Refactor icons in CodeProgress and CancelledIcon components; enhance animation and styling in ExecuteCode and ProgressText components

* ✨ feat: Refactor attachment handling in ExecuteCode component; replace individual attachment rendering with AttachmentGroup for improved structure

* ✨ feat: Refactor dialog components for improved accessibility and styling; integrate Skeleton loading state in Image component

* ✨ feat: Refactor ToolCall component to use ToolCallInfo for better structure; replace ToolPopover with AttachmentGroup; enhance ProgressText with error handling and improved UI elements

* 🔧 fix: Remove unnecessary whitespace in ProgressText

* 🔧 fix: Remove unnecessary margin from AgentFooter and AgentPanel components; clean up SidePanel imports

* ✨ feat: Enhance ToolCall and ToolCallInfo components with improved styling; update translations and add warning text color to Tailwind config

* 🔧 fix: Update import statement for useLocalize in ToolCallInfo component; fix: chatform transition

* ✨ feat: Refactor ToolCall and ToolCallInfo components for improved structure and styling; add optimized code block for better output display

* ✨ feat: Implement OpenAI image generation component; add progress tracking and localization for user feedback

* 🔧 fix: Adjust base duration values for image generation; optimize timing for quality settings

* chore: remove unnecessary space

* ✨ feat: Enhance OpenAI image generation with editing capabilities; update localization for progress feedback

* ✨ feat: Add download functionality to images; enhance DialogImage component with download button

* ✨ feat: Enhance image resizing functionality; support custom percentage and pixel dimensions in resizeImageBuffer

* 📊 feat: Improve Helm Chart (danny-avila#3638)

* Replaced Helm Charts with Blue Atlas Charts

* Fix Workflow

* improve docs

* update gitignore

* Update docs

* change values order, add hpa

* change tls example domain

* Default: Enable liveness and readiness

* chore: bump base chart

* apply requested changes

* add Release fix

* add: error handling

* chore: cleanup and testing

* fix: adjust Chart.yaml

---------

Co-authored-by: hofq <[email protected]>
Co-authored-by: Ruben Talstra <[email protected]>

* 📜 docs: Unreleased Changelog (danny-avila#7434)

* action: update Unreleased changelog

* Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Danny Avila <[email protected]>

* 🛡️ chore: `multer` v2.0.0 for CVE-2025-47935 and CVE-2025-47944 (danny-avila#7454)

* chore: bump multer to v2.0.0 to resolve CVE-2025-47935 and CVE-2025-47944

* chore: temp. remove helmet dependency to appease unused NPM package workflow

* 🎚️ feat: Custom Parameters (danny-avila#7342)

* #

* - refactor: simplified getCustomConfig func

* #

* - feature: persist values for parameters with optionType of custom

* #

* - refactor: moved `Parameters/settings.ts` into `data-provider` so that both frontend and backend code can use it.

* - feature: loadCustomConfig can now parse and validate customParams property for `endpoints.custom` in `librechat.yaml`

* # fixed linter

* # removed .strict() in config.ts

* change: added packages/data-provider/src to SOURCE_DIRS for i18n check

* # removed unnecessary lodash imports

* # addressed PR comments
# fixed lint for updated files

* # better import for lodash (w/o relying on tree-shaking)

* 📃 fix: Ensure MCP Resources Pass Name and Description Fields to LLM (danny-avila#7442)

* 🔗 feat: Support Environment Variables in MCP URL Config (danny-avila#7424)

* 🦙 chore: Add `llama-4` to Vision Models List (danny-avila#7433)

* 🔧 fix: File Deletion for Azure Assistants API (danny-avila#7466)

* 🔬 fix: File Search Request Format (Azure Assistants API) (danny-avila#7404)

* fix: The request format for file analysis with Azure OpenAI assistants

  The request format for file analysis with Azure OpenAI assistants differs from that of OpenAI. This fix updates the API to use attachments instead of file_ids. danny-avila#7379

* chore: ESLint Error

---------

Co-authored-by: Danny Avila <[email protected]>

* 🖼️ chore: Linting & Transition Styling in UI Components (danny-avila#7467)

* chore: linting

* 🔧 fix: Correctly parse dimensions for image width and height in OpenAIImageGen component

* style: overlay class for DialogImage component to improve visibility

* style: Update transition timing function for PixelCard component to rely on style props

* ✅ fix: Emojis rendering in `SplitText` Animation (danny-avila#7460)

* 📂 refactor: Improve `FileAttachment` & File Form Deletion (danny-avila#7471)

* refactor: optional attachment properties for `FileAttachment`

* refactor: update ActionButton to use localized text

* chore: localize text in DataTableFile, add missing translation, imports order, and linting

* chore: linting in DataTable

* fix: integrate Recoil state management for file deletion in DataTableFile

* fix: integrate Recoil state management for file deletion in DataTable

* fix: add temp_file_id to BatchFile type and update deleteFiles logic to properly remove files that are mapped to temp_file_id

* 🌍 i18n: Update translation.json with latest translations (danny-avila#7468)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* 🦾 feat: Claude-4 Support (danny-avila#7509)

* refactor: Update AnthropicClient to support Claude model naming changes

* Renamed `isClaude3` to `isClaudeLatest` to accommodate newer Claude models.
* Updated logic to determine if the model is part of the Claude family.
* Adjusted `useMessages` property to reflect the new model naming convention.
* Cleaned up client properties during disposal to match the updated naming.

* feat: Claude-4 Support

* feat: Add Thinking and Prompt caching support for Claude 4

* chore: Update ANTHROPIC_MODELS in .env.example for latest model versions

* 📊 chore: Remove Old Helm Chart (danny-avila#7512)

Co-authored-by: hofq <[email protected]>

* 🪨 feat: Bedrock Support for Claude-4 Reasoning (danny-avila#7517)

* 🗑️ chore: Update .gitignore to reflect AI-related files

* chore: linting in Bedrock options.js

* 🪨 feat: Bedrock Claude-4 Reasoning

* 🪖 chore: bump helm app version to v0.7.8 (danny-avila#7524)

- bump helm app version to match the latest
      release version

* ⌛ feat: Agent Version History and Management (danny-avila#7455)

* ✨ feat: Enhance agent update functionality to save current state in versions array

- Updated the `updateAgent` function to push the current agent's state into a new `versions` array when an agent is updated.
- Modified the agent schema to include a `versions` field for storing historical states of agents.

* ✨ feat: Add comprehensive CRUD operations for agents in tests

- Introduced a new test suite for CRUD operations on agents, including create, read, update, and delete functionalities.
- Implemented tests for listing agents by author and updating agent projects.
- Enhanced the agent model to support version history tracking during updates.
- Ensured proper environment variable management during tests.

* ✨ feat: Introduce version tracking for agents and enhance UI components

- Added a `version` property to the agent model to track the number of versions.
- Updated the `getAgentHandler` to include the agent's version in the response.
- Introduced a new `VersionButton` component for navigating to the version panel.
- Created a `VersionPanel` component for displaying version-related information.
- Updated the UI to conditionally render the version button and panel based on the active state.
- Added localization for the new version-related UI elements.

* ✨ i18n: Add "version" translation key across multiple languages

- Introduced the "com_ui_agent_version" translation key in various language files to support version tracking for agents.
- Updated Arabic, Czech, German, English, Spanish, Estonian, Persian, Finnish, French, Hebrew, Hungarian, Indonesian, Italian, Japanese, Korean, Dutch, Polish, Portuguese (Brazil and Portugal), Russian, Swedish, Thai, Turkish, Vietnamese, and Chinese (Simplified and Traditional) translations.

* ✨ feat: Update AgentFooter to conditionally render AdminSettings

- Modified the logic for displaying buttons in the AgentFooter component to only show them when the active panel is the builder.
- Ensured that AdminSettings is displayed only when the user has an admin role and the buttons are visible.

* ✨ feat: Enhance AgentPanelSwitch and VersionPanel for improved agent capabilities

- Updated AgentPanelSwitch to include a new VersionPanel for displaying version-related information.
- Enhanced agentsConfig logic to properly handle agent capabilities.
- Modified VersionPanel to improve structure and localization support.
- Integrated createAgent mutation for future agent creation functionality.

* ✨ feat: Enhance VersionPanel to display agent version history and loading states

- Integrated version fetching logic in VersionPanel to retrieve and display agent version history.
- Added loading and error handling states to improve user experience.
- Updated agent schema to use mixed types for versions, allowing for more flexible version data structures.
- Introduced localization support for version-related UI elements.

* ✨ feat: Update VersionPanel and AgentPanelSwitch to enhance agent selection and version display

- Modified AgentPanelSwitch to pass selectedAgentId to VersionPanel for improved agent context.
- Enhanced VersionPanel to handle multiple timestamp formats and display appropriate messages when no agent is selected.
- Improved structure and readability of the VersionPanel component by adding a helper function for timestamp retrieval.

* ✨ feat: Refactor VersionPanel to utilize localization and improve timestamp handling

- Replaced hardcoded text constants with localization support for various UI elements in VersionPanel.
- Enhanced the timestamp retrieval function to handle errors gracefully and utilize localized messages for unknown dates.
- Improved user feedback by displaying localized messages for agent selection, version errors, and empty states.

* ✨ refactor: Clean up VersionPanel by removing unused code and improving timestamp handling

* ✨ feat: Implement agent version reverting functionality

- Added `revertAgentVersion` method in the Agent model to allow reverting to a previous version of an agent.
- Introduced `revertAgentVersionHandler` in the agents controller to handle requests for reverting agent versions.
- Updated API routes to include a new endpoint for reverting agent versions.
- Enhanced the VersionPanel component to support version restoration with user confirmation and feedback.
- Added localization support for success and error messages related to version restoration.

* ✨ i18n: Add localization for agent version restoration messages

* Simplify VersionPanel by removing unused parameters and enhancing agent ID handling

* Refactor Agent model and VersionPanel component to streamline version data handling

* Update version handling in Agent model and VersionPanel

- Enhanced the Agent model to include an `updatedAt` timestamp when pushing new versions.
- Improved the VersionPanel component to sort versions by the `updatedAt` timestamp for better display order.
- Added a new localization entry for indicating the active version of an agent.

* ✨ i18n: Add localization for active agent version across multiple languages

* ✨ feat: Introduce version management components for agent history

- Added `isActiveVersion` utility to determine the active version of an agent based on various criteria.
- Implemented `VersionContent` and `VersionItem` components to display agent version history, including loading and error states.
- Enhanced `VersionPanel` to integrate new components and manage version context effectively.
- Added comprehensive tests for version management functionalities to ensure reliability and correctness.

* Add unit tests for AgentFooter component

* cleanup

* Enhance agent version update handling and add unit tests for update operators

- Updated the `updateAgent` function to properly handle various update operators ($push, $pull, $addToSet) while maintaining version history.
- Modified unit tests to validate the correct behavior of agent updates, including versioning and tool management.

* Enhance version comparison logic and update tests for artifacts handling

- Modified the `isActiveVersion` utility to include artifacts in the version comparison criteria.
- Updated the `VersionPanel` component to support artifacts in the agent state.
- Added new unit tests to validate artifacts matching scenarios and edge cases in the `isActiveVersion` function.

* Implement duplicate version detection in agent updates and enhance error handling

- Added `isDuplicateVersion` function to check for identical versions during agent updates, excluding certain fields.
- Updated `updateAgent` function to throw an error if a duplicate version is detected, with detailed error information.
- Enhanced the `updateAgentHandler` to return appropriate responses for duplicate version errors.
- Modified client-side error handling to display user-friendly messages for duplicate version scenarios.
- Added comprehensive unit tests to validate duplicate version detection and error handling across various update scenarios.

* Update version title localization to include version number across multiple languages

- Modified the `com_ui_agent_version_title` translation key to include a placeholder for the version number in various language files.
- Enhanced the `VersionItem` component to utilize the updated localization for displaying version titles dynamically.

* Enhance agent version handling and add revert functionality

- Updated the `isDuplicateVersion` function to improve version comparison logic, including special handling for `projectIds` and arrays of objects.
- Modified the `updateAgent` function to streamline version updates and removed unnecessary checks for test environments.
- Introduced a new `revertAgentVersion` function to allow reverting agents to specific versions, with detailed documentation.
- Enhanced unit tests to validate duplicate version detection and revert functionality, ensuring robust error handling and version management.

* fix CI issues

* cleanup

* Revert all non-English translations

* clean up tests

* *️⃣ feat: Reuse OpenID Auth Tokens (danny-avila#7397)

* feat: integrate OpenID Connect support with token reuse

- Added `jwks-rsa` and `new-openid-client` dependencies for OpenID Connect functionality.
- Implemented OpenID token refresh logic in `AuthController`.
- Enhanced `LogoutController` to handle OpenID logout and session termination.
- Updated JWT authentication middleware to support OpenID token provider.
- Modified OAuth routes to accommodate OpenID authentication and token management.
- Created `setOpenIDAuthTokens` function to manage OpenID tokens in cookies.
- Upgraded OpenID strategy with user info fetching and token exchange protocol.
- Introduced `openIdJwtLogin` strategy for handling OpenID JWT tokens.
- Added caching mechanism for exchanged OpenID tokens.
- Updated configuration to include OpenID exchanged tokens cache key.
- updated .env.example to include the new env variables needed for the feature.

* fix: update return type in downloadImage documentation for clarity and fixed openIdJwtLogin env variables

* fix: update Jest configuration and tests for OpenID strategy integration

* fix: update OpenID strategy to include callback URL in setup

* fix: fix optionalJwtAuth middleware to support OpenID token reuse and improve currentUrl method in CustomOpenIDStrategy to override the dynamic host issue related to proxy (e.g. cloudfront)

* fix: fixed code formatting

* Fix: Add mocks for openid-client and passport strategy in Jest configuration to fix unit tests

* fix eslint errors: Format mock file openid-client.

* ✨ feat: Add PKCE support for OpenID and default handling in strategy setup

---------

Co-authored-by: Atef Bellaaj <[email protected]>
Co-authored-by: Ruben Talstra <[email protected]>

* 🔎 feat: Native Web Search with Citation References (danny-avila#7516)

* WIP: search tool integration

* WIP: Add web search capabilities and API key management to agent actions

* WIP: web search capability to agent configuration and selection

* WIP: Add web search capability to backend agent configuration

* WIP: add web search option to default agent form values

* WIP: add attachments for web search

* feat: add plugin for processing web search citations

* WIP: first pass, Citation UI

* chore: remove console.log

* feat: Add AnimatedTabs component for tabbed UI functionality

* refactor: AnimatedTabs component with CSS animations and stable ID generation

* WIP example content

* feat: SearchContext for managing search results apart from MessageContext

* feat: Enhance AnimatedTabs with underline animation and state management

* WIP: first pass, Implement dynamic tab functionality in Sources component with search results integration

* fix: Update class names for improved styling in Sources and AnimatedTabs components

* feat: Improve styling and layout in Sources component with enhanced button and item designs

* feat: Refactor Sources component to integrate OGDialog for source display and improve layout

* style: Update background color in SourceItem and SourcesGroup components for improved visibility

* refactor: Sources component to enhance SourceItem structure and improve favicon handling

* style: Adjust font size of domain text in SourceItem for better readability

* feat: Add localization for citation source and details in CompositeCitation component

* style: add theming to Citation components

* feat: Enhance SourceItem component with dialog support and improved hovercard functionality

* feat: Add localization for sources tab and image alt text in Sources component

* style: Replace divs with spans for better semantic structure in CompositeCitation and Citation components

* refactor: Sources component to use useMemo for tab generation and improve performance

* chore: bump @librechat/agents to v2.4.318

* chore: update search result types

* fix: search results retrieval in ContentParts component, re-render attachments when expected

* feat: update sources style/types to use latest search result structure

* style: enhance Dialog (expanded) SourceItem component with link wrapping and improved styling

* style: update ImageItem component styling for improved title visibility

* refactor: remove SourceItemBase component and adjust SourceItem layout for improved styling

* chore: linting twcss order

* fix: prevent FileAttachment from rendering search attachments

* fix: append underscore to responseMessageId for unique identification to prevent mapping of previous latest message's attachments

* chore: remove unused parameter 'useSpecs' from loadTools function

* chore: twcss order

* WIP: WebSearch Tool UI

* refactor: add limit parameter to StackedFavicons for customizable source display

* refactor: optimize search results memoization by making more granular and separate conerns

* refactor: integrated StackedFavicons to WebSearch mid-run

* chore: bump @librechat/agents to expose handleToolCallChunks

* chore: use typedefs from dedicated file instead of defining them in AgentClient module

* WIP: first pass, search progress results

* refactor: move createOnSearchResults function to a dedicated search module

* chore: bump @librechat/agents to v2.4.320

* WIP: first pass, search results processed UX

* refactor: consolidate context variables in createOnSearchResults function

* chore: bump @librechat/agents to v2.4.321

* feat: add guidelines for web search tool response formatting in loadTools function

* feat: add isLast prop to Part component and update WebSearch logic for improved state handling

* style: update Hovercard styles for improved UI consistency

* feat: export FaviconImage component for improved accessibility in other modules

* refactor: export getCleanDomain function and use FaviconImage in Citation component for improved source representation

* refactor: implement SourceHovercard component for consistency and DRY compliance

* fix: replace <p> with <span> for snippet and title in SourceItem and SourceHovercard for consistency

* style: `not-prose`

* style: remove 'not-prose' class for consistency in SourceItem, Citation, and SourceHovercard components, adjust style classes

* refactor: `imageUrl` on hover and prevent duplicate sources

* refactor: enhance SourcesGroup dialog layout and improve source item presentation

* refactor: reorganize Web Components, save in same directory

* feat: add 'news' refType to refTypeMap for citation sources

* style: adjust Hovercard width for improved layout

* refactor: update tool usage guidelines for improved clarity and execution

* chore: linting

* feat: add Web Search badge with initial permissions and local storage logic

* feat: add webSearch support to interface and permissions schemas

* feat: implement Web Search API key management and localization updates

* feat: refactor Web Search API key handling and integrate new search API key form

* fix: remove unnecessary visibility state from FileAttachment component

* feat: update WebSearch component to use Globe icon and localized search label

* feat: enhance ApiKeyDialog with dropdown for reranker selection and update translations

* feat: implement dropdown menus for engine, scraper, and reranker selection in ApiKeyDialog

* chore: linting and add unknown instead of `any` type

* feat: refactor ApiKeyDialog and useAuthSearchTool for improved API key management

* refactor: update ocrSchema to use template literals for default apiKey and baseURL

* feat: add web search configuration and utility functions for environment variable extraction

* fix: ensure filepath is defined before checking its prefix in useAttachmentHandler

* feat: enhance web search functionality with improved configuration and environment variable extraction for authFields

* fix: update auth type in TPluginAction and TUpdateUserPlugins to use Partial<Record<string, string>>

* feat: implement web search authentication verification and enhance webSearchAuth structure

* feat: enhance ephemeral agent handling with new web search capability and type definition

* feat: enhance isEphemeralAgent function to include web search selection

* feat: refactor verifyWebSearchAuth to improve key handling and authentication checks

* feat: implement loadWebSearchAuth function for improved web search authentication handling

* feat: enhance web search authentication with new configuration options and refactor related types

* refactor: rename search engine to search provider and update related localization keys

* feat: update verifyWebSearchAuth to handle multiple authentication types and improve error handling

* feat: update ApiKeyDialog to accept authTypes prop and remove isUserProvided check

* feat: add tests for extractWebSearchEnvVars and loadWebSearchAuth functions

* feat: enhance loadWebSearchAuth to support specific service checks for providers, scrapers, and rerankers

* fix: update web search configuration key and adjust auth result handling in loadTools function

* feat: add new progress key for repeated web searching and update localization

* chore: bump @librechat/agents to 2.4.322

* feat: enhance loadTools function to include ISO time and improve search tool logging

* feat: update StackedFavicons to handle negative start index and improve citation attribution styling and text

* chore: update .gitignore to categorize AI-related files

* fix: mobile responsiveness of sources/citations hovercards

* feat: enhance source display with improved line clamping for better readability

* chore: bump @librechat/agents to v2.4.33

* feat: add handling for image sources in references mapping

* chore: bump librechat-data-provider version to 0.7.84

* chore: bump @librechat/agents version to 2.4.34

* fix: update auth handling to support multiple auth types in tools and allow key configuration in agent panel

* chore: remove redundant agent attribution text from search form

* fix: web search auth uninstall

* refactor: convert CheckboxButton to a forwardRef component and update setValue callback signature

* feat: add triggerRef prop to ApiKeyDialog components for improved dialog control

* feat: integrate triggerRef in CodeInterpreter and WebSearch components for enhanced dialog management

* feat: enhance ApiKeyDialog with additional links for Firecrawl and Jina API key guidance

* feat: implement web search configuration handling in ApiKeyDialog and add tests for dropdown visibility

* fix: update webSearchConfig reference in config route for correct payload assignment

* feat: update ApiKeyDialog to conditionally render sections based on authTypes and modify loadWebSearchAuth to correctly categorize authentication types

* feat: refactor ApiKeyDialog and related tests to use SearchCategories and RerankerTypes enums and remove nested ternaries

* refactor: move ThinkingButton rendering to improve layout consistency in ContentParts

* feat: integrate search context into Markdown component to conditionally include unicodeCitation plugin

* chore: bump @librechat/agents to v2.4.35

* chore: remove unused 18n key

* ci: add WEB_SEARCH permission testing and update AppService tests for new webSearch configuration

* ci: add more comprehensive tests for loadWebSearchAuth to validate authentication handling and authTypes structure

* chore: remove debugging console log from web.spec.ts to clean up test output

* 🧹 chore: Bump Agents Dependencies (danny-avila#7525)

* chore: bump langchain dependencies

* chore: bump @librechat/agents to v2.4.36

* chore: bump @librechat/agents to v2.4.37

* refactor: simplify remark plugins in Markdown component with no conditional usage

* 🔧 refactor: Progress Text Localization for Running Tools (danny-avila#7526)

* 🔧 chore: Bump Data Provider and Custom Config Versions (danny-avila#7527)

* 🔧 chore: Update CONFIG_VERSION to 1.2.6

* 🔧 chore: Update librechat-data-provider version to 0.7.85

* 👤 feat: Enhance Agent Versioning to Track User Updates (danny-avila#7523)

* feat: Enhance agent update functionality to track user updates

- Updated `updateAgent` function to accept an `updatingUserId` parameter for tracking who made changes.
- Modified agent versioning to include `updatedBy` field for better audit trails.
- Adjusted related functions and tests to ensure proper handling of user updates and version history.
- Enhanced tests to verify correct tracking of `updatedBy` during agent updates and restorations.

* fix: Refactor import tests for improved readability and consistency

- Adjusted formatting in `importChatGptConvo` test to enhance clarity.
- Updated expected output string in `processAssistantMessage` test to use double quotes for consistency.
- Modified processing time expectation in `processAssistantMessage` test to allow for CI environment variability.

* 🧩 feat: Web Search Config Validations & Clipboard Citation Processing (danny-avila#7530)

* 🔧 chore: Add missing optional `scraperTimeout` to webSearchSchema

* chore: Add missing optional `scraperTimeout` to web search authentication result

* chore: linting

* feat: Integrate attachment handling and citation processing in message components

- Added `useAttachments` hook to manage message attachments and search results.
- Updated `MessageParts`, `ContentParts`, and `ContentRender` components to utilize the new hook for improved attachment handling.
- Enhanced `useCopyToClipboard` to format citations correctly, including support for composite citations and deduplication.
- Introduced utility functions for citation processing and cleanup.
- Added tests for the new `useCopyToClipboard` functionality to ensure proper citation formatting and handling.

* feat: Add configuration for LibreChat Code Interpreter API and Web Search variables

* fix: Update searchResults type to use SearchResultData for better type safety

* feat: Add web search configuration validation and logging

- Introduced `checkWebSearchConfig` function to validate web search configuration values, ensuring they are environment variable references.
- Added logging for proper configuration and warnings for incorrect values.
- Created unit tests for `checkWebSearchConfig` to cover various scenarios, including valid and invalid configurations.

* docs: Update README to include Web Search feature details

- Added a section for the Web Search feature, highlighting its capabilities to search the internet and enhance AI context.
- Included links for further information on the Web Search functionality.

* ci: Add mock for checkWebSearchConfig in AppService tests

* chore: linting

* feat: Enhance Shared Messages with Web Search UI by adding searchResults prop to SearchContent and MinimalHoverButtons components

* chore: linting

* refactor: remove Meilisearch index sync from importConversations function

* feat: update safeSearch implementation to use SafeSearchTypes enum

* refactor: remove commented-out code in loadTools function

* fix: ensure responseMessageId handles latestMessage ID correctly

* feat: enhance Vite configuration for improved chunking and caching

- Added additional globIgnores for map files in Workbox configuration.
- Implemented high-impact chunking for various large libraries to optimize performance.
- Increased chunkSizeWarningLimit from 1200 to 1500 for better handling of larger chunks.

* refactor: move health check hook to Root, fix bad setState for Temporary state

- Enhanced the `useHealthCheck` hook to initiate health checks only when the user is authenticated.
- Added logic for managing health check intervals and handling window focus events.
- Introduced a new test suite for `useHealthCheck` to cover various scenarios including authentication state changes and error handling.
- Removed the health check invocation from `ChatRoute` and added it to `Root` for global health monitoring.

* fix: update font alias in Vite configuration for correct path resolution

* 🌍 i18n: Update translation.json with latest translations (danny-avila#7532)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* 🔧 chore: Update data-provider dependencies for typing (danny-avila#7533)

- Updated dependencies to include @langchain/core and @types/winston in both package-lock.json and data-provider package.json.

* 🔧 fix: Artifacts Display Crash on Close and Max Width (danny-avila#7540)

* 🔧 chore: Update react-resizable-panels dependency to version 3.0.2 in package.json and package-lock.json

* fix: Simplify order assignment in SidePanel component based on hasArtifacts condition, fixed frontend crash when artifacts are closed

* refactor: Change throttledSaveLayout to use useMemo for improved performance in SidePanelGroup component

* refactor: Update dependencies in SidePanel component's useEffect hooks for improved responsiveness

* 🏷️ refactor: EditPresetDialog UI and Remove `chatGptLabel` from Presets (danny-avila#7543)

* fix: add necessary dep., remove unnecessary dep from useMentions memoization

* fix: Migrate deprecated chatGptLabel to modelLabel in cleanupPreset and simplify getPresetTitle logic

* fix: Enhance cleanupPreset to remove empty chatGptLabel and add comprehensive tests for label migration and preset handling

* chore: Update endpointType prop in PopoverButtons to allow null values for better flexibility

* refactor: Replace Dialog with OGDialog in EditPresetDialog for improved UI consistency and structure

* style: Update EditPresetDialog layout and styling for improved responsiveness and consistency

* 📦 refactor: Add Additional Chunking to Vite Config (danny-avila#7544)

* ⚡ refactor: Add Additional Chunking to Vite Config

* chore: Integrate rollup-plugin-visualizer for bundle analysis in Vite config & add @codemirror chunks

* ⌚ fix: Debounce `setUserContext` and Default State Param for OpenID Auth (danny-avila#7559)

* fix: Add default random state parameter to OpenID auth request for providers that require it; ensure passport strategy uses it

* ⌚ refactor: debounce setUserContext to avoid race condition

* refactor: Update OpenID authentication to use randomState from openid-client

* chore: linting in presetSettings type definition

* chore: import order in ModelPanel

* refactor: remove `isLegacyOutput` property from AnthropicClient since only used where defined, add latest models to non-legacy patterns, and remove from client cleanup

* refactor: adjust grid layout in Parameters component for improved responsiveness

* refactor: adjust grid layout in ModelPanel for improved display of model parameters

* test: add cases for maxOutputTokens handling in Claude 4 Sonnet and Opus models

* ci: mock loadCustomConfig in server tests and refactor OpenID route for improved authentication handling

* 🚀 feat: Implement Auto-Refill Settings for Balance

* fix: ESLint

* ✨ feat: Enhance Auto-Refill Settings with Validation and Localization

---------

Co-authored-by: andresgit <[email protected]>
Co-authored-by: matt burnett <[email protected]>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: Marco Beretta <[email protected]>
Co-authored-by: hofq <[email protected]>
Co-authored-by: hofq <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Danny Avila <[email protected]>
Co-authored-by: Theo N. Truong <[email protected]>
Co-authored-by: René Honig <[email protected]>
Co-authored-by: Ben Verhees <[email protected]>
Co-authored-by: Amgad Hasan <[email protected]>
Co-authored-by: arthurolivierfortin <[email protected]>
Co-authored-by: Danny Avila <[email protected]>
Co-authored-by: Sebastien Bruel <[email protected]>
Co-authored-by: Austin Barrington <[email protected]>
Co-authored-by: Peter <[email protected]>
Co-authored-by: Atef Bellaaj <[email protected]>
MichielMAnalytics pushed a commit to MichielMAnalytics/ProAI that referenced this pull request Jun 6, 2025
When selecting equations and using copy paste, uses the correct latex code.

Co-authored-by: Ruben Talstra <[email protected]>
MichielMAnalytics pushed a commit to MichielMAnalytics/ProAI that referenced this pull request Jun 6, 2025
…ila#7377)

* 🔒 feat: Add Content Security Policy using Helmet middleware

* 🔒 feat: Set trust proxy and refine Content Security Policy directives

* 🎨 feat: add `copy-tex` to improve copying KaTeX (danny-avila#7308)

When selecting equations and using copy paste, uses the correct latex code.

Co-authored-by: Ruben Talstra <[email protected]>

* 🔃 refactor: `AgentFooter` to conditionally render buttons based on `activePanel` (danny-avila#7306)

* 🚀 feat: Add `Cloudflare Turnstile` support (danny-avila#5987)

* 🚀 feat: Add @marsidev/react-turnstile dependency to package.json and package-lock.json

* 🚀 feat: Integrate Cloudflare Turnstile configuration support in AppService and add schema validation

* 🚀 feat: Implemented Cloudflare Turnstile integration in Login and Registration forms

* 🚀 feat: Enhance AppService tests with additional mocks and configuration setups

* 🚀 feat: Comment out outdated config version warning tests in AppService.spec.js

* 🚀 feat: Remove outdated warning tests and add new checks for environment variables and API health

* 🔧 test: Update AppService.spec.js to use expect.anything() for paths validation

* 🔧 test: Refactor AppService.spec.js to streamline mocks and enhance clarity

* 🔧 chore: removed not needed test

* Potential fix for code scanning alert no. 5638: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5629: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5642: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Update turnstile.js

* Potential fix for code scanning alert no. 5634: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5646: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5647: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

---------

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* 🔒 feat: Refactor Content Security Policy setup to use Helmet middleware with custom directives

* 🔒 feat: Enhance Content Security Policy to include Sandpack Bundler URL

* 🔒 feat: Update Content Security Policy and integrate Turnstile captcha support

---------

Co-authored-by: andresgit <[email protected]>
Co-authored-by: matt burnett <[email protected]>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
kenshinsamue pushed a commit to intelequia/LibreChat that referenced this pull request Aug 4, 2025
* 🚀 feat: Implement Auto-Refill Settings for Balance

* 🎨 feat: add `copy-tex` to improve copying KaTeX (danny-avila#7308)

When selecting equations and using copy paste, uses the correct latex code.

Co-authored-by: Ruben Talstra <[email protected]>

* 🔃 refactor: `AgentFooter` to conditionally render buttons based on `activePanel` (danny-avila#7306)

* 🚀 feat: Add `Cloudflare Turnstile` support (danny-avila#5987)

* 🚀 feat: Add @marsidev/react-turnstile dependency to package.json and package-lock.json

* 🚀 feat: Integrate Cloudflare Turnstile configuration support in AppService and add schema validation

* 🚀 feat: Implemented Cloudflare Turnstile integration in Login and Registration forms

* 🚀 feat: Enhance AppService tests with additional mocks and configuration setups

* 🚀 feat: Comment out outdated config version warning tests in AppService.spec.js

* 🚀 feat: Remove outdated warning tests and add new checks for environment variables and API health

* 🔧 test: Update AppService.spec.js to use expect.anything() for paths validation

* 🔧 test: Refactor AppService.spec.js to streamline mocks and enhance clarity

* 🔧 chore: removed not needed test

* Potential fix for code scanning alert no. 5638: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5629: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5642: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Update turnstile.js

* Potential fix for code scanning alert no. 5634: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5646: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5647: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

---------

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5764: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 5765: Ensure code is properly formatted, use insertion, deletion, or replacement to obtain desired formatting.

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* 🖼️ feat: Tool Call and Loading UI Refresh, Image Resize Config (danny-avila#7086)

* ✨ feat: Enhance Spinner component with customizable properties and improved animation

* 🔧 fix: Replace Loader with Spinner in RunCode component and update FilePreview to use Spinner for progress indication

* ✨ feat: Refactor icons in CodeProgress and CancelledIcon components; enhance animation and styling in ExecuteCode and ProgressText components

* ✨ feat: Refactor attachment handling in ExecuteCode component; replace individual attachment rendering with AttachmentGroup for improved structure

* ✨ feat: Refactor dialog components for improved accessibility and styling; integrate Skeleton loading state in Image component

* ✨ feat: Refactor ToolCall component to use ToolCallInfo for better structure; replace ToolPopover with AttachmentGroup; enhance ProgressText with error handling and improved UI elements

* 🔧 fix: Remove unnecessary whitespace in ProgressText

* 🔧 fix: Remove unnecessary margin from AgentFooter and AgentPanel components; clean up SidePanel imports

* ✨ feat: Enhance ToolCall and ToolCallInfo components with improved styling; update translations and add warning text color to Tailwind config

* 🔧 fix: Update import statement for useLocalize in ToolCallInfo component; fix: chatform transition

* ✨ feat: Refactor ToolCall and ToolCallInfo components for improved structure and styling; add optimized code block for better output display

* ✨ feat: Implement OpenAI image generation component; add progress tracking and localization for user feedback

* 🔧 fix: Adjust base duration values for image generation; optimize timing for quality settings

* chore: remove unnecessary space

* ✨ feat: Enhance OpenAI image generation with editing capabilities; update localization for progress feedback

* ✨ feat: Add download functionality to images; enhance DialogImage component with download button

* ✨ feat: Enhance image resizing functionality; support custom percentage and pixel dimensions in resizeImageBuffer

* 📊 feat: Improve Helm Chart (danny-avila#3638)

* Replaced Helm Charts with Blue Atlas Charts

* Fix Workflow

* improve docs

* update gitignore

* Update docs

* change values order, add hpa

* change tls example domain

* Default: Enable liveness and readiness

* chore: bump base chart

* apply requested changes

* add Release fix

* add: error handling

* chore: cleanup and testing

* fix: adjust Chart.yaml

---------

Co-authored-by: hofq <[email protected]>
Co-authored-by: Ruben Talstra <[email protected]>

* 📜 docs: Unreleased Changelog (danny-avila#7434)

* action: update Unreleased changelog

* Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Danny Avila <[email protected]>

* 🛡️ chore: `multer` v2.0.0 for CVE-2025-47935 and CVE-2025-47944 (danny-avila#7454)

* chore: bump multer to v2.0.0 to resolve CVE-2025-47935 and CVE-2025-47944

* chore: temp. remove helmet dependency to appease unused NPM package workflow

* 🎚️ feat: Custom Parameters (danny-avila#7342)

* #

* - refactor: simplified getCustomConfig func

* #

* - feature: persist values for parameters with optionType of custom

* #

* - refactor: moved `Parameters/settings.ts` into `data-provider` so that both frontend and backend code can use it.

* - feature: loadCustomConfig can now parse and validate customParams property for `endpoints.custom` in `librechat.yaml`

* # fixed linter

* # removed .strict() in config.ts

* change: added packages/data-provider/src to SOURCE_DIRS for i18n check

* # removed unnecessary lodash imports

* # addressed PR comments
# fixed lint for updated files

* # better import for lodash (w/o relying on tree-shaking)

* 📃 fix: Ensure MCP Resources Pass Name and Description Fields to LLM (danny-avila#7442)

* 🔗 feat: Support Environment Variables in MCP URL Config (danny-avila#7424)

* 🦙 chore: Add `llama-4` to Vision Models List (danny-avila#7433)

* 🔧 fix: File Deletion for Azure Assistants API (danny-avila#7466)

* 🔬 fix: File Search Request Format (Azure Assistants API) (danny-avila#7404)

* fix: The request format for file analysis with Azure OpenAI assistants

  The request format for file analysis with Azure OpenAI assistants differs from that of OpenAI. This fix updates the API to use attachments instead of file_ids. danny-avila#7379

* chore: ESLint Error

---------

Co-authored-by: Danny Avila <[email protected]>

* 🖼️ chore: Linting & Transition Styling in UI Components (danny-avila#7467)

* chore: linting

* 🔧 fix: Correctly parse dimensions for image width and height in OpenAIImageGen component

* style: overlay class for DialogImage component to improve visibility

* style: Update transition timing function for PixelCard component to rely on style props

* ✅ fix: Emojis rendering in `SplitText` Animation (danny-avila#7460)

* 📂 refactor: Improve `FileAttachment` & File Form Deletion (danny-avila#7471)

* refactor: optional attachment properties for `FileAttachment`

* refactor: update ActionButton to use localized text

* chore: localize text in DataTableFile, add missing translation, imports order, and linting

* chore: linting in DataTable

* fix: integrate Recoil state management for file deletion in DataTableFile

* fix: integrate Recoil state management for file deletion in DataTable

* fix: add temp_file_id to BatchFile type and update deleteFiles logic to properly remove files that are mapped to temp_file_id

* 🌍 i18n: Update translation.json with latest translations (danny-avila#7468)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* 🦾 feat: Claude-4 Support (danny-avila#7509)

* refactor: Update AnthropicClient to support Claude model naming changes

* Renamed `isClaude3` to `isClaudeLatest` to accommodate newer Claude models.
* Updated logic to determine if the model is part of the Claude family.
* Adjusted `useMessages` property to reflect the new model naming convention.
* Cleaned up client properties during disposal to match the updated naming.

* feat: Claude-4 Support

* feat: Add Thinking and Prompt caching support for Claude 4

* chore: Update ANTHROPIC_MODELS in .env.example for latest model versions

* 📊 chore: Remove Old Helm Chart (danny-avila#7512)

Co-authored-by: hofq <[email protected]>

* 🪨 feat: Bedrock Support for Claude-4 Reasoning (danny-avila#7517)

* 🗑️ chore: Update .gitignore to reflect AI-related files

* chore: linting in Bedrock options.js

* 🪨 feat: Bedrock Claude-4 Reasoning

* 🪖 chore: bump helm app version to v0.7.8 (danny-avila#7524)

- bump helm app version to match the latest
      release version

* ⌛ feat: Agent Version History and Management (danny-avila#7455)

* ✨ feat: Enhance agent update functionality to save current state in versions array

- Updated the `updateAgent` function to push the current agent's state into a new `versions` array when an agent is updated.
- Modified the agent schema to include a `versions` field for storing historical states of agents.

* ✨ feat: Add comprehensive CRUD operations for agents in tests

- Introduced a new test suite for CRUD operations on agents, including create, read, update, and delete functionalities.
- Implemented tests for listing agents by author and updating agent projects.
- Enhanced the agent model to support version history tracking during updates.
- Ensured proper environment variable management during tests.

* ✨ feat: Introduce version tracking for agents and enhance UI components

- Added a `version` property to the agent model to track the number of versions.
- Updated the `getAgentHandler` to include the agent's version in the response.
- Introduced a new `VersionButton` component for navigating to the version panel.
- Created a `VersionPanel` component for displaying version-related information.
- Updated the UI to conditionally render the version button and panel based on the active state.
- Added localization for the new version-related UI elements.

* ✨ i18n: Add "version" translation key across multiple languages

- Introduced the "com_ui_agent_version" translation key in various language files to support version tracking for agents.
- Updated Arabic, Czech, German, English, Spanish, Estonian, Persian, Finnish, French, Hebrew, Hungarian, Indonesian, Italian, Japanese, Korean, Dutch, Polish, Portuguese (Brazil and Portugal), Russian, Swedish, Thai, Turkish, Vietnamese, and Chinese (Simplified and Traditional) translations.

* ✨ feat: Update AgentFooter to conditionally render AdminSettings

- Modified the logic for displaying buttons in the AgentFooter component to only show them when the active panel is the builder.
- Ensured that AdminSettings is displayed only when the user has an admin role and the buttons are visible.

* ✨ feat: Enhance AgentPanelSwitch and VersionPanel for improved agent capabilities

- Updated AgentPanelSwitch to include a new VersionPanel for displaying version-related information.
- Enhanced agentsConfig logic to properly handle agent capabilities.
- Modified VersionPanel to improve structure and localization support.
- Integrated createAgent mutation for future agent creation functionality.

* ✨ feat: Enhance VersionPanel to display agent version history and loading states

- Integrated version fetching logic in VersionPanel to retrieve and display agent version history.
- Added loading and error handling states to improve user experience.
- Updated agent schema to use mixed types for versions, allowing for more flexible version data structures.
- Introduced localization support for version-related UI elements.

* ✨ feat: Update VersionPanel and AgentPanelSwitch to enhance agent selection and version display

- Modified AgentPanelSwitch to pass selectedAgentId to VersionPanel for improved agent context.
- Enhanced VersionPanel to handle multiple timestamp formats and display appropriate messages when no agent is selected.
- Improved structure and readability of the VersionPanel component by adding a helper function for timestamp retrieval.

* ✨ feat: Refactor VersionPanel to utilize localization and improve timestamp handling

- Replaced hardcoded text constants with localization support for various UI elements in VersionPanel.
- Enhanced the timestamp retrieval function to handle errors gracefully and utilize localized messages for unknown dates.
- Improved user feedback by displaying localized messages for agent selection, version errors, and empty states.

* ✨ refactor: Clean up VersionPanel by removing unused code and improving timestamp handling

* ✨ feat: Implement agent version reverting functionality

- Added `revertAgentVersion` method in the Agent model to allow reverting to a previous version of an agent.
- Introduced `revertAgentVersionHandler` in the agents controller to handle requests for reverting agent versions.
- Updated API routes to include a new endpoint for reverting agent versions.
- Enhanced the VersionPanel component to support version restoration with user confirmation and feedback.
- Added localization support for success and error messages related to version restoration.

* ✨ i18n: Add localization for agent version restoration messages

* Simplify VersionPanel by removing unused parameters and enhancing agent ID handling

* Refactor Agent model and VersionPanel component to streamline version data handling

* Update version handling in Agent model and VersionPanel

- Enhanced the Agent model to include an `updatedAt` timestamp when pushing new versions.
- Improved the VersionPanel component to sort versions by the `updatedAt` timestamp for better display order.
- Added a new localization entry for indicating the active version of an agent.

* ✨ i18n: Add localization for active agent version across multiple languages

* ✨ feat: Introduce version management components for agent history

- Added `isActiveVersion` utility to determine the active version of an agent based on various criteria.
- Implemented `VersionContent` and `VersionItem` components to display agent version history, including loading and error states.
- Enhanced `VersionPanel` to integrate new components and manage version context effectively.
- Added comprehensive tests for version management functionalities to ensure reliability and correctness.

* Add unit tests for AgentFooter component

* cleanup

* Enhance agent version update handling and add unit tests for update operators

- Updated the `updateAgent` function to properly handle various update operators ($push, $pull, $addToSet) while maintaining version history.
- Modified unit tests to validate the correct behavior of agent updates, including versioning and tool management.

* Enhance version comparison logic and update tests for artifacts handling

- Modified the `isActiveVersion` utility to include artifacts in the version comparison criteria.
- Updated the `VersionPanel` component to support artifacts in the agent state.
- Added new unit tests to validate artifacts matching scenarios and edge cases in the `isActiveVersion` function.

* Implement duplicate version detection in agent updates and enhance error handling

- Added `isDuplicateVersion` function to check for identical versions during agent updates, excluding certain fields.
- Updated `updateAgent` function to throw an error if a duplicate version is detected, with detailed error information.
- Enhanced the `updateAgentHandler` to return appropriate responses for duplicate version errors.
- Modified client-side error handling to display user-friendly messages for duplicate version scenarios.
- Added comprehensive unit tests to validate duplicate version detection and error handling across various update scenarios.

* Update version title localization to include version number across multiple languages

- Modified the `com_ui_agent_version_title` translation key to include a placeholder for the version number in various language files.
- Enhanced the `VersionItem` component to utilize the updated localization for displaying version titles dynamically.

* Enhance agent version handling and add revert functionality

- Updated the `isDuplicateVersion` function to improve version comparison logic, including special handling for `projectIds` and arrays of objects.
- Modified the `updateAgent` function to streamline version updates and removed unnecessary checks for test environments.
- Introduced a new `revertAgentVersion` function to allow reverting agents to specific versions, with detailed documentation.
- Enhanced unit tests to validate duplicate version detection and revert functionality, ensuring robust error handling and version management.

* fix CI issues

* cleanup

* Revert all non-English translations

* clean up tests

* *️⃣ feat: Reuse OpenID Auth Tokens (danny-avila#7397)

* feat: integrate OpenID Connect support with token reuse

- Added `jwks-rsa` and `new-openid-client` dependencies for OpenID Connect functionality.
- Implemented OpenID token refresh logic in `AuthController`.
- Enhanced `LogoutController` to handle OpenID logout and session termination.
- Updated JWT authentication middleware to support OpenID token provider.
- Modified OAuth routes to accommodate OpenID authentication and token management.
- Created `setOpenIDAuthTokens` function to manage OpenID tokens in cookies.
- Upgraded OpenID strategy with user info fetching and token exchange protocol.
- Introduced `openIdJwtLogin` strategy for handling OpenID JWT tokens.
- Added caching mechanism for exchanged OpenID tokens.
- Updated configuration to include OpenID exchanged tokens cache key.
- updated .env.example to include the new env variables needed for the feature.

* fix: update return type in downloadImage documentation for clarity and fixed openIdJwtLogin env variables

* fix: update Jest configuration and tests for OpenID strategy integration

* fix: update OpenID strategy to include callback URL in setup

* fix: fix optionalJwtAuth middleware to support OpenID token reuse and improve currentUrl method in CustomOpenIDStrategy to override the dynamic host issue related to proxy (e.g. cloudfront)

* fix: fixed code formatting

* Fix: Add mocks for openid-client and passport strategy in Jest configuration to fix unit tests

* fix eslint errors: Format mock file openid-client.

* ✨ feat: Add PKCE support for OpenID and default handling in strategy setup

---------

Co-authored-by: Atef Bellaaj <[email protected]>
Co-authored-by: Ruben Talstra <[email protected]>

* 🔎 feat: Native Web Search with Citation References (danny-avila#7516)

* WIP: search tool integration

* WIP: Add web search capabilities and API key management to agent actions

* WIP: web search capability to agent configuration and selection

* WIP: Add web search capability to backend agent configuration

* WIP: add web search option to default agent form values

* WIP: add attachments for web search

* feat: add plugin for processing web search citations

* WIP: first pass, Citation UI

* chore: remove console.log

* feat: Add AnimatedTabs component for tabbed UI functionality

* refactor: AnimatedTabs component with CSS animations and stable ID generation

* WIP example content

* feat: SearchContext for managing search results apart from MessageContext

* feat: Enhance AnimatedTabs with underline animation and state management

* WIP: first pass, Implement dynamic tab functionality in Sources component with search results integration

* fix: Update class names for improved styling in Sources and AnimatedTabs components

* feat: Improve styling and layout in Sources component with enhanced button and item designs

* feat: Refactor Sources component to integrate OGDialog for source display and improve layout

* style: Update background color in SourceItem and SourcesGroup components for improved visibility

* refactor: Sources component to enhance SourceItem structure and improve favicon handling

* style: Adjust font size of domain text in SourceItem for better readability

* feat: Add localization for citation source and details in CompositeCitation component

* style: add theming to Citation components

* feat: Enhance SourceItem component with dialog support and improved hovercard functionality

* feat: Add localization for sources tab and image alt text in Sources component

* style: Replace divs with spans for better semantic structure in CompositeCitation and Citation components

* refactor: Sources component to use useMemo for tab generation and improve performance

* chore: bump @librechat/agents to v2.4.318

* chore: update search result types

* fix: search results retrieval in ContentParts component, re-render attachments when expected

* feat: update sources style/types to use latest search result structure

* style: enhance Dialog (expanded) SourceItem component with link wrapping and improved styling

* style: update ImageItem component styling for improved title visibility

* refactor: remove SourceItemBase component and adjust SourceItem layout for improved styling

* chore: linting twcss order

* fix: prevent FileAttachment from rendering search attachments

* fix: append underscore to responseMessageId for unique identification to prevent mapping of previous latest message's attachments

* chore: remove unused parameter 'useSpecs' from loadTools function

* chore: twcss order

* WIP: WebSearch Tool UI

* refactor: add limit parameter to StackedFavicons for customizable source display

* refactor: optimize search results memoization by making more granular and separate conerns

* refactor: integrated StackedFavicons to WebSearch mid-run

* chore: bump @librechat/agents to expose handleToolCallChunks

* chore: use typedefs from dedicated file instead of defining them in AgentClient module

* WIP: first pass, search progress results

* refactor: move createOnSearchResults function to a dedicated search module

* chore: bump @librechat/agents to v2.4.320

* WIP: first pass, search results processed UX

* refactor: consolidate context variables in createOnSearchResults function

* chore: bump @librechat/agents to v2.4.321

* feat: add guidelines for web search tool response formatting in loadTools function

* feat: add isLast prop to Part component and update WebSearch logic for improved state handling

* style: update Hovercard styles for improved UI consistency

* feat: export FaviconImage component for improved accessibility in other modules

* refactor: export getCleanDomain function and use FaviconImage in Citation component for improved source representation

* refactor: implement SourceHovercard component for consistency and DRY compliance

* fix: replace <p> with <span> for snippet and title in SourceItem and SourceHovercard for consistency

* style: `not-prose`

* style: remove 'not-prose' class for consistency in SourceItem, Citation, and SourceHovercard components, adjust style classes

* refactor: `imageUrl` on hover and prevent duplicate sources

* refactor: enhance SourcesGroup dialog layout and improve source item presentation

* refactor: reorganize Web Components, save in same directory

* feat: add 'news' refType to refTypeMap for citation sources

* style: adjust Hovercard width for improved layout

* refactor: update tool usage guidelines for improved clarity and execution

* chore: linting

* feat: add Web Search badge with initial permissions and local storage logic

* feat: add webSearch support to interface and permissions schemas

* feat: implement Web Search API key management and localization updates

* feat: refactor Web Search API key handling and integrate new search API key form

* fix: remove unnecessary visibility state from FileAttachment component

* feat: update WebSearch component to use Globe icon and localized search label

* feat: enhance ApiKeyDialog with dropdown for reranker selection and update translations

* feat: implement dropdown menus for engine, scraper, and reranker selection in ApiKeyDialog

* chore: linting and add unknown instead of `any` type

* feat: refactor ApiKeyDialog and useAuthSearchTool for improved API key management

* refactor: update ocrSchema to use template literals for default apiKey and baseURL

* feat: add web search configuration and utility functions for environment variable extraction

* fix: ensure filepath is defined before checking its prefix in useAttachmentHandler

* feat: enhance web search functionality with improved configuration and environment variable extraction for authFields

* fix: update auth type in TPluginAction and TUpdateUserPlugins to use Partial<Record<string, string>>

* feat: implement web search authentication verification and enhance webSearchAuth structure

* feat: enhance ephemeral agent handling with new web search capability and type definition

* feat: enhance isEphemeralAgent function to include web search selection

* feat: refactor verifyWebSearchAuth to improve key handling and authentication checks

* feat: implement loadWebSearchAuth function for improved web search authentication handling

* feat: enhance web search authentication with new configuration options and refactor related types

* refactor: rename search engine to search provider and update related localization keys

* feat: update verifyWebSearchAuth to handle multiple authentication types and improve error handling

* feat: update ApiKeyDialog to accept authTypes prop and remove isUserProvided check

* feat: add tests for extractWebSearchEnvVars and loadWebSearchAuth functions

* feat: enhance loadWebSearchAuth to support specific service checks for providers, scrapers, and rerankers

* fix: update web search configuration key and adjust auth result handling in loadTools function

* feat: add new progress key for repeated web searching and update localization

* chore: bump @librechat/agents to 2.4.322

* feat: enhance loadTools function to include ISO time and improve search tool logging

* feat: update StackedFavicons to handle negative start index and improve citation attribution styling and text

* chore: update .gitignore to categorize AI-related files

* fix: mobile responsiveness of sources/citations hovercards

* feat: enhance source display with improved line clamping for better readability

* chore: bump @librechat/agents to v2.4.33

* feat: add handling for image sources in references mapping

* chore: bump librechat-data-provider version to 0.7.84

* chore: bump @librechat/agents version to 2.4.34

* fix: update auth handling to support multiple auth types in tools and allow key configuration in agent panel

* chore: remove redundant agent attribution text from search form

* fix: web search auth uninstall

* refactor: convert CheckboxButton to a forwardRef component and update setValue callback signature

* feat: add triggerRef prop to ApiKeyDialog components for improved dialog control

* feat: integrate triggerRef in CodeInterpreter and WebSearch components for enhanced dialog management

* feat: enhance ApiKeyDialog with additional links for Firecrawl and Jina API key guidance

* feat: implement web search configuration handling in ApiKeyDialog and add tests for dropdown visibility

* fix: update webSearchConfig reference in config route for correct payload assignment

* feat: update ApiKeyDialog to conditionally render sections based on authTypes and modify loadWebSearchAuth to correctly categorize authentication types

* feat: refactor ApiKeyDialog and related tests to use SearchCategories and RerankerTypes enums and remove nested ternaries

* refactor: move ThinkingButton rendering to improve layout consistency in ContentParts

* feat: integrate search context into Markdown component to conditionally include unicodeCitation plugin

* chore: bump @librechat/agents to v2.4.35

* chore: remove unused 18n key

* ci: add WEB_SEARCH permission testing and update AppService tests for new webSearch configuration

* ci: add more comprehensive tests for loadWebSearchAuth to validate authentication handling and authTypes structure

* chore: remove debugging console log from web.spec.ts to clean up test output

* 🧹 chore: Bump Agents Dependencies (danny-avila#7525)

* chore: bump langchain dependencies

* chore: bump @librechat/agents to v2.4.36

* chore: bump @librechat/agents to v2.4.37

* refactor: simplify remark plugins in Markdown component with no conditional usage

* 🔧 refactor: Progress Text Localization for Running Tools (danny-avila#7526)

* 🔧 chore: Bump Data Provider and Custom Config Versions (danny-avila#7527)

* 🔧 chore: Update CONFIG_VERSION to 1.2.6

* 🔧 chore: Update librechat-data-provider version to 0.7.85

* 👤 feat: Enhance Agent Versioning to Track User Updates (danny-avila#7523)

* feat: Enhance agent update functionality to track user updates

- Updated `updateAgent` function to accept an `updatingUserId` parameter for tracking who made changes.
- Modified agent versioning to include `updatedBy` field for better audit trails.
- Adjusted related functions and tests to ensure proper handling of user updates and version history.
- Enhanced tests to verify correct tracking of `updatedBy` during agent updates and restorations.

* fix: Refactor import tests for improved readability and consistency

- Adjusted formatting in `importChatGptConvo` test to enhance clarity.
- Updated expected output string in `processAssistantMessage` test to use double quotes for consistency.
- Modified processing time expectation in `processAssistantMessage` test to allow for CI environment variability.

* 🧩 feat: Web Search Config Validations & Clipboard Citation Processing (danny-avila#7530)

* 🔧 chore: Add missing optional `scraperTimeout` to webSearchSchema

* chore: Add missing optional `scraperTimeout` to web search authentication result

* chore: linting

* feat: Integrate attachment handling and citation processing in message components

- Added `useAttachments` hook to manage message attachments and search results.
- Updated `MessageParts`, `ContentParts`, and `ContentRender` components to utilize the new hook for improved attachment handling.
- Enhanced `useCopyToClipboard` to format citations correctly, including support for composite citations and deduplication.
- Introduced utility functions for citation processing and cleanup.
- Added tests for the new `useCopyToClipboard` functionality to ensure proper citation formatting and handling.

* feat: Add configuration for LibreChat Code Interpreter API and Web Search variables

* fix: Update searchResults type to use SearchResultData for better type safety

* feat: Add web search configuration validation and logging

- Introduced `checkWebSearchConfig` function to validate web search configuration values, ensuring they are environment variable references.
- Added logging for proper configuration and warnings for incorrect values.
- Created unit tests for `checkWebSearchConfig` to cover various scenarios, including valid and invalid configurations.

* docs: Update README to include Web Search feature details

- Added a section for the Web Search feature, highlighting its capabilities to search the internet and enhance AI context.
- Included links for further information on the Web Search functionality.

* ci: Add mock for checkWebSearchConfig in AppService tests

* chore: linting

* feat: Enhance Shared Messages with Web Search UI by adding searchResults prop to SearchContent and MinimalHoverButtons components

* chore: linting

* refactor: remove Meilisearch index sync from importConversations function

* feat: update safeSearch implementation to use SafeSearchTypes enum

* refactor: remove commented-out code in loadTools function

* fix: ensure responseMessageId handles latestMessage ID correctly

* feat: enhance Vite configuration for improved chunking and caching

- Added additional globIgnores for map files in Workbox configuration.
- Implemented high-impact chunking for various large libraries to optimize performance.
- Increased chunkSizeWarningLimit from 1200 to 1500 for better handling of larger chunks.

* refactor: move health check hook to Root, fix bad setState for Temporary state

- Enhanced the `useHealthCheck` hook to initiate health checks only when the user is authenticated.
- Added logic for managing health check intervals and handling window focus events.
- Introduced a new test suite for `useHealthCheck` to cover various scenarios including authentication state changes and error handling.
- Removed the health check invocation from `ChatRoute` and added it to `Root` for global health monitoring.

* fix: update font alias in Vite configuration for correct path resolution

* 🌍 i18n: Update translation.json with latest translations (danny-avila#7532)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* 🔧 chore: Update data-provider dependencies for typing (danny-avila#7533)

- Updated dependencies to include @langchain/core and @types/winston in both package-lock.json and data-provider package.json.

* 🔧 fix: Artifacts Display Crash on Close and Max Width (danny-avila#7540)

* 🔧 chore: Update react-resizable-panels dependency to version 3.0.2 in package.json and package-lock.json

* fix: Simplify order assignment in SidePanel component based on hasArtifacts condition, fixed frontend crash when artifacts are closed

* refactor: Change throttledSaveLayout to use useMemo for improved performance in SidePanelGroup component

* refactor: Update dependencies in SidePanel component's useEffect hooks for improved responsiveness

* 🏷️ refactor: EditPresetDialog UI and Remove `chatGptLabel` from Presets (danny-avila#7543)

* fix: add necessary dep., remove unnecessary dep from useMentions memoization

* fix: Migrate deprecated chatGptLabel to modelLabel in cleanupPreset and simplify getPresetTitle logic

* fix: Enhance cleanupPreset to remove empty chatGptLabel and add comprehensive tests for label migration and preset handling

* chore: Update endpointType prop in PopoverButtons to allow null values for better flexibility

* refactor: Replace Dialog with OGDialog in EditPresetDialog for improved UI consistency and structure

* style: Update EditPresetDialog layout and styling for improved responsiveness and consistency

* 📦 refactor: Add Additional Chunking to Vite Config (danny-avila#7544)

* ⚡ refactor: Add Additional Chunking to Vite Config

* chore: Integrate rollup-plugin-visualizer for bundle analysis in Vite config & add @codemirror chunks

* ⌚ fix: Debounce `setUserContext` and Default State Param for OpenID Auth (danny-avila#7559)

* fix: Add default random state parameter to OpenID auth request for providers that require it; ensure passport strategy uses it

* ⌚ refactor: debounce setUserContext to avoid race condition

* refactor: Update OpenID authentication to use randomState from openid-client

* chore: linting in presetSettings type definition

* chore: import order in ModelPanel

* refactor: remove `isLegacyOutput` property from AnthropicClient since only used where defined, add latest models to non-legacy patterns, and remove from client cleanup

* refactor: adjust grid layout in Parameters component for improved responsiveness

* refactor: adjust grid layout in ModelPanel for improved display of model parameters

* test: add cases for maxOutputTokens handling in Claude 4 Sonnet and Opus models

* ci: mock loadCustomConfig in server tests and refactor OpenID route for improved authentication handling

* 🚀 feat: Implement Auto-Refill Settings for Balance

* fix: ESLint

* ✨ feat: Enhance Auto-Refill Settings with Validation and Localization

---------

Co-authored-by: andresgit <[email protected]>
Co-authored-by: matt burnett <[email protected]>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: Marco Beretta <[email protected]>
Co-authored-by: hofq <[email protected]>
Co-authored-by: hofq <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Danny Avila <[email protected]>
Co-authored-by: Theo N. Truong <[email protected]>
Co-authored-by: René Honig <[email protected]>
Co-authored-by: Ben Verhees <[email protected]>
Co-authored-by: Amgad Hasan <[email protected]>
Co-authored-by: arthurolivierfortin <[email protected]>
Co-authored-by: Danny Avila <[email protected]>
Co-authored-by: Sebastien Bruel <[email protected]>
Co-authored-by: Austin Barrington <[email protected]>
Co-authored-by: Peter <[email protected]>
Co-authored-by: Atef Bellaaj <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🎨 design UI/UX improvements
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants