@lobehub/lobehub 2.0.0-next.95 → 2.0.0-next.97
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +58 -0
- package/apps/desktop/src/preload/index.ts +2 -2
- package/apps/desktop/src/preload/invoke.ts +1 -1
- package/apps/desktop/src/preload/routeInterceptor.ts +41 -41
- package/changelog/v1.json +18 -0
- package/locales/ar/common.json +21 -0
- package/locales/ar/hotkey.json +4 -0
- package/locales/ar/models.json +6 -0
- package/locales/bg-BG/common.json +21 -0
- package/locales/bg-BG/hotkey.json +4 -0
- package/locales/bg-BG/models.json +6 -0
- package/locales/de-DE/common.json +21 -0
- package/locales/de-DE/hotkey.json +4 -0
- package/locales/de-DE/models.json +6 -0
- package/locales/en-US/common.json +21 -0
- package/locales/en-US/hotkey.json +4 -0
- package/locales/en-US/models.json +6 -0
- package/locales/es-ES/common.json +21 -0
- package/locales/es-ES/hotkey.json +4 -0
- package/locales/es-ES/models.json +6 -0
- package/locales/fa-IR/common.json +21 -0
- package/locales/fa-IR/hotkey.json +4 -0
- package/locales/fa-IR/models.json +6 -0
- package/locales/fr-FR/common.json +21 -0
- package/locales/fr-FR/hotkey.json +4 -0
- package/locales/fr-FR/models.json +6 -0
- package/locales/it-IT/common.json +21 -0
- package/locales/it-IT/hotkey.json +4 -0
- package/locales/it-IT/models.json +6 -0
- package/locales/ja-JP/common.json +21 -0
- package/locales/ja-JP/hotkey.json +4 -0
- package/locales/ja-JP/models.json +6 -0
- package/locales/ko-KR/common.json +21 -0
- package/locales/ko-KR/hotkey.json +4 -0
- package/locales/ko-KR/models.json +6 -0
- package/locales/nl-NL/common.json +21 -0
- package/locales/nl-NL/hotkey.json +4 -0
- package/locales/nl-NL/models.json +6 -0
- package/locales/pl-PL/common.json +21 -0
- package/locales/pl-PL/hotkey.json +4 -0
- package/locales/pl-PL/models.json +6 -0
- package/locales/pt-BR/common.json +21 -0
- package/locales/pt-BR/hotkey.json +4 -0
- package/locales/pt-BR/models.json +6 -0
- package/locales/ru-RU/common.json +21 -0
- package/locales/ru-RU/hotkey.json +4 -0
- package/locales/ru-RU/models.json +6 -0
- package/locales/tr-TR/common.json +21 -0
- package/locales/tr-TR/hotkey.json +4 -0
- package/locales/tr-TR/models.json +6 -0
- package/locales/vi-VN/common.json +21 -0
- package/locales/vi-VN/hotkey.json +4 -0
- package/locales/vi-VN/models.json +6 -0
- package/locales/zh-CN/common.json +21 -0
- package/locales/zh-CN/hotkey.json +4 -0
- package/locales/zh-CN/models.json +6 -0
- package/locales/zh-TW/common.json +21 -0
- package/locales/zh-TW/hotkey.json +4 -0
- package/locales/zh-TW/models.json +6 -0
- package/package.json +3 -1
- package/packages/const/src/hotkeys.ts +6 -0
- package/packages/conversation-flow/src/__tests__/indexing.test.ts +513 -0
- package/packages/conversation-flow/src/__tests__/structuring.test.ts +600 -0
- package/packages/database/src/client/db.ts +12 -12
- package/packages/database/src/repositories/dataImporter/index.ts +10 -10
- package/packages/database/src/schemas/topic.ts +1 -1
- package/packages/database/src/server/models/ragEval/evaluation.ts +1 -1
- package/packages/types/src/hotkey.ts +1 -0
- package/src/app/[variants]/(main)/chat/components/conversation/features/ChatInput/Desktop/ClassicChat.tsx +1 -1
- package/src/app/[variants]/(main)/chat/components/conversation/features/ChatInput/Desktop/GroupChat.tsx +1 -1
- package/src/app/[variants]/(main)/chat/components/conversation/features/ChatList/ChatItem/index.tsx +1 -1
- package/src/app/[variants]/(main)/chat/components/conversation/features/ChatList/Content.tsx +2 -2
- package/src/app/[variants]/(main)/chat/components/conversation/features/ChatList/index.tsx +1 -1
- package/src/app/[variants]/(main)/chat/components/conversation/features/ChatMinimap/index.tsx +1 -1
- package/src/app/[variants]/(main)/settings/_layout/Desktop/index.tsx +41 -8
- package/src/app/[variants]/(main)/settings/provider/(list)/ProviderGrid/Card.tsx +6 -4
- package/src/app/[variants]/(main)/settings/provider/(list)/ProviderGrid/index.tsx +16 -4
- package/src/app/[variants]/(main)/settings/provider/(list)/index.tsx +15 -3
- package/src/app/[variants]/(main)/settings/provider/detail/index.tsx +23 -15
- package/src/components/InvalidAPIKey/APIKeyForm/Bedrock.tsx +1 -1
- package/src/components/InvalidAPIKey/APIKeyForm/ComfyUIForm.tsx +1 -1
- package/src/components/InvalidAPIKey/APIKeyForm/ProviderApiKeyForm.tsx +1 -1
- package/src/components/InvalidAPIKey/APIKeyForm/__tests__/ComfyUIForm.test.tsx +1 -1
- package/src/components/InvalidAPIKey/index.tsx +1 -1
- package/src/features/{Conversation → ChatList}/MarkdownElements/remarkPlugins/getNodeContent.test.ts +1 -2
- package/src/features/{Conversation → ChatList}/Messages/Assistant/Actions/index.tsx +2 -2
- package/src/features/{Conversation → ChatList}/Messages/Assistant/Extra/index.test.tsx +3 -3
- package/src/features/{Conversation → ChatList}/Messages/Assistant/Extra/index.tsx +6 -5
- package/src/features/{Conversation → ChatList}/Messages/Assistant/MessageContent.tsx +1 -1
- package/src/features/{Conversation → ChatList}/Messages/Group/Actions/WithContentId.tsx +2 -2
- package/src/features/{Conversation → ChatList}/Messages/Group/ContentBlock.tsx +2 -2
- package/src/features/{Conversation → ChatList}/Messages/Group/Error/index.tsx +2 -1
- package/src/features/{Conversation → ChatList}/Messages/Group/Group.tsx +1 -1
- package/src/features/{Conversation → ChatList}/Messages/Group/GroupItem.tsx +3 -2
- package/src/features/{Conversation → ChatList}/Messages/Group/Tool/Render/Intervention/ApprovalActions.tsx +1 -1
- package/src/features/{Conversation → ChatList}/Messages/Group/Tool/Render/index.tsx +1 -2
- package/src/features/{Conversation → ChatList}/Messages/Group/index.tsx +1 -1
- package/src/features/{Conversation → ChatList}/Messages/User/Extra.tsx +3 -3
- package/src/features/{Conversation → ChatList}/Messages/User/index.tsx +1 -1
- package/src/features/{Conversation → ChatList}/Messages/index.tsx +1 -1
- package/src/features/{Conversation → ChatList}/components/ShareMessageModal/ShareImage/Preview.tsx +1 -1
- package/src/features/{Conversation → ChatList}/components/SkeletonList.tsx +1 -1
- package/src/features/{Conversation → ChatList}/components/VirtualizedList/index.tsx +1 -1
- package/src/features/OllamaSetupGuide/index.tsx +1 -1
- package/src/features/PluginsUI/Render/MCPType/index.tsx +1 -1
- package/src/features/Portal/GroupThread/Body/ThreadChatItem.tsx +1 -1
- package/src/features/Portal/GroupThread/Body/ThreadChatList.tsx +1 -1
- package/src/features/Portal/Thread/Chat/ChatInput/index.tsx +1 -1
- package/src/features/Portal/Thread/Chat/ChatItem.tsx +1 -1
- package/src/features/Portal/Thread/Chat/ChatList.tsx +1 -1
- package/src/features/Portal/Thread/Chat/index.tsx +1 -1
- package/src/features/ShareModal/ShareImage/ChatList/index.tsx +1 -1
- package/src/layout/GlobalProvider/Cmdk.tsx +470 -0
- package/src/layout/GlobalProvider/CmdkLazy.tsx +17 -0
- package/src/layout/GlobalProvider/index.tsx +2 -0
- package/src/locales/default/common.ts +21 -0
- package/src/locales/default/hotkey.ts +4 -0
- package/src/services/debug.ts +4 -4
- package/src/services/electron/remoteServer.ts +5 -5
- package/src/services/electron/settings.ts +6 -6
- package/src/services/mcp.ts +18 -18
- package/src/services/models.ts +20 -20
- /package/src/features/{Conversation → ChatList}/Error/AccessCodeForm.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Error/ChatInvalidApiKey.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Error/ClerkLogin/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Error/ErrorJsonViewer.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Error/OAuthForm.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Error/OllamaBizError/InvalidOllamaModel.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Error/OllamaBizError/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Error/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Error/style.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/MarkdownElements/LobeArtifact/Render/Icon.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/MarkdownElements/LobeArtifact/Render/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/MarkdownElements/LobeArtifact/index.ts +0 -0
- /package/src/features/{Conversation → ChatList}/MarkdownElements/LobeArtifact/rehypePlugin.test.ts +0 -0
- /package/src/features/{Conversation → ChatList}/MarkdownElements/LobeArtifact/rehypePlugin.ts +0 -0
- /package/src/features/{Conversation → ChatList}/MarkdownElements/LobeThinking/Render.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/MarkdownElements/LobeThinking/index.ts +0 -0
- /package/src/features/{Conversation → ChatList}/MarkdownElements/LocalFile/Render/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/MarkdownElements/LocalFile/index.ts +0 -0
- /package/src/features/{Conversation → ChatList}/MarkdownElements/Mention/Render.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/MarkdownElements/Mention/index.ts +0 -0
- /package/src/features/{Conversation → ChatList}/MarkdownElements/Thinking/Render.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/MarkdownElements/Thinking/index.ts +0 -0
- /package/src/features/{Conversation → ChatList}/MarkdownElements/index.ts +0 -0
- /package/src/features/{Conversation → ChatList}/MarkdownElements/remarkPlugins/__snapshots__/createRemarkSelfClosingTagPlugin.test.ts.snap +0 -0
- /package/src/features/{Conversation → ChatList}/MarkdownElements/remarkPlugins/createRemarkCustomTagPlugin.ts +0 -0
- /package/src/features/{Conversation → ChatList}/MarkdownElements/remarkPlugins/createRemarkCustomTagWithAttributesPlugin.ts +0 -0
- /package/src/features/{Conversation → ChatList}/MarkdownElements/remarkPlugins/createRemarkSelfClosingTagPlugin.test.ts +0 -0
- /package/src/features/{Conversation → ChatList}/MarkdownElements/remarkPlugins/createRemarkSelfClosingTagPlugin.ts +0 -0
- /package/src/features/{Conversation → ChatList}/MarkdownElements/remarkPlugins/getNodeContent.ts +0 -0
- /package/src/features/{Conversation → ChatList}/MarkdownElements/type.ts +0 -0
- /package/src/features/{Conversation → ChatList}/MarkdownElements/utils.ts +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Assistant/Actions/Error.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Assistant/CollapsedMessage.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Assistant/FileChunks/Item/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Assistant/FileChunks/Item/style.ts +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Assistant/FileChunks/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Assistant/IntentUnderstanding.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Assistant/Reasoning/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Assistant/SearchGrounding.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Assistant/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Default.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Group/Actions/WithoutContentId.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Group/Actions/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Group/CollapsedMessage.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Group/EditState.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Group/GroupContext.ts +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Group/MessageContent.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Group/Tool/Inspector/BuiltinPluginTitle.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Group/Tool/Inspector/Debug.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Group/Tool/Inspector/PluginResult.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Group/Tool/Inspector/PluginState.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Group/Tool/Inspector/Settings.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Group/Tool/Inspector/StatusIndicator.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Group/Tool/Inspector/ToolTitle.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Group/Tool/Inspector/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Group/Tool/Render/AbortResponse.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Group/Tool/Render/Arguments/ObjectEntity.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Group/Tool/Render/Arguments/ValueCell.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Group/Tool/Render/Arguments/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Group/Tool/Render/CustomRender.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Group/Tool/Render/ErrorResponse.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Group/Tool/Render/Intervention/Fallback.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Group/Tool/Render/Intervention/KeyValueEditor.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Group/Tool/Render/Intervention/ModeSelector.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Group/Tool/Render/Intervention/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Group/Tool/Render/LoadingPlaceholder/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Group/Tool/Render/PluginSettings.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Group/Tool/Render/RejectedResponse.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Group/Tool/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Group/Tools.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Supervisor/TodoList.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Supervisor/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Tool/Inspector/BuiltinPluginTitle.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Tool/Inspector/Debug.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Tool/Inspector/PluginResult.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Tool/Inspector/PluginState.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Tool/Inspector/Settings.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Tool/Inspector/ToolTitle.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Tool/Inspector/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Tool/Render/Arguments/ObjectEntity.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Tool/Render/Arguments/ValueCell.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Tool/Render/Arguments/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Tool/Render/CustomRender.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Tool/Render/ErrorResponse.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Tool/Render/KeyValueEditor.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Tool/Render/PluginSettings.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Tool/Render/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Tool/ToolItem.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/Tool/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/User/Actions/ActionsBar.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/User/Actions/MessageBranch.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/User/Actions/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/User/BelowMessage.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/User/FileListViewer/Item.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/User/FileListViewer/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/User/ImageFileListViewer.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/User/MarkdownRender/ContentPreview.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/User/MarkdownRender/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/User/MessageContent.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/Messages/User/VideoFileListViewer.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/components/AutoScroll.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/components/BackBottom/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/components/BackBottom/style.ts +0 -0
- /package/src/features/{Conversation → ChatList}/components/ChatItem/ShareMessageModal/SharePdf/PdfPreview.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/components/ChatItem/ShareMessageModal/SharePdf/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/components/ChatItem/ShareMessageModal/SharePdf/style.ts +0 -0
- /package/src/features/{Conversation → ChatList}/components/ChatItem/ShareMessageModal/SharePdf/template.ts +0 -0
- /package/src/features/{Conversation → ChatList}/components/ChatItem/ShareMessageModal/SharePdf/usePdfGeneration.ts +0 -0
- /package/src/features/{Conversation → ChatList}/components/Extras/ExtraContainer.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/components/Extras/TTS/FilePlayer.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/components/Extras/TTS/InitPlayer.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/components/Extras/TTS/Player.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/components/Extras/TTS/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/components/Extras/Translate.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/components/Extras/Usage/UsageDetail/AnimatedNumber.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/components/Extras/Usage/UsageDetail/ModelCard.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/components/Extras/Usage/UsageDetail/TokenProgress.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/components/Extras/Usage/UsageDetail/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/components/Extras/Usage/UsageDetail/pricing.ts +0 -0
- /package/src/features/{Conversation → ChatList}/components/Extras/Usage/UsageDetail/tokens.test.ts +0 -0
- /package/src/features/{Conversation → ChatList}/components/Extras/Usage/UsageDetail/tokens.ts +0 -0
- /package/src/features/{Conversation → ChatList}/components/Extras/Usage/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/components/History/HistoryDivider.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/components/History/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/components/OTPInput.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/components/ShareMessageModal/ShareImage/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/components/ShareMessageModal/ShareImage/style.ts +0 -0
- /package/src/features/{Conversation → ChatList}/components/ShareMessageModal/ShareImage/type.ts +0 -0
- /package/src/features/{Conversation → ChatList}/components/ShareMessageModal/ShareText/Preview.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/components/ShareMessageModal/ShareText/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/components/ShareMessageModal/ShareText/template.test.ts +0 -0
- /package/src/features/{Conversation → ChatList}/components/ShareMessageModal/ShareText/template.ts +0 -0
- /package/src/features/{Conversation → ChatList}/components/ShareMessageModal/ShareText/type.ts +0 -0
- /package/src/features/{Conversation → ChatList}/components/ShareMessageModal/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/components/ShareMessageModal/style.ts +0 -0
- /package/src/features/{Conversation → ChatList}/components/ThreadDivider/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/components/VirtualizedList/VirtuosoContext.ts +0 -0
- /package/src/features/{Conversation → ChatList}/components/WideScreenContainer/index.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/context/InPortalThreadContext.ts +0 -0
- /package/src/features/{Conversation → ChatList}/hooks/useChatListActionsBar.tsx +0 -0
- /package/src/features/{Conversation → ChatList}/hooks/useDoubleClickEdit.ts +0 -0
- /package/src/features/{Conversation → ChatList}/index.ts +0 -0
- /package/src/features/{Conversation → ChatList}/types/index.ts +0 -0
- /package/src/features/{Conversation → ChatList}/utils/markdown.test.ts +0 -0
- /package/src/features/{Conversation → ChatList}/utils/markdown.ts +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,64 @@
|
|
|
2
2
|
|
|
3
3
|
# Changelog
|
|
4
4
|
|
|
5
|
+
## [Version 2.0.0-next.97](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.96...v2.0.0-next.97)
|
|
6
|
+
|
|
7
|
+
<sup>Released on **2025-11-21**</sup>
|
|
8
|
+
|
|
9
|
+
#### ♻ Code Refactoring
|
|
10
|
+
|
|
11
|
+
- **misc**: Refactor Conversation to ChatList.
|
|
12
|
+
|
|
13
|
+
#### 💄 Styles
|
|
14
|
+
|
|
15
|
+
- **misc**: Update i18n.
|
|
16
|
+
|
|
17
|
+
<br/>
|
|
18
|
+
|
|
19
|
+
<details>
|
|
20
|
+
<summary><kbd>Improvements and Fixes</kbd></summary>
|
|
21
|
+
|
|
22
|
+
#### Code refactoring
|
|
23
|
+
|
|
24
|
+
- **misc**: Refactor Conversation to ChatList, closes [#10330](https://github.com/lobehub/lobe-chat/issues/10330) ([bca70e2](https://github.com/lobehub/lobe-chat/commit/bca70e2))
|
|
25
|
+
|
|
26
|
+
#### Styles
|
|
27
|
+
|
|
28
|
+
- **misc**: Update i18n, closes [#10338](https://github.com/lobehub/lobe-chat/issues/10338) ([9c8cf81](https://github.com/lobehub/lobe-chat/commit/9c8cf81))
|
|
29
|
+
|
|
30
|
+
</details>
|
|
31
|
+
|
|
32
|
+
<div align="right">
|
|
33
|
+
|
|
34
|
+
[](#readme-top)
|
|
35
|
+
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
## [Version 2.0.0-next.96](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.95...v2.0.0-next.96)
|
|
39
|
+
|
|
40
|
+
<sup>Released on **2025-11-20**</sup>
|
|
41
|
+
|
|
42
|
+
#### ✨ Features
|
|
43
|
+
|
|
44
|
+
- **misc**: Support Command Menu (CMD + J).
|
|
45
|
+
|
|
46
|
+
<br/>
|
|
47
|
+
|
|
48
|
+
<details>
|
|
49
|
+
<summary><kbd>Improvements and Fixes</kbd></summary>
|
|
50
|
+
|
|
51
|
+
#### What's improved
|
|
52
|
+
|
|
53
|
+
- **misc**: Support Command Menu (CMD + J), closes [#10271](https://github.com/lobehub/lobe-chat/issues/10271) ([a9aed0b](https://github.com/lobehub/lobe-chat/commit/a9aed0b))
|
|
54
|
+
|
|
55
|
+
</details>
|
|
56
|
+
|
|
57
|
+
<div align="right">
|
|
58
|
+
|
|
59
|
+
[](#readme-top)
|
|
60
|
+
|
|
61
|
+
</div>
|
|
62
|
+
|
|
5
63
|
## [Version 2.0.0-next.95](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.94...v2.0.0-next.95)
|
|
6
64
|
|
|
7
65
|
<sup>Released on **2025-11-20**</sup>
|
|
@@ -4,9 +4,9 @@ import { setupRouteInterceptors } from './routeInterceptor';
|
|
|
4
4
|
const setupPreload = () => {
|
|
5
5
|
setupElectronApi();
|
|
6
6
|
|
|
7
|
-
//
|
|
7
|
+
// Setup route interception logic
|
|
8
8
|
window.addEventListener('DOMContentLoaded', () => {
|
|
9
|
-
//
|
|
9
|
+
// Setup client-side route interceptor
|
|
10
10
|
setupRouteInterceptors();
|
|
11
11
|
});
|
|
12
12
|
};
|
|
@@ -2,7 +2,7 @@ import { ClientDispatchEventKey, DispatchInvoke } from '@lobechat/electron-clien
|
|
|
2
2
|
import { ipcRenderer } from 'electron';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
5
|
+
* Client-side method to invoke electron main process
|
|
6
6
|
*/
|
|
7
7
|
export const invoke: DispatchInvoke = async <T extends ClientDispatchEventKey>(
|
|
8
8
|
event: T,
|
|
@@ -9,7 +9,7 @@ const interceptRoute = async (
|
|
|
9
9
|
) => {
|
|
10
10
|
console.log(`[preload] Intercepted ${source} and prevented default behavior:`, path);
|
|
11
11
|
|
|
12
|
-
//
|
|
12
|
+
// Use electron-client-ipc's dispatch method
|
|
13
13
|
try {
|
|
14
14
|
await invoke('interceptRoute', { path, source, url });
|
|
15
15
|
} catch (e) {
|
|
@@ -17,15 +17,15 @@ const interceptRoute = async (
|
|
|
17
17
|
}
|
|
18
18
|
};
|
|
19
19
|
/**
|
|
20
|
-
*
|
|
20
|
+
* Route interceptor - Responsible for capturing and intercepting client-side route navigation
|
|
21
21
|
*/
|
|
22
22
|
export const setupRouteInterceptors = function () {
|
|
23
23
|
console.log('[preload] Setting up route interceptors');
|
|
24
24
|
|
|
25
|
-
//
|
|
25
|
+
// Store prevented paths to avoid pushState duplicate triggers
|
|
26
26
|
const preventedPaths = new Set<string>();
|
|
27
27
|
|
|
28
|
-
//
|
|
28
|
+
// Override window.open method to intercept JavaScript calls
|
|
29
29
|
const originalWindowOpen = window.open;
|
|
30
30
|
window.open = function (url?: string | URL, target?: string, features?: string) {
|
|
31
31
|
if (url) {
|
|
@@ -33,15 +33,15 @@ export const setupRouteInterceptors = function () {
|
|
|
33
33
|
const urlString = typeof url === 'string' ? url : url.toString();
|
|
34
34
|
const urlObj = new URL(urlString, window.location.href);
|
|
35
35
|
|
|
36
|
-
//
|
|
36
|
+
// Check if it's an external link
|
|
37
37
|
if (urlObj.origin !== window.location.origin) {
|
|
38
38
|
console.log(`[preload] Intercepted window.open for external URL:`, urlString);
|
|
39
|
-
//
|
|
39
|
+
// Call main process to handle external link
|
|
40
40
|
invoke('openExternalLink', urlString);
|
|
41
|
-
return null; //
|
|
41
|
+
return null; // Return null to indicate no window was opened
|
|
42
42
|
}
|
|
43
43
|
} catch (error) {
|
|
44
|
-
//
|
|
44
|
+
// Handle invalid URL or special protocol
|
|
45
45
|
console.error(`[preload] Intercepted window.open for special protocol:`, url);
|
|
46
46
|
console.error(error);
|
|
47
47
|
invoke('openExternalLink', typeof url === 'string' ? url : url.toString());
|
|
@@ -49,11 +49,11 @@ export const setupRouteInterceptors = function () {
|
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
-
//
|
|
52
|
+
// For internal links, call original window.open
|
|
53
53
|
return originalWindowOpen.call(window, url, target, features);
|
|
54
54
|
};
|
|
55
55
|
|
|
56
|
-
//
|
|
56
|
+
// Intercept all a tag click events - For Next.js Link component
|
|
57
57
|
document.addEventListener(
|
|
58
58
|
'click',
|
|
59
59
|
async (e) => {
|
|
@@ -62,30 +62,30 @@ export const setupRouteInterceptors = function () {
|
|
|
62
62
|
try {
|
|
63
63
|
const url = new URL(link.href);
|
|
64
64
|
|
|
65
|
-
//
|
|
65
|
+
// Check if it's an external link
|
|
66
66
|
if (url.origin !== window.location.origin) {
|
|
67
67
|
console.log(`[preload] Intercepted external link click:`, url.href);
|
|
68
|
-
//
|
|
68
|
+
// Prevent default link navigation behavior
|
|
69
69
|
e.preventDefault();
|
|
70
70
|
e.stopPropagation();
|
|
71
|
-
//
|
|
71
|
+
// Call main process to handle external link
|
|
72
72
|
await invoke('openExternalLink', url.href);
|
|
73
|
-
return false; //
|
|
73
|
+
return false; // Explicitly prevent subsequent processing
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
-
//
|
|
77
|
-
//
|
|
76
|
+
// If not external link, continue with internal route interception logic
|
|
77
|
+
// Use shared config to check if interception is needed
|
|
78
78
|
const matchedRoute = findMatchingRoute(url.pathname);
|
|
79
79
|
|
|
80
|
-
//
|
|
80
|
+
// If it's a path that needs interception
|
|
81
81
|
if (matchedRoute) {
|
|
82
82
|
const currentPath = window.location.pathname;
|
|
83
83
|
const isAlreadyInTargetPage = currentPath.startsWith(matchedRoute.pathPrefix);
|
|
84
84
|
|
|
85
|
-
//
|
|
85
|
+
// If already in target page, don't intercept, let default navigation continue
|
|
86
86
|
if (isAlreadyInTargetPage) return;
|
|
87
87
|
|
|
88
|
-
//
|
|
88
|
+
// Immediately prevent default behavior to avoid Next.js taking over routing
|
|
89
89
|
e.preventDefault();
|
|
90
90
|
e.stopPropagation();
|
|
91
91
|
|
|
@@ -94,15 +94,15 @@ export const setupRouteInterceptors = function () {
|
|
|
94
94
|
return false;
|
|
95
95
|
}
|
|
96
96
|
} catch (err) {
|
|
97
|
-
//
|
|
98
|
-
//
|
|
97
|
+
// Handle possible URL parsing errors or other issues
|
|
98
|
+
// For example mailto:, tel: protocols will cause new URL() to throw error
|
|
99
99
|
if (err instanceof TypeError && err.message.includes('Invalid URL')) {
|
|
100
100
|
console.log(
|
|
101
101
|
'[preload] Non-HTTP link clicked, allowing default browser behavior:',
|
|
102
102
|
link.href,
|
|
103
103
|
);
|
|
104
|
-
//
|
|
105
|
-
//
|
|
104
|
+
// For non-HTTP/HTTPS links, allow browser default handling
|
|
105
|
+
// No need for e.preventDefault() or invoke
|
|
106
106
|
} else {
|
|
107
107
|
console.error('[preload] Link interception error:', err);
|
|
108
108
|
}
|
|
@@ -112,28 +112,28 @@ export const setupRouteInterceptors = function () {
|
|
|
112
112
|
true,
|
|
113
113
|
);
|
|
114
114
|
|
|
115
|
-
//
|
|
115
|
+
// Intercept history API (for capturing Next.js useRouter().push/replace etc.)
|
|
116
116
|
const originalPushState = history.pushState;
|
|
117
117
|
const originalReplaceState = history.replaceState;
|
|
118
118
|
|
|
119
|
-
//
|
|
119
|
+
// Override pushState
|
|
120
120
|
history.pushState = function () {
|
|
121
121
|
const url = arguments[2];
|
|
122
122
|
if (typeof url === 'string') {
|
|
123
123
|
try {
|
|
124
|
-
//
|
|
124
|
+
// Only handle relative paths or current domain URLs
|
|
125
125
|
const parsedUrl = new URL(url, window.location.origin);
|
|
126
126
|
|
|
127
|
-
//
|
|
127
|
+
// Use shared config to check if interception is needed
|
|
128
128
|
const matchedRoute = findMatchingRoute(parsedUrl.pathname);
|
|
129
129
|
|
|
130
|
-
//
|
|
130
|
+
// Check if this navigation needs interception
|
|
131
131
|
if (matchedRoute) {
|
|
132
|
-
//
|
|
132
|
+
// Check if current page is already under target path, if so don't intercept
|
|
133
133
|
const currentPath = window.location.pathname;
|
|
134
134
|
const isAlreadyInTargetPage = currentPath.startsWith(matchedRoute.pathPrefix);
|
|
135
135
|
|
|
136
|
-
//
|
|
136
|
+
// If already in target page, don't intercept, let default navigation continue
|
|
137
137
|
if (isAlreadyInTargetPage) {
|
|
138
138
|
console.log(
|
|
139
139
|
`[preload] Skip pushState interception for ${parsedUrl.pathname} because already in target page ${matchedRoute.pathPrefix}`,
|
|
@@ -141,13 +141,13 @@ export const setupRouteInterceptors = function () {
|
|
|
141
141
|
return Reflect.apply(originalPushState, this, arguments);
|
|
142
142
|
}
|
|
143
143
|
|
|
144
|
-
//
|
|
144
|
+
// Add this path to prevented set
|
|
145
145
|
preventedPaths.add(parsedUrl.pathname);
|
|
146
146
|
|
|
147
147
|
interceptRoute(parsedUrl.pathname, 'push-state', parsedUrl.href);
|
|
148
148
|
|
|
149
|
-
//
|
|
150
|
-
//
|
|
149
|
+
// Don't execute original pushState operation, prevent navigation
|
|
150
|
+
// But return undefined to avoid errors
|
|
151
151
|
return;
|
|
152
152
|
}
|
|
153
153
|
} catch (err) {
|
|
@@ -157,23 +157,23 @@ export const setupRouteInterceptors = function () {
|
|
|
157
157
|
return Reflect.apply(originalPushState, this, arguments);
|
|
158
158
|
};
|
|
159
159
|
|
|
160
|
-
//
|
|
160
|
+
// Override replaceState
|
|
161
161
|
history.replaceState = function () {
|
|
162
162
|
const url = arguments[2];
|
|
163
163
|
if (typeof url === 'string') {
|
|
164
164
|
try {
|
|
165
165
|
const parsedUrl = new URL(url, window.location.origin);
|
|
166
166
|
|
|
167
|
-
//
|
|
167
|
+
// Use shared config to check if interception is needed
|
|
168
168
|
const matchedRoute = findMatchingRoute(parsedUrl.pathname);
|
|
169
169
|
|
|
170
|
-
//
|
|
170
|
+
// Check if this navigation needs interception
|
|
171
171
|
if (matchedRoute) {
|
|
172
|
-
//
|
|
172
|
+
// Check if current page is already under target path, if so don't intercept
|
|
173
173
|
const currentPath = window.location.pathname;
|
|
174
174
|
const isAlreadyInTargetPage = currentPath.startsWith(matchedRoute.pathPrefix);
|
|
175
175
|
|
|
176
|
-
//
|
|
176
|
+
// If already in target page, don't intercept, let default navigation continue
|
|
177
177
|
if (isAlreadyInTargetPage) {
|
|
178
178
|
console.log(
|
|
179
179
|
`[preload] Skip replaceState interception for ${parsedUrl.pathname} because already in target page ${matchedRoute.pathPrefix}`,
|
|
@@ -181,12 +181,12 @@ export const setupRouteInterceptors = function () {
|
|
|
181
181
|
return Reflect.apply(originalReplaceState, this, arguments);
|
|
182
182
|
}
|
|
183
183
|
|
|
184
|
-
//
|
|
184
|
+
// Add to prevented set
|
|
185
185
|
preventedPaths.add(parsedUrl.pathname);
|
|
186
186
|
|
|
187
187
|
interceptRoute(parsedUrl.pathname, 'replace-state', parsedUrl.href);
|
|
188
188
|
|
|
189
|
-
//
|
|
189
|
+
// Prevent navigation
|
|
190
190
|
return;
|
|
191
191
|
}
|
|
192
192
|
} catch (err) {
|
|
@@ -196,7 +196,7 @@ export const setupRouteInterceptors = function () {
|
|
|
196
196
|
return Reflect.apply(originalReplaceState, this, arguments);
|
|
197
197
|
};
|
|
198
198
|
|
|
199
|
-
//
|
|
199
|
+
// Listen and intercept routing errors - Sometimes Next.js tries to recover navigation on routing errors
|
|
200
200
|
window.addEventListener(
|
|
201
201
|
'error',
|
|
202
202
|
function (e) {
|
package/changelog/v1.json
CHANGED
|
@@ -1,4 +1,22 @@
|
|
|
1
1
|
[
|
|
2
|
+
{
|
|
3
|
+
"children": {
|
|
4
|
+
"improvements": [
|
|
5
|
+
"Update i18n."
|
|
6
|
+
]
|
|
7
|
+
},
|
|
8
|
+
"date": "2025-11-21",
|
|
9
|
+
"version": "2.0.0-next.97"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"children": {
|
|
13
|
+
"features": [
|
|
14
|
+
"Support Command Menu (CMD + J)."
|
|
15
|
+
]
|
|
16
|
+
},
|
|
17
|
+
"date": "2025-11-20",
|
|
18
|
+
"version": "2.0.0-next.96"
|
|
19
|
+
},
|
|
2
20
|
{
|
|
3
21
|
"children": {
|
|
4
22
|
"features": [
|
package/locales/ar/common.json
CHANGED
|
@@ -135,6 +135,27 @@
|
|
|
135
135
|
}
|
|
136
136
|
},
|
|
137
137
|
"close": "إغلاق",
|
|
138
|
+
"cmdk": {
|
|
139
|
+
"about": "حول",
|
|
140
|
+
"communitySupport": "دعم المجتمع",
|
|
141
|
+
"discover": "استكشاف",
|
|
142
|
+
"knowledgeBase": "قاعدة المعرفة",
|
|
143
|
+
"navigate": "التنقل",
|
|
144
|
+
"newAgent": "إنشاء مساعد جديد",
|
|
145
|
+
"noResults": "لم يتم العثور على نتائج",
|
|
146
|
+
"openSettings": "فتح الإعدادات",
|
|
147
|
+
"painting": "الرسم بالذكاء الاصطناعي",
|
|
148
|
+
"searchPlaceholder": "أدخل أمرًا أو ابحث...",
|
|
149
|
+
"settings": "الإعدادات",
|
|
150
|
+
"starOnGitHub": "قيّمنا على GitHub",
|
|
151
|
+
"submitIssue": "إرسال مشكلة",
|
|
152
|
+
"theme": "السمة",
|
|
153
|
+
"themeAuto": "اتباع النظام",
|
|
154
|
+
"themeDark": "الوضع الداكن",
|
|
155
|
+
"themeLight": "الوضع الفاتح",
|
|
156
|
+
"toOpen": "فتح",
|
|
157
|
+
"toSelect": "تحديد"
|
|
158
|
+
},
|
|
138
159
|
"confirm": "تأكيد",
|
|
139
160
|
"contact": "اتصل بنا",
|
|
140
161
|
"copy": "نسخ",
|
package/locales/ar/hotkey.json
CHANGED
|
@@ -7,6 +7,10 @@
|
|
|
7
7
|
"desc": "مسح الرسائل والملفات المرفوعة في المحادثة الحالية",
|
|
8
8
|
"title": "مسح رسائل المحادثة"
|
|
9
9
|
},
|
|
10
|
+
"commandPalette": {
|
|
11
|
+
"desc": "افتح لوحة الأوامر العامة للوصول السريع إلى الميزات",
|
|
12
|
+
"title": "لوحة الأوامر"
|
|
13
|
+
},
|
|
10
14
|
"deleteAndRegenerateMessage": {
|
|
11
15
|
"desc": "حذف الرسالة الأخيرة وإعادة إنشائها",
|
|
12
16
|
"title": "حذف وإعادة إنشاء"
|
package/locales/ar/models.json
CHANGED
|
@@ -1907,6 +1907,12 @@
|
|
|
1907
1907
|
"grok-4-0709": {
|
|
1908
1908
|
"description": "Grok 4 من xAI، يتمتع بقدرات استدلال قوية."
|
|
1909
1909
|
},
|
|
1910
|
+
"grok-4-1-fast-non-reasoning": {
|
|
1911
|
+
"description": "نموذج متعدد الوسائط متقدم، مُحسَّن خصيصًا لاستدعاء أدوات الوكلاء عالية الأداء."
|
|
1912
|
+
},
|
|
1913
|
+
"grok-4-1-fast-reasoning": {
|
|
1914
|
+
"description": "نموذج متعدد الوسائط متقدم، مُحسَّن خصيصًا لاستدعاء أدوات الوكلاء عالية الأداء."
|
|
1915
|
+
},
|
|
1910
1916
|
"grok-4-fast-non-reasoning": {
|
|
1911
1917
|
"description": "نحن سعداء بإصدار Grok 4 Fast، وهو أحدث تقدم لدينا في نماذج الاستدلال ذات التكلفة الفعالة."
|
|
1912
1918
|
},
|
|
@@ -135,6 +135,27 @@
|
|
|
135
135
|
}
|
|
136
136
|
},
|
|
137
137
|
"close": "Затвори",
|
|
138
|
+
"cmdk": {
|
|
139
|
+
"about": "Относно",
|
|
140
|
+
"communitySupport": "Общностна поддръжка",
|
|
141
|
+
"discover": "Открий",
|
|
142
|
+
"knowledgeBase": "База знания",
|
|
143
|
+
"navigate": "Навигация",
|
|
144
|
+
"newAgent": "Създай агент",
|
|
145
|
+
"noResults": "Няма намерени резултати",
|
|
146
|
+
"openSettings": "Отвори настройките",
|
|
147
|
+
"painting": "AI Рисуване",
|
|
148
|
+
"searchPlaceholder": "Въведете команда или търсене...",
|
|
149
|
+
"settings": "Настройки",
|
|
150
|
+
"starOnGitHub": "Дайте ни звезда в GitHub",
|
|
151
|
+
"submitIssue": "Подайте проблем",
|
|
152
|
+
"theme": "Тема",
|
|
153
|
+
"themeAuto": "Следвай системата",
|
|
154
|
+
"themeDark": "Тъмен режим",
|
|
155
|
+
"themeLight": "Светъл режим",
|
|
156
|
+
"toOpen": "Отвори",
|
|
157
|
+
"toSelect": "Избери"
|
|
158
|
+
},
|
|
138
159
|
"confirm": "Потвърди",
|
|
139
160
|
"contact": "Свържете се с нас",
|
|
140
161
|
"copy": "Копирай",
|
|
@@ -7,6 +7,10 @@
|
|
|
7
7
|
"desc": "Изтриване на текущите съобщения и качените файлове в сесията",
|
|
8
8
|
"title": "Изтриване на съобщенията в сесията"
|
|
9
9
|
},
|
|
10
|
+
"commandPalette": {
|
|
11
|
+
"desc": "Отворете глобалния панел с команди за бърз достъп до функции",
|
|
12
|
+
"title": "Панел с команди"
|
|
13
|
+
},
|
|
10
14
|
"deleteAndRegenerateMessage": {
|
|
11
15
|
"desc": "Изтриване на последното съобщение и повторно генериране",
|
|
12
16
|
"title": "Изтрий и генерирай отново"
|
|
@@ -1907,6 +1907,12 @@
|
|
|
1907
1907
|
"grok-4-0709": {
|
|
1908
1908
|
"description": "Grok 4 от xAI, с мощни способности за разсъждение."
|
|
1909
1909
|
},
|
|
1910
|
+
"grok-4-1-fast-non-reasoning": {
|
|
1911
|
+
"description": "Модерен мултимодален модел, специално оптимизиран за високоефективно използване на агентски инструменти."
|
|
1912
|
+
},
|
|
1913
|
+
"grok-4-1-fast-reasoning": {
|
|
1914
|
+
"description": "Модерен мултимодален модел, специално оптимизиран за високоефективно използване на агентски инструменти."
|
|
1915
|
+
},
|
|
1910
1916
|
"grok-4-fast-non-reasoning": {
|
|
1911
1917
|
"description": "С удоволствие представяме Grok 4 Fast, нашият най-нов напредък в модели за разсъждение с висока ефективност на разходите."
|
|
1912
1918
|
},
|
|
@@ -135,6 +135,27 @@
|
|
|
135
135
|
}
|
|
136
136
|
},
|
|
137
137
|
"close": "Schließen",
|
|
138
|
+
"cmdk": {
|
|
139
|
+
"about": "Über",
|
|
140
|
+
"communitySupport": "Community-Support",
|
|
141
|
+
"discover": "Entdecken",
|
|
142
|
+
"knowledgeBase": "Wissensdatenbank",
|
|
143
|
+
"navigate": "Navigieren",
|
|
144
|
+
"newAgent": "Neuen Assistenten erstellen",
|
|
145
|
+
"noResults": "Keine Ergebnisse gefunden",
|
|
146
|
+
"openSettings": "Einstellungen öffnen",
|
|
147
|
+
"painting": "KI-Malerei",
|
|
148
|
+
"searchPlaceholder": "Befehl eingeben oder suchen...",
|
|
149
|
+
"settings": "Einstellungen",
|
|
150
|
+
"starOnGitHub": "Gib uns einen Stern auf GitHub",
|
|
151
|
+
"submitIssue": "Problem melden",
|
|
152
|
+
"theme": "Design",
|
|
153
|
+
"themeAuto": "Systemeinstellung folgen",
|
|
154
|
+
"themeDark": "Dunkles Design",
|
|
155
|
+
"themeLight": "Helles Design",
|
|
156
|
+
"toOpen": "Öffnen",
|
|
157
|
+
"toSelect": "Auswählen"
|
|
158
|
+
},
|
|
138
159
|
"confirm": "Bestätigen",
|
|
139
160
|
"contact": "Kontakt",
|
|
140
161
|
"copy": "Kopieren",
|
|
@@ -7,6 +7,10 @@
|
|
|
7
7
|
"desc": "Aktuelle Nachrichten und hochgeladene Dateien im Gespräch löschen",
|
|
8
8
|
"title": "Gesprächsnachrichten löschen"
|
|
9
9
|
},
|
|
10
|
+
"commandPalette": {
|
|
11
|
+
"desc": "Öffne die globale Befehlspalette für schnellen Zugriff auf Funktionen",
|
|
12
|
+
"title": "Befehlspalette"
|
|
13
|
+
},
|
|
10
14
|
"deleteAndRegenerateMessage": {
|
|
11
15
|
"desc": "Letzte Nachricht löschen und neu generieren",
|
|
12
16
|
"title": "Löschen und neu generieren"
|
|
@@ -1907,6 +1907,12 @@
|
|
|
1907
1907
|
"grok-4-0709": {
|
|
1908
1908
|
"description": "xAI's Grok 4 mit starker Schlussfolgerungsfähigkeit."
|
|
1909
1909
|
},
|
|
1910
|
+
"grok-4-1-fast-non-reasoning": {
|
|
1911
|
+
"description": "Modernes multimodales Modell, speziell optimiert für die Nutzung leistungsstarker Agenten-Tools."
|
|
1912
|
+
},
|
|
1913
|
+
"grok-4-1-fast-reasoning": {
|
|
1914
|
+
"description": "Modernes multimodales Modell, speziell optimiert für die Nutzung leistungsstarker Agenten-Tools."
|
|
1915
|
+
},
|
|
1910
1916
|
"grok-4-fast-non-reasoning": {
|
|
1911
1917
|
"description": "Wir freuen uns, Grok 4 Fast vorzustellen, unseren neuesten Fortschritt bei kosteneffizienten Inferenzmodellen."
|
|
1912
1918
|
},
|
|
@@ -135,6 +135,27 @@
|
|
|
135
135
|
}
|
|
136
136
|
},
|
|
137
137
|
"close": "Close",
|
|
138
|
+
"cmdk": {
|
|
139
|
+
"about": "About",
|
|
140
|
+
"communitySupport": "Community Support",
|
|
141
|
+
"discover": "Discover",
|
|
142
|
+
"knowledgeBase": "Knowledge Base",
|
|
143
|
+
"navigate": "Navigate",
|
|
144
|
+
"newAgent": "Create New Assistant",
|
|
145
|
+
"noResults": "No results found",
|
|
146
|
+
"openSettings": "Open Settings",
|
|
147
|
+
"painting": "AI Painting",
|
|
148
|
+
"searchPlaceholder": "Enter a command or search...",
|
|
149
|
+
"settings": "Settings",
|
|
150
|
+
"starOnGitHub": "Star us on GitHub",
|
|
151
|
+
"submitIssue": "Submit Issue",
|
|
152
|
+
"theme": "Theme",
|
|
153
|
+
"themeAuto": "Auto",
|
|
154
|
+
"themeDark": "Dark",
|
|
155
|
+
"themeLight": "Light",
|
|
156
|
+
"toOpen": "to Open",
|
|
157
|
+
"toSelect": "to Select"
|
|
158
|
+
},
|
|
138
159
|
"confirm": "Confirm",
|
|
139
160
|
"contact": "Contact Us",
|
|
140
161
|
"copy": "Copy",
|
|
@@ -7,6 +7,10 @@
|
|
|
7
7
|
"desc": "Clear the messages and uploaded files from the current conversation",
|
|
8
8
|
"title": "Clear Conversation Messages"
|
|
9
9
|
},
|
|
10
|
+
"commandPalette": {
|
|
11
|
+
"desc": "Open the global command palette for quick access to features",
|
|
12
|
+
"title": "Command Palette"
|
|
13
|
+
},
|
|
10
14
|
"deleteAndRegenerateMessage": {
|
|
11
15
|
"desc": "Delete the last message and regenerate",
|
|
12
16
|
"title": "Delete and Regenerate"
|
|
@@ -1907,6 +1907,12 @@
|
|
|
1907
1907
|
"grok-4-0709": {
|
|
1908
1908
|
"description": "xAI's Grok 4, featuring strong reasoning capabilities."
|
|
1909
1909
|
},
|
|
1910
|
+
"grok-4-1-fast-non-reasoning": {
|
|
1911
|
+
"description": "Cutting-edge multimodal model optimized specifically for high-performance agent tool invocation."
|
|
1912
|
+
},
|
|
1913
|
+
"grok-4-1-fast-reasoning": {
|
|
1914
|
+
"description": "Cutting-edge multimodal model optimized specifically for high-performance agent tool invocation."
|
|
1915
|
+
},
|
|
1910
1916
|
"grok-4-fast-non-reasoning": {
|
|
1911
1917
|
"description": "We are excited to release Grok 4 Fast, our latest advancement in cost-effective reasoning models."
|
|
1912
1918
|
},
|
|
@@ -135,6 +135,27 @@
|
|
|
135
135
|
}
|
|
136
136
|
},
|
|
137
137
|
"close": "Cerrar",
|
|
138
|
+
"cmdk": {
|
|
139
|
+
"about": "Acerca de",
|
|
140
|
+
"communitySupport": "Soporte de la comunidad",
|
|
141
|
+
"discover": "Descubrir",
|
|
142
|
+
"knowledgeBase": "Base de conocimientos",
|
|
143
|
+
"navigate": "Navegar",
|
|
144
|
+
"newAgent": "Nuevo asistente",
|
|
145
|
+
"noResults": "No se encontraron resultados",
|
|
146
|
+
"openSettings": "Abrir configuración",
|
|
147
|
+
"painting": "Dibujo con IA",
|
|
148
|
+
"searchPlaceholder": "Escribe un comando o busca...",
|
|
149
|
+
"settings": "Configuración",
|
|
150
|
+
"starOnGitHub": "Danos una estrella en GitHub",
|
|
151
|
+
"submitIssue": "Informar de un problema",
|
|
152
|
+
"theme": "Tema",
|
|
153
|
+
"themeAuto": "Seguir el sistema",
|
|
154
|
+
"themeDark": "Modo oscuro",
|
|
155
|
+
"themeLight": "Modo claro",
|
|
156
|
+
"toOpen": "Abrir",
|
|
157
|
+
"toSelect": "Seleccionar"
|
|
158
|
+
},
|
|
138
159
|
"confirm": "Confirmar",
|
|
139
160
|
"contact": "Contacto",
|
|
140
161
|
"copy": "Copiar",
|
|
@@ -7,6 +7,10 @@
|
|
|
7
7
|
"desc": "Eliminar los mensajes y archivos subidos de la conversación actual",
|
|
8
8
|
"title": "Eliminar mensajes de la conversación"
|
|
9
9
|
},
|
|
10
|
+
"commandPalette": {
|
|
11
|
+
"desc": "Abre el panel de comandos global para acceder rápidamente a las funciones",
|
|
12
|
+
"title": "Panel de Comandos"
|
|
13
|
+
},
|
|
10
14
|
"deleteAndRegenerateMessage": {
|
|
11
15
|
"desc": "Eliminar el último mensaje y volver a generarlo",
|
|
12
16
|
"title": "Eliminar y regenerar"
|
|
@@ -1907,6 +1907,12 @@
|
|
|
1907
1907
|
"grok-4-0709": {
|
|
1908
1908
|
"description": "Grok 4 de xAI, con potentes capacidades de razonamiento."
|
|
1909
1909
|
},
|
|
1910
|
+
"grok-4-1-fast-non-reasoning": {
|
|
1911
|
+
"description": "Modelo multimodal de vanguardia, optimizado específicamente para llamadas de herramientas de agente de alto rendimiento."
|
|
1912
|
+
},
|
|
1913
|
+
"grok-4-1-fast-reasoning": {
|
|
1914
|
+
"description": "Modelo multimodal de vanguardia, optimizado específicamente para llamadas de herramientas de agente de alto rendimiento."
|
|
1915
|
+
},
|
|
1910
1916
|
"grok-4-fast-non-reasoning": {
|
|
1911
1917
|
"description": "Nos complace anunciar Grok 4 Fast, nuestro último avance en modelos de inferencia con alta relación costo-beneficio."
|
|
1912
1918
|
},
|
|
@@ -135,6 +135,27 @@
|
|
|
135
135
|
}
|
|
136
136
|
},
|
|
137
137
|
"close": "بستن",
|
|
138
|
+
"cmdk": {
|
|
139
|
+
"about": "درباره",
|
|
140
|
+
"communitySupport": "پشتیبانی جامعه",
|
|
141
|
+
"discover": "کشف",
|
|
142
|
+
"knowledgeBase": "پایگاه دانش",
|
|
143
|
+
"navigate": "ناوبری",
|
|
144
|
+
"newAgent": "دستیار جدید",
|
|
145
|
+
"noResults": "نتیجهای یافت نشد",
|
|
146
|
+
"openSettings": "باز کردن تنظیمات",
|
|
147
|
+
"painting": "نقاشی با هوش مصنوعی",
|
|
148
|
+
"searchPlaceholder": "دستور وارد کنید یا جستجو کنید...",
|
|
149
|
+
"settings": "تنظیمات",
|
|
150
|
+
"starOnGitHub": "به ما در GitHub ستاره بدهید",
|
|
151
|
+
"submitIssue": "ارسال مشکل",
|
|
152
|
+
"theme": "تم",
|
|
153
|
+
"themeAuto": "همگام با سیستم",
|
|
154
|
+
"themeDark": "حالت تیره",
|
|
155
|
+
"themeLight": "حالت روشن",
|
|
156
|
+
"toOpen": "باز کردن",
|
|
157
|
+
"toSelect": "انتخاب"
|
|
158
|
+
},
|
|
138
159
|
"confirm": "تأیید",
|
|
139
160
|
"contact": "تماس با ما",
|
|
140
161
|
"copy": "کپی",
|
|
@@ -7,6 +7,10 @@
|
|
|
7
7
|
"desc": "حذف پیامها و فایلهای بارگذاری شده در جلسه جاری",
|
|
8
8
|
"title": "حذف پیامهای جلسه"
|
|
9
9
|
},
|
|
10
|
+
"commandPalette": {
|
|
11
|
+
"desc": "باز کردن پنل فرمان جهانی برای دسترسی سریع به قابلیتها",
|
|
12
|
+
"title": "پنل فرمان"
|
|
13
|
+
},
|
|
10
14
|
"deleteAndRegenerateMessage": {
|
|
11
15
|
"desc": "آخرین پیام را حذف کرده و دوباره تولید کن",
|
|
12
16
|
"title": "حذف و تولید مجدد"
|