gitextract_mr7njc_7/ ├── .dependency-cruiser.cjs ├── .dockerignore ├── .eslintrc.cjs ├── .github/ │ └── workflows/ │ └── deploy_to_gh_pages.yml ├── .gitignore ├── .husky/ │ ├── .gitignore │ ├── pre-commit │ └── pre-push ├── .prettierrc ├── .yarn/ │ ├── patches/ │ │ └── kbar-npm-0.1.0-beta.45-790a9a69bc.patch │ └── releases/ │ └── yarn-4.1.1.cjs ├── .yarnrc.yml ├── Dockerfile ├── LICENSE ├── README.md ├── compose.yml ├── docs/ │ ├── debugging.md │ └── platform-code-splitting.md ├── environments/ │ ├── chrome/ │ │ ├── chrome.background.ts │ │ ├── chrome.manifest.json │ │ └── chrome.vite.ts │ ├── firefox/ │ │ ├── firefox.background.ts │ │ ├── firefox.manifest.json │ │ └── firefox.vite.ts │ └── pwa/ │ └── pwa.vite.ts ├── index.html ├── lib/ │ └── vite-plugin-platform-resolver/ │ └── plugin.ts ├── package.json ├── playwright.config.ts ├── postcss.config.js ├── public/ │ └── robots.txt ├── scripts/ │ └── prepare-chrome.mts ├── src/ │ ├── App.tsx │ ├── components/ │ │ ├── AttachmentWrapper.tsx │ │ ├── BreadcrumbBar.tsx │ │ ├── CachedImage.tsx │ │ ├── ChatBoxInputRow.tsx │ │ ├── ChatBoxPrompt.tsx │ │ ├── CopyButton.tsx │ │ ├── EnabledCheckbox.tsx │ │ ├── FunTitle.tsx │ │ ├── HostInput.tsx │ │ ├── KeyboardToolTip.tsx │ │ ├── ModelAndPersonaDisplay.tsx │ │ ├── ModelRefreshButton.tsx │ │ ├── ModelSelector.tsx │ │ ├── NavButton.tsx │ │ ├── Navbar.tsx │ │ ├── OmniBar.tsx │ │ ├── PersonaSelector.tsx │ │ ├── SelectionTablePanel.tsx │ │ ├── ThemeSelector.tsx │ │ ├── ToastCenter.tsx │ │ ├── Tooltip.tsx │ │ ├── chat/ │ │ │ ├── ChatListSection.tsx │ │ │ ├── ChatModelPopover.tsx │ │ │ └── ChatSettingsSection.tsx │ │ ├── form/ │ │ │ ├── FormInput.tsx │ │ │ ├── FormTextarea.tsx │ │ │ └── ModelAutocomplete.tsx │ │ ├── listItem/ │ │ │ └── BaseListItem.tsx │ │ └── message/ │ │ ├── ChatBoxMessage.tsx │ │ ├── CustomCodeBlock.tsx │ │ ├── CustomMathBlock.tsx │ │ ├── LazyMessage.tsx │ │ ├── Message.tsx │ │ ├── MessageFooter.tsx │ │ ├── MessageGroup.tsx │ │ ├── MessageHeader.tsx │ │ └── MessageVariationSelectionRow.tsx │ ├── containers/ │ │ ├── ChatBox.tsx │ │ ├── DaisyUiThemeProvider.tsx │ │ ├── Drawer.tsx │ │ ├── Dropzone.tsx │ │ ├── ScrollableChatFeed.tsx │ │ ├── SettingSection.tsx │ │ └── SideBar.tsx │ ├── core/ │ │ ├── BaseTable.ts │ │ ├── FocusStore.ts │ │ ├── IncomingMessageStore.ts │ │ ├── LanguageModel.factory.ts │ │ ├── LanguageModel.tsx │ │ ├── OllamaStore.tsx │ │ ├── ProgressStore.tsx │ │ ├── ToastStore.ts │ │ ├── TransferHandler.ts │ │ ├── actor/ │ │ │ ├── ActorModel.factory.ts │ │ │ ├── ActorModel.ts │ │ │ ├── ActorStore.ts │ │ │ ├── ActorTable.ts │ │ │ └── ActorViewModel.ts │ │ ├── chat/ │ │ │ ├── ChatModel.factory.ts │ │ │ ├── ChatModel.ts │ │ │ ├── ChatStore.ts │ │ │ ├── ChatTable.ts │ │ │ ├── ChatViewModel.ts │ │ │ ├── EditedMessageHandler.ts │ │ │ ├── PreviewImageHandler.ts │ │ │ ├── chatTransfer.ts │ │ │ └── importLegacyChat.ts │ │ ├── connection/ │ │ │ ├── ConnectionModel.factory.ts │ │ │ ├── ConnectionModel.ts │ │ │ ├── ConnectionStore.ts │ │ │ ├── ConnectionTable.ts │ │ │ ├── api/ │ │ │ │ ├── A1111Api.ts │ │ │ │ ├── BaseApi.ts │ │ │ │ ├── GeminiApi.ts │ │ │ │ ├── OllamaApi.ts │ │ │ │ ├── OpenAiApi.ts │ │ │ │ └── getApiByType.ts │ │ │ ├── importLegacyConnectionStore.ts │ │ │ ├── types.ts │ │ │ └── viewModels/ │ │ │ ├── A1111ConnectionViewModel.ts │ │ │ ├── BaseConnectionViewModel.ts │ │ │ ├── GeminiConnectionViewModel.ts │ │ │ ├── LmsConnectionViewModel.ts │ │ │ ├── OllamaConnectionViewModel.tsx │ │ │ ├── OpenAiConnectionViewModel.ts │ │ │ └── index.ts │ │ ├── db.ts │ │ ├── message/ │ │ │ ├── MessageModel.factory.ts │ │ │ ├── MessageModel.ts │ │ │ ├── MessageTable.ts │ │ │ ├── MessageViewModel.ts │ │ │ ├── SelectedVariationHandler.ts │ │ │ ├── importLegacyMessage.ts │ │ │ └── messageTransfer.ts │ │ ├── persona/ │ │ │ ├── PersonaModel.ts │ │ │ ├── PersonaStore.ts │ │ │ ├── PersonaTable.ts │ │ │ └── importLegacyPersonaStore.ts │ │ ├── setting/ │ │ │ ├── SettingModel.ts │ │ │ ├── SettingStore.ts │ │ │ ├── SettingTable.ts │ │ │ └── importLegacySettingStore.ts │ │ ├── transformers/ │ │ │ └── toOllamaModel.ts │ │ ├── types.ts │ │ └── voice/ │ │ ├── VoiceModel.ts │ │ ├── VoiceStore.ts │ │ └── VoiceTable.ts │ ├── features/ │ │ ├── lightbox/ │ │ │ ├── LightboxStore.ts │ │ │ └── components/ │ │ │ ├── LazyLightbox.tsx │ │ │ └── Lightbox.tsx │ │ ├── progress/ │ │ │ └── components/ │ │ │ └── Progresses.tsx │ │ └── settings/ │ │ ├── SettingSearchBar.tsx │ │ ├── containers/ │ │ │ └── SettingsModal.tsx │ │ ├── panels/ │ │ │ ├── MobileSplashPanel.tsx │ │ │ ├── actor/ │ │ │ │ └── ActorForm.tsx │ │ │ ├── chat/ │ │ │ │ ├── ChatForm.tsx │ │ │ │ └── ChatPanel.tsx │ │ │ ├── connections/ │ │ │ │ ├── ConnectionPanel.tsx │ │ │ │ ├── ConnectionParameterSection.tsx │ │ │ │ └── NewConnectionPanel.tsx │ │ │ ├── general/ │ │ │ │ ├── AppGeneralPanel.tsx │ │ │ │ └── GeneralPanel.tsx │ │ │ ├── help/ │ │ │ │ ├── A1111HelpMarkdown.ts │ │ │ │ ├── GeminiHelpPanel.tsx │ │ │ │ ├── HelpPanel.tsx │ │ │ │ ├── LmsHelpMarkdown.ts │ │ │ │ ├── OllamaHelpMarkdown.ts │ │ │ │ └── OpenAiHelpPanelMarkdown.ts │ │ │ ├── model/ │ │ │ │ ├── A1111ModelPanel.tsx │ │ │ │ ├── GeminiModelPanel.tsx │ │ │ │ ├── ModelPanel.tsx │ │ │ │ ├── NotConnectedPanelSection.tsx │ │ │ │ ├── OllamaModelPanel.tsx │ │ │ │ └── OpenAiModelPanel.tsx │ │ │ └── persona/ │ │ │ ├── PersonaForm.tsx │ │ │ └── PersonaPanel.tsx │ │ └── settingRoutes.tsx │ ├── icons/ │ │ ├── AppSettings.tsx │ │ ├── Back.tsx │ │ ├── Bars3.tsx │ │ ├── CancelEdit.tsx │ │ ├── ChatBubble.tsx │ │ ├── Check.tsx │ │ ├── ChevronDown.tsx │ │ ├── CloudDown.tsx │ │ ├── Copy.tsx │ │ ├── CopySuccess.tsx │ │ ├── Create.tsx │ │ ├── Delete.tsx │ │ ├── DocumentArrowDown.tsx │ │ ├── DocumentArrowUp.tsx │ │ ├── DocumentDownload.tsx │ │ ├── DownloadTray.tsx │ │ ├── Edit.tsx │ │ ├── Github.tsx │ │ ├── Globe.tsx │ │ ├── Image.tsx │ │ ├── MediaEject.tsx │ │ ├── Options.tsx │ │ ├── Paperclip.tsx │ │ ├── PlayPause.tsx │ │ ├── Question.tsx │ │ ├── Refresh.tsx │ │ ├── Search.tsx │ │ ├── Send.tsx │ │ ├── ShrinkHorizontal.tsx │ │ ├── StartupSpinner.tsx │ │ ├── Stop.tsx │ │ ├── Warning.tsx │ │ ├── WindowCheck.tsx │ │ ├── WindowClose.tsx │ │ ├── WindowPlus.tsx │ │ └── WindowView.tsx │ ├── index.css │ ├── main.tsx │ ├── tests/ │ │ ├── components/ │ │ │ ├── ModelAndPersonaDisplay.test.tsx │ │ │ ├── ModelSelector.test.tsx │ │ │ └── Omnibar.test.tsx │ │ ├── core/ │ │ │ ├── ActorViewModel.test.ts │ │ │ ├── ChatViewModel.test.ts │ │ │ ├── ConnectionViewModel.test.ts │ │ │ ├── LanguageModel.test.ts │ │ │ ├── MessageViewModel.test.ts │ │ │ └── Setting.test.ts │ │ ├── helpers/ │ │ │ └── setServerResponseForModels.ts │ │ ├── msw.ts │ │ ├── setupTests.ts │ │ └── utils/ │ │ └── chatToDateLabel.test.ts │ ├── types/ │ │ ├── AI.d.ts │ │ └── JSX.ts │ ├── utils/ │ │ ├── CachedStorage.chrome.ts │ │ ├── CachedStorage.platform.ts │ │ ├── EntityCache.ts │ │ ├── addImageToCachedStorage.ts │ │ ├── base64EncodeImage.ts │ │ ├── cachedStorage/ │ │ │ └── CachedStorage.worker.ts │ │ ├── chatToDateLabel.ts │ │ ├── classFromProps.ts │ │ ├── formatMessageDetails.ts │ │ ├── hooks/ │ │ │ ├── useReloader.platform.ts │ │ │ └── useReloader.pwa.ts │ │ ├── humanizeShortcut.ts │ │ └── rewriteChromeUrl.tsx │ └── vite-env.d.ts ├── tailwind.config.ts ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts