* feat: `gpt-4o-mini`
* feat: retrival
* fix: Update order of model token values for 'gpt-4o' and 'gpt-4o-mini'
* fix: Update order of model token values for 'gpt-4o' and 'gpt-4o-mini'
* fix: Update order of model token values for 'gpt-4o' and 'gpt-4o-mini'
* fix: add jsdoc
* fix: Update order of model token values for 'gpt-4o' and 'gpt-4o-mini'
---------
Co-authored-by: Danny Avila <danny@librechat.ai>
* fix: edge case with debugTraverse function in parsers.js
* chore: Update error message in audio stream processing
* refactor: Add ONE_MINUTE and THIRTY_SECONDS options to Time enum
* fix: logging
* fix: do not throw errors for invalid convo id, simply return undefined
* feat: Add error handling and logging to message route definitions
* feat: Refactor Message.js to improve code organization and readability
* fix: Return undefined instead of throwing error for invalid conversation ID in Message.spec.js
* feat: convert main component to float
* feat: convert the remaining components
* feat: use `recoilState` instead of `recoilValue`
* feat: replaced `AutoSendTextSwitch` to `AutoSendTextSelector`
* feat: use `autoSendText` in the `useSpeechToTextExternal` hook
* fix: `autoSendText` timeout
includedTools expects the pluginKey/tool.name for filtering included tools, which is incompatible with the previous implementation in loadAndFormatTools used for loading assistant tools.
This change uses both filename and tool.name for filtering tools in ToolService.loadAndFormatTools in order to make it compatible with the old implementation and the behaviour of plugin filtering.
Co-authored-by: Benedikt Nordhoff <benedikt.nordhoff@codecentric.de>
* fix: dropdown overflow
* fix: make dropdown work on mobile
* feat: update headlessui to 2.0 and use portal
* feat: rewrite modal using headlessui
* fix: applying of maxHeight
* fix: optimize backdrop for dark mode
* fix: rendering dropdown width
* feat: match small screen layout to radix-ui dialog
* revert: mobile modifications
* fix: modal animations
* fix: z-index
* chore: Migrate from HeadlessUI 1.0 to 2.0
* fix: h2 nesting
* fix: use lighter border for PopoverButtons
* feat: Move modal to the top if using a small screen
* fix: mobile position
* fix: frontend tests
* feat: use row layout in mobile instead of col
* fix: remove config path from tsconfig
* fix: fix dropdown tests (gpt4o ftw!)
* feat: Upgrade to latest headlessui version
* fix:test1
* fix: ThemeSelector test
* fix: re-add speech tab
* style: use pl and pr-3
* fix: speech tab dropdowns
* style: use maxHeight for language
* feat: convert DropdownNoState to v2.0
* fix: use v2 params for voiceDropdown
* style: reduce maxHeight for VoiceDropdown and set fixed width
* chore: rebuild package-lock
* style(fix): copy over the same styles for the settingsTab
* style(fix): use -top-1 for speech tabs
* style(fix): use max-w-[400px]
---------
Co-authored-by: Danny Avila <danny@librechat.ai>
* fix(Speech): speechTab settings update
* fix: get speech config; refactor: moved everything to types and removed file types; feature: not overriding variables selected by user
Related to #3261
Add proxy support to `downloadImage` function in `openidStrategy.js`
* Import `HttpsProxyAgent` from `https-proxy-agent`.
* Add `agent` property to the fetch options in `downloadImage` function if `process.env.PROXY` is set.
* Update the `fetch` call in `downloadImage` function to use the proxy agent if available.
* feat: update useTextToSpeech and useSpeechToText hooks to support external audio endpoints
This commit updates the useTextToSpeech and useSpeechToText hooks in the Input directory to support external audio endpoints. It introduces the useGetExternalTextToSpeech and useGetExternalSpeechToText hooks, which determine whether the audio endpoints should be set to 'browser' or 'external' based on the value of the endpointTTS and endpointSTT Recoil states. The useTextToSpeech and useSpeechToText hooks now use these new hooks to determine whether to use external audio endpoints
* feat: add userSelect style to ConversationModeSwitch label
* fix: remove unused updateTokenWebsocket function and import
The updateTokenWebsocket function and its import are no longer used in the OpenAIClient module. This commit removes the function and import to clean up the codebase
* feat: support external audio endpoints in useTextToSpeech and useSpeechToText hooks
This commit updates the useTextToSpeech and useSpeechToText hooks in the Input directory to support external audio endpoints. It introduces the useGetExternalTextToSpeech and useGetExternalSpeechToText hooks, which determine whether the audio endpoints should be set to 'browser' or 'external' based on the value of the endpointTTS and endpointSTT Recoil states. The useTextToSpeech and useSpeechToText hooks now use these new hooks to determine whether to use external audio endpoints
* feat: update AutomaticPlayback component to AutomaticPlaybackSwitch; tests: added AutomaticPlaybackSwitch.spec
>
> This commit renames the AutomaticPlayback component to AutomaticPlaybackSwitch in the Speech directory. The new name better reflects the purpose of the component and aligns with the naming convention used in the codebase.
* feat: update useSpeechToText hook to include interimTranscript
This commit updates the useSpeechToText hook in the client/src/components/Chat/Input/AudioRecorder.tsx file to include the interimTranscript state. This allows for real-time display of the speech-to-text transcription while the user is still speaking. The interimTranscript is now used to update the text area value during recording.
* feat: Add customConfigSpeech API endpoint for retrieving custom speech configuration
This commit adds a new API endpoint in the file under the directory. This endpoint is responsible for retrieving the custom speech configuration using the function from the module
* feat: update store var and ; fix: getCustomConfigSpeech
* fix: client tests, removed unused import
* feat: Update useCustomConfigSpeechQuery to return an array of custom speech configurations
This commit modifies the useCustomConfigSpeechQuery function in the client/src/data-provider/queries.ts file to return an array of custom speech configurations instead of a single object. This change allows for better handling and manipulation of the data in the application
* feat: Update useCustomConfigSpeechQuery to return an array of custom speech configurations
* refactor: Update variable name in speechTab schema
* refactor: removed unused and nested code
* fix: using recoilState
* refactor: Update Speech component to use useCallback for setting settings
* fix: test
* fix: tests
* feature: ensure that the settings don't change after modifying then through the UI
* remove comment
* fix: Handle error gracefully in getCustomConfigSpeech and getVoices endpoints
* fix: Handle error
* fix: backend tests
* fix: invalid custom config logging
* chore: add back custom config info logging
* chore: revert loadCustomConfig spec
---------
Co-authored-by: Danny Avila <danny@librechat.ai>
* feat(plugins): implement tool filtering in PluginsClient
Add functionality to filter tools based on filteredTools and includedTools
arrays in the request's app locals. This allows for dynamic tool selection
on a per-request basis, enhancing the flexibility of the plugin system.
* test(plugins): add unit tests for tool filtering in PluginsClient
Introduce comprehensive test suite for the new tool filtering feature
in PluginsClient. Cover scenarios including filtering out tools,
including specific tools, prioritization of includedTools over
filteredTools, and behavior when no filters are provided.
* chore: Remove unused legacy Conversation component and update imports
* refactor: optimize backend operations for client requests
* fix: message styling
* refactor: Improve handleKeyUp logic in StreamRunManager.js and handleText.js
* refactor: Improve handleKeyUp logic in StreamRunManager.js and handleText.js
* fix: clear new convo messages on clear all convos
* fix: forgot to pass userId to getConvo
* refactor: update getPartialText to send basePayload.text
* chore: Update prompt description placeholder text
* fix: promptsPathPattern to not include new
* feat: command input and styling change for prompt views
* fix: intended validation
* feat: prompts slash command
* chore: localizations and fix add command during creation
* refactor(PromptsCommand): better label
* feat: update `allPrompGroups` cache on all promptGroups mutations
* refactor: ensure assistants builder is first within sidepanel
* refactor: allow defining emailVerified via create-user script
* move shared conditions and early bail to reduce cognitive complexity, improve readability
* refactor: make condition as close to the original as possible
* chore: adjust comment in chat route
* style: fix original styling of non-multi messages
* refactor: separate messagerender logic from 'Message'
---------
Co-authored-by: RehaS <beratson@gmail.com>
* style: add scrollbar-gutter to prevent layout shift
* style: better styling for simple/advanced tab and remove border-r on smaller screens
* style: better description styling
* style: make sure single response Messages style is the same as pre-multi-stream response feature
* chore: comment back handlePlusCommand
* chore: ignore .git dir
* refactor: pass newConversation to `useSelectMention`
refactor: pass newConversation to Mention component
refactor: useChatFunctions for modular use of `ask` and `regenerate`
refactor: set latest message only for the first index in useChatFunctions
refactor: pass setLatestMessage to useChatFunctions
refactor: Pass setSubmission to useChatFunctions for submission handling
refactor: consolidate event handlers to separate hook from useSSE
WIP: additional response handlers
feat: responsive added convo, clears on new chat/navigating to chat, assistants excluded
feat: Add conversationByKeySelector to select any conversation by index
WIP: handle second submission with messages paired to root
* style: surface-primary-contrast
* refactor: remove unnecessary console.log statement in useChatFunctions
* refactor: Consolidate imports in ChatForm and Input hooks
* refactor: compositional usage of useSSE for multiple streams
* WIP: set latest 'multi' message
* WIP: first pass, added response streaming
* pass: performant multi-message stream
* fix: styling and message render
* second pass: modular, performant multi-stream
* fix: align parentMessageId of multiMessage
* refactor: move resetting latestMultiMessage
* chore: update footer text in Chat component
* fix: stop button styling
* fix: handle abortMessage request for multi-response
* clear messages but bug with latest message reset present
* fix: add delay for additional message generation
* fix: access LAST_CONVO_SETUP by index
* style: add div to prevent layout shift before hover buttons render
* chore: Update Message component styling for card messages
* chore: move hook use order
* fix: abort middleware using unsent field from req.body
* feat: support multi-response stream from initial message
* refactor: buildTree function to improve readability and remove unused code
* feat: add logger for frontend dev
* refactor: use depth to track if message is really last in its branch
* fix(buildTree): default export
* fix: share parent message Id and avoid duplication error for multi-response streams
* fix: prevent addedConvo reset to response convo
* feat: allow setting multi message as latest message to control which to respond to
* chore: wrap setSiblingIdxRev with useCallback
* chore: styling and allow editing messages
* style: styling fixes
* feat: Add "AddMultiConvo" component to Chat Header
* feat: prevent clearing added convos on endpoint, preset, mention, or modelSpec switch
* fix: message styling fixes, mainly related to code blocks
* fix: stop button visibility logic
* fix: Handle edge case in abortMiddleware for non-existant `abortControllers`
* refactor: optimize/memoize icons
* chore(GoogleClient): change info to debug logs
* style: active message styling
* style: prevent layout shift due to placeholder row
* chore: remove unused code
* fix: Update BaseClient to handle optional request body properties
* fix(ci): `onStart` now accepts 2 args, the 2nd being responseMessageId
* chore: bump data-provider
* 🌏 i18n: Improve clarity of English translation
* 🔧 fix(useCategories): replace i18n string to `com_ui_select_a_category`
* 🔨 refactor: avoid using placeholder strings where possible
This commit simplifies the internationalization approach for English language strings by removing the placeholder ones where they are used only once. This makes proper localization possible for Russian language, and possibly others.
Also renamed `com_ui_text_prompt` to `com_ui_prompt_text` to match the alphabetical order.
* 🎨 style(CreatePromptForm): add missing margin-top to the submit button
* chore: add detailed logs
* feat: added a variable to specify which attributes to be stored
* chore: Add new optiona variables
* refactor: change BIND_DN as an option
* chore: revert commits that fail testing
* refactor: use ldapid to retrieve users
* chore: remove unused variable
* chore: reverting unintended changes
* fix: return 404 if authentication fails, in accordance with requireLocalAuth.
* fix: handling when ldap settings do not exist
* chore: remove unnecessary check