import { atom } from 'recoil'; import { SettingsViews, LocalStorageKeys } from 'librechat-data-provider'; import { atomWithLocalStorage } from '~/store/utils'; import type { TOptionSettings } from '~/common'; // Static atoms without localStorage const staticAtoms = { abortScroll: atom({ key: 'abortScroll', default: false }), showFiles: atom({ key: 'showFiles', default: false }), optionSettings: atom({ key: 'optionSettings', default: {} }), showPluginStoreDialog: atom({ key: 'showPluginStoreDialog', default: false }), showAgentSettings: atom({ key: 'showAgentSettings', default: false }), currentSettingsView: atom({ key: 'currentSettingsView', default: SettingsViews.default, }), showBingToneSetting: atom({ key: 'showBingToneSetting', default: false }), showPopover: atom({ key: 'showPopover', default: false }), }; const localStorageAtoms = { // General settings autoScroll: atomWithLocalStorage('autoScroll', false), hideSidePanel: atomWithLocalStorage('hideSidePanel', false), fontSize: atomWithLocalStorage('fontSize', 'text-base'), enableUserMsgMarkdown: atomWithLocalStorage( LocalStorageKeys.ENABLE_USER_MSG_MARKDOWN, true, ), // Messages settings enterToSend: atomWithLocalStorage('enterToSend', true), chatDirection: atomWithLocalStorage('chatDirection', 'LTR'), showCode: atomWithLocalStorage('showCode', false), saveDrafts: atomWithLocalStorage('saveDrafts', true), forkSetting: atomWithLocalStorage('forkSetting', ''), splitAtTarget: atomWithLocalStorage('splitAtTarget', false), rememberDefaultFork: atomWithLocalStorage(LocalStorageKeys.REMEMBER_FORK_OPTION, false), // Beta features settings modularChat: atomWithLocalStorage('modularChat', true), LaTeXParsing: atomWithLocalStorage('LaTeXParsing', true), codeArtifacts: atomWithLocalStorage('codeArtifacts', false), includeShadcnui: atomWithLocalStorage('includeShadcnui', false), customPromptMode: atomWithLocalStorage('customPromptMode', false), // Commands settings atCommand: atomWithLocalStorage('atCommand', true), plusCommand: atomWithLocalStorage('plusCommand', true), slashCommand: atomWithLocalStorage('slashCommand', true), // Speech settings conversationMode: atomWithLocalStorage('conversationMode', false), advancedMode: atomWithLocalStorage('advancedMode', false), speechToText: atomWithLocalStorage('speechToText', true), engineSTT: atomWithLocalStorage('engineSTT', 'browser'), languageSTT: atomWithLocalStorage('languageSTT', ''), autoTranscribeAudio: atomWithLocalStorage('autoTranscribeAudio', false), decibelValue: atomWithLocalStorage('decibelValue', -45), autoSendText: atomWithLocalStorage('autoSendText', -1), textToSpeech: atomWithLocalStorage('textToSpeech', true), engineTTS: atomWithLocalStorage('engineTTS', 'browser'), voice: atomWithLocalStorage('voice', undefined), cloudBrowserVoices: atomWithLocalStorage('cloudBrowserVoices', false), languageTTS: atomWithLocalStorage('languageTTS', ''), automaticPlayback: atomWithLocalStorage('automaticPlayback', false), playbackRate: atomWithLocalStorage('playbackRate', null), cacheTTS: atomWithLocalStorage('cacheTTS', true), // Account settings UsernameDisplay: atomWithLocalStorage('UsernameDisplay', true), }; export default { ...staticAtoms, ...localStorageAtoms };