* feat: Update speech settings retrieval logic to handle missing custom configuration
This commit updates the logic in the Speech component and the getCustomConfigSpeech function to handle the case where the custom configuration is missing. Previously, if no custom configuration was found, an error would occur. Now, the code checks for the presence of the custom configuration and returns a message indicating that no custom configuration was found. This improves the robustness of the application and provides a better user experience.
* refactor: changed response message when no custom config is found
* refactor: Update staticCache to use oneDayInSeconds for sMaxAge and maxAge
* refactor: role updates
* style: first pass cursor
* style: Update nested list styles in style.css
* feat: setIsSubmitting to true in message handler to prevent edge case where submitting turns false during message stream
* feat: Add logic to redirect to conversation page after creating a new conversation
* refactor: Trim code string before copying in CodeBlock component
* feat: configSchema bookmarks and presets defaults
* feat: Update loadDefaultInterface to handle undefined config
* refactor: use for compression check
* feat: first pass, query params
* fix: styling issues for prompt cards
* feat: anthropic prompt caching UI switch
* chore: Update static file cache control defaults/comments in .env.example
* ci: fix tests
* ci: fix tests
* chore: use "submitting" class server error connection suspense fallback
* refactor: simplify LaTeX pre-processing for more consistent rendering, disables `singleDollarTextMath`
* refactor: disable singleDollarTextMath in all markdown components
* wip: first pass
* refactor: preserve code blocks and convert rather than preserve LaTeX delimiters
* refactor: remove unused escapeDollarNumber function from latex.ts
* chore: update package version to 0.7.416
* chore: Update Role.js imports order
* refactor: move updateTagsInConvo to tags route, add RBAC for tags
* refactor: add updateTagsInConvoOptions
* fix: loading state for bookmark form
* refactor: update primaryText class in TitleButton component
* refactor: remove duplicate bookmarks and theming
* refactor: update EditIcon component to use React.forwardRef
* refactor: add _id field to tConversationTagSchema
* refactor: remove promises
* refactor: move mutation logic from BookmarkForm -> BookmarkEditDialog
* refactor: update button class in BookmarkForm component
* fix: conversation mutations and add better logging to useConversationTagMutation
* refactor: update logger message in BookmarkEditDialog component
* refactor: improve UI consistency in BookmarkNav and NewChat components
* refactor: update logger message in BookmarkEditDialog component
* refactor: Add tags prop to BookmarkForm component
* refactor: Update BookmarkForm to avoid tag mutation if the tag already exists; also close dialog on submission programmatically
* refactor: general role helper function to support updating access permissions for different permission types
* refactor: Update getLatestText function to handle undefined values in message.content
* refactor: Update useHasAccess hook to handle null role values for authenticated users
* feat: toggle bookmarks access
* refactor: Update PromptsCommand to handle access permissions for prompts
* feat: updateConversationSelector
* refactor: rename `vars` to `tagToDelete` for clarity
* fix: prevent recreation of deleted tags in BookmarkMenu on Item Click
* ci: mock updateBookmarksAccess function
* ci: mock updateBookmarksAccess function
* chore: update CONFIG_VERSION to '1.1.6'
* chore: update package version to 0.7.415
* feat: toggle USER role access to prompts via librechat.yaml
* refactor: set prompts to true when loadDefaultInterface returns true
* ci(AppService): mock updatePromptsAccess
* refactor(DropdownPopup): set MenuButton `as` prop to `div` to prevent React warning: validateDOMNesting(...): <button> cannot appear as a descendant of <button>
* refactor: memoize ChatGroupItem and ControlCombobox components
* refactor(OpenAIClient): await stream process finish before finalCompletion event handling
* refactor: update useSSE.ts typing to handle null and undefined values in data properties
* refactor: set abort scroll to false on SSE connection open
* refactor: improve logger functionality with filter support
* refactor: update handleScroll typing in MessageContainer component
* refactor: update logger.dir call in useChatFunctions to log 'message_stream' tag format instead of the entire submission object as first arg
* refactor: fix null check for message object in Message component
* refactor: throttle handleScroll to help prevent auto-scrolling issues on new message requests; fix type issues within useMessageProcess
* refactor: add abortScrollByIndex logging effect
* refactor: update MessageIcon and Icon components to use React.memo for performance optimization
* refactor: memoize ConvoIconURL component for performance optimization
* chore: type issues
* chore: update package version to 0.7.414
* refactor(OpenAIClient): improve error handling in chat completion
Improve error handling in the chat completion process to handle scenarios where the response has no choices or the message is undefined. This ensures that the intermediate reply is returned in such cases. Also, add logging statements for better debugging.
* refactor(Markdown): only show blinking cursor for latest message
* refactor: add submitting selector to prevent blinking cursor for empty, non-streaming, non-latest messages
* refactor: Improve LiveAnnouncer component
The LiveAnnouncer component in the client/src/a11y/LiveAnnouncer.tsx file has been refactored to improve its functionality. The component now processes text in chunks for better performance and adds a minimum announcement delay to prevent overlapping announcements. Additionally, the component now properly clears the announcement message and ID before setting a new one. These changes enhance the accessibility and user experience of the LiveAnnouncer component.
* refactor: manage only 2 LiveAnnouncer aria-live elements, queue assertive/polite together
* refactor: use localizations for event announcements
* refactor: update minimum announcement delay in LiveAnnouncer component
* refactor: replace *`_
* chore(useContentHandler): typing
* chore: more type fixes and safely announce final message
* feat: Add SimpleCombobox component
* feat: Add labelClassName and add manual focus handling
* feat: Update VariableForm component to use SimpleCombobox
The VariableForm component in the client/src/components/Prompts/Groups/VariableForm.tsx file has been updated to use the SimpleCombobox component instead of the InputWithDropdown component. This change improves the functionality and styling of the form.
* chore: Update VariableForm component placeholder text
* refactor: Improve VariableForm component
The VariableForm component in the client/src/components/Prompts/Groups/VariableForm.tsx file has been refactored to improve its functionality. The `parseFieldConfig` function now trims the `variable` string before processing it. Additionally, the `onSubmit` function now properly escapes potential regex special chars that may cause issues when replacing text
* refactor: Improve VariableForm using ariakit helpers/custom fields, open menu on input focus
* refactor: rename SimpleCombobox to InputCombobox
* chore: Update @ariakit/react dependency to version 0.4.8
* refactor: Fix Combobox Android issue with radix-ui
* fix: Improve scrolling behavior by setting abort scroll state to false after scrolling to end
* wip: first pass switcher rewrite
* feat: Add button width calculation for ComboboxComponent
* refactor: Update ComboboxComponent styling for improved layout and appearance
* refactor: Update AssistantSwitcher component to handle null values for assistant names and avatar URLs
* refactor: Update ModelSwitcher component to use SimpleCombobox for improved functionality and styling
* refactor: Update Switcher Separator styling for improved layout and appearance
* refactor: Improve accessibility by adding aria-label to ComboboxComponent select items
* refactor: rename SimpleCombobox -> ControlCombobox