* refactor(Login & Registration)
* fix(Registration) test errors
* refactor(LoginForm & ResetPassword)
* fix(LoginForm): display 'undefined' when loading page; style(SocialButton): match OpenAI's graphics
* some refactor and style update for social logins
* style: width like OpenAI; feat: custom social login order; refactor: alphabetical socials
* fix(Registration & Login) test
* Update .env.example
* Update .env.example
* Update dotenv.md
* refactor: remove `SOCIAL_LOGIN_ORDER` for `socialLogins` configured from `librechat.yaml`
- initialized by AppService, attached as app.locals property
- rename socialLoginOrder and loginOrder to socialLogins app-wide for consistency
- update types and docs
- initialize config variable as array and not singular string to parse
- bump data-provider to 0.3.9
---------
Co-authored-by: Danny Avila <messagedaniel@protonmail.com>
* 🖌️feat: Scrolltobottom Style
* 🖌️feat: ScrolltoBottom Style
* 📱Settings tab now centered on mobile / selection bug fixed 🐞, 🌍 Updated Translation
* 🛠️fix: Adjust the width of the settings dialog and address the issue of not seeing selection on the desktop.
* 🎨 Update settings tabs background color for dark mode.
Adjusts background color dynamically based on screen size.
* 🛠️fix: Reverted changes in ScrolltoBottom file
* 👤add: Username instead of 'You' when sending messages.
* 🌎: Added a new translation for 'You' and updated the existing translation for Spanish.
* fix: remove "!"
* Added: New setting Account for show username in messages
chore (StopButon and SendButon): Updated to new style of ChatGPT
chore Update and Added news translations: Spanish, English and Portuguese Brazilian
* fix: message component definition and imports order, remove unnecessary useEffect and localStorage set, fix localStorage key in store
* chore: update readme.md
* chore: optimize condition for messageLabel
* chore(Message.tsx): remove empty blocks
---------
Co-authored-by: Raí Santos <140329135+itzraiss@users.noreply.github.com>
* chore: fix `endpoint` typescript issues and typo in console info message
* feat(api): files GET endpoint and save only file_id references to messages
* refactor(client): `useGetFiles` query hook, update file types, optimistic update of filesQuery on file upload
* refactor(buildTree): update to use params object and accept fileMap
* feat: map files to messages; refactor(ChatView): messages only available after files are fetched
* fix: fetch files only when authenticated
* feat(api): AppService
- rename app.locals.configs to app.locals.paths
- load custom config use fileStrategy from yaml config in app.locals
* refactor: separate Firebase and Local strategies, call based on config
* refactor: modularize file strategies and employ with use of DALL-E
* refactor(librechat.yaml): add fileStrategy field
* feat: add source to MongoFile schema, as well as BatchFile, and ExtendedFile types
* feat: employ file strategies for upload/delete files
* refactor(deleteFirebaseFile): add user id validation for firebase file deletion
* chore(deleteFirebaseFile): update jsdocs
* feat: employ strategies for vision requests
* fix(client): handle messages with deleted files
* fix(client): ensure `filesToDelete` always saves/sends `file.source`
* feat(openAI): configurable `resendImages` and `imageDetail`
* refactor(getTokenCountForMessage): recursive process only when array of Objects and only their values (not keys) aside from `image_url` types
* feat(OpenAIClient): calculateImageTokenCost
* chore: remove comment
* refactor(uploadAvatar): employ fileStrategy for avatars, from social logins or user upload
* docs: update docs on how to configure fileStrategy
* fix(ci): mock winston and winston related modules, update DALLE3.spec.js with changes made
* refactor(redis): change terminal message to reflect current development state
* fix(DALL-E-2): pass fileStrategy to dall-e
* fix: load all existing conversation settings on refresh
* refactor(buildDefaultConvo): use `lastConversationSetup.endpointType` before `conversation.endpointType`
* refactor(TMessage/messageSchema): add `endpoint` field to messages to differentiate generation origin
* feat(useNewConvo): `keepLatestMessage` param to prevent reseting the `latestMessage` mid-conversation
* style(Settings): adjust height styling to allow more space in dialog for additional settings
* feat: Modular Chat: experimental setting to Enable switching Endpoints mid-conversation
* fix(ChatRoute): fix potential parsing issue with tPresetSchema
* localization + api-endpoint
* docs: added firebase documentation
* chore: icons
* chore: SettingsTabs
* feat: account pannel; fix: gear icons
* docs: position update
* feat: firebase
* feat: plugin support
* route
* fixed bugs with firebase and moved a lot of files
* chore(DALLE3): using UUID v4
* feat: support for social strategies; moved '/images' path
* fix: data ignored
* gitignore update
* docs: update firebase guide
* refactor: Firebase
- use singleton pattern for firebase initialization, initially on server start
- reorganize imports, move firebase specific files to own service under Files
- rename modules to remove 'avatar' redundancy
- fix imports based on changes
* ci(DALLE/DALLE3): fix tests to use logger and new expected outputs, add firebase tests
* refactor(loadToolWithAuth): pass userId to tool as field
* feat(images/parse): feat: Add URL Image Basename Extraction
Implement a new module to extract the basename of an image from a given URL. This addition includes the function, which parses the URL and retrieves the basename using the Node.js 'url' and 'path' modules. The function is documented with JSDoc comments for better maintainability and understanding. This feature enhances the application's ability to handle and process image URLs efficiently.
* refactor(addImages): function to use a more specific regular expression for observedImagePath based on the generated image markdown standard across the app
* refactor(DALLE/DALLE3): utilize `getImageBasename` and `this.userId`; fix: pass correct image path to firebase url helper
* fix(addImages): make more general to match any image markdown descriptor
* fix(parse/getImageBasename): test result of this function for an actual image basename
* ci(DALLE3): mock getImageBasename
* refactor(AuthContext): use Recoil atom state for user
* feat: useUploadAvatarMutation, react-query hook for avatar upload
* fix(Toast): stack z-order of Toast over all components (1000)
* refactor(showToast): add optional status field to avoid importing NotificationSeverity on each use of the function
* refactor(routes/avatar): remove unnecessary get route, get userId from req.user.id, require auth on POST request
* chore(uploadAvatar): TODO: remove direct use of Model, `User`
* fix(client): fix Spinner imports
* refactor(Avatar): use react-query hook, Toast, remove unnecessary states, add optimistic UI to upload
* fix(avatar/localStrategy): correctly save local profile picture and cache bust for immediate rendering; fix: firebase init info message (only show once)
* fix: use `includes` instead of `endsWith` for checking manual query of avatar image path in case more queries are appended (as is done in avatar/localStrategy)
---------
Co-authored-by: Danny Avila <messagedaniel@protonmail.com>
* refactor: add gemini-pro to google Models list; use defaultModels for central model listing
* refactor(SetKeyDialog): create useMultipleKeys hook to use for Azure, export `isJson` from utils, use EModelEndpoint
* refactor(useUserKey): change variable names to make keyName setting more clear
* refactor(FileUpload): allow passing container className string
* feat(GoogleClient): Gemini support
* refactor(GoogleClient): alternate stream speed for Gemini models
* feat(Gemini): styling/settings configuration for Gemini
* refactor(GoogleClient): substract max response tokens from max context tokens if context is above 32k (I/O max is combined between the two)
* refactor(tokens): correct google max token counts and subtract max response tokens when input/output count are combined towards max context count
* feat(google/initializeClient): handle both local and user_provided credentials and write tests
* fix(GoogleClient): catch if credentials are undefined, handle if serviceKey is string or object correctly, handle no examples passed, throw error if not a Generative Language model and no service account JSON key is provided, throw error if it is a Generative m
odel, but not google API key was provided
* refactor(loadAsyncEndpoints/google): activate Google endpoint if either the service key JSON file is provided in /api/data, or a GOOGLE_KEY is defined.
* docs: updated Google configuration
* fix(ci): Mock import of Service Account Key JSON file (auth.json)
* Update apis_and_tokens.md
* feat: increase max output tokens slider for gemini pro
* refactor(GoogleSettings): handle max and default maxOutputTokens on model change
* chore: add sensitive redact regex
* docs: add warning about data privacy
* Update apis_and_tokens.md
* feat: update PaLM icons
* feat: add additional google models
* POC: formatting inputs for Vertex AI streaming
* refactor: move endpoints services outside of /routes dir to /services/Endpoints
* refactor: shorten schemas import
* refactor: rename PALM to GOOGLE
* feat: make Google editable endpoint
* feat: reusable Ask and Edit controllers based off Anthropic
* chore: organize imports/logic
* fix(parseConvo): include examples in googleSchema
* fix: google only allows odd number of messages to be sent
* fix: pass proxy to AnthropicClient
* refactor: change `google` altName to `Google`
* refactor: update getModelMaxTokens and related functions to handle maxTokensMap with nested endpoint model key/values
* refactor: google Icon and response sender changes (Codey and Google logo instead of PaLM in all cases)
* feat: google support for maxTokensMap
* feat: google updated endpoints with Ask/Edit controllers, buildOptions, and initializeClient
* feat(GoogleClient): now builds prompt for text models and supports real streaming from Vertex AI through langchain
* chore(GoogleClient): remove comments, left before for reference in git history
* docs: update google instructions (WIP)
* docs(apis_and_tokens.md): add images to google instructions
* docs: remove typo apis_and_tokens.md
* Update apis_and_tokens.md
* feat(Google): use default settings map, fully support context for both text and chat models, fully support examples for chat models
* chore: update more PaLM references to Google
* chore: move playwright out of workflows to avoid failing tests
* fix: type issues with icons
* refactor: use react query for presets, show toasts on preset crud, refactor mutations, remove presetsQuery from Root (breaking change)
* refactor: change preset titling
* refactor: update preset schemas and methods for necessary new properties `order` and `defaultPreset`
* feat: add `defaultPreset` Recoil value
* refactor(getPresetTitle): make logic cleaner and more concise
* feat: complete UI portion of defaultPreset feature, with animations added to preset items
* chore: remove console.logs()
* feat: complete default preset handling
* refactor: remove user sensitive values on logout
* fix: allow endpoint selection without default preset overwriting
* fix: only allow message send when key is provided when required
- create useRequiresKey hook
- pass same disabled prop to Textarea, AttachFile, and SendButton
- EndpointItem: add localization, stopPropagation, and remove commented code
- separate some hooks to new Input dir
- completely remove textareaHeight recoil state as is not needed
- update imports for moved hooks
- pass disabled prop to useTextarea
* feat: add localization to textarea placeholders
* Correct the display of the interface when hovering with the mouse
* Replace ring-1 with border completely.
* Fix it so that the text does not overlap with the SVG in mobile navigation.
* Remove the extra class -ml-0.5 -mt-0.5, there is no need to shift the buttons
* Update azure_cognitive_search.md
* Updated: Azure Cognitive Search Plugin to Azure AI Search Plugin.
Update Docs: Azure Cognitive Search Plugin to Azure AI Search Plugin.
Updated:.env.example Azure Cognitive Search to Azure AI Search
Updated: mkdocs.yml link
Updated: SDK Azure 11.3.2 to 12.0.0
* fix:.env AZURE- to AZURE_
* Update azure_ai_search.md
* Updated:(api/package.json, package-lock.json): updated for new version the
plugin (@azure/search-documents)
* fix:Resolved incorrect file name AzureAISearch
* fix:.env Azure AI Search
* fix:"-" to "_"
* Update Docs: Azure AI Search ith an improved tutorial featuring images and easier-to-understand instructions
fix: Change name of plugin "Azure Ai Search" to "Azure AI Search" i
* Update:Version of REST API versions (Azure AI Search)
* Update azure_ai_search.md
* Update azure_ai_search.md
* Update azure_ai_search.md
* fix: docs Azure AI Seach Images were not appearing.
* fix:Updated to the new repository with working APIs
* Update: Added Compatibility for Previous Environment Variable Names in AzureAISearch Plugin
* Update: Added Compatibility for Previous Environment Variable Names in AzureAISearch Plugin
* Update: Added Compatibility for Previous Environment Variable Names in AzureAISearch Plugin
* Update: Added Compatibility for Previous Environment Variable Names in AzureAISearch Plugin
* Update: o AzureAiSearch.js
* Atualizar o AzureAISearch.js
* Update/fix:EnvironmentVariablesForDeprecation
* fix:The file is outdated and needs to be updated.
* fix:The file is outdated and needs to be updated.
* update: translation portuguese brazilian
* Refactor:Improve Readability and Cleanliness of AzureAISearch Class
* Update AzureAiSearch.js
* Update AzureAISearch.js
* feat: add timer duration to showToast, show toast for preset selection
* refactor: replace old /chat/ route with /c/. e2e tests will fail here
* refactor: move typedefs to root of /api/ and add a few to assistant types in TS
* refactor: reorganize data-provider imports, fix dependency cycle, strategize new plan to separate react dependent packages
* feat: add dataService for uploading images
* feat(data-provider): add mutation keys
* feat: file resizing and upload
* WIP: initial API image handling
* fix: catch JSON.parse of localStorage tools
* chore: experimental: use module-alias for absolute imports
* refactor: change temp_file_id strategy
* fix: updating files state by using Map and defining react query callbacks in a way that keeps them during component unmount, initial delete handling
* feat: properly handle file deletion
* refactor: unexpose complete filepath and resize from server for higher fidelity
* fix: make sure resized height, width is saved, catch bad requests
* refactor: use absolute imports
* fix: prevent setOptions from being called more than once for OpenAIClient, made note to fix for PluginsClient
* refactor: import supportsFiles and models vars from schemas
* fix: correctly replace temp file id
* refactor(BaseClient): use absolute imports, pass message 'opts' to buildMessages method, count tokens for nested objects/arrays
* feat: add validateVisionModel to determine if model has vision capabilities
* chore(checkBalance): update jsdoc
* feat: formatVisionMessage: change message content format dependent on role and image_urls passed
* refactor: add usage to File schema, make create and updateFile, correctly set and remove TTL
* feat: working vision support
TODO: file size, type, amount validations, making sure they are styled right, and making sure you can add images from the clipboard/dragging
* feat: clipboard support for uploading images
* feat: handle files on drop to screen, refactor top level view code to Presentation component so the useDragHelpers hook has ChatContext
* fix(Images): replace uploaded images in place
* feat: add filepath validation to protect sensitive files
* fix: ensure correct file_ids are push and not the Map key values
* fix(ToastContext): type issue
* feat: add basic file validation
* fix(useDragHelpers): correct context issue with `files` dependency
* refactor: consolidate setErrors logic to setError
* feat: add dialog Image overlay on image click
* fix: close endpoints menu on click
* chore: set detail to auto, make note for configuration
* fix: react warning (button desc. of button)
* refactor: optimize filepath handling, pass file_ids to images for easier re-use
* refactor: optimize image file handling, allow re-using files in regen, pass more file metadata in messages
* feat: lazy loading images including use of upload preview
* fix: SetKeyDialog closing, stopPropagation on Dialog content click
* style(EndpointMenuItem): tighten up the style, fix dark theme showing in lightmode, make menu more ux friendly
* style: change maxheight of all settings textareas to 138px from 300px
* style: better styling for textarea and enclosing buttons
* refactor(PresetItems): swap back edit and delete icons
* feat: make textarea placeholder dynamic to endpoint
* style: show user hover buttons only on hover when message is streaming
* fix: ordered list not going past 9, fix css
* feat: add User/AI labels; style: hide loading spinner
* feat: add back custom footer, change original footer text
* feat: dynamic landing icons based on endpoint
* chore: comment out assistants route
* fix: autoScroll to newest on /c/ view
* fix: Export Conversation on new UI
* style: match message style of official more closely
* ci: fix api jest unit tests, comment out e2e tests for now as they will fail until addressed
* feat: more file validation and use blob in preview field, not filepath, to fix temp deletion
* feat: filefilter for multer
* feat: better AI labels based on custom name, model, and endpoint instead of `ChatGPT`
* Update Translation to Portugues Brasil
* Update Translation to Language Portugues Brasileiro
* Update Translation to Language Español
* Fix Translation to Language Español
* Update Es.tsx
* Update Br.tsx
* style(Header): hide scrollbar but still allow side scroll/swipe/drag/touch
* feat: make menu buttons flexiblewith min-width, delete passed in classes, add pointer-cursor
* refactor: use conditional for visibility of plugins settings
* fix: make advanced settings popover appear over nav
* refactor(textarea): minor padding restyling, add max height
* style: make menuItem checkmark invisible instead of hidden so it takes up width space
* style: make presetsMenu trigger an icon button, remove max-width of presets except in mobile view
* style: improve advanced settings mobile styling
* feat: newchat and convo items toggle nav on small screens
* style: improve no presets view
* style: make sure toggle hover effect does not apply on smaller screens