Compare commits

...

57 Commits

Author SHA1 Message Date
arvinxx a9e626ea3c implement agent runtime 75% 2025-11-22 00:23:39 +08:00
lobehubbot 8b63246491 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-21 16:16:08 +00:00
semantic-release-bot 9195ba922a 🔖 chore(release): v2.0.0-next.100 [skip ci]
## [Version 2.0.0-next.100](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.99...v2.0.0-next.100)
<sup>Released on **2025-11-21**</sup>

#### 🐛 Bug Fixes

- **misc**: Gemini 3 Pro does not display thought summaries.

<br/>

<details>
<summary><kbd>Improvements and Fixes</kbd></summary>

#### What's fixed

* **misc**: Gemini 3 Pro does not display thought summaries, closes [#10345](https://github.com/lobehub/lobe-chat/issues/10345) ([89e296a](https://github.com/lobehub/lobe-chat/commit/89e296a))

</details>

<div align="right">

[![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)

</div>
2025-11-21 16:14:53 +00:00
sxjeru 89e296a1c3 🐛 fix: Gemini 3 Pro does not display thought summaries (#10345)
* 💄 style: update filter logic to retain thoughtSignature metadata in Google stream processing

* add tests
2025-11-22 00:02:23 +08:00
lobehubbot 9a799ec6a8 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-21 14:21:26 +00:00
semantic-release-bot ef7b5b6730 🔖 chore(release): v2.0.0-next.99 [skip ci]
## [Version&nbsp;2.0.0-next.99](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.98...v2.0.0-next.99)
<sup>Released on **2025-11-21**</sup>

####  Features

- **misc**: Refactor to use kb search tool.

<br/>

<details>
<summary><kbd>Improvements and Fixes</kbd></summary>

#### What's improved

* **misc**: Refactor to use kb search tool, closes [#10340](https://github.com/lobehub/lobe-chat/issues/10340) ([291ff3c](https://github.com/lobehub/lobe-chat/commit/291ff3c))

</details>

<div align="right">

[![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)

</div>
2025-11-21 14:20:03 +00:00
Arvin Xu 291ff3cc42 feat: refactor to use kb search tool (#10340)
* fix all render

* add kb builtin tool

* 完成知识库搜索功能

* 初步完成知识库读取实现

* finish display

* fix

* fix

* fix

* fix server api mode

* update i18n
2025-11-21 22:05:41 +08:00
Neko 0286d1e15a 🔨 chore: relax codecov with 1% diff threshold (#10326)
* chore: relax codecov with 1% diff threshold

* Update codecov.yml
2025-11-21 21:03:52 +08:00
LobeHub Bot c316414277 test: add unit tests for FileService (#10341)
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-21 21:03:05 +08:00
lobehubbot 3bfc1d2dcf 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-21 10:11:59 +00:00
semantic-release-bot e600d471b2 🔖 chore(release): v2.0.0-next.98 [skip ci]
## [Version&nbsp;2.0.0-next.98](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.97...v2.0.0-next.98)
<sup>Released on **2025-11-21**</sup>

#### 🐛 Bug Fixes

- **misc**: Fixed  changelog pages and open again.

#### 💄 Styles

- **misc**: Fix some translations.

<br/>

<details>
<summary><kbd>Improvements and Fixes</kbd></summary>

#### What's fixed

* **misc**: Fixed  changelog pages and open again, closes [#10285](https://github.com/lobehub/lobe-chat/issues/10285) ([871d141](https://github.com/lobehub/lobe-chat/commit/871d141))

#### Styles

* **misc**: Fix some translations, closes [#10343](https://github.com/lobehub/lobe-chat/issues/10343) ([ed193e0](https://github.com/lobehub/lobe-chat/commit/ed193e0))

</details>

<div align="right">

[![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)

</div>
2025-11-21 10:10:33 +00:00
René Wang ed193e096b 💄 style: Fix some translations (#10343)
* fix: Add missing i18n

* fix: Add missing translation

* fix: Fix wrong translation

* fix: translation

* fix: Address wrong translation
2025-11-21 17:56:57 +08:00
René Wang eea41dcb82 👷 build: Add slug to documents table (#10299)
* feat: Add SLUG

* fix: CI

* feat: Update constairnt

* fix: Remove slug from files

* fix: Test error
2025-11-21 17:56:08 +08:00
Shinji-Li 871d1416cc 🐛 fix: fixed changelog pages and open again (#10285)
* feat: fixed  changelog pages and open again

* fix: add discover use dynamic import

* fix: update the routers

* fix: change the pre build mts
2025-11-21 17:47:13 +08:00
renovate[bot] 6d96dec672 Update opentelemetry-js-contrib monorepo (#10254)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-21 14:20:04 +08:00
renovate[bot] fd93f6d0c7 Update dependency node to v24.11.1 (#10327)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-21 14:18:45 +08:00
René Wang c0542e80a3 🔨 chore: Add CI to Check console.log (#10333)
* lint: Clean breakpoints

* build: Add CI to check

* build: Add `next` branch

* build: Remove markdown files

* fix: CI hang out

* fix: Show warning on GitHub

* feat: Send comment

* fix: CI error

* fix: show file list
2025-11-21 14:18:10 +08:00
lobehubbot 4c7ebd5b39 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-21 04:08:06 +00:00
semantic-release-bot e893886082 🔖 chore(release): v2.0.0-next.97 [skip ci]
## [Version&nbsp;2.0.0-next.97](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.96...v2.0.0-next.97)
<sup>Released on **2025-11-21**</sup>

#### ♻ Code Refactoring

- **misc**: Refactor Conversation to ChatList.

#### 💄 Styles

- **misc**: Update i18n.

<br/>

<details>
<summary><kbd>Improvements and Fixes</kbd></summary>

#### Code refactoring

* **misc**: Refactor Conversation to ChatList, closes [#10330](https://github.com/lobehub/lobe-chat/issues/10330) ([bca70e2](https://github.com/lobehub/lobe-chat/commit/bca70e2))

#### Styles

* **misc**: Update i18n, closes [#10338](https://github.com/lobehub/lobe-chat/issues/10338) ([9c8cf81](https://github.com/lobehub/lobe-chat/commit/9c8cf81))

</details>

<div align="right">

[![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)

</div>
2025-11-21 04:06:49 +00:00
Arvin Xu bca70e2057 ♻️ refactor: refactor Conversation to ChatList (#10330)
* update

* update

* update

* update

* 🐛 fix(test): update test mocks to use ChatList instead of Conversation

- Update AssistantMessageExtra test mocks from @/features/Conversation/components/Extras/* to @/features/ChatList/components/Extras/*
- Update ComfyUIForm test mock from @/features/Conversation/Error/style to @/features/ChatList/Error/style

Fixes module resolution errors after Conversation -> ChatList refactor

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-11-21 11:52:50 +08:00
LobeHub Bot 1ed9424166 🌐 chore: translate non-English comments to English in services and desktop modules (#10339)
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-21 11:43:09 +08:00
LobeHub Bot 9c8cf81759 🤖 style: update i18n (#10338)
💄 style: update i18n

Co-authored-by: canisminor1990 <17870709+canisminor1990@users.noreply.github.com>
2025-11-21 11:42:30 +08:00
lobehubbot e7657cf5bc 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-20 15:41:37 +00:00
semantic-release-bot e83561dffa 🔖 chore(release): v2.0.0-next.96 [skip ci]
## [Version&nbsp;2.0.0-next.96](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.95...v2.0.0-next.96)
<sup>Released on **2025-11-20**</sup>

####  Features

- **misc**: Support Command Menu (CMD + J).

<br/>

<details>
<summary><kbd>Improvements and Fixes</kbd></summary>

#### What's improved

* **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))

</details>

<div align="right">

[![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)

</div>
2025-11-20 15:40:17 +00:00
René Wang a9aed0bc44 feat: support Command Menu (CMD + J) (#10271)
* feat: Init

* feat: Add more commands

* opti: Use lazy load

* feat: More command

* fix: CMDK position

* style: Add shortkey hint

* feat: Add entry

* feat: Add About entries

* feat: Add shortcut hint

* feat: Create agent in CMDK

* feat: Ues cmd + J temproraily

* fix: Add missing translation
2025-11-20 23:27:08 +08:00
LobeHub Bot 9472001461 test: add unit tests for conversation-flow indexing and structuring (#10322)
Add comprehensive unit tests for the core parsing phases:
- indexing.ts: Phase 1 helper map building
- structuring.ts: Phase 2 tree construction

Tests cover:
- messageMap, childrenMap, threadMap, messageGroupMap building
- Tree building with branches, threads, and edge cases
- Performance testing for large datasets
- Integration scenarios

32 new test cases added, all passing.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-20 22:29:02 +08:00
lobehubbot c8c28f2f1a 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-20 13:40:44 +00:00
Shinji-Li 5777977ff1 chore: update the settings/model pages change model error (#10324)
* chore: update the settings/model the change model error

* fix: add first common active tab
2025-11-20 19:59:03 +08:00
lobehubbot 4ae407844e 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-20 10:11:19 +00:00
semantic-release-bot ba3c7e6068 🔖 chore(release): v2.0.0-next.95 [skip ci]
## [Version&nbsp;2.0.0-next.95](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.94...v2.0.0-next.95)
<sup>Released on **2025-11-20**</sup>

####  Features

- **misc**: Add Security Blacklist for agent runtime.

<br/>

<details>
<summary><kbd>Improvements and Fixes</kbd></summary>

#### What's improved

* **misc**: Add Security Blacklist for agent runtime, closes [#10325](https://github.com/lobehub/lobe-chat/issues/10325) ([deab4d0](https://github.com/lobehub/lobe-chat/commit/deab4d0))

</details>

<div align="right">

[![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)

</div>
2025-11-20 10:10:06 +00:00
Arvin Xu deab4d0386 feat: add Security Blacklist for agent runtime (#10325) 2025-11-20 17:57:45 +08:00
lobehubbot a41230ea11 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-20 05:21:35 +00:00
semantic-release-bot f6dbc1eb2f 🔖 chore(release): v2.0.0-next.94 [skip ci]
## [Version&nbsp;2.0.0-next.94](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.93...v2.0.0-next.94)
<sup>Released on **2025-11-20**</sup>

#### 🐛 Bug Fixes

- **misc**: Provider settings button unable to redirect.

<br/>

<details>
<summary><kbd>Improvements and Fixes</kbd></summary>

#### What's fixed

* **misc**: Provider settings button unable to redirect, closes [#10319](https://github.com/lobehub/lobe-chat/issues/10319) ([e025fec](https://github.com/lobehub/lobe-chat/commit/e025fec))

</details>

<div align="right">

[![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)

</div>
2025-11-20 05:20:21 +00:00
sxjeru e025fec9f0 🐛 fix: provider settings button unable to redirect (#10319)
* 🔧 refactor: replace Next.js router with React Router for navigation in ModelSwitchPanel

* 🔧 feat: 添加新多模态模型 Grok 4.1 Fast 和 Grok 4.1 Fast (Non-Reasoning) 到 xai.ts
2025-11-20 13:08:09 +08:00
lobehubbot 4d64d9d045 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-20 03:50:35 +00:00
semantic-release-bot 3730b89f7d 🔖 chore(release): v2.0.0-next.93 [skip ci]
## [Version&nbsp;2.0.0-next.93](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.92...v2.0.0-next.93)
<sup>Released on **2025-11-20**</sup>

#### 💄 Styles

- **misc**: Update i18n.

<br/>

<details>
<summary><kbd>Improvements and Fixes</kbd></summary>

#### Styles

* **misc**: Update i18n, closes [#10317](https://github.com/lobehub/lobe-chat/issues/10317) ([8fb9890](https://github.com/lobehub/lobe-chat/commit/8fb9890))

</details>

<div align="right">

[![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)

</div>
2025-11-20 03:49:19 +00:00
LobeHub Bot 8fb9890737 🤖 style: update i18n (#10317)
💄 style: update i18n

Co-authored-by: canisminor1990 <17870709+canisminor1990@users.noreply.github.com>
2025-11-20 11:35:17 +08:00
LobeHub Bot 02d2121355 🌐 chore: translate non-English comments to English in packages/database (#10318)
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-20 11:34:31 +08:00
Shinji-Li fe352ff330 ️ perf: delete profiles slug page & settings page (#10316)
* fix: delete profiles slug pages

* fix: delete settings
2025-11-20 11:33:53 +08:00
lobehubbot c7f0a38b57 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-19 16:51:01 +00:00
semantic-release-bot 5d8648c7d6 🔖 chore(release): v2.0.0-next.92 [skip ci]
## [Version&nbsp;2.0.0-next.92](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.91...v2.0.0-next.92)
<sup>Released on **2025-11-19**</sup>

#### 💄 Styles

- **misc**: Remove debug console logs and add loading state.

<br/>

<details>
<summary><kbd>Improvements and Fixes</kbd></summary>

#### Styles

* **misc**: Remove debug console logs and add loading state, closes [#10314](https://github.com/lobehub/lobe-chat/issues/10314) ([094cdff](https://github.com/lobehub/lobe-chat/commit/094cdff))

</details>

<div align="right">

[![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)

</div>
2025-11-19 16:49:55 +00:00
Arvin Xu 094cdff097 💄 style: remove debug console logs and add loading state (#10314)
perf
2025-11-20 00:32:33 +08:00
lobehubbot 83e0cea322 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-19 16:17:38 +00:00
semantic-release-bot 21c67d6700 🔖 chore(release): v2.0.0-next.91 [skip ci]
## [Version&nbsp;2.0.0-next.91](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.90...v2.0.0-next.91)
<sup>Released on **2025-11-19**</sup>

#### 🐛 Bug Fixes

- **misc**: Fixed the hydrated false problem.

<br/>

<details>
<summary><kbd>Improvements and Fixes</kbd></summary>

#### What's fixed

* **misc**: Fixed the hydrated false problem, closes [#10308](https://github.com/lobehub/lobe-chat/issues/10308) ([340aa2a](https://github.com/lobehub/lobe-chat/commit/340aa2a))

</details>

<div align="right">

[![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)

</div>
2025-11-19 16:16:27 +00:00
Shinji-Li 340aa2a9e9 🐛 fix: fixed the hydrated false problem (#10308)
* fix: fixed the hydrated error problem

* fix: use next/dynamic to replace react-router-dom lazy import

* fix: add registor NavigatorRegistrar back

* fix: add dynamic loading components

* fix: change the dynamic config

* fix: add losting loading layout

* fix: delete useless memo

* fix: add  ErrorBoundary in some layout
2025-11-20 00:04:04 +08:00
lobehubbot a7d1878630 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-19 14:38:29 +00:00
semantic-release-bot 6a2d439f5c 🔖 chore(release): v2.0.0-next.90 [skip ci]
## [Version&nbsp;2.0.0-next.90](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.89...v2.0.0-next.90)
<sup>Released on **2025-11-19**</sup>

#### 💄 Styles

- **misc**: Extract StatusIndicator component and improve tools display.

<br/>

<details>
<summary><kbd>Improvements and Fixes</kbd></summary>

#### Styles

* **misc**: Extract StatusIndicator component and improve tools display, closes [#10311](https://github.com/lobehub/lobe-chat/issues/10311) ([b5ae53a](https://github.com/lobehub/lobe-chat/commit/b5ae53a))

</details>

<div align="right">

[![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)

</div>
2025-11-19 14:37:18 +00:00
Arvin Xu b5ae53ab30 💄 style: extract StatusIndicator component and improve tools display (#10311)
improve
2025-11-19 22:24:01 +08:00
YuTengjing 474af231b5 🔧 chore: sync cloud changes (#10307) 2025-11-19 19:05:38 +08:00
lobehubbot 7ec5594e1c 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-19 09:38:11 +00:00
semantic-release-bot ffff700c6c 🔖 chore(release): v2.0.0-next.89 [skip ci]
## [Version&nbsp;2.0.0-next.89](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.88...v2.0.0-next.89)
<sup>Released on **2025-11-19**</sup>

####  Features

- **misc**: Support gemini 3.0 tools calling.

<br/>

<details>
<summary><kbd>Improvements and Fixes</kbd></summary>

#### What's improved

* **misc**: Support gemini 3.0 tools calling, closes [#10301](https://github.com/lobehub/lobe-chat/issues/10301) ([7114fc1](https://github.com/lobehub/lobe-chat/commit/7114fc1))

</details>

<div align="right">

[![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)

</div>
2025-11-19 09:37:02 +00:00
Arvin Xu 7114fc10c4 feat: support gemini 3.0 tools calling (#10301)
* fix error display

* 完整支持 gemini 的 Function calling 机制

* add fetchsse

* fix continue mode

* improve

* refactor

* fix
2025-11-19 17:24:46 +08:00
lobehubbot 973367c7ac 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-19 06:11:56 +00:00
semantic-release-bot d1c57a1f97 🔖 chore(release): v2.0.0-next.88 [skip ci]
## [Version&nbsp;2.0.0-next.88](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.87...v2.0.0-next.88)
<sup>Released on **2025-11-19**</sup>

#### 💄 Styles

- **misc**: Fully support Gemini 3.0 model.

<br/>

<details>
<summary><kbd>Improvements and Fixes</kbd></summary>

#### Styles

* **misc**: Fully support Gemini 3.0 model, closes [#10292](https://github.com/lobehub/lobe-chat/issues/10292) ([6545ef8](https://github.com/lobehub/lobe-chat/commit/6545ef8))

</details>

<div align="right">

[![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)

</div>
2025-11-19 06:10:46 +00:00
sxjeru 6545ef863c 💄 style: Fully support Gemini 3.0 model (#10292)
* feat: 添加 Gemini 3 Pro 模型并移除 Gemini 2.0 Flash 预览模型

* feat: 添加思考水平功能,更新相关模型和配置

* feat: 添加 Gemini 3 Pro 模型并移除旧版 Gemini 2.5 Flash 和 Flash-Lite 模型

* feat: 添加 Gemini 3 Pro 预览模型及其相关配置

* fix: 调整 ThinkingLevelSlider 组件的最小宽度为 130

* fix: 修正对 3.0 模型的思考级别判断条件
2025-11-19 13:57:52 +08:00
lobehubbot de60a6732e 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-19 05:14:48 +00:00
semantic-release-bot d178d4f931 🔖 chore(release): v2.0.0-next.87 [skip ci]
## [Version&nbsp;2.0.0-next.87](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.86...v2.0.0-next.87)
<sup>Released on **2025-11-19**</sup>

#### ♻ Code Refactoring

- **misc**: Refactor chat selectors.

<br/>

<details>
<summary><kbd>Improvements and Fixes</kbd></summary>

#### Code refactoring

* **misc**: Refactor chat selectors, closes [#10274](https://github.com/lobehub/lobe-chat/issues/10274) ([0a056f3](https://github.com/lobehub/lobe-chat/commit/0a056f3))

</details>

<div align="right">

[![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)

</div>
2025-11-19 05:13:36 +00:00
548 changed files with 27496 additions and 3248 deletions
+14
View File
@@ -0,0 +1,14 @@
{
"files": ["drizzle.config.ts"],
"patterns": [
"scripts/**",
"**/*.test.ts",
"**/*.test.tsx",
"**/*.spec.ts",
"**/*.spec.tsx",
"**/examples/**",
"e2e/**",
".github/scripts/**",
"apps/desktop/**"
]
}
+117
View File
@@ -0,0 +1,117 @@
name: Check Console Log (Warning)
on:
pull_request:
branches:
- main
- next
permissions:
contents: read
pull-requests: write
jobs:
check-console-log:
name: Check for console.log statements (non-blocking)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Install bun
uses: oven-sh/setup-bun@v2
- name: Run console.log check
id: check
run: |
OUTPUT=$(bunx tsx scripts/checkConsoleLog.mts 2>&1)
echo "$OUTPUT"
# Save output to file for later use
echo "$OUTPUT" > /tmp/console-log-output.txt
# Check if violations were found
if echo "$OUTPUT" | grep -q "Total violations:"; then
echo "has_violations=true" >> $GITHUB_OUTPUT
TOTAL=$(echo "$OUTPUT" | grep -oP "Total violations: \K\d+")
echo "total=$TOTAL" >> $GITHUB_OUTPUT
else
echo "has_violations=false" >> $GITHUB_OUTPUT
fi
- name: Comment on PR
if: steps.check.outputs.has_violations == 'true'
uses: actions/github-script@v7
env:
VIOLATION_COUNT: ${{ steps.check.outputs.total }}
with:
script: |
const fs = require('fs');
const output = fs.readFileSync('/tmp/console-log-output.txt', 'utf8');
const total = process.env.VIOLATION_COUNT || '0';
// Parse violations from output (format: " file:line" followed by " content")
const lines = output.split('\n');
const violations = [];
for (let i = 0; i < lines.length; i++) {
const line = lines[i];
// Match lines like " packages/database/src/client/db.ts:258"
const fileMatch = line.match(/^\s{2}(\S+:\d+)\s*$/);
if (fileMatch) {
const file = fileMatch[1];
const content = lines[i + 1]?.trim() || '';
violations.push({ file, content });
i++;
}
}
// Build comment body
const maxDisplay = 30;
let body = `## ⚠️ Console.log Check Warning\n\n`;
body += `Found **${total}** \`console.log\` statement(s) in this PR.\n\n`;
if (violations.length > 0) {
body += `<details>\n<summary>📋 Click to see violations (${Math.min(violations.length, maxDisplay)} of ${total} shown)</summary>\n\n`;
body += `| File | Code |\n|------|------|\n`;
violations.slice(0, maxDisplay).forEach(v => {
const escapedContent = v.content
.substring(0, 60)
.replace(/\|/g, '\\|')
.replace(/`/g, "'");
body += `| \`${v.file}\` | \`${escapedContent}${v.content.length > 60 ? '...' : ''}\` |\n`;
});
if (parseInt(total) > maxDisplay) {
body += `\n*...and ${parseInt(total) - maxDisplay} more violations*\n`;
}
body += `\n</details>\n\n`;
}
body += `> 💡 **Tip:** Remove \`console.log\` or add files to \`.console-log-whitelist.json\`\n`;
body += `> ✅ This check is **non-blocking** and won't prevent merging.`;
// Find existing comment to update instead of creating duplicates
const { data: comments } = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
});
const botComment = comments.find(c =>
c.user.type === 'Bot' && c.body.includes('Console.log Check Warning')
);
if (botComment) {
await github.rest.issues.updateComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: botComment.id,
body,
});
} else {
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body,
});
}
+4 -4
View File
@@ -32,7 +32,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
node-version: 24.11.1
package-manager-cache: false
- name: Install bun
@@ -66,7 +66,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
node-version: 24.11.1
package-manager-cache: false
# 主要逻辑:确定构建版本号
@@ -111,7 +111,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
node-version: 24.11.1
package-manager-cache: false
# node-linker=hoisted 模式将可以确保 asar 压缩可用
@@ -232,7 +232,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
node-version: 24.11.1
package-manager-cache: false
- name: Install bun
-19
View File
@@ -20,15 +20,6 @@ jobs:
pull-requests: write # for actions-cool/issues-helper to update PRs
runs-on: ubuntu-latest
steps:
- name: Auto Comment on Issues Opened
uses: wow-actions/auto-comment@v1
with:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN}}
issuesOpened: |
👀 @{{ author }}
Thank you for raising an issue. We will investigate into the matter and get back to you as soon as possible.
Please make sure you have given us as much context as possible.
- name: Auto Comment on Issues Closed
uses: wow-actions/auto-comment@v1
with:
@@ -37,16 +28,6 @@ jobs:
✅ @{{ author }}
This issue is closed, If you have any questions, you can comment and reply.
- name: Auto Comment on Pull Request Opened
uses: wow-actions/auto-comment@v1
with:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN}}
pullRequestOpened: |
👍 @{{ author }}
Thank you for raising your pull request and contributing to our Community
Please make sure you have followed our contributing guidelines. We will review it as soon as possible.
If you encounter any problems, please feel free to connect with us.
- name: Auto Comment on Pull Request Merged
uses: actions-cool/pr-welcome@main
if: github.event.pull_request.merged == true
+4 -4
View File
@@ -26,7 +26,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
node-version: 24.11.1
package-manager-cache: false
- name: Install bun
@@ -55,7 +55,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
node-version: 24.11.1
package-manager-cache: false
# 主要逻辑:确定构建版本号
@@ -96,7 +96,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
node-version: 24.11.1
package-manager-cache: false
# node-linker=hoisted 模式将可以确保 asar 压缩可用
@@ -210,7 +210,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
node-version: 24.11.1
package-manager-cache: false
- name: Install bun
+1 -1
View File
@@ -35,7 +35,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
node-version: 24.11.1
package-manager-cache: false
- name: Install bun
+5 -5
View File
@@ -31,7 +31,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
node-version: 24.11.1
package-manager-cache: false
- name: Install bun
@@ -66,7 +66,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
node-version: 24.11.1
package-manager-cache: false
- name: Install bun
@@ -99,7 +99,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
node-version: 24.11.1
package-manager-cache: false
- name: Install bun
@@ -131,7 +131,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
node-version: 24.11.1
package-manager-cache: false
- name: Setup pnpm
@@ -179,7 +179,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
node-version: 24.11.1
package-manager-cache: false
- name: Install pnpm
+1 -1
View File
@@ -103,8 +103,8 @@ vertex-ai-key.json
.local/
.claude/
.mcp.json
CLAUDE.local.md
.agent/
# MCP tools
.serena/**
+366
View File
@@ -2,6 +2,372 @@
# Changelog
## [Version 2.0.0-next.100](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.99...v2.0.0-next.100)
<sup>Released on **2025-11-21**</sup>
#### 🐛 Bug Fixes
- **misc**: Gemini 3 Pro does not display thought summaries.
<br/>
<details>
<summary><kbd>Improvements and Fixes</kbd></summary>
#### What's fixed
- **misc**: Gemini 3 Pro does not display thought summaries, closes [#10345](https://github.com/lobehub/lobe-chat/issues/10345) ([89e296a](https://github.com/lobehub/lobe-chat/commit/89e296a))
</details>
<div align="right">
[![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
</div>
## [Version 2.0.0-next.99](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.98...v2.0.0-next.99)
<sup>Released on **2025-11-21**</sup>
#### ✨ Features
- **misc**: Refactor to use kb search tool.
<br/>
<details>
<summary><kbd>Improvements and Fixes</kbd></summary>
#### What's improved
- **misc**: Refactor to use kb search tool, closes [#10340](https://github.com/lobehub/lobe-chat/issues/10340) ([291ff3c](https://github.com/lobehub/lobe-chat/commit/291ff3c))
</details>
<div align="right">
[![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
</div>
## [Version 2.0.0-next.98](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.97...v2.0.0-next.98)
<sup>Released on **2025-11-21**</sup>
#### 🐛 Bug Fixes
- **misc**: Fixed changelog pages and open again.
#### 💄 Styles
- **misc**: Fix some translations.
<br/>
<details>
<summary><kbd>Improvements and Fixes</kbd></summary>
#### What's fixed
- **misc**: Fixed changelog pages and open again, closes [#10285](https://github.com/lobehub/lobe-chat/issues/10285) ([871d141](https://github.com/lobehub/lobe-chat/commit/871d141))
#### Styles
- **misc**: Fix some translations, closes [#10343](https://github.com/lobehub/lobe-chat/issues/10343) ([ed193e0](https://github.com/lobehub/lobe-chat/commit/ed193e0))
</details>
<div align="right">
[![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
</div>
## [Version 2.0.0-next.97](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.96...v2.0.0-next.97)
<sup>Released on **2025-11-21**</sup>
#### ♻ Code Refactoring
- **misc**: Refactor Conversation to ChatList.
#### 💄 Styles
- **misc**: Update i18n.
<br/>
<details>
<summary><kbd>Improvements and Fixes</kbd></summary>
#### Code refactoring
- **misc**: Refactor Conversation to ChatList, closes [#10330](https://github.com/lobehub/lobe-chat/issues/10330) ([bca70e2](https://github.com/lobehub/lobe-chat/commit/bca70e2))
#### Styles
- **misc**: Update i18n, closes [#10338](https://github.com/lobehub/lobe-chat/issues/10338) ([9c8cf81](https://github.com/lobehub/lobe-chat/commit/9c8cf81))
</details>
<div align="right">
[![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
</div>
## [Version 2.0.0-next.96](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.95...v2.0.0-next.96)
<sup>Released on **2025-11-20**</sup>
#### ✨ Features
- **misc**: Support Command Menu (CMD + J).
<br/>
<details>
<summary><kbd>Improvements and Fixes</kbd></summary>
#### What's improved
- **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))
</details>
<div align="right">
[![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
</div>
## [Version 2.0.0-next.95](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.94...v2.0.0-next.95)
<sup>Released on **2025-11-20**</sup>
#### ✨ Features
- **misc**: Add Security Blacklist for agent runtime.
<br/>
<details>
<summary><kbd>Improvements and Fixes</kbd></summary>
#### What's improved
- **misc**: Add Security Blacklist for agent runtime, closes [#10325](https://github.com/lobehub/lobe-chat/issues/10325) ([deab4d0](https://github.com/lobehub/lobe-chat/commit/deab4d0))
</details>
<div align="right">
[![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
</div>
## [Version 2.0.0-next.94](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.93...v2.0.0-next.94)
<sup>Released on **2025-11-20**</sup>
#### 🐛 Bug Fixes
- **misc**: Provider settings button unable to redirect.
<br/>
<details>
<summary><kbd>Improvements and Fixes</kbd></summary>
#### What's fixed
- **misc**: Provider settings button unable to redirect, closes [#10319](https://github.com/lobehub/lobe-chat/issues/10319) ([e025fec](https://github.com/lobehub/lobe-chat/commit/e025fec))
</details>
<div align="right">
[![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
</div>
## [Version 2.0.0-next.93](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.92...v2.0.0-next.93)
<sup>Released on **2025-11-20**</sup>
#### 💄 Styles
- **misc**: Update i18n.
<br/>
<details>
<summary><kbd>Improvements and Fixes</kbd></summary>
#### Styles
- **misc**: Update i18n, closes [#10317](https://github.com/lobehub/lobe-chat/issues/10317) ([8fb9890](https://github.com/lobehub/lobe-chat/commit/8fb9890))
</details>
<div align="right">
[![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
</div>
## [Version 2.0.0-next.92](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.91...v2.0.0-next.92)
<sup>Released on **2025-11-19**</sup>
#### 💄 Styles
- **misc**: Remove debug console logs and add loading state.
<br/>
<details>
<summary><kbd>Improvements and Fixes</kbd></summary>
#### Styles
- **misc**: Remove debug console logs and add loading state, closes [#10314](https://github.com/lobehub/lobe-chat/issues/10314) ([094cdff](https://github.com/lobehub/lobe-chat/commit/094cdff))
</details>
<div align="right">
[![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
</div>
## [Version 2.0.0-next.91](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.90...v2.0.0-next.91)
<sup>Released on **2025-11-19**</sup>
#### 🐛 Bug Fixes
- **misc**: Fixed the hydrated false problem.
<br/>
<details>
<summary><kbd>Improvements and Fixes</kbd></summary>
#### What's fixed
- **misc**: Fixed the hydrated false problem, closes [#10308](https://github.com/lobehub/lobe-chat/issues/10308) ([340aa2a](https://github.com/lobehub/lobe-chat/commit/340aa2a))
</details>
<div align="right">
[![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
</div>
## [Version 2.0.0-next.90](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.89...v2.0.0-next.90)
<sup>Released on **2025-11-19**</sup>
#### 💄 Styles
- **misc**: Extract StatusIndicator component and improve tools display.
<br/>
<details>
<summary><kbd>Improvements and Fixes</kbd></summary>
#### Styles
- **misc**: Extract StatusIndicator component and improve tools display, closes [#10311](https://github.com/lobehub/lobe-chat/issues/10311) ([b5ae53a](https://github.com/lobehub/lobe-chat/commit/b5ae53a))
</details>
<div align="right">
[![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
</div>
## [Version 2.0.0-next.89](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.88...v2.0.0-next.89)
<sup>Released on **2025-11-19**</sup>
#### ✨ Features
- **misc**: Support gemini 3.0 tools calling.
<br/>
<details>
<summary><kbd>Improvements and Fixes</kbd></summary>
#### What's improved
- **misc**: Support gemini 3.0 tools calling, closes [#10301](https://github.com/lobehub/lobe-chat/issues/10301) ([7114fc1](https://github.com/lobehub/lobe-chat/commit/7114fc1))
</details>
<div align="right">
[![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
</div>
## [Version 2.0.0-next.88](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.87...v2.0.0-next.88)
<sup>Released on **2025-11-19**</sup>
#### 💄 Styles
- **misc**: Fully support Gemini 3.0 model.
<br/>
<details>
<summary><kbd>Improvements and Fixes</kbd></summary>
#### Styles
- **misc**: Fully support Gemini 3.0 model, closes [#10292](https://github.com/lobehub/lobe-chat/issues/10292) ([6545ef8](https://github.com/lobehub/lobe-chat/commit/6545ef8))
</details>
<div align="right">
[![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
</div>
## [Version 2.0.0-next.87](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.86...v2.0.0-next.87)
<sup>Released on **2025-11-19**</sup>
#### ♻ Code Refactoring
- **misc**: Refactor chat selectors.
<br/>
<details>
<summary><kbd>Improvements and Fixes</kbd></summary>
#### Code refactoring
- **misc**: Refactor chat selectors, closes [#10274](https://github.com/lobehub/lobe-chat/issues/10274) ([0a056f3](https://github.com/lobehub/lobe-chat/commit/0a056f3))
</details>
<div align="right">
[![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
</div>
## [Version 2.0.0-next.86](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.85...v2.0.0-next.86)
<sup>Released on **2025-11-19**</sup>
@@ -0,0 +1,603 @@
import { beforeEach, describe, expect, it, vi } from 'vitest';
import type { App } from '@/core/App';
import FileService, { FileNotFoundError } from '../fileSrv';
// Mock electron
vi.mock('electron', () => ({
app: {
getAppPath: vi.fn(() => '/mock/app/path'),
getPath: vi.fn(() => '/mock/user/data'),
},
}));
// Mock constants that depend on electron
vi.mock('@/const/dir', () => ({
FILE_STORAGE_DIR: 'file-storage',
LOCAL_STORAGE_URL_PREFIX: '/lobe-desktop-file',
}));
// Mock logger
vi.mock('@/utils/logger', () => ({
createLogger: () => ({
debug: vi.fn(),
info: vi.fn(),
warn: vi.fn(),
error: vi.fn(),
}),
}));
// Mock file-system utilities
vi.mock('@/utils/file-system', () => ({
makeSureDirExist: vi.fn(),
}));
// Mock node:fs/promises
vi.mock('node:fs/promises', () => ({
writeFile: vi.fn(),
readFile: vi.fn(),
access: vi.fn(),
}));
// Mock node:fs
vi.mock('node:fs', () => ({
default: {
constants: { F_OK: 0 },
promises: { access: vi.fn() },
readFile: vi.fn(),
unlink: vi.fn(),
},
constants: { F_OK: 0 },
promises: { access: vi.fn() },
readFile: vi.fn(),
unlink: vi.fn(),
}));
// Mock node:util promisify
vi.mock('node:util', () => ({
promisify: vi.fn((fn: any) => {
return vi.fn(async (...args: any[]) => {
return new Promise((resolve, reject) => {
fn(...args, (err: any, data: any) => {
if (err) reject(err);
else resolve(data);
});
});
});
}),
}));
describe('FileService', () => {
let fileService: FileService;
let mockApp: App;
let mockMakeSureDirExist: any;
let mockWriteFile: any;
let mockReadFile: any;
let mockAccess: any;
let mockFsReadFile: any;
let mockFsUnlink: any;
beforeEach(async () => {
vi.clearAllMocks();
// Setup mock app
mockApp = {
appStoragePath: '/mock/app/storage',
staticFileServerManager: {
getFileServerDomain: vi.fn().mockReturnValue('http://localhost:3000'),
},
} as unknown as App;
// Import mocks
mockMakeSureDirExist = (await import('@/utils/file-system')).makeSureDirExist;
const fsPromises = await import('node:fs/promises');
mockWriteFile = fsPromises.writeFile;
mockReadFile = fsPromises.readFile;
mockAccess = fsPromises.access;
const fs = await import('node:fs');
mockFsReadFile = fs.readFile;
mockFsUnlink = fs.unlink;
fileService = new FileService(mockApp);
});
describe('uploadFile', () => {
it('should upload file with ArrayBuffer content successfully', async () => {
const content = new ArrayBuffer(10);
const params = {
content,
filename: 'test.png',
hash: 'abc123',
path: 'user_uploads/images/test.png',
type: 'image/png',
};
mockWriteFile.mockResolvedValue(undefined);
const result = await fileService.uploadFile(params);
expect(result.success).toBe(true);
expect(result.metadata.filename).toBe('test.png');
expect(result.metadata.dirname).toBe('user_uploads/images');
expect(result.metadata.path).toBe('desktop://user_uploads/images/test.png');
expect(mockMakeSureDirExist).toHaveBeenCalled();
expect(mockWriteFile).toHaveBeenCalledTimes(2); // file + metadata
});
it('should upload file with Base64 string content successfully', async () => {
const base64Content = Buffer.from('test content').toString('base64');
const params = {
content: base64Content,
filename: 'test.txt',
hash: 'def456',
path: 'documents/test.txt',
type: 'text/plain',
};
mockWriteFile.mockResolvedValue(undefined);
const result = await fileService.uploadFile(params);
expect(result.success).toBe(true);
expect(result.metadata.filename).toBe('test.txt');
expect(result.metadata.path).toBe('desktop://documents/test.txt');
});
it('should create metadata file with correct structure', async () => {
const content = new ArrayBuffer(100);
const params = {
content,
filename: 'image.jpg',
hash: 'xyz789',
path: 'photos/image.jpg',
type: 'image/jpeg',
};
let metadataContent: string = '';
mockWriteFile.mockImplementation(async (path: any, data: any) => {
if (path.toString().endsWith('.meta')) {
metadataContent = data;
}
});
await fileService.uploadFile(params);
expect(metadataContent).toBeTruthy();
const metadata = JSON.parse(metadataContent);
expect(metadata.filename).toBe('image.jpg');
expect(metadata.hash).toBe('xyz789');
expect(metadata.type).toBe('image/jpeg');
expect(metadata.size).toBe(100);
expect(metadata.createdAt).toBeDefined();
});
it('should handle upload failure and throw error', async () => {
const params = {
content: new ArrayBuffer(10),
filename: 'test.png',
hash: 'abc123',
path: 'uploads/test.png',
type: 'image/png',
};
mockWriteFile.mockRejectedValue(new Error('Disk full'));
await expect(fileService.uploadFile(params)).rejects.toThrow('File upload failed: Disk full');
});
it('should handle file path with no directory', async () => {
const params = {
content: new ArrayBuffer(10),
filename: 'test.txt',
hash: 'abc',
path: 'test.txt',
type: 'text/plain',
};
mockWriteFile.mockResolvedValue(undefined);
const result = await fileService.uploadFile(params);
expect(result.success).toBe(true);
expect(result.metadata.dirname).toBe('');
expect(result.metadata.filename).toBe('test.txt');
});
});
describe('getFile', () => {
it('should get file from new path format successfully', async () => {
const mockContent = Buffer.from('test content');
mockFsReadFile.mockImplementation((path: any, callback: any) => {
callback(null, mockContent);
});
// Mock metadata read failure, will infer from extension
mockReadFile.mockRejectedValue(new Error('No metadata'));
const result = await fileService.getFile('desktop://documents/test.txt');
// Since metadata fails, it will use default or infer from extension
expect(result.mimeType).toBeDefined();
expect(result.content).toBeDefined();
});
it('should get file from legacy path format (timestamp directory)', async () => {
const mockContent = Buffer.from('legacy content');
mockFsReadFile.mockImplementation((path: any, callback: any) => {
callback(null, mockContent);
});
// Mock metadata read to succeed this time
mockReadFile.mockResolvedValue(JSON.stringify({ type: 'image/png' }));
const result = await fileService.getFile('desktop://1234567890/abc123.png');
// Check that result is returned
expect(result.mimeType).toBeDefined();
expect(result.content).toBeDefined();
});
it('should fallback from legacy to new path on failure', async () => {
const mockContent = Buffer.from('fallback content');
let callCount = 0;
mockFsReadFile.mockImplementation((path: any, callback: any) => {
callCount++;
if (callCount === 1) {
// First read (legacy) fails
const error: any = new Error('ENOENT');
error.code = 'ENOENT';
callback(error, null);
} else {
// Second read (fallback) succeeds
callback(null, mockContent);
}
});
mockReadFile.mockRejectedValue(new Error('No metadata'));
const result = await fileService.getFile('desktop://1234567890/fallback.jpg');
// Check that fallback worked and result is returned
expect(result.content).toBeDefined();
expect(result.mimeType).toBeDefined();
});
it('should infer MIME type from file extension when metadata missing', async () => {
const mockContent = Buffer.from('image data');
mockFsReadFile.mockImplementation((path: any, callback: any) => {
callback(null, mockContent);
});
mockReadFile.mockRejectedValue(new Error('Metadata not found'));
const result = await fileService.getFile('desktop://images/photo.png');
expect(result.mimeType).toBe('image/png');
});
it('should infer correct MIME types for various image formats', async () => {
const mockContent = Buffer.from('image');
const testCases = [
{ path: 'desktop://test.jpg', expected: 'image/jpeg' },
{ path: 'desktop://test.jpeg', expected: 'image/jpeg' },
{ path: 'desktop://test.gif', expected: 'image/gif' },
{ path: 'desktop://test.webp', expected: 'image/webp' },
{ path: 'desktop://test.svg', expected: 'image/svg+xml' },
{ path: 'desktop://test.pdf', expected: 'application/pdf' },
];
mockFsReadFile.mockImplementation((path: any, callback: any) => {
callback(null, mockContent);
});
for (const testCase of testCases) {
mockReadFile.mockRejectedValue(new Error('No metadata'));
const result = await fileService.getFile(testCase.path);
expect(result.mimeType).toBe(testCase.expected);
}
});
it('should use default MIME type for unknown extensions', async () => {
const mockContent = Buffer.from('unknown');
mockFsReadFile.mockImplementation((path: any, callback: any) => {
callback(null, mockContent);
});
mockReadFile.mockRejectedValue(new Error('No metadata'));
const result = await fileService.getFile('desktop://file.unknown');
expect(result.mimeType).toBe('application/octet-stream');
});
it('should throw FileNotFoundError when file does not exist', async () => {
mockFsReadFile.mockImplementation((path: any, callback: any) => {
const error: any = new Error('ENOENT: no such file');
error.code = 'ENOENT';
error.message = 'ENOENT: no such file';
callback(error, null);
});
await expect(fileService.getFile('desktop://missing/file.txt')).rejects.toThrow(
FileNotFoundError,
);
});
it('should throw error for invalid path without desktop:// prefix', async () => {
await expect(fileService.getFile('/invalid/path.txt')).rejects.toThrow(
'Invalid desktop file path',
);
});
});
describe('deleteFile', () => {
it('should delete file from new path format successfully', async () => {
mockFsUnlink.mockImplementation((path: any, callback: any) => {
callback(null);
});
const result = await fileService.deleteFile('desktop://documents/test.txt');
expect(result.success).toBe(true);
});
it('should delete file from legacy path format', async () => {
mockFsUnlink.mockImplementation((path: any, callback: any) => {
callback(null);
});
const result = await fileService.deleteFile('desktop://1234567890/file.png');
expect(result.success).toBe(true);
});
it('should fallback from legacy to new path on deletion failure', async () => {
let callCount = 0;
mockFsUnlink.mockImplementation((path: any, callback: any) => {
callCount++;
if (callCount === 1) {
// First attempt (legacy file) fails
callback(new Error('ENOENT'));
} else {
// All subsequent attempts succeed
callback(null);
}
});
const result = await fileService.deleteFile('desktop://1234567890/fallback.txt');
expect(result.success).toBe(true);
});
it('should handle metadata deletion failure gracefully', async () => {
let callCount = 0;
mockFsUnlink.mockImplementation((path: any, callback: any) => {
callCount++;
if (callCount === 1) {
// File deletion succeeds
callback(null);
} else {
// Metadata deletion fails (but doesn't throw)
callback(new Error('Metadata not found'));
}
});
const result = await fileService.deleteFile('desktop://files/test.txt');
expect(result.success).toBe(true);
});
it('should throw error when file deletion fails', async () => {
mockFsUnlink.mockImplementation((path: any, callback: any) => {
callback(new Error('Permission denied'));
});
await expect(fileService.deleteFile('desktop://protected/file.txt')).rejects.toThrow(
'File deletion failed: Permission denied',
);
});
it('should throw error for invalid path without desktop:// prefix', async () => {
await expect(fileService.deleteFile('/invalid/path.txt')).rejects.toThrow(
'Invalid desktop file path',
);
});
});
describe('deleteFiles', () => {
it('should delete multiple files successfully', async () => {
mockFsUnlink.mockImplementation((path: any, callback: any) => {
callback(null);
});
const paths = [
'desktop://files/file1.txt',
'desktop://files/file2.txt',
'desktop://files/file3.txt',
];
const result = await fileService.deleteFiles(paths);
expect(result.success).toBe(true);
expect(result.errors).toBeUndefined();
});
it('should handle partial failures in batch deletion', async () => {
let callCount = 0;
mockFsUnlink.mockImplementation((path: any, callback: any) => {
callCount++;
// Fail on a specific file
if (path.includes('file2.txt') && !path.includes('.meta')) {
callback(new Error('Permission denied'));
} else {
callback(null);
}
});
const paths = [
'desktop://files/file1.txt',
'desktop://files/file2.txt',
'desktop://files/file3.txt',
];
const result = await fileService.deleteFiles(paths);
expect(result.success).toBe(false);
expect(result.errors).toBeDefined();
expect(result.errors?.length).toBeGreaterThan(0);
});
it('should return errors array with failed file paths', async () => {
mockFsUnlink.mockImplementation((path: any, callback: any) => {
if (path.includes('file2') && !path.includes('.meta')) {
callback(new Error('Access denied'));
} else {
callback(null);
}
});
const paths = ['desktop://files/file1.txt', 'desktop://files/file2.txt'];
const result = await fileService.deleteFiles(paths);
expect(result.success).toBe(false);
expect(result.errors).toHaveLength(1);
expect(result.errors?.[0].path).toBe('desktop://files/file2.txt');
expect(result.errors?.[0].message).toContain('Access denied');
});
it('should handle empty paths array', async () => {
const result = await fileService.deleteFiles([]);
expect(result.success).toBe(true);
expect(result.errors).toBeUndefined();
});
});
describe('getFilePath', () => {
it('should return correct path for new format', async () => {
mockAccess.mockResolvedValue(undefined);
const result = await fileService.getFilePath('desktop://documents/test.txt');
expect(result).toBe('/mock/app/storage/file-storage/documents/test.txt');
});
it('should return legacy path when file exists in uploads directory', async () => {
mockAccess.mockResolvedValue(undefined);
const result = await fileService.getFilePath('desktop://1234567890/legacy.png');
expect(result).toBe('/mock/app/storage/file-storage/uploads/1234567890/legacy.png');
});
it('should fallback to new path when legacy path does not exist', async () => {
mockAccess
.mockRejectedValueOnce(new Error('Not found')) // legacy fails
.mockResolvedValueOnce(undefined); // fallback succeeds
const result = await fileService.getFilePath('desktop://1234567890/migrated.png');
// When legacy path doesn't exist and fallback exists, it returns the fallback path
// But since isLegacyPath returns true for timestamps, and the fallback succeeds,
// it should update to the fallback path
expect(result).toContain('1234567890/migrated.png');
});
it('should return legacy path when both paths do not exist', async () => {
mockAccess
.mockRejectedValueOnce(new Error('Not found'))
.mockRejectedValueOnce(new Error('Not found'));
const result = await fileService.getFilePath('desktop://1234567890/missing.png');
expect(result).toBe('/mock/app/storage/file-storage/uploads/1234567890/missing.png');
});
it('should throw error for invalid path', async () => {
await expect(fileService.getFilePath('/invalid/path')).rejects.toThrow(
'Invalid desktop file path',
);
});
});
describe('getFileHTTPURL', () => {
it('should generate correct HTTP URL for new format', async () => {
const result = await fileService.getFileHTTPURL('desktop://documents/photo.jpg');
expect(result).toBe('http://localhost:3000/lobe-desktop-file/documents/photo.jpg');
});
it('should generate correct HTTP URL for legacy format', async () => {
const result = await fileService.getFileHTTPURL('desktop://1234567890/image.png');
expect(result).toBe('http://localhost:3000/lobe-desktop-file/1234567890/image.png');
});
it('should throw error for invalid path', async () => {
await expect(fileService.getFileHTTPURL('/invalid/path')).rejects.toThrow(
'Invalid desktop file path',
);
});
it('should handle paths with special characters', async () => {
const result = await fileService.getFileHTTPURL('desktop://user/my%20file.txt');
expect(result).toBe('http://localhost:3000/lobe-desktop-file/user/my%20file.txt');
});
});
describe('isLegacyPath (via behavior testing)', () => {
it('should treat timestamp-based paths as legacy', async () => {
mockAccess.mockResolvedValue(undefined);
const result = await fileService.getFilePath('desktop://1234567890/file.txt');
// Legacy paths go to uploads directory
expect(result).toContain('uploads/1234567890/file.txt');
});
it('should treat custom paths as new format', async () => {
mockAccess.mockResolvedValue(undefined);
const result = await fileService.getFilePath('desktop://custom/path/file.txt');
expect(result).toContain('file-storage/custom/path/file.txt');
expect(result).not.toContain('uploads');
});
it('should handle single-level paths correctly', async () => {
mockAccess.mockResolvedValue(undefined);
const result = await fileService.getFilePath('desktop://file.txt');
expect(result).toContain('file-storage/file.txt');
});
});
describe('UPLOADS_DIR getter', () => {
it('should return correct uploads directory path', () => {
expect(fileService.UPLOADS_DIR).toBe('/mock/app/storage/file-storage/uploads');
});
});
describe('FileNotFoundError', () => {
it('should create error with correct properties', () => {
const error = new FileNotFoundError('File not found', 'desktop://missing.txt');
expect(error.name).toBe('FileNotFoundError');
expect(error.message).toBe('File not found');
expect(error.path).toBe('desktop://missing.txt');
expect(error instanceof Error).toBe(true);
});
});
});
+2 -2
View File
@@ -4,9 +4,9 @@ import { setupRouteInterceptors } from './routeInterceptor';
const setupPreload = () => {
setupElectronApi();
// 设置路由拦截逻辑
// Setup route interception logic
window.addEventListener('DOMContentLoaded', () => {
// 设置客户端路由拦截器
// Setup client-side route interceptor
setupRouteInterceptors();
});
};
+1 -1
View File
@@ -2,7 +2,7 @@ import { ClientDispatchEventKey, DispatchInvoke } from '@lobechat/electron-clien
import { ipcRenderer } from 'electron';
/**
* client 端请求 electron main 端方法
* Client-side method to invoke electron main process
*/
export const invoke: DispatchInvoke = async <T extends ClientDispatchEventKey>(
event: T,
+41 -41
View File
@@ -9,7 +9,7 @@ const interceptRoute = async (
) => {
console.log(`[preload] Intercepted ${source} and prevented default behavior:`, path);
// 使用electron-client-ipcdispatch方法
// Use electron-client-ipc's dispatch method
try {
await invoke('interceptRoute', { path, source, url });
} catch (e) {
@@ -17,15 +17,15 @@ const interceptRoute = async (
}
};
/**
* 路由拦截器 - 负责捕获和拦截客户端路由导航
* Route interceptor - Responsible for capturing and intercepting client-side route navigation
*/
export const setupRouteInterceptors = function () {
console.log('[preload] Setting up route interceptors');
// 存储被阻止的路径,避免pushState重复触发
// Store prevented paths to avoid pushState duplicate triggers
const preventedPaths = new Set<string>();
// 重写 window.open 方法来拦截 JavaScript 调用
// Override window.open method to intercept JavaScript calls
const originalWindowOpen = window.open;
window.open = function (url?: string | URL, target?: string, features?: string) {
if (url) {
@@ -33,15 +33,15 @@ export const setupRouteInterceptors = function () {
const urlString = typeof url === 'string' ? url : url.toString();
const urlObj = new URL(urlString, window.location.href);
// 检查是否为外部链接
// Check if it's an external link
if (urlObj.origin !== window.location.origin) {
console.log(`[preload] Intercepted window.open for external URL:`, urlString);
// 调用主进程处理外部链接
// Call main process to handle external link
invoke('openExternalLink', urlString);
return null; // 返回 null 表示没有打开新窗口
return null; // Return null to indicate no window was opened
}
} catch (error) {
// 处理无效 URL 或特殊协议
// Handle invalid URL or special protocol
console.error(`[preload] Intercepted window.open for special protocol:`, url);
console.error(error);
invoke('openExternalLink', typeof url === 'string' ? url : url.toString());
@@ -49,11 +49,11 @@ export const setupRouteInterceptors = function () {
}
}
// 对于内部链接,调用原始的 window.open
// For internal links, call original window.open
return originalWindowOpen.call(window, url, target, features);
};
// 拦截所有a标签的点击事件 - 针对Next.jsLink组件
// Intercept all a tag click events - For Next.js Link component
document.addEventListener(
'click',
async (e) => {
@@ -62,30 +62,30 @@ export const setupRouteInterceptors = function () {
try {
const url = new URL(link.href);
// 检查是否为外部链接
// Check if it's an external link
if (url.origin !== window.location.origin) {
console.log(`[preload] Intercepted external link click:`, url.href);
// 阻止默认的链接跳转行为
// Prevent default link navigation behavior
e.preventDefault();
e.stopPropagation();
// 调用主进程处理外部链接
// Call main process to handle external link
await invoke('openExternalLink', url.href);
return false; // 明确阻止后续处理
return false; // Explicitly prevent subsequent processing
}
// 如果不是外部链接,则继续处理内部路由拦截逻辑
// 使用共享配置检查是否需要拦截
// If not external link, continue with internal route interception logic
// Use shared config to check if interception is needed
const matchedRoute = findMatchingRoute(url.pathname);
// 如果是需要拦截的路径
// If it's a path that needs interception
if (matchedRoute) {
const currentPath = window.location.pathname;
const isAlreadyInTargetPage = currentPath.startsWith(matchedRoute.pathPrefix);
// 如果已经在目标页面下,则不拦截,让默认导航继续
// If already in target page, don't intercept, let default navigation continue
if (isAlreadyInTargetPage) return;
// 立即阻止默认行为,避免Next.js接管路由
// Immediately prevent default behavior to avoid Next.js taking over routing
e.preventDefault();
e.stopPropagation();
@@ -94,15 +94,15 @@ export const setupRouteInterceptors = function () {
return false;
}
} catch (err) {
// 处理可能的 URL 解析错误或其他问题
// 例如 mailto:, tel: 等协议会导致 new URL() 抛出错误
// Handle possible URL parsing errors or other issues
// For example mailto:, tel: protocols will cause new URL() to throw error
if (err instanceof TypeError && err.message.includes('Invalid URL')) {
console.log(
'[preload] Non-HTTP link clicked, allowing default browser behavior:',
link.href,
);
// 对于非 HTTP/HTTPS 链接,允许浏览器默认处理
// 不需要 e.preventDefault() invoke
// For non-HTTP/HTTPS links, allow browser default handling
// No need for e.preventDefault() or invoke
} else {
console.error('[preload] Link interception error:', err);
}
@@ -112,28 +112,28 @@ export const setupRouteInterceptors = function () {
true,
);
// 拦截 history API (用于捕获Next.jsuseRouter().push/replace)
// Intercept history API (for capturing Next.js useRouter().push/replace etc.)
const originalPushState = history.pushState;
const originalReplaceState = history.replaceState;
// 重写pushState
// Override pushState
history.pushState = function () {
const url = arguments[2];
if (typeof url === 'string') {
try {
// 只处理相对路径或当前域的URL
// Only handle relative paths or current domain URLs
const parsedUrl = new URL(url, window.location.origin);
// 使用共享配置检查是否需要拦截
// Use shared config to check if interception is needed
const matchedRoute = findMatchingRoute(parsedUrl.pathname);
// 检查是否需要拦截这个导航
// Check if this navigation needs interception
if (matchedRoute) {
// 检查当前页面是否已经在目标路径下,如果是则不拦截
// Check if current page is already under target path, if so don't intercept
const currentPath = window.location.pathname;
const isAlreadyInTargetPage = currentPath.startsWith(matchedRoute.pathPrefix);
// 如果已经在目标页面下,则不拦截,让默认导航继续
// If already in target page, don't intercept, let default navigation continue
if (isAlreadyInTargetPage) {
console.log(
`[preload] Skip pushState interception for ${parsedUrl.pathname} because already in target page ${matchedRoute.pathPrefix}`,
@@ -141,13 +141,13 @@ export const setupRouteInterceptors = function () {
return Reflect.apply(originalPushState, this, arguments);
}
// 将此路径添加到已阻止集合中
// Add this path to prevented set
preventedPaths.add(parsedUrl.pathname);
interceptRoute(parsedUrl.pathname, 'push-state', parsedUrl.href);
// 不执行原始的pushState操作,阻止导航发生
// 但返回undefined以避免错误
// Don't execute original pushState operation, prevent navigation
// But return undefined to avoid errors
return;
}
} catch (err) {
@@ -157,23 +157,23 @@ export const setupRouteInterceptors = function () {
return Reflect.apply(originalPushState, this, arguments);
};
// 重写replaceState
// Override replaceState
history.replaceState = function () {
const url = arguments[2];
if (typeof url === 'string') {
try {
const parsedUrl = new URL(url, window.location.origin);
// 使用共享配置检查是否需要拦截
// Use shared config to check if interception is needed
const matchedRoute = findMatchingRoute(parsedUrl.pathname);
// 检查是否需要拦截这个导航
// Check if this navigation needs interception
if (matchedRoute) {
// 检查当前页面是否已经在目标路径下,如果是则不拦截
// Check if current page is already under target path, if so don't intercept
const currentPath = window.location.pathname;
const isAlreadyInTargetPage = currentPath.startsWith(matchedRoute.pathPrefix);
// 如果已经在目标页面下,则不拦截,让默认导航继续
// If already in target page, don't intercept, let default navigation continue
if (isAlreadyInTargetPage) {
console.log(
`[preload] Skip replaceState interception for ${parsedUrl.pathname} because already in target page ${matchedRoute.pathPrefix}`,
@@ -181,12 +181,12 @@ export const setupRouteInterceptors = function () {
return Reflect.apply(originalReplaceState, this, arguments);
}
// 添加到已阻止集合
// Add to prevented set
preventedPaths.add(parsedUrl.pathname);
interceptRoute(parsedUrl.pathname, 'replace-state', parsedUrl.href);
// 阻止导航
// Prevent navigation
return;
}
} catch (err) {
@@ -196,7 +196,7 @@ export const setupRouteInterceptors = function () {
return Reflect.apply(originalReplaceState, this, arguments);
};
// 监听并拦截路由错误 - 有时Next.js会在路由错误时尝试恢复导航
// Listen and intercept routing errors - Sometimes Next.js tries to recover navigation on routing errors
window.addEventListener(
'error',
function (e) {
+99
View File
@@ -1,4 +1,103 @@
[
{
"children": {
"fixes": ["Gemini 3 Pro does not display thought summaries."]
},
"date": "2025-11-21",
"version": "2.0.0-next.100"
},
{
"children": {
"features": ["Refactor to use kb search tool."]
},
"date": "2025-11-21",
"version": "2.0.0-next.99"
},
{
"children": {
"fixes": ["Fixed changelog pages and open again."],
"improvements": ["Fix some translations."]
},
"date": "2025-11-21",
"version": "2.0.0-next.98"
},
{
"children": {
"improvements": ["Update i18n."]
},
"date": "2025-11-21",
"version": "2.0.0-next.97"
},
{
"children": {
"features": ["Support Command Menu (CMD + J)."]
},
"date": "2025-11-20",
"version": "2.0.0-next.96"
},
{
"children": {
"features": ["Add Security Blacklist for agent runtime."]
},
"date": "2025-11-20",
"version": "2.0.0-next.95"
},
{
"children": {
"fixes": ["Provider settings button unable to redirect."]
},
"date": "2025-11-20",
"version": "2.0.0-next.94"
},
{
"children": {
"improvements": ["Update i18n."]
},
"date": "2025-11-20",
"version": "2.0.0-next.93"
},
{
"children": {
"improvements": ["Remove debug console logs and add loading state."]
},
"date": "2025-11-19",
"version": "2.0.0-next.92"
},
{
"children": {
"fixes": ["Fixed the hydrated false problem."]
},
"date": "2025-11-19",
"version": "2.0.0-next.91"
},
{
"children": {
"improvements": ["Extract StatusIndicator component and improve tools display."]
},
"date": "2025-11-19",
"version": "2.0.0-next.90"
},
{
"children": {
"features": ["Support gemini 3.0 tools calling."]
},
"date": "2025-11-19",
"version": "2.0.0-next.89"
},
{
"children": {
"improvements": ["Fully support Gemini 3.0 model."]
},
"date": "2025-11-19",
"version": "2.0.0-next.88"
},
{
"children": {
"improvements": ["Refactor chat selectors."]
},
"date": "2025-11-19",
"version": "2.0.0-next.87"
},
{
"children": {
"features": ["Support user abort in the agent runtime."]
+1
View File
@@ -32,6 +32,7 @@ coverage:
app:
flags:
- app
threshold: 0.5
patch: off
+1
View File
@@ -214,6 +214,7 @@ table files {
metadata jsonb
chunk_task_id uuid
embedding_task_id uuid
slug text [unique]
accessed_at "timestamp with time zone" [not null, default: `now()`]
created_at "timestamp with time zone" [not null, default: `now()`]
updated_at "timestamp with time zone" [not null, default: `now()`]
+1 -1
View File
@@ -17,7 +17,7 @@
"playwright": "^1.56.1"
},
"devDependencies": {
"@types/node": "^22.19.1",
"@types/node": "^24.10.1",
"tsx": "^4.20.6",
"typescript": "^5.9.3"
}
+4
View File
@@ -65,6 +65,9 @@
"thinking": {
"title": "مفتاح التفكير العميق"
},
"thinkingLevel": {
"title": "مستوى التفكير"
},
"title": "وظائف توسيع النموذج",
"urlContext": {
"desc": "عند التفعيل، سيتم تحليل روابط الويب تلقائيًا للحصول على محتوى السياق الفعلي للصفحة",
@@ -396,6 +399,7 @@
"rejectReasonPlaceholder": "إدخال سبب الرفض سيساعد الوكيل على الفهم وتحسين الإجراءات المستقبلية",
"rejectTitle": "رفض استدعاء الأداة هذه المرة",
"rejectedWithReason": "تم رفض استدعاء الأداة هذه المرة بشكل يدوي: {{reason}}",
"toolAbort": "تم إلغاء استدعاء الأداة من قبل المستخدم",
"toolRejected": "تم رفض استدعاء الأداة هذه المرة بشكل يدوي"
}
},
+22
View File
@@ -135,6 +135,27 @@
}
},
"close": "إغلاق",
"cmdk": {
"about": "حول",
"communitySupport": "دعم المجتمع",
"discover": "استكشاف",
"knowledgeBase": "قاعدة المعرفة",
"navigate": "التنقل",
"newAgent": "إنشاء مساعد جديد",
"noResults": "لم يتم العثور على نتائج",
"openSettings": "فتح الإعدادات",
"painting": "الرسم بالذكاء الاصطناعي",
"searchPlaceholder": "أدخل أمرًا أو ابحث...",
"settings": "الإعدادات",
"starOnGitHub": "قيّمنا على GitHub",
"submitIssue": "إرسال مشكلة",
"theme": "السمة",
"themeAuto": "اتباع النظام",
"themeDark": "الوضع الداكن",
"themeLight": "الوضع الفاتح",
"toOpen": "فتح",
"toSelect": "تحديد"
},
"confirm": "تأكيد",
"contact": "اتصل بنا",
"copy": "نسخ",
@@ -283,6 +304,7 @@
"business": "شراكات تجارية",
"support": "الدعم عبر البريد الإلكتروني"
},
"new": "جديد",
"oauth": "تسجيل الدخول SSO",
"officialSite": "الموقع الرسمي",
"ok": "موافق",
+9 -11
View File
@@ -55,11 +55,11 @@
},
"documentList": {
"copyContent": "نسخ المحتوى الكامل",
"documentCount": "إجمالي {{count}} مستند",
"duplicate": "إنشاء نسخة",
"empty": "لا توجد مستندات حاليًا، انقر على الزر أعلاه لإنشاء أول مستند لك",
"empty": "لا توجد مستندات حالياً، انقر على الزر أعلاه لإنشاء أول مستند لك",
"noResults": "لم يتم العثور على مستندات مطابقة",
"selectNote": "اختر مستندًا للبدء في التحرير",
"pageCount": "إجمالي {{count}} مستند",
"selectNote": "اختر مستندًا لبدء التحرير",
"untitled": "بدون عنوان"
},
"empty": "لا توجد ملفات/مجلدات تم تحميلها بعد",
@@ -70,7 +70,6 @@
"uploadFile": "رفع ملف",
"uploadFolder": "رفع مجلد"
},
"newDocumentButton": "مستند جديد",
"newNoteDialog": {
"cancel": "إلغاء",
"editTitle": "تحرير المستند",
@@ -83,14 +82,15 @@
"title": "مستند جديد",
"updateSuccess": "تم تحديث المستند بنجاح"
},
"newPageButton": "إنشاء مستند جديد",
"uploadButton": "رفع"
},
"home": {
"getStarted": "ابدأ الآن",
"greeting": "ابدأ",
"quickActions": "إجراءات سريعة",
"recentDocuments": "المستندات الأخيرة",
"recentFiles": "الملفات الأخيرة",
"recentPages": "الصفحات الأخيرة",
"subtitle": "مرحبًا بك في قاعدة المعرفة، ابدأ من هنا لإدارة مستنداتك وملاحظاتك",
"uploadEntries": {
"files": {
@@ -102,8 +102,8 @@
"knowledgeBase": {
"title": "قاعدة معرفة جديدة"
},
"newDocument": {
"title": "مستند جديد"
"newPage": {
"title": "إنشاء مستند جديد"
}
}
},
@@ -142,8 +142,8 @@
"downloadFile": "تحميل الملف",
"unsupportedFileAndContact": "هذا التنسيق من الملفات غير مدعوم للمعاينة عبر الإنترنت، إذا كان لديك طلب للمعاينة، فلا تتردد في <1>إبلاغنا</1>"
},
"searchDocumentPlaceholder": "ابحث في المستندات",
"searchFilePlaceholder": "بحث عن ملف",
"searchPagePlaceholder": "ابحث في المستندات",
"tab": {
"all": "الكل",
"audios": "الصوتيات",
@@ -156,9 +156,7 @@
"websites": "المواقع"
},
"title": "قاعدة المعرفة",
"toggleLeftPanel": {
"title": "عرض/إخفاء اللوحة الجانبية اليسرى"
},
"toggleLeftPanel": "إظهار/إخفاء اللوحة الجانبية اليسرى",
"uploadDock": {
"body": {
"collapse": "طي",
+4
View File
@@ -7,6 +7,10 @@
"desc": "مسح الرسائل والملفات المرفوعة في المحادثة الحالية",
"title": "مسح رسائل المحادثة"
},
"commandPalette": {
"desc": "افتح لوحة الأوامر العامة للوصول السريع إلى الميزات",
"title": "لوحة الأوامر"
},
"deleteAndRegenerateMessage": {
"desc": "حذف الرسالة الأخيرة وإعادة إنشائها",
"title": "حذف وإعادة إنشاء"
+9 -6
View File
@@ -1481,9 +1481,6 @@
"gemini-2.0-flash-lite-001": {
"description": "نموذج جمنّي 2.0 فلاش هو نسخة معدلة، تم تحسينها لتحقيق الكفاءة من حيث التكلفة والحد من التأخير."
},
"gemini-2.0-flash-preview-image-generation": {
"description": "نموذج معاينة Gemini 2.0 Flash، يدعم توليد الصور"
},
"gemini-2.5-flash": {
"description": "Gemini 2.5 Flash هو نموذج Google الأكثر فعالية من حيث التكلفة، ويوفر وظائف شاملة."
},
@@ -1511,9 +1508,6 @@
"gemini-2.5-flash-preview-04-17": {
"description": "معاينة فلاش جمنّي 2.5 هي النموذج الأكثر كفاءة من جوجل، حيث تقدم مجموعة شاملة من الميزات."
},
"gemini-2.5-flash-preview-05-20": {
"description": "Gemini 2.5 Flash Preview هو نموذج Google الأكثر فعالية من حيث التكلفة، يقدم وظائف شاملة."
},
"gemini-2.5-flash-preview-09-2025": {
"description": "إصدار معاينة (25 سبتمبر 2025) من Gemini 2.5 Flash"
},
@@ -1529,6 +1523,9 @@
"gemini-2.5-pro-preview-06-05": {
"description": "جيميني 2.5 برو بريڤيو هو أحدث نموذج تفكيري من جوجل، قادر على استنتاج حلول للمشكلات المعقدة في مجالات البرمجة، الرياضيات، والعلوم والتكنولوجيا والهندسة والرياضيات (STEM)، بالإضافة إلى تحليل مجموعات بيانات كبيرة، قواعد بيانات البرمجة، والوثائق باستخدام سياق طويل."
},
"gemini-3-pro-preview": {
"description": "Gemini 3 Pro هو النموذج الأذكى من Google، يتميز بأحدث تقنيات الاستدلال والفهم متعدد الوسائط، بالإضافة إلى قدرات قوية في التمثيل الذكي وترميز السياق."
},
"gemini-flash-latest": {
"description": "أحدث إصدار من Gemini Flash"
},
@@ -1910,6 +1907,12 @@
"grok-4-0709": {
"description": "Grok 4 من xAI، يتمتع بقدرات استدلال قوية."
},
"grok-4-1-fast-non-reasoning": {
"description": "نموذج متعدد الوسائط متقدم، مُحسَّن خصيصًا لاستدعاء أدوات الوكلاء عالية الأداء."
},
"grok-4-1-fast-reasoning": {
"description": "نموذج متعدد الوسائط متقدم، مُحسَّن خصيصًا لاستدعاء أدوات الوكلاء عالية الأداء."
},
"grok-4-fast-non-reasoning": {
"description": "نحن سعداء بإصدار Grok 4 Fast، وهو أحدث تقدم لدينا في نماذج الاستدلال ذات التكلفة الفعالة."
},
+34 -22
View File
@@ -1,4 +1,38 @@
{
"builtins": {
"lobe-knowledge-base": {
"apiName": {
"readKnowledge": "قراءة محتوى قاعدة المعرفة",
"searchKnowledgeBase": "البحث في قاعدة المعرفة"
},
"title": "قاعدة المعرفة"
},
"lobe-local-system": {
"apiName": {
"editLocalFile": "تحرير الملف",
"getCommandOutput": "الحصول على مخرجات الكود",
"globLocalFiles": "البحث عن الملفات",
"grepContent": "البحث في المحتوى",
"killCommand": "إيقاف تنفيذ الكود",
"listLocalFiles": "عرض قائمة الملفات",
"moveLocalFiles": "نقل الملفات",
"readLocalFile": "قراءة محتوى الملف",
"renameLocalFile": "إعادة تسمية",
"runCommand": "تنفيذ الكود",
"searchLocalFiles": "البحث في الملفات",
"writeLocalFile": "كتابة إلى الملف"
},
"title": "النظام المحلي"
},
"lobe-web-browsing": {
"apiName": {
"crawlMultiPages": "قراءة محتوى عدة صفحات",
"crawlSinglePage": "قراءة محتوى الصفحة",
"search": "البحث في الصفحات"
},
"title": "البحث عبر الإنترنت"
}
},
"confirm": "تأكيد",
"debug": {
"arguments": "معلمات الاستدعاء",
@@ -251,23 +285,6 @@
"content": "جارٍ استدعاء الإضافة...",
"plugin": "تشغيل الإضافة..."
},
"localSystem": {
"apiName": {
"editLocalFile": "تحرير الملف",
"getCommandOutput": "الحصول على مخرجات الأوامر",
"globLocalFiles": "البحث عن الملفات المطابقة",
"grepContent": "البحث في المحتوى",
"killCommand": "إيقاف تنفيذ الأمر",
"listLocalFiles": "عرض قائمة الملفات",
"moveLocalFiles": "نقل الملفات",
"readLocalFile": "قراءة محتوى الملف",
"renameLocalFile": "إعادة تسمية",
"runCommand": "تشغيل الأمر",
"searchLocalFiles": "بحث في الملفات",
"writeLocalFile": "كتابة في الملف"
},
"title": "النظام المحلي"
},
"mcpInstall": {
"CHECKING_INSTALLATION": "جارٍ فحص بيئة التثبيت...",
"COMPLETED": "اكتمل التثبيت",
@@ -375,11 +392,6 @@
"warning": "⚠️ يرجى التأكد من ثقتك بمصدر هذه الإضافة، الإضافات الخبيثة قد تضر بأمان نظامك."
},
"search": {
"apiName": {
"crawlMultiPages": "قراءة محتوى عدة صفحات",
"crawlSinglePage": "قراءة محتوى الصفحة",
"search": "البحث في الصفحة"
},
"config": {
"addKey": "إضافة مفتاح",
"close": "حذف",
+8
View File
@@ -14,6 +14,14 @@
"images": "الصور:",
"prompt": "كلمة تلميح"
},
"lobe-knowledge-base": {
"readKnowledge": {
"meta": {
"chars": "عدد الأحرف",
"lines": "عدد السطور"
}
}
},
"localFiles": {
"editFile": {
"newString": "استبدال بـ",
+4
View File
@@ -65,6 +65,9 @@
"thinking": {
"title": "Превключвател за дълбоко мислене"
},
"thinkingLevel": {
"title": "Ниво на мислене"
},
"title": "Разширени функции на модела",
"urlContext": {
"desc": "Когато е включено, автоматично ще се анализират уеб връзки, за да се получи реалното съдържание на уеб страницата",
@@ -396,6 +399,7 @@
"rejectReasonPlaceholder": "Въведете причина за отхвърляне, за да помогнете на агента да разбере и подобри бъдещите действия",
"rejectTitle": "Отхвърляне на това извикване на инструмент",
"rejectedWithReason": "Това извикване на инструмент беше умишлено отхвърлено: {{reason}}",
"toolAbort": "Този инструмент беше отменен от потребителя",
"toolRejected": "Това извикване на инструмент беше умишлено отхвърлено"
}
},
+22
View File
@@ -135,6 +135,27 @@
}
},
"close": "Затвори",
"cmdk": {
"about": "Относно",
"communitySupport": "Общностна поддръжка",
"discover": "Открий",
"knowledgeBase": "База знания",
"navigate": "Навигация",
"newAgent": "Създай агент",
"noResults": "Няма намерени резултати",
"openSettings": "Отвори настройките",
"painting": "AI Рисуване",
"searchPlaceholder": "Въведете команда или търсене...",
"settings": "Настройки",
"starOnGitHub": "Дайте ни звезда в GitHub",
"submitIssue": "Подайте проблем",
"theme": "Тема",
"themeAuto": "Следвай системата",
"themeDark": "Тъмен режим",
"themeLight": "Светъл режим",
"toOpen": "Отвори",
"toSelect": "Избери"
},
"confirm": "Потвърди",
"contact": "Свържете се с нас",
"copy": "Копирай",
@@ -283,6 +304,7 @@
"business": "Бизнес сътрудничество",
"support": "Поддръжка по имейл"
},
"new": "Нов",
"oauth": "SSO Вход",
"officialSite": "Официален сайт",
"ok": "Добре",
+8 -10
View File
@@ -55,10 +55,10 @@
},
"documentList": {
"copyContent": "Копиране на цялото съдържание",
"documentCount": "Общо {{count}} документа",
"duplicate": "Създаване на копие",
"empty": "Все още няма документи. Натиснете бутона по-горе, за да създадете първия си документ",
"empty": "Все още няма документи. Щракнете върху бутона по-горе, за да създадете първия си документ.",
"noResults": "Няма намерени съвпадащи документи",
"pageCount": "Общо {{count}} документа",
"selectNote": "Изберете документ, за да започнете редактиране",
"untitled": "Без заглавие"
},
@@ -70,7 +70,6 @@
"uploadFile": "Качване на файл",
"uploadFolder": "Качване на папка"
},
"newDocumentButton": "Нов документ",
"newNoteDialog": {
"cancel": "Отказ",
"editTitle": "Редактиране на документ",
@@ -83,14 +82,15 @@
"title": "Нов документ",
"updateSuccess": "Документът беше обновен успешно"
},
"newPageButton": "Създай нов документ",
"uploadButton": "Качване"
},
"home": {
"getStarted": "Започнете",
"greeting": "Начало",
"quickActions": "Бързи действия",
"recentDocuments": "Скорошни документи",
"recentFiles": "Скорошни файлове",
"recentPages": "Скорошни документи",
"subtitle": "Добре дошли в базата знания. Започнете да управлявате вашите документи оттук",
"uploadEntries": {
"files": {
@@ -102,8 +102,8 @@
"knowledgeBase": {
"title": "Създай база знания"
},
"newDocument": {
"title": "Създай нов документ"
"newPage": {
"title": "Създаване на нов документ"
}
}
},
@@ -142,8 +142,8 @@
"downloadFile": "Изтеглете файла",
"unsupportedFileAndContact": "Този формат на файла не поддържа онлайн преглед. Ако имате нужда от преглед, моля, <1>свържете се с нас</1>."
},
"searchDocumentPlaceholder": "Търсене на документи",
"searchFilePlaceholder": "Търсене на файл",
"searchPagePlaceholder": "Търсене на документи",
"tab": {
"all": "Всички",
"audios": "Аудио",
@@ -156,9 +156,7 @@
"websites": "Уебсайтове"
},
"title": "База знания",
"toggleLeftPanel": {
"title": "Покажи/Скрий лявото панел"
},
"toggleLeftPanel": "Показване/скриване на лявия панел",
"uploadDock": {
"body": {
"collapse": "Скрий",
+4
View File
@@ -7,6 +7,10 @@
"desc": "Изтриване на текущите съобщения и качените файлове в сесията",
"title": "Изтриване на съобщенията в сесията"
},
"commandPalette": {
"desc": "Отворете глобалния панел с команди за бърз достъп до функции",
"title": "Панел с команди"
},
"deleteAndRegenerateMessage": {
"desc": "Изтриване на последното съобщение и повторно генериране",
"title": "Изтрий и генерирай отново"
+9 -6
View File
@@ -1481,9 +1481,6 @@
"gemini-2.0-flash-lite-001": {
"description": "Gemini 2.0 Flash е вариант на модела, оптимизиран за икономичност и ниска латентност."
},
"gemini-2.0-flash-preview-image-generation": {
"description": "Gemini 2.0 Flash предварителен модел, поддържащ генериране на изображения"
},
"gemini-2.5-flash": {
"description": "Gemini 2.5 Flash е най-ефективният модел на Google, предлагащ пълна функционалност."
},
@@ -1511,9 +1508,6 @@
"gemini-2.5-flash-preview-04-17": {
"description": "Gemini 2.5 Flash Preview е моделът с най-добро съотношение цена-качество на Google, предлагащ пълна функционалност."
},
"gemini-2.5-flash-preview-05-20": {
"description": "Gemini 2.5 Flash Preview е най-ефективният модел на Google, предлагащ пълна функционалност."
},
"gemini-2.5-flash-preview-09-2025": {
"description": "Прегледна версия (25 септември 2025 г.) на Gemini 2.5 Flash"
},
@@ -1529,6 +1523,9 @@
"gemini-2.5-pro-preview-06-05": {
"description": "Gemini 2.5 Pro Preview е най-напредналият мисловен модел на Google, способен да разсъждава върху сложни проблеми в областта на кодирането, математиката и STEM, както и да анализира големи набори от данни, кодови бази и документи с дълъг контекст."
},
"gemini-3-pro-preview": {
"description": "Gemini 3 Pro е най-интелигентният модел на Google, с най-съвременно извеждане на заключения и мултимодално разбиране, както и с мощни възможности за агентно поведение и кодиране на контекста."
},
"gemini-flash-latest": {
"description": "Последно издание на Gemini Flash"
},
@@ -1910,6 +1907,12 @@
"grok-4-0709": {
"description": "Grok 4 от xAI, с мощни способности за разсъждение."
},
"grok-4-1-fast-non-reasoning": {
"description": "Модерен мултимодален модел, специално оптимизиран за високоефективно използване на агентски инструменти."
},
"grok-4-1-fast-reasoning": {
"description": "Модерен мултимодален модел, специално оптимизиран за високоефективно използване на агентски инструменти."
},
"grok-4-fast-non-reasoning": {
"description": "С удоволствие представяме Grok 4 Fast, нашият най-нов напредък в модели за разсъждение с висока ефективност на разходите."
},
+34 -22
View File
@@ -1,4 +1,38 @@
{
"builtins": {
"lobe-knowledge-base": {
"apiName": {
"readKnowledge": "Прочети съдържанието на базата знания",
"searchKnowledgeBase": "Търси в базата знания"
},
"title": "База знания"
},
"lobe-local-system": {
"apiName": {
"editLocalFile": "Редактирай файл",
"getCommandOutput": "Вземи изхода от кода",
"globLocalFiles": "Търси съвпадащи файлове",
"grepContent": "Търси съдържание",
"killCommand": "Прекрати изпълнението на кода",
"listLocalFiles": "Преглед на списъка с файлове",
"moveLocalFiles": "Премести файлове",
"readLocalFile": "Прочети съдържанието на файла",
"renameLocalFile": "Преименувай",
"runCommand": "Изпълни код",
"searchLocalFiles": "Търси файлове",
"writeLocalFile": "Запиши файл"
},
"title": "Локална система"
},
"lobe-web-browsing": {
"apiName": {
"crawlMultiPages": "Прочети съдържание от няколко страници",
"crawlSinglePage": "Прочети съдържание от страница",
"search": "Търси страница"
},
"title": "Търсене в интернет"
}
},
"confirm": "Потвърждавам",
"debug": {
"arguments": "Параметри на извикване",
@@ -251,23 +285,6 @@
"content": "Извикване на плъгина...",
"plugin": "Плъгинът работи..."
},
"localSystem": {
"apiName": {
"editLocalFile": "Редактиране на файл",
"getCommandOutput": "Получаване на изход от командата",
"globLocalFiles": "Търсене на съвпадащи файлове",
"grepContent": "Търсене на съдържание",
"killCommand": "Прекратяване на изпълнението на командата",
"listLocalFiles": "Преглед на списък с файлове",
"moveLocalFiles": "Преместване на файлове",
"readLocalFile": "Четене на съдържание на файл",
"renameLocalFile": "Преименуване",
"runCommand": "Изпълни код",
"searchLocalFiles": "Търсене на файлове",
"writeLocalFile": "Запис в файл"
},
"title": "Локална система"
},
"mcpInstall": {
"CHECKING_INSTALLATION": "Проверка на инсталационната среда...",
"COMPLETED": "Инсталацията е завършена",
@@ -375,11 +392,6 @@
"warning": "⚠️ Моля, уверете се, че имате доверие на източника на този плъгин, злонамерени плъгини могат да застрашат сигурността на вашата система."
},
"search": {
"apiName": {
"crawlMultiPages": "Четене на съдържание от множество страници",
"crawlSinglePage": "Четене на съдържание от страница",
"search": "Търсене на страници"
},
"config": {
"addKey": "Добавяне на ключ",
"close": "Изтриване",
+8
View File
@@ -14,6 +14,14 @@
"images": "Изображения:",
"prompt": "подсказка"
},
"lobe-knowledge-base": {
"readKnowledge": {
"meta": {
"chars": "Брой знаци",
"lines": "Брой редове"
}
}
},
"localFiles": {
"editFile": {
"newString": "Замени с",
+4
View File
@@ -65,6 +65,9 @@
"thinking": {
"title": "Tiefdenk-Schalter"
},
"thinkingLevel": {
"title": "Denkebene"
},
"title": "Modell Erweiterungsfunktionen",
"urlContext": {
"desc": "Wenn aktiviert, werden Webseiten-Links automatisch analysiert, um den tatsächlichen Webseiteninhalt zu erfassen",
@@ -396,6 +399,7 @@
"rejectReasonPlaceholder": "Die Angabe eines Ablehnungsgrundes hilft dem Agenten, zukünftige Aktionen zu verbessern",
"rejectTitle": "Tool-Ausführung ablehnen",
"rejectedWithReason": "Die Tool-Ausführung wurde abgelehnt: {{reason}}",
"toolAbort": "Dieser Werkzeugaufruf wurde vom Benutzer abgebrochen",
"toolRejected": "Die Tool-Ausführung wurde abgelehnt"
}
},
+22
View File
@@ -135,6 +135,27 @@
}
},
"close": "Schließen",
"cmdk": {
"about": "Über",
"communitySupport": "Community-Support",
"discover": "Entdecken",
"knowledgeBase": "Wissensdatenbank",
"navigate": "Navigieren",
"newAgent": "Neuen Assistenten erstellen",
"noResults": "Keine Ergebnisse gefunden",
"openSettings": "Einstellungen öffnen",
"painting": "KI-Malerei",
"searchPlaceholder": "Befehl eingeben oder suchen...",
"settings": "Einstellungen",
"starOnGitHub": "Gib uns einen Stern auf GitHub",
"submitIssue": "Problem melden",
"theme": "Design",
"themeAuto": "Systemeinstellung folgen",
"themeDark": "Dunkles Design",
"themeLight": "Helles Design",
"toOpen": "Öffnen",
"toSelect": "Auswählen"
},
"confirm": "Bestätigen",
"contact": "Kontakt",
"copy": "Kopieren",
@@ -283,6 +304,7 @@
"business": "Geschäftliche Zusammenarbeit",
"support": "E-Mail-Support"
},
"new": "Neu",
"oauth": "SSO-Anmeldung",
"officialSite": "Offizielle Website",
"ok": "OK",
+9 -11
View File
@@ -55,11 +55,11 @@
},
"documentList": {
"copyContent": "Gesamten Inhalt kopieren",
"documentCount": "Insgesamt {{count}} Dokumente",
"duplicate": "Kopie erstellen",
"empty": "Noch keine Dokumente vorhanden. Klicken Sie oben, um Ihr erstes Dokument zu erstellen.",
"empty": "Noch keine Dokumente vorhanden. Klicke auf die Schaltfläche oben, um dein erstes Dokument zu erstellen.",
"noResults": "Keine passenden Dokumente gefunden",
"selectNote": "Wählen Sie ein Dokument zum Bearbeiten",
"pageCount": "Insgesamt {{count}} Dokumente",
"selectNote": "Wähle ein Dokument aus, um mit der Bearbeitung zu beginnen",
"untitled": "Ohne Titel"
},
"empty": "Keine hochgeladenen Dateien/Ordner vorhanden",
@@ -70,7 +70,6 @@
"uploadFile": "Datei hochladen",
"uploadFolder": "Ordner hochladen"
},
"newDocumentButton": "Neues Dokument",
"newNoteDialog": {
"cancel": "Abbrechen",
"editTitle": "Dokument bearbeiten",
@@ -83,14 +82,15 @@
"title": "Neues Dokument",
"updateSuccess": "Dokument erfolgreich aktualisiert"
},
"newPageButton": "Neues Dokument erstellen",
"uploadButton": "Hochladen"
},
"home": {
"getStarted": "Loslegen",
"greeting": "Loslegen",
"quickActions": "Schnellaktionen",
"recentDocuments": "Kürzlich verwendete Dokumente",
"recentFiles": "Kürzlich verwendete Dateien",
"recentPages": "Kürzlich geöffnete Dokumente",
"subtitle": "Willkommen im Wissensspeicher. Beginnen Sie hier mit der Verwaltung Ihrer Dokumente.",
"uploadEntries": {
"files": {
@@ -102,8 +102,8 @@
"knowledgeBase": {
"title": "Neue Wissensdatenbank"
},
"newDocument": {
"title": "Neues Dokument"
"newPage": {
"title": "Neues Dokument erstellen"
}
}
},
@@ -142,8 +142,8 @@
"downloadFile": "Datei herunterladen",
"unsupportedFileAndContact": "Dieses Dateiformat wird derzeit nicht für die Online-Vorschau unterstützt. Wenn Sie eine Vorschau wünschen, können Sie uns gerne <1>Feedback geben</1>."
},
"searchDocumentPlaceholder": "Dokumente durchsuchen",
"searchFilePlaceholder": "Datei suchen",
"searchPagePlaceholder": "Dokumente durchsuchen",
"tab": {
"all": "Alle",
"audios": "Audio",
@@ -156,9 +156,7 @@
"websites": "Webseiten"
},
"title": "Wissensdatenbank",
"toggleLeftPanel": {
"title": "Linkes Panel einblenden/ausblenden"
},
"toggleLeftPanel": "Seitenleiste ein-/ausblenden",
"uploadDock": {
"body": {
"collapse": "Einklappen",
+4
View File
@@ -7,6 +7,10 @@
"desc": "Aktuelle Nachrichten und hochgeladene Dateien im Gespräch löschen",
"title": "Gesprächsnachrichten löschen"
},
"commandPalette": {
"desc": "Öffne die globale Befehlspalette für schnellen Zugriff auf Funktionen",
"title": "Befehlspalette"
},
"deleteAndRegenerateMessage": {
"desc": "Letzte Nachricht löschen und neu generieren",
"title": "Löschen und neu generieren"
+9 -6
View File
@@ -1481,9 +1481,6 @@
"gemini-2.0-flash-lite-001": {
"description": "Gemini 2.0 Flash ist eine Modellvariante, die auf Kosteneffizienz und niedrige Latenz optimiert ist."
},
"gemini-2.0-flash-preview-image-generation": {
"description": "Gemini 2.0 Flash Vorschau-Modell, unterstützt die Bildgenerierung"
},
"gemini-2.5-flash": {
"description": "Gemini 2.5 Flash ist Googles kosteneffizientestes Modell und bietet umfassende Funktionen."
},
@@ -1511,9 +1508,6 @@
"gemini-2.5-flash-preview-04-17": {
"description": "Gemini 2.5 Flash Preview ist das kosteneffizienteste Modell von Google und bietet umfassende Funktionen."
},
"gemini-2.5-flash-preview-05-20": {
"description": "Gemini 2.5 Flash Preview ist Googles kosteneffizientestes Modell mit umfassenden Funktionen."
},
"gemini-2.5-flash-preview-09-2025": {
"description": "Vorschauversion (25. September 2025) von Gemini 2.5 Flash"
},
@@ -1529,6 +1523,9 @@
"gemini-2.5-pro-preview-06-05": {
"description": "Gemini 2.5 Pro Preview ist Googles fortschrittlichstes Denkmodell, das komplexe Probleme in den Bereichen Code, Mathematik und MINT-Fächer lösen kann und große Datensätze, Codebasen und Dokumente mit langem Kontext analysiert."
},
"gemini-3-pro-preview": {
"description": "Gemini 3 Pro ist das intelligenteste Modell von Google mit modernster Schlussfolgerungsfähigkeit, multimodaler Verarbeitung sowie leistungsstarken Agenten- und Kontextkodierungsfunktionen."
},
"gemini-flash-latest": {
"description": "Neueste Version von Gemini Flash"
},
@@ -1910,6 +1907,12 @@
"grok-4-0709": {
"description": "xAI's Grok 4 mit starker Schlussfolgerungsfähigkeit."
},
"grok-4-1-fast-non-reasoning": {
"description": "Modernes multimodales Modell, speziell optimiert für die Nutzung leistungsstarker Agenten-Tools."
},
"grok-4-1-fast-reasoning": {
"description": "Modernes multimodales Modell, speziell optimiert für die Nutzung leistungsstarker Agenten-Tools."
},
"grok-4-fast-non-reasoning": {
"description": "Wir freuen uns, Grok 4 Fast vorzustellen, unseren neuesten Fortschritt bei kosteneffizienten Inferenzmodellen."
},
+34 -22
View File
@@ -1,4 +1,38 @@
{
"builtins": {
"lobe-knowledge-base": {
"apiName": {
"readKnowledge": "Wissensdatenbank lesen",
"searchKnowledgeBase": "Wissensdatenbank durchsuchen"
},
"title": "Wissensdatenbank"
},
"lobe-local-system": {
"apiName": {
"editLocalFile": "Datei bearbeiten",
"getCommandOutput": "Codeausgabe abrufen",
"globLocalFiles": "Dateien durchsuchen",
"grepContent": "Inhalt durchsuchen",
"killCommand": "Codeausführung beenden",
"listLocalFiles": "Dateiliste anzeigen",
"moveLocalFiles": "Dateien verschieben",
"readLocalFile": "Dateiinhalt lesen",
"renameLocalFile": "Datei umbenennen",
"runCommand": "Code ausführen",
"searchLocalFiles": "Dateien suchen",
"writeLocalFile": "In Datei schreiben"
},
"title": "Lokales System"
},
"lobe-web-browsing": {
"apiName": {
"crawlMultiPages": "Inhalte mehrerer Seiten lesen",
"crawlSinglePage": "Seiteninhalt lesen",
"search": "Seiten durchsuchen"
},
"title": "Websuche"
}
},
"confirm": "Bestätigen",
"debug": {
"arguments": "Aufrufparameter",
@@ -251,23 +285,6 @@
"content": "Plugin wird aufgerufen...",
"plugin": "Plugin läuft..."
},
"localSystem": {
"apiName": {
"editLocalFile": "Datei bearbeiten",
"getCommandOutput": "Codeausgabe abrufen",
"globLocalFiles": "Dateien durchsuchen",
"grepContent": "Inhalt durchsuchen",
"killCommand": "Codeausführung beenden",
"listLocalFiles": "Dateiliste anzeigen",
"moveLocalFiles": "Dateien verschieben",
"readLocalFile": "Dateiinhalt lesen",
"renameLocalFile": "Datei umbenennen",
"runCommand": "Befehl ausführen",
"searchLocalFiles": "Dateien suchen",
"writeLocalFile": "Datei schreiben"
},
"title": "Lokales System"
},
"mcpInstall": {
"CHECKING_INSTALLATION": "Installationsumgebung wird geprüft...",
"COMPLETED": "Installation abgeschlossen",
@@ -375,11 +392,6 @@
"warning": "⚠️ Bitte stellen Sie sicher, dass Sie der Quelle dieses Plugins vertrauen. Bösartige Plugins können die Systemsicherheit gefährden."
},
"search": {
"apiName": {
"crawlMultiPages": "Mehrere Seiteninhalt lesen",
"crawlSinglePage": "Seiteninhalt lesen",
"search": "Seite durchsuchen"
},
"config": {
"addKey": "Schlüssel hinzufügen",
"close": "Löschen",
+8
View File
@@ -14,6 +14,14 @@
"images": "Bilder:",
"prompt": "Hinweiswort"
},
"lobe-knowledge-base": {
"readKnowledge": {
"meta": {
"chars": "Zeichenanzahl",
"lines": "Zeilenzahl"
}
}
},
"localFiles": {
"editFile": {
"newString": "Ersetzen durch",
+4
View File
@@ -65,6 +65,9 @@
"thinking": {
"title": "Deep Thinking Switch"
},
"thinkingLevel": {
"title": "Level of Thinking"
},
"title": "Model Extension Features",
"urlContext": {
"desc": "When enabled, web links will be automatically parsed to retrieve the actual webpage context content",
@@ -396,6 +399,7 @@
"rejectReasonPlaceholder": "Providing a reason will help the Agent understand and improve future actions",
"rejectTitle": "Reject This Tool Invocation",
"rejectedWithReason": "This tool invocation was actively rejected: {{reason}}",
"toolAbort": "This tool invocation was canceled by the user",
"toolRejected": "This tool invocation was actively rejected"
}
},
+22
View File
@@ -135,6 +135,27 @@
}
},
"close": "Close",
"cmdk": {
"about": "About",
"communitySupport": "Community Support",
"discover": "Discover",
"knowledgeBase": "Knowledge Base",
"navigate": "Navigate",
"newAgent": "Create New Assistant",
"noResults": "No results found",
"openSettings": "Open Settings",
"painting": "AI Painting",
"searchPlaceholder": "Enter a command or search...",
"settings": "Settings",
"starOnGitHub": "Star us on GitHub",
"submitIssue": "Submit Issue",
"theme": "Theme",
"themeAuto": "Auto",
"themeDark": "Dark",
"themeLight": "Light",
"toOpen": "to Open",
"toSelect": "to Select"
},
"confirm": "Confirm",
"contact": "Contact Us",
"copy": "Copy",
@@ -283,6 +304,7 @@
"business": "Business Cooperation",
"support": "Email Support"
},
"new": "NEW",
"oauth": "SSO Login",
"officialSite": "Official Website",
"ok": "OK",
+12 -14
View File
@@ -38,8 +38,8 @@
"editedBy": "Edited by {{name}}",
"editorPlaceholder": "Type document content, press / to open command menu",
"empty": {
"createNewDocument": "Create New Document",
"title": "Select a document to start",
"createNewDocument": "Create New Page",
"title": "Select a page to start",
"uploadMarkdown": "Upload Markdown File"
},
"linkCopied": "Link copied",
@@ -55,22 +55,21 @@
},
"documentList": {
"copyContent": "Copy All",
"documentCount": "Total {{count}} documents",
"duplicate": "Duplicate",
"empty": "No documents yet. Click the button above to create your first one.",
"noResults": "No matching documents found.",
"selectNote": "Select a document to start editing.",
"pageCount": "{{count}} pages in total",
"selectNote": "Select a document to start editing",
"untitled": "Untitled"
},
"empty": "No files or folders have been uploaded yet.",
"header": {
"actions": {
"newFolder": "New Folder",
"newPage": "New Document",
"newPage": "New Page",
"uploadFile": "Upload File",
"uploadFolder": "Upload Folder"
},
"newDocumentButton": "New Document",
"newNoteDialog": {
"cancel": "Cancel",
"editTitle": "Edit Document",
@@ -80,17 +79,18 @@
"save": "Save",
"saveError": "Failed to save the document. Please try again.",
"saveSuccess": "Document saved successfully.",
"title": "New Document",
"title": "New Page",
"updateSuccess": "Document updated successfully."
},
"newPageButton": "New Page",
"uploadButton": "Upload"
},
"home": {
"getStarted": "Get Started",
"greeting": "Get Started",
"quickActions": "Quick Actions",
"recentDocuments": "Recent Documents",
"recentFiles": "Recent Files",
"recentPages": "Recent Documents",
"subtitle": "Welcome to your knowledge base. Start managing your documents here.",
"uploadEntries": {
"files": {
@@ -102,8 +102,8 @@
"knowledgeBase": {
"title": "Create Knowledge Base"
},
"newDocument": {
"title": "Create Document"
"newPage": {
"title": "New Page"
}
}
},
@@ -142,8 +142,8 @@
"downloadFile": "Download File",
"unsupportedFileAndContact": "This file format is not currently supported for online preview. If you have a request for previewing, feel free to <1>contact us</1>."
},
"searchDocumentPlaceholder": "Search documents",
"searchFilePlaceholder": "Search Files",
"searchPagePlaceholder": "Search Pages",
"tab": {
"all": "All",
"audios": "Audio",
@@ -156,9 +156,7 @@
"websites": "Websites"
},
"title": "Knowledge Base",
"toggleLeftPanel": {
"title": "Show/Hide Left Panel"
},
"toggleLeftPanel": "Show/Hide Left Panel",
"uploadDock": {
"body": {
"collapse": "Collapse",
+4
View File
@@ -7,6 +7,10 @@
"desc": "Clear the messages and uploaded files from the current conversation",
"title": "Clear Conversation Messages"
},
"commandPalette": {
"desc": "Open the global command palette for quick access to features",
"title": "Command Palette"
},
"deleteAndRegenerateMessage": {
"desc": "Delete the last message and regenerate",
"title": "Delete and Regenerate"
+9 -6
View File
@@ -1481,9 +1481,6 @@
"gemini-2.0-flash-lite-001": {
"description": "Gemini 2.0 Flash is a variant of the model optimized for cost-effectiveness and low latency."
},
"gemini-2.0-flash-preview-image-generation": {
"description": "Gemini 2.0 Flash preview model, supports image generation"
},
"gemini-2.5-flash": {
"description": "Gemini 2.5 Flash is Google's most cost-effective model, offering comprehensive capabilities."
},
@@ -1511,9 +1508,6 @@
"gemini-2.5-flash-preview-04-17": {
"description": "Gemini 2.5 Flash Preview is Google's most cost-effective model, offering a comprehensive set of features."
},
"gemini-2.5-flash-preview-05-20": {
"description": "Gemini 2.5 Flash Preview is Google's most cost-effective model, offering comprehensive capabilities."
},
"gemini-2.5-flash-preview-09-2025": {
"description": "Preview release (September 25th, 2025) of Gemini 2.5 Flash"
},
@@ -1529,6 +1523,9 @@
"gemini-2.5-pro-preview-06-05": {
"description": "Gemini 2.5 Pro Preview is Google's most advanced cognitive model, capable of reasoning through complex problems in code, mathematics, and STEM fields, as well as analyzing large datasets, codebases, and documents using long-context understanding."
},
"gemini-3-pro-preview": {
"description": "Gemini 3 Pro is Google's most advanced model, featuring state-of-the-art reasoning, multimodal understanding, and powerful agent capabilities with contextual awareness."
},
"gemini-flash-latest": {
"description": "Latest release of Gemini Flash"
},
@@ -1910,6 +1907,12 @@
"grok-4-0709": {
"description": "xAI's Grok 4, featuring strong reasoning capabilities."
},
"grok-4-1-fast-non-reasoning": {
"description": "Cutting-edge multimodal model optimized specifically for high-performance agent tool invocation."
},
"grok-4-1-fast-reasoning": {
"description": "Cutting-edge multimodal model optimized specifically for high-performance agent tool invocation."
},
"grok-4-fast-non-reasoning": {
"description": "We are excited to release Grok 4 Fast, our latest advancement in cost-effective reasoning models."
},
+34 -22
View File
@@ -1,4 +1,38 @@
{
"builtins": {
"lobe-knowledge-base": {
"apiName": {
"readKnowledge": "Read Knowledge Base Content",
"searchKnowledgeBase": "Search Knowledge Base"
},
"title": "Knowledge Base"
},
"lobe-local-system": {
"apiName": {
"editLocalFile": "Edit File",
"getCommandOutput": "Get Command Output",
"globLocalFiles": "Search Files by Pattern",
"grepContent": "Search Content",
"killCommand": "Terminate Command Execution",
"listLocalFiles": "View File List",
"moveLocalFiles": "Move Files",
"readLocalFile": "Read File Content",
"renameLocalFile": "Rename File",
"runCommand": "Execute Command",
"searchLocalFiles": "Search Files",
"writeLocalFile": "Write to File"
},
"title": "Local System"
},
"lobe-web-browsing": {
"apiName": {
"crawlMultiPages": "Read Multiple Pages",
"crawlSinglePage": "Read Page Content",
"search": "Search Web Pages"
},
"title": "Web Browsing"
}
},
"confirm": "Confirm",
"debug": {
"arguments": "Call Arguments",
@@ -251,23 +285,6 @@
"content": "Calling plugin...",
"plugin": "Plugin running..."
},
"localSystem": {
"apiName": {
"getCommandOutput": "Get Code Output",
"globLocalFiles": "Match Files",
"grepContent": "Search Content",
"killCommand": "Kill Code Execution",
"listLocalFiles": "View File List",
"moveLocalFiles": "Move Files",
"readLocalFile": "Read File Content",
"renameLocalFile": "Rename",
"runCommand": "Run Code",
"searchLocalFiles": "Search Files",
"writeLocalFile": "Write File",
"editLocalFile": "Edit File"
},
"title": "Local System"
},
"mcpInstall": {
"CHECKING_INSTALLATION": "Checking installation environment...",
"COMPLETED": "Installation completed",
@@ -375,11 +392,6 @@
"warning": "⚠️ Please confirm you trust the source of this plugin. Malicious plugins may harm your system security."
},
"search": {
"apiName": {
"crawlMultiPages": "Read Multiple Pages Content",
"crawlSinglePage": "Read Page Content",
"search": "Search Pages"
},
"config": {
"addKey": "Add Key",
"close": "Delete",
+8
View File
@@ -14,6 +14,14 @@
"images": "Images:",
"prompt": "Prompt"
},
"lobe-knowledge-base": {
"readKnowledge": {
"meta": {
"chars": "Character Count",
"lines": "Line Count"
}
}
},
"localFiles": {
"editFile": {
"newString": "Replace with",
+4
View File
@@ -65,6 +65,9 @@
"thinking": {
"title": "Interruptor de pensamiento profundo"
},
"thinkingLevel": {
"title": "Nivel de pensamiento"
},
"title": "Funcionalidad de extensión del modelo",
"urlContext": {
"desc": "Al activarlo, se analizarán automáticamente los enlaces web para obtener el contenido contextual real de la página",
@@ -396,6 +399,7 @@
"rejectReasonPlaceholder": "Ingresar una razón ayudará al agente a comprender y mejorar futuras acciones",
"rejectTitle": "Rechazar esta ejecución de herramienta",
"rejectedWithReason": "Esta ejecución de herramienta fue rechazada: {{reason}}",
"toolAbort": "La llamada a la herramienta fue cancelada por el usuario",
"toolRejected": "Esta ejecución de herramienta fue rechazada"
}
},
+22
View File
@@ -135,6 +135,27 @@
}
},
"close": "Cerrar",
"cmdk": {
"about": "Acerca de",
"communitySupport": "Soporte de la comunidad",
"discover": "Descubrir",
"knowledgeBase": "Base de conocimientos",
"navigate": "Navegar",
"newAgent": "Nuevo asistente",
"noResults": "No se encontraron resultados",
"openSettings": "Abrir configuración",
"painting": "Dibujo con IA",
"searchPlaceholder": "Escribe un comando o busca...",
"settings": "Configuración",
"starOnGitHub": "Danos una estrella en GitHub",
"submitIssue": "Informar de un problema",
"theme": "Tema",
"themeAuto": "Seguir el sistema",
"themeDark": "Modo oscuro",
"themeLight": "Modo claro",
"toOpen": "Abrir",
"toSelect": "Seleccionar"
},
"confirm": "Confirmar",
"contact": "Contacto",
"copy": "Copiar",
@@ -283,6 +304,7 @@
"business": "Colaboración Comercial",
"support": "Soporte por Correo"
},
"new": "Nuevo",
"oauth": "Inicio de sesión SSO",
"officialSite": "Sitio oficial",
"ok": "Aceptar",
+7 -9
View File
@@ -55,10 +55,10 @@
},
"documentList": {
"copyContent": "Copiar todo el contenido",
"documentCount": "Total de {{count}} documentos",
"duplicate": "Crear una copia",
"empty": "No hay documentos. Haz clic en el botón de arriba para crear tu primer documento",
"empty": "Aún no hay documentos. Haz clic en el botón de arriba para crear tu primer documento.",
"noResults": "No se encontraron documentos coincidentes",
"pageCount": "Total de {{count}} documentos",
"selectNote": "Selecciona un documento para comenzar a editar",
"untitled": "Sin título"
},
@@ -70,7 +70,6 @@
"uploadFile": "Subir archivo",
"uploadFolder": "Subir carpeta"
},
"newDocumentButton": "Nuevo documento",
"newNoteDialog": {
"cancel": "Cancelar",
"editTitle": "Editar documento",
@@ -83,14 +82,15 @@
"title": "Nuevo documento",
"updateSuccess": "Documento actualizado con éxito"
},
"newPageButton": "Nuevo documento",
"uploadButton": "Subir"
},
"home": {
"getStarted": "Comenzar",
"greeting": "Comenzar",
"quickActions": "Acciones rápidas",
"recentDocuments": "Documentos recientes",
"recentFiles": "Archivos recientes",
"recentPages": "Páginas recientes",
"subtitle": "Bienvenido a tu base de conocimientos. Comienza aquí a gestionar tus documentos y notas",
"uploadEntries": {
"files": {
@@ -102,7 +102,7 @@
"knowledgeBase": {
"title": "Nueva base de conocimientos"
},
"newDocument": {
"newPage": {
"title": "Nuevo documento"
}
}
@@ -142,8 +142,8 @@
"downloadFile": "Descargar archivo",
"unsupportedFileAndContact": "Este formato de archivo no es compatible con la vista previa en línea. Si desea solicitar una vista previa, no dude en <1>contactarnos</1>."
},
"searchDocumentPlaceholder": "Buscar documentos",
"searchFilePlaceholder": "Buscar archivo",
"searchPagePlaceholder": "Buscar documentos",
"tab": {
"all": "Todo",
"audios": "Audios",
@@ -156,9 +156,7 @@
"websites": "Sitios web"
},
"title": "Base de conocimientos",
"toggleLeftPanel": {
"title": "Mostrar/Ocultar panel izquierdo"
},
"toggleLeftPanel": "Mostrar/Ocultar panel izquierdo",
"uploadDock": {
"body": {
"collapse": "Colapsar",
+4
View File
@@ -7,6 +7,10 @@
"desc": "Eliminar los mensajes y archivos subidos de la conversación actual",
"title": "Eliminar mensajes de la conversación"
},
"commandPalette": {
"desc": "Abre el panel de comandos global para acceder rápidamente a las funciones",
"title": "Panel de Comandos"
},
"deleteAndRegenerateMessage": {
"desc": "Eliminar el último mensaje y volver a generarlo",
"title": "Eliminar y regenerar"
+9 -6
View File
@@ -1481,9 +1481,6 @@
"gemini-2.0-flash-lite-001": {
"description": "Variante del modelo Gemini 2.0 Flash, optimizada para objetivos como la rentabilidad y la baja latencia."
},
"gemini-2.0-flash-preview-image-generation": {
"description": "Modelo de vista previa Gemini 2.0 Flash, que admite la generación de imágenes"
},
"gemini-2.5-flash": {
"description": "Gemini 2.5 Flash es el modelo de mejor relación calidad-precio de Google, que ofrece funcionalidades completas."
},
@@ -1511,9 +1508,6 @@
"gemini-2.5-flash-preview-04-17": {
"description": "Gemini 2.5 Flash Preview es el modelo más rentable de Google, que ofrece una funcionalidad completa."
},
"gemini-2.5-flash-preview-05-20": {
"description": "Gemini 2.5 Flash Preview es el modelo de mejor relación calidad-precio de Google, que ofrece funcionalidades completas."
},
"gemini-2.5-flash-preview-09-2025": {
"description": "Versión preliminar (25 de septiembre de 2025) de Gemini 2.5 Flash"
},
@@ -1529,6 +1523,9 @@
"gemini-2.5-pro-preview-06-05": {
"description": "Gemini 2.5 Pro Preview es el modelo de pensamiento más avanzado de Google, capaz de razonar sobre problemas complejos en código, matemáticas y áreas STEM, así como analizar grandes conjuntos de datos, bases de código y documentos utilizando contextos extensos."
},
"gemini-3-pro-preview": {
"description": "Gemini 3 Pro es el modelo más inteligente de Google, con razonamiento de última generación, comprensión multimodal y potentes capacidades de agente y codificación contextual."
},
"gemini-flash-latest": {
"description": "Última versión de Gemini Flash"
},
@@ -1910,6 +1907,12 @@
"grok-4-0709": {
"description": "Grok 4 de xAI, con potentes capacidades de razonamiento."
},
"grok-4-1-fast-non-reasoning": {
"description": "Modelo multimodal de vanguardia, optimizado específicamente para llamadas de herramientas de agente de alto rendimiento."
},
"grok-4-1-fast-reasoning": {
"description": "Modelo multimodal de vanguardia, optimizado específicamente para llamadas de herramientas de agente de alto rendimiento."
},
"grok-4-fast-non-reasoning": {
"description": "Nos complace anunciar Grok 4 Fast, nuestro último avance en modelos de inferencia con alta relación costo-beneficio."
},
+34 -22
View File
@@ -1,4 +1,38 @@
{
"builtins": {
"lobe-knowledge-base": {
"apiName": {
"readKnowledge": "Leer contenido de la base de conocimientos",
"searchKnowledgeBase": "Buscar en la base de conocimientos"
},
"title": "Base de conocimientos"
},
"lobe-local-system": {
"apiName": {
"editLocalFile": "Editar archivo",
"getCommandOutput": "Obtener salida del código",
"globLocalFiles": "Buscar archivos por patrón",
"grepContent": "Buscar contenido",
"killCommand": "Detener ejecución del código",
"listLocalFiles": "Ver lista de archivos",
"moveLocalFiles": "Mover archivos",
"readLocalFile": "Leer contenido del archivo",
"renameLocalFile": "Renombrar archivo",
"runCommand": "Ejecutar código",
"searchLocalFiles": "Buscar archivos",
"writeLocalFile": "Escribir archivo"
},
"title": "Sistema local"
},
"lobe-web-browsing": {
"apiName": {
"crawlMultiPages": "Leer contenido de múltiples páginas",
"crawlSinglePage": "Leer contenido de la página",
"search": "Buscar en la web"
},
"title": "Búsqueda en línea"
}
},
"confirm": "Confirmar",
"debug": {
"arguments": "Parámetros de llamada",
@@ -251,23 +285,6 @@
"content": "Llamando al plugin...",
"plugin": "Plugin en ejecución..."
},
"localSystem": {
"apiName": {
"editLocalFile": "Editar archivo",
"getCommandOutput": "Obtener salida del código",
"globLocalFiles": "Buscar archivos coincidentes",
"grepContent": "Buscar contenido",
"killCommand": "Detener ejecución del código",
"listLocalFiles": "Ver lista de archivos",
"moveLocalFiles": "Mover archivos",
"readLocalFile": "Leer contenido del archivo",
"renameLocalFile": "Renombrar",
"runCommand": "Ejecutar código",
"searchLocalFiles": "Buscar archivos",
"writeLocalFile": "Escribir archivo"
},
"title": "Sistema local"
},
"mcpInstall": {
"CHECKING_INSTALLATION": "Verificando entorno de instalación...",
"COMPLETED": "Instalación completada",
@@ -375,11 +392,6 @@
"warning": "⚠️ Por favor confirme que confía en la fuente de este plugin, plugins maliciosos pueden comprometer la seguridad de su sistema."
},
"search": {
"apiName": {
"crawlMultiPages": "Leer contenido de múltiples páginas",
"crawlSinglePage": "Leer contenido de página",
"search": "Buscar página"
},
"config": {
"addKey": "Agregar clave",
"close": "Eliminar",
+8
View File
@@ -14,6 +14,14 @@
"images": "Imágenes:",
"prompt": "Palabra de aviso"
},
"lobe-knowledge-base": {
"readKnowledge": {
"meta": {
"chars": "Número de caracteres",
"lines": "Número de líneas"
}
}
},
"localFiles": {
"editFile": {
"newString": "Reemplazar con",
+4
View File
@@ -65,6 +65,9 @@
"thinking": {
"title": "کلید تفکر عمیق"
},
"thinkingLevel": {
"title": "سطح تفکر"
},
"title": "ویژگی‌های گسترش مدل",
"urlContext": {
"desc": "با فعال‌سازی، لینک‌های وب به‌طور خودکار تجزیه می‌شوند تا محتوای واقعی زمینه وب‌سایت به‌دست آید",
@@ -396,6 +399,7 @@
"rejectReasonPlaceholder": "وارد کردن دلیل رد به Agent کمک می‌کند تا اقدامات بعدی را بهینه کند",
"rejectTitle": "رد این فراخوانی ابزار",
"rejectedWithReason": "این فراخوانی ابزار با دلیل زیر رد شد:{{reason}}",
"toolAbort": "این فراخوانی ابزار توسط کاربر لغو شد",
"toolRejected": "این فراخوانی ابزار به‌صورت دستی رد شد"
}
},
+22
View File
@@ -135,6 +135,27 @@
}
},
"close": "بستن",
"cmdk": {
"about": "درباره",
"communitySupport": "پشتیبانی جامعه",
"discover": "کشف",
"knowledgeBase": "پایگاه دانش",
"navigate": "ناوبری",
"newAgent": "دستیار جدید",
"noResults": "نتیجه‌ای یافت نشد",
"openSettings": "باز کردن تنظیمات",
"painting": "نقاشی با هوش مصنوعی",
"searchPlaceholder": "دستور وارد کنید یا جستجو کنید...",
"settings": "تنظیمات",
"starOnGitHub": "به ما در GitHub ستاره بدهید",
"submitIssue": "ارسال مشکل",
"theme": "تم",
"themeAuto": "همگام با سیستم",
"themeDark": "حالت تیره",
"themeLight": "حالت روشن",
"toOpen": "باز کردن",
"toSelect": "انتخاب"
},
"confirm": "تأیید",
"contact": "تماس با ما",
"copy": "کپی",
@@ -283,6 +304,7 @@
"business": "همکاری تجاری",
"support": "پشتیبانی ایمیل"
},
"new": "جدید",
"oauth": "ورود با SSO",
"officialSite": "وب‌سایت رسمی",
"ok": "تأیید",
+9 -11
View File
@@ -55,11 +55,11 @@
},
"documentList": {
"copyContent": "کپی کل محتوا",
"documentCount": "مجموع {{count}} سند",
"duplicate": "ایجاد نسخه مشابه",
"empty": "هیچ سندی موجود نیست، برای ایجاد اولین سند خود روی دکمه بالا کلیک کنید",
"noResults": "سندی مطابق با جستجو یافت نشد",
"selectNote": "برای ویرایش یک سند انتخاب کنید",
"empty": "هنوز هیچ سندی وجود ندارد، برای ایجاد اولین سند خود روی دکمه بالا کلیک کنید",
"noResults": "هیچ سندی مطابق با جستجو یافت نشد",
"pageCount": "مجموعاً {{count}} سند",
"selectNote": "برای ویرایش، یک سند را انتخاب کنید",
"untitled": "بدون عنوان"
},
"empty": "هیچ فایل/پوشه‌ای بارگذاری نشده است",
@@ -70,7 +70,6 @@
"uploadFile": "بارگذاری فایل",
"uploadFolder": "بارگذاری پوشه"
},
"newDocumentButton": "سند جدید",
"newNoteDialog": {
"cancel": "لغو",
"editTitle": "ویرایش سند",
@@ -83,14 +82,15 @@
"title": "سند جدید",
"updateSuccess": "سند با موفقیت به‌روزرسانی شد"
},
"newPageButton": "ایجاد سند جدید",
"uploadButton": "بارگذاری"
},
"home": {
"getStarted": "شروع کنید",
"greeting": "شروع",
"quickActions": "دسترسی سریع",
"recentDocuments": "اسناد اخیر",
"recentFiles": "فایل‌های اخیر",
"recentPages": "اسناد اخیر",
"subtitle": "به پایگاه دانش خوش آمدید، از اینجا مدیریت اسناد خود را آغاز کنید",
"uploadEntries": {
"files": {
@@ -102,7 +102,7 @@
"knowledgeBase": {
"title": "ایجاد پایگاه دانش جدید"
},
"newDocument": {
"newPage": {
"title": "ایجاد سند جدید"
}
}
@@ -142,8 +142,8 @@
"downloadFile": "دانلود فایل",
"unsupportedFileAndContact": "فرمت این فایل در حال حاضر از پیش‌نمایش آنلاین پشتیبانی نمی‌کند. در صورت نیاز به پیش‌نمایش، لطفاً <1>به ما بازخورد دهید</1>."
},
"searchDocumentPlaceholder": "جستجوی سند",
"searchFilePlaceholder": "جستجوی فایل",
"searchPagePlaceholder": "جستجوی سند",
"tab": {
"all": "همه",
"audios": "صداها",
@@ -156,9 +156,7 @@
"websites": "وب‌سایت‌ها"
},
"title": "پایگاه دانش",
"toggleLeftPanel": {
"title": "نمایش/پنهان کردن پانل سمت چپ"
},
"toggleLeftPanel": "نمایش/پنهان‌سازی پنل سمت چپ",
"uploadDock": {
"body": {
"collapse": "بستن",
+4
View File
@@ -7,6 +7,10 @@
"desc": "حذف پیام‌ها و فایل‌های بارگذاری شده در جلسه جاری",
"title": "حذف پیام‌های جلسه"
},
"commandPalette": {
"desc": "باز کردن پنل فرمان جهانی برای دسترسی سریع به قابلیت‌ها",
"title": "پنل فرمان"
},
"deleteAndRegenerateMessage": {
"desc": "آخرین پیام را حذف کرده و دوباره تولید کن",
"title": "حذف و تولید مجدد"
+9 -6
View File
@@ -1481,9 +1481,6 @@
"gemini-2.0-flash-lite-001": {
"description": "مدل متغیر Gemini 2.0 Flash برای بهینه‌سازی هزینه و تأخیر کم طراحی شده است."
},
"gemini-2.0-flash-preview-image-generation": {
"description": "مدل پیش‌نمایش Gemini 2.0 Flash، از تولید تصویر پشتیبانی می‌کند"
},
"gemini-2.5-flash": {
"description": "Gemini 2.5 Flash مدل با بهترین نسبت قیمت به کارایی گوگل است که امکانات جامع را ارائه می‌دهد."
},
@@ -1511,9 +1508,6 @@
"gemini-2.5-flash-preview-04-17": {
"description": "پیش‌نمایش فلش Gemini 2.5 مدل با بهترین قیمت و کیفیت گوگل است که امکانات جامع و کاملی را ارائه می‌دهد."
},
"gemini-2.5-flash-preview-05-20": {
"description": "Gemini 2.5 Flash Preview مقرون‌به‌صرفه‌ترین مدل گوگل است که امکانات جامع ارائه می‌دهد."
},
"gemini-2.5-flash-preview-09-2025": {
"description": "نسخه پیش‌نمایش (25 سپتامبر 2025) از Gemini 2.5 Flash"
},
@@ -1529,6 +1523,9 @@
"gemini-2.5-pro-preview-06-05": {
"description": "Gemini 2.5 Pro Preview پیشرفته‌ترین مدل تفکر گوگل است که قادر به استدلال درباره مسائل پیچیده در حوزه کد، ریاضیات و STEM است و می‌تواند با استفاده از زمینه طولانی، داده‌های بزرگ، مخازن کد و مستندات را تحلیل کند."
},
"gemini-3-pro-preview": {
"description": "Gemini 3 Pro هوشمندترین مدل Google است که دارای استدلال پیشرفته (SOTA)، درک چندوجهی، و همچنین قابلیت‌های قدرتمند نمایندگی و رمزگذاری زمینه‌ای می‌باشد."
},
"gemini-flash-latest": {
"description": "جدیدترین نسخه Gemini Flash"
},
@@ -1910,6 +1907,12 @@
"grok-4-0709": {
"description": "Grok 4 از xAI با توانایی استدلال قدرتمند."
},
"grok-4-1-fast-non-reasoning": {
"description": "مدل پیشرفته چندوجهی که به‌طور ویژه برای بهینه‌سازی فراخوانی ابزارهای نماینده با عملکرد بالا طراحی شده است."
},
"grok-4-1-fast-reasoning": {
"description": "مدل پیشرفته چندوجهی که به‌طور ویژه برای بهینه‌سازی فراخوانی ابزارهای نماینده با عملکرد بالا طراحی شده است."
},
"grok-4-fast-non-reasoning": {
"description": "خوشحالیم که Grok 4 Fast را منتشر می‌کنیم، که جدیدترین پیشرفت ما در زمینه مدل‌های استنتاج با صرفه‌جویی در هزینه است."
},
+34 -22
View File
@@ -1,4 +1,38 @@
{
"builtins": {
"lobe-knowledge-base": {
"apiName": {
"readKnowledge": "خواندن محتوای پایگاه دانش",
"searchKnowledgeBase": "جستجو در پایگاه دانش"
},
"title": "پایگاه دانش"
},
"lobe-local-system": {
"apiName": {
"editLocalFile": "ویرایش فایل",
"getCommandOutput": "دریافت خروجی کد",
"globLocalFiles": "جستجوی فایل‌ها با الگو",
"grepContent": "جستجوی محتوا",
"killCommand": "توقف اجرای کد",
"listLocalFiles": "مشاهده فهرست فایل‌ها",
"moveLocalFiles": "انتقال فایل‌ها",
"readLocalFile": "خواندن محتوای فایل",
"renameLocalFile": "تغییر نام فایل",
"runCommand": "اجرای کد",
"searchLocalFiles": "جستجوی فایل‌ها",
"writeLocalFile": "نوشتن در فایل"
},
"title": "سیستم محلی"
},
"lobe-web-browsing": {
"apiName": {
"crawlMultiPages": "خواندن محتوای چندین صفحه",
"crawlSinglePage": "خواندن محتوای صفحه",
"search": "جستجوی صفحات"
},
"title": "جستجوی آنلاین"
}
},
"confirm": "تأیید",
"debug": {
"arguments": "پارامترهای فراخوانی",
@@ -251,23 +285,6 @@
"content": "در حال فراخوانی افزونه...",
"plugin": "افزونه در حال اجرا..."
},
"localSystem": {
"apiName": {
"editLocalFile": "ویرایش فایل",
"getCommandOutput": "دریافت خروجی کد",
"globLocalFiles": "جستجوی فایل‌ها با الگو",
"grepContent": "جستجوی محتوا",
"killCommand": "متوقف کردن اجرای کد",
"listLocalFiles": "مشاهده لیست فایل‌ها",
"moveLocalFiles": "جابجایی فایل‌ها",
"readLocalFile": "خواندن محتوای فایل",
"renameLocalFile": "تغییر نام",
"runCommand": "اجرای کد",
"searchLocalFiles": "جستجوی فایل‌ها",
"writeLocalFile": "نوشتن در فایل"
},
"title": "سیستم محلی"
},
"mcpInstall": {
"CHECKING_INSTALLATION": "در حال بررسی محیط نصب...",
"COMPLETED": "نصب کامل شد",
@@ -375,11 +392,6 @@
"warning": "⚠️ لطفاً اطمینان حاصل کنید که به منبع این افزونه اعتماد دارید، افزونه‌های مخرب ممکن است امنیت سیستم شما را به خطر بیندازند."
},
"search": {
"apiName": {
"crawlMultiPages": "خواندن محتوای چند صفحه",
"crawlSinglePage": "خواندن محتوای صفحه",
"search": "جستجوی صفحه"
},
"config": {
"addKey": "افزودن کلید",
"close": "حذف",
+8
View File
@@ -14,6 +14,14 @@
"images": "تصاویر:",
"prompt": "کلمات کلیدی"
},
"lobe-knowledge-base": {
"readKnowledge": {
"meta": {
"chars": "تعداد نویسه‌ها",
"lines": "تعداد خطوط"
}
}
},
"localFiles": {
"editFile": {
"newString": "جایگزین با",
+4
View File
@@ -65,6 +65,9 @@
"thinking": {
"title": "Interrupteur de réflexion approfondie"
},
"thinkingLevel": {
"title": "Niveau de réflexion"
},
"title": "Fonctionnalités d'extension du modèle",
"urlContext": {
"desc": "Une fois activé, il analysera automatiquement les liens web pour obtenir le contenu contextuel réel de la page web",
@@ -396,6 +399,7 @@
"rejectReasonPlaceholder": "Saisir une raison de rejet aidera l'agent à comprendre et à améliorer ses actions futures",
"rejectTitle": "Rejeter cet appel d'outil",
"rejectedWithReason": "Cet appel d'outil a été rejeté volontairement : {{reason}}",
"toolAbort": "L'appel de l'outil a été annulé par l'utilisateur",
"toolRejected": "Cet appel d'outil a été rejeté volontairement"
}
},
+22
View File
@@ -135,6 +135,27 @@
}
},
"close": "Fermer",
"cmdk": {
"about": "À propos",
"communitySupport": "Support communautaire",
"discover": "Découvrir",
"knowledgeBase": "Base de connaissances",
"navigate": "Naviguer",
"newAgent": "Nouvel assistant",
"noResults": "Aucun résultat trouvé",
"openSettings": "Ouvrir les paramètres",
"painting": "Peinture IA",
"searchPlaceholder": "Entrez une commande ou recherchez...",
"settings": "Paramètres",
"starOnGitHub": "Donnez-nous une étoile sur GitHub",
"submitIssue": "Soumettre un problème",
"theme": "Thème",
"themeAuto": "Suivre le système",
"themeDark": "Mode sombre",
"themeLight": "Mode clair",
"toOpen": "Ouvrir",
"toSelect": "Sélectionner"
},
"confirm": "Confirmer",
"contact": "Nous contacter",
"copy": "Copier",
@@ -283,6 +304,7 @@
"business": "Partenariats commerciaux",
"support": "Support par e-mail"
},
"new": "Nouveau",
"oauth": "Connexion SSO",
"officialSite": "Site officiel",
"ok": "OK",
+6 -8
View File
@@ -55,10 +55,10 @@
},
"documentList": {
"copyContent": "Copier tout le contenu",
"documentCount": "{{count}} documents au total",
"duplicate": "Créer une copie",
"empty": "Aucun document pour le moment, cliquez sur le bouton ci-dessus pour créer votre premier document",
"noResults": "Aucun document correspondant trouvé",
"pageCount": "{{count}} documents au total",
"selectNote": "Sélectionnez un document pour commencer l’édition",
"untitled": "Sans titre"
},
@@ -70,7 +70,6 @@
"uploadFile": "Télécharger un fichier",
"uploadFolder": "Télécharger un dossier"
},
"newDocumentButton": "Nouveau document",
"newNoteDialog": {
"cancel": "Annuler",
"editTitle": "Modifier le document",
@@ -83,14 +82,15 @@
"title": "Nouveau document",
"updateSuccess": "Document mis à jour avec succès"
},
"newPageButton": "Nouveau document",
"uploadButton": "Télécharger"
},
"home": {
"getStarted": "Commencer",
"greeting": "Commencer",
"quickActions": "Actions rapides",
"recentDocuments": "Documents récents",
"recentFiles": "Fichiers récents",
"recentPages": "Pages récentes",
"subtitle": "Bienvenue dans votre base de connaissances, commencez ici à gérer vos documents",
"uploadEntries": {
"files": {
@@ -102,7 +102,7 @@
"knowledgeBase": {
"title": "Créer une base de connaissances"
},
"newDocument": {
"newPage": {
"title": "Nouveau document"
}
}
@@ -142,8 +142,8 @@
"downloadFile": "Télécharger le fichier",
"unsupportedFileAndContact": "Ce format de fichier n'est pas encore pris en charge pour l'aperçu en ligne. Si vous souhaitez un aperçu, n'hésitez pas à <1>nous contacter</1>."
},
"searchDocumentPlaceholder": "Rechercher un document",
"searchFilePlaceholder": "Rechercher un fichier",
"searchPagePlaceholder": "Rechercher un document",
"tab": {
"all": "Tout",
"audios": "Audio",
@@ -156,9 +156,7 @@
"websites": "Sites web"
},
"title": "Base de connaissances",
"toggleLeftPanel": {
"title": "Afficher/Masquer le panneau de gauche"
},
"toggleLeftPanel": "Afficher/Masquer le panneau de gauche",
"uploadDock": {
"body": {
"collapse": "Réduire",
+4
View File
@@ -7,6 +7,10 @@
"desc": "Effacer les messages de la session actuelle et les fichiers téléchargés",
"title": "Effacer les messages de la session"
},
"commandPalette": {
"desc": "Ouvrez le panneau de commande global pour accéder rapidement aux fonctionnalités",
"title": "Panneau de commande"
},
"deleteAndRegenerateMessage": {
"desc": "Supprimer le dernier message et régénérer",
"title": "Supprimer et régénérer"
+9 -6
View File
@@ -1481,9 +1481,6 @@
"gemini-2.0-flash-lite-001": {
"description": "Une variante du modèle Gemini 2.0 Flash, optimisée pour des objectifs tels que le rapport coût-efficacité et la faible latence."
},
"gemini-2.0-flash-preview-image-generation": {
"description": "Modèle de prévisualisation Gemini 2.0 Flash, prenant en charge la génération d'images"
},
"gemini-2.5-flash": {
"description": "Gemini 2.5 Flash est le modèle le plus rentable de Google, offrant des fonctionnalités complètes."
},
@@ -1511,9 +1508,6 @@
"gemini-2.5-flash-preview-04-17": {
"description": "Gemini 2.5 Flash Preview est le modèle le plus rentable de Google, offrant des fonctionnalités complètes."
},
"gemini-2.5-flash-preview-05-20": {
"description": "Gemini 2.5 Flash Preview est le modèle le plus rentable de Google, offrant des fonctionnalités complètes."
},
"gemini-2.5-flash-preview-09-2025": {
"description": "Version de prévisualisation (25 septembre 2025) de Gemini 2.5 Flash"
},
@@ -1529,6 +1523,9 @@
"gemini-2.5-pro-preview-06-05": {
"description": "Gemini 2.5 Pro Preview est le modèle de pensée le plus avancé de Google, capable de raisonner sur des problèmes complexes en code, mathématiques et domaines STEM, ainsi que d'analyser de grands ensembles de données, bibliothèques de code et documents avec un contexte étendu."
},
"gemini-3-pro-preview": {
"description": "Gemini 3 Pro est le modèle le plus intelligent de Google, doté dun raisonnement de pointe, dune compréhension multimodale, ainsi que de puissantes capacités dagent et de codage dambiance."
},
"gemini-flash-latest": {
"description": "Dernière version de Gemini Flash"
},
@@ -1910,6 +1907,12 @@
"grok-4-0709": {
"description": "Grok 4 de xAI, doté de puissantes capacités de raisonnement."
},
"grok-4-1-fast-non-reasoning": {
"description": "Modèle multimodal de pointe, spécialement optimisé pour l'appel d'outils d'agents haute performance."
},
"grok-4-1-fast-reasoning": {
"description": "Modèle multimodal de pointe, spécialement optimisé pour l'appel d'outils d'agents haute performance."
},
"grok-4-fast-non-reasoning": {
"description": "Nous sommes ravis de présenter Grok 4 Fast, notre dernière avancée dans les modèles de raisonnement à rapport coût-efficacité optimisé."
},
+34 -22
View File
@@ -1,4 +1,38 @@
{
"builtins": {
"lobe-knowledge-base": {
"apiName": {
"readKnowledge": "Lire le contenu de la base de connaissances",
"searchKnowledgeBase": "Rechercher dans la base de connaissances"
},
"title": "Base de connaissances"
},
"lobe-local-system": {
"apiName": {
"editLocalFile": "Modifier le fichier",
"getCommandOutput": "Obtenir la sortie du code",
"globLocalFiles": "Rechercher des fichiers correspondants",
"grepContent": "Rechercher dans le contenu",
"killCommand": "Arrêter l'exécution du code",
"listLocalFiles": "Afficher la liste des fichiers",
"moveLocalFiles": "Déplacer les fichiers",
"readLocalFile": "Lire le contenu du fichier",
"renameLocalFile": "Renommer",
"runCommand": "Exécuter le code",
"searchLocalFiles": "Rechercher des fichiers",
"writeLocalFile": "Écrire dans le fichier"
},
"title": "Système local"
},
"lobe-web-browsing": {
"apiName": {
"crawlMultiPages": "Lire le contenu de plusieurs pages",
"crawlSinglePage": "Lire le contenu de la page",
"search": "Rechercher sur la page"
},
"title": "Recherche en ligne"
}
},
"confirm": "Confirmer",
"debug": {
"arguments": "Arguments d'appel",
@@ -251,23 +285,6 @@
"content": "Appel du plugin en cours...",
"plugin": "Plugin en cours d'exécution..."
},
"localSystem": {
"apiName": {
"editLocalFile": "Modifier le fichier",
"getCommandOutput": "Obtenir la sortie du code",
"globLocalFiles": "Rechercher des fichiers correspondants",
"grepContent": "Rechercher dans le contenu",
"killCommand": "Arrêter l'exécution du code",
"listLocalFiles": "Voir la liste des fichiers",
"moveLocalFiles": "Déplacer les fichiers",
"readLocalFile": "Lire le contenu du fichier",
"renameLocalFile": "Renommer",
"runCommand": "Exécuter le code",
"searchLocalFiles": "Rechercher des fichiers",
"writeLocalFile": "Écrire dans un fichier"
},
"title": "Système local"
},
"mcpInstall": {
"CHECKING_INSTALLATION": "Vérification de l'environnement d'installation...",
"COMPLETED": "Installation terminée",
@@ -375,11 +392,6 @@
"warning": "⚠️ Veuillez confirmer que vous faites confiance à la source de ce plugin, un plugin malveillant pourrait compromettre la sécurité de votre système."
},
"search": {
"apiName": {
"crawlMultiPages": "Lire le contenu de plusieurs pages",
"crawlSinglePage": "Lire le contenu de la page",
"search": "Rechercher sur la page"
},
"config": {
"addKey": "Ajouter une clé",
"close": "Supprimer",
+8
View File
@@ -14,6 +14,14 @@
"images": "Images :",
"prompt": "Mot de rappel"
},
"lobe-knowledge-base": {
"readKnowledge": {
"meta": {
"chars": "Nombre de caractères",
"lines": "Nombre de lignes"
}
}
},
"localFiles": {
"editFile": {
"newString": "Remplacer par",
+4
View File
@@ -65,6 +65,9 @@
"thinking": {
"title": "Interruttore di pensiero profondo"
},
"thinkingLevel": {
"title": "Livello di pensiero"
},
"title": "Funzionalità di estensione del modello",
"urlContext": {
"desc": "Se abilitato, analizzerà automaticamente i link delle pagine web per ottenere il contenuto contestuale reale della pagina",
@@ -396,6 +399,7 @@
"rejectReasonPlaceholder": "Inserire il motivo del rifiuto aiuterà l'agente a comprendere e ottimizzare le azioni future",
"rejectTitle": "Rifiuta questa esecuzione dello strumento",
"rejectedWithReason": "Questa esecuzione dello strumento è stata rifiutata: {{reason}}",
"toolAbort": "L'utilizzo dello strumento è stato annullato dall'utente",
"toolRejected": "Questa esecuzione dello strumento è stata rifiutata"
}
},
+22
View File
@@ -135,6 +135,27 @@
}
},
"close": "Chiudi",
"cmdk": {
"about": "Informazioni",
"communitySupport": "Supporto della comunità",
"discover": "Scopri",
"knowledgeBase": "Base di conoscenza",
"navigate": "Naviga",
"newAgent": "Nuovo assistente",
"noResults": "Nessun risultato trovato",
"openSettings": "Apri impostazioni",
"painting": "Disegno AI",
"searchPlaceholder": "Inserisci un comando o cerca...",
"settings": "Impostazioni",
"starOnGitHub": "Dacci una stella su GitHub",
"submitIssue": "Segnala un problema",
"theme": "Tema",
"themeAuto": "Segui il sistema",
"themeDark": "Tema scuro",
"themeLight": "Tema chiaro",
"toOpen": "Apri",
"toSelect": "Seleziona"
},
"confirm": "Conferma",
"contact": "Contattaci",
"copy": "Copia",
@@ -283,6 +304,7 @@
"business": "Collaborazioni commerciali",
"support": "Supporto via email"
},
"new": "Nuovo",
"oauth": "Accesso SSO",
"officialSite": "Sito ufficiale",
"ok": "OK",
+8 -10
View File
@@ -55,10 +55,10 @@
},
"documentList": {
"copyContent": "Copia tutto il contenuto",
"documentCount": "Totale {{count}} documenti",
"duplicate": "Crea una copia",
"empty": "Nessun documento disponibile. Clicca sul pulsante in alto per creare il tuo primo documento",
"empty": "Nessun documento disponibile, clicca sul pulsante in alto per creare il tuo primo documento",
"noResults": "Nessun documento corrispondente trovato",
"pageCount": "Totale {{count}} documenti",
"selectNote": "Seleziona un documento per iniziare a modificare",
"untitled": "Senza titolo"
},
@@ -70,7 +70,6 @@
"uploadFile": "Carica file",
"uploadFolder": "Carica cartella"
},
"newDocumentButton": "Nuovo documento",
"newNoteDialog": {
"cancel": "Annulla",
"editTitle": "Modifica documento",
@@ -83,14 +82,15 @@
"title": "Nuovo documento",
"updateSuccess": "Documento aggiornato con successo"
},
"newPageButton": "Nuovo Documento",
"uploadButton": "Carica"
},
"home": {
"getStarted": "Inizia subito",
"greeting": "Inizia",
"quickActions": "Azioni rapide",
"recentDocuments": "Documenti recenti",
"recentFiles": "File recenti",
"recentPages": "Documenti recenti",
"subtitle": "Benvenuto nel tuo archivio di conoscenza, inizia a gestire i tuoi documenti da qui",
"uploadEntries": {
"files": {
@@ -102,8 +102,8 @@
"knowledgeBase": {
"title": "Crea nuova base di conoscenza"
},
"newDocument": {
"title": "Crea nuovo documento"
"newPage": {
"title": "Nuovo Documento"
}
}
},
@@ -142,8 +142,8 @@
"downloadFile": "Scarica file",
"unsupportedFileAndContact": "Questo formato di file non è attualmente supportato per la visualizzazione online. Se hai bisogno di una visualizzazione, ti preghiamo di <1>contattarci</1>."
},
"searchDocumentPlaceholder": "Cerca documenti",
"searchFilePlaceholder": "Cerca file",
"searchPagePlaceholder": "Cerca documenti",
"tab": {
"all": "Tutti",
"audios": "Audio",
@@ -156,9 +156,7 @@
"websites": "Siti web"
},
"title": "Archivio di Conoscenza",
"toggleLeftPanel": {
"title": "Mostra/Nascondi il pannello sinistro"
},
"toggleLeftPanel": "Mostra/Nascondi pannello sinistro",
"uploadDock": {
"body": {
"collapse": "Riduci",
+4
View File
@@ -7,6 +7,10 @@
"desc": "Cancella i messaggi e i file caricati della conversazione attuale",
"title": "Cancella messaggi della conversazione"
},
"commandPalette": {
"desc": "Apri il pannello comandi globale per accedere rapidamente alle funzioni",
"title": "Pannello comandi"
},
"deleteAndRegenerateMessage": {
"desc": "Elimina l'ultimo messaggio e rigeneralo",
"title": "Elimina e rigenera"
+9 -6
View File
@@ -1481,9 +1481,6 @@
"gemini-2.0-flash-lite-001": {
"description": "Gemini 2.0 Flash è una variante del modello Flash, ottimizzata per obiettivi come il rapporto costo-efficacia e la bassa latenza."
},
"gemini-2.0-flash-preview-image-generation": {
"description": "Gemini 2.0 Flash modello di anteprima, supporta la generazione di immagini"
},
"gemini-2.5-flash": {
"description": "Gemini 2.5 Flash è il modello Google con il miglior rapporto qualità-prezzo, offrendo funzionalità complete."
},
@@ -1511,9 +1508,6 @@
"gemini-2.5-flash-preview-04-17": {
"description": "Gemini 2.5 Flash Preview è il modello più conveniente di Google, che offre funzionalità complete."
},
"gemini-2.5-flash-preview-05-20": {
"description": "Gemini 2.5 Flash Preview è il modello Google con il miglior rapporto qualità-prezzo, che offre funzionalità complete."
},
"gemini-2.5-flash-preview-09-2025": {
"description": "Versione anteprima (25 settembre 2025) di Gemini 2.5 Flash"
},
@@ -1529,6 +1523,9 @@
"gemini-2.5-pro-preview-06-05": {
"description": "Gemini 2.5 Pro Preview è il modello di pensiero più avanzato di Google, capace di ragionare su problemi complessi in codice, matematica e ambito STEM, oltre a utilizzare contesti estesi per analizzare grandi dataset, librerie di codice e documenti."
},
"gemini-3-pro-preview": {
"description": "Gemini 3 Pro è il modello più intelligente di Google, con capacità all'avanguardia di ragionamento e comprensione multimodale, oltre a potenti funzionalità di agente e codifica del contesto."
},
"gemini-flash-latest": {
"description": "Ultima versione di Gemini Flash"
},
@@ -1910,6 +1907,12 @@
"grok-4-0709": {
"description": "Grok 4 di xAI, dotato di potenti capacità di ragionamento."
},
"grok-4-1-fast-non-reasoning": {
"description": "Modello multimodale all'avanguardia, ottimizzato specificamente per l'utilizzo ad alte prestazioni con strumenti di agenti."
},
"grok-4-1-fast-reasoning": {
"description": "Modello multimodale all'avanguardia, ottimizzato specificamente per l'utilizzo ad alte prestazioni con strumenti di agenti."
},
"grok-4-fast-non-reasoning": {
"description": "Siamo lieti di annunciare Grok 4 Fast, il nostro ultimo progresso nei modelli di inferenza con ottimo rapporto costo-efficacia."
},
+34 -22
View File
@@ -1,4 +1,38 @@
{
"builtins": {
"lobe-knowledge-base": {
"apiName": {
"readKnowledge": "Leggi contenuti della base di conoscenza",
"searchKnowledgeBase": "Cerca nella base di conoscenza"
},
"title": "Base di conoscenza"
},
"lobe-local-system": {
"apiName": {
"editLocalFile": "Modifica file",
"getCommandOutput": "Ottieni output del codice",
"globLocalFiles": "Cerca file corrispondenti",
"grepContent": "Cerca contenuto",
"killCommand": "Termina esecuzione del codice",
"listLocalFiles": "Visualizza elenco file",
"moveLocalFiles": "Sposta file",
"readLocalFile": "Leggi contenuto del file",
"renameLocalFile": "Rinomina",
"runCommand": "Esegui codice",
"searchLocalFiles": "Cerca file",
"writeLocalFile": "Scrivi nel file"
},
"title": "Sistema locale"
},
"lobe-web-browsing": {
"apiName": {
"crawlMultiPages": "Leggi contenuti da più pagine",
"crawlSinglePage": "Leggi contenuto della pagina",
"search": "Cerca nella pagina"
},
"title": "Ricerca online"
}
},
"confirm": "Conferma",
"debug": {
"arguments": "Parametri di chiamata",
@@ -251,23 +285,6 @@
"content": "Chiamata plugin in corso...",
"plugin": "Plugin in esecuzione..."
},
"localSystem": {
"apiName": {
"editLocalFile": "Modifica file",
"getCommandOutput": "Ottieni output del codice",
"globLocalFiles": "Cerca file corrispondenti",
"grepContent": "Cerca contenuto",
"killCommand": "Termina esecuzione del codice",
"listLocalFiles": "Visualizza lista file",
"moveLocalFiles": "Sposta file",
"readLocalFile": "Leggi contenuto file",
"renameLocalFile": "Rinomina",
"runCommand": "Esegui codice",
"searchLocalFiles": "Cerca file",
"writeLocalFile": "Scrivi file"
},
"title": "Sistema locale"
},
"mcpInstall": {
"CHECKING_INSTALLATION": "Verifica ambiente di installazione...",
"COMPLETED": "Installazione completata",
@@ -375,11 +392,6 @@
"warning": "⚠️ Assicurati di fidarti della fonte di questo plugin, plugin malevoli possono compromettere la sicurezza del sistema."
},
"search": {
"apiName": {
"crawlMultiPages": "Leggi contenuti di più pagine",
"crawlSinglePage": "Leggi contenuto pagina",
"search": "Cerca pagina"
},
"config": {
"addKey": "Aggiungi chiave",
"close": "Elimina",
+8
View File
@@ -14,6 +14,14 @@
"images": "Immagini:",
"prompt": "parola chiave"
},
"lobe-knowledge-base": {
"readKnowledge": {
"meta": {
"chars": "Numero di caratteri",
"lines": "Numero di righe"
}
}
},
"localFiles": {
"editFile": {
"newString": "Sostituisci con",
+4
View File
@@ -65,6 +65,9 @@
"thinking": {
"title": "深い思考のスイッチ"
},
"thinkingLevel": {
"title": "思考レベル"
},
"title": "モデル拡張機能",
"urlContext": {
"desc": "有効にすると、実際のウェブページのコンテキスト内容を取得するためにウェブリンクを自動的に解析します",
@@ -396,6 +399,7 @@
"rejectReasonPlaceholder": "拒否理由を入力すると、エージェントが理解し今後の行動を最適化するのに役立ちます",
"rejectTitle": "今回のツール呼び出しを拒否",
"rejectedWithReason": "今回のツール呼び出しは次の理由で拒否されました:{{reason}}",
"toolAbort": "このツールの呼び出しはユーザーによってキャンセルされました",
"toolRejected": "今回のツール呼び出しは拒否されました"
}
},
+22
View File
@@ -135,6 +135,27 @@
}
},
"close": "閉じる",
"cmdk": {
"about": "概要",
"communitySupport": "コミュニティサポート",
"discover": "発見",
"knowledgeBase": "ナレッジベース",
"navigate": "ナビゲート",
"newAgent": "新しいエージェントを作成",
"noResults": "該当する結果が見つかりませんでした",
"openSettings": "設定を開く",
"painting": "AI ペインティング",
"searchPlaceholder": "コマンドを入力または検索...",
"settings": "設定",
"starOnGitHub": "GitHub でスターを付ける",
"submitIssue": "問題を報告する",
"theme": "テーマ",
"themeAuto": "システムに従う",
"themeDark": "ダークモード",
"themeLight": "ライトモード",
"toOpen": "開く",
"toSelect": "選択"
},
"confirm": "確認",
"contact": "お問い合わせ",
"copy": "コピー",
@@ -283,6 +304,7 @@
"business": "ビジネス提携",
"support": "メールサポート"
},
"new": "新規",
"oauth": "SSO ログイン",
"officialSite": "公式サイト",
"ok": "OK",
+10 -12
View File
@@ -55,11 +55,11 @@
},
"documentList": {
"copyContent": "全文をコピー",
"documentCount": "全{{count}}件のドキュメント",
"duplicate": "複製を作成",
"empty": "ドキュメントがありません。上のボタンをクリックして最初のドキュメントを作成しましょう",
"noResults": "一致するドキュメントが見つかりませんでした",
"selectNote": "ドキュメントを選択して編集を開始",
"empty": "まだ文書がありません。上のボタンをクリックして最初の文書を作成しましょう",
"noResults": "一致する文書が見つかりませんでした",
"pageCount": "全 {{count}} 件の文書",
"selectNote": "編集を始める文書を選択してください",
"untitled": "無題"
},
"empty": "アップロードされたファイル/フォルダーはありません",
@@ -70,7 +70,6 @@
"uploadFile": "ファイルをアップロード",
"uploadFolder": "フォルダーをアップロード"
},
"newDocumentButton": "新規ドキュメント",
"newNoteDialog": {
"cancel": "キャンセル",
"editTitle": "ドキュメントを編集",
@@ -83,14 +82,15 @@
"title": "新規ドキュメント",
"updateSuccess": "ドキュメントを更新しました"
},
"newPageButton": "新しいドキュメントを作成",
"uploadButton": "アップロード"
},
"home": {
"getStarted": "はじめに",
"greeting": "はじめに",
"quickActions": "クイック操作",
"recentDocuments": "最近のドキュメント",
"recentFiles": "最近のファイル",
"recentPages": "最近のドキュメント",
"subtitle": "ナレッジベースへようこそ。ここからドキュメントの管理を始めましょう。",
"uploadEntries": {
"files": {
@@ -102,8 +102,8 @@
"knowledgeBase": {
"title": "新しいナレッジベースを作成"
},
"newDocument": {
"title": "新規ドキュメント"
"newPage": {
"title": "新規文書の作成"
}
}
},
@@ -142,8 +142,8 @@
"downloadFile": "ファイルをダウンロード",
"unsupportedFileAndContact": "このファイル形式はオンラインプレビューをサポートしていません。プレビューのリクエストがある場合は、ぜひ<1>ご連絡ください</1>。"
},
"searchDocumentPlaceholder": "ドキュメントを検索",
"searchFilePlaceholder": "ファイルを検索",
"searchPagePlaceholder": "文書を検索",
"tab": {
"all": "すべて",
"audios": "音声",
@@ -156,9 +156,7 @@
"websites": "ウェブサイト"
},
"title": "ナレッジベース",
"toggleLeftPanel": {
"title": "左側パネルの表示/非表示"
},
"toggleLeftPanel": "左パネルの表示/非表示を切り替え",
"uploadDock": {
"body": {
"collapse": "折りたたむ",
+4
View File
@@ -7,6 +7,10 @@
"desc": "現在のセッションのメッセージとアップロードされたファイルをクリアする",
"title": "セッションメッセージをクリア"
},
"commandPalette": {
"desc": "グローバルコマンドパレットを開いて機能に素早くアクセス",
"title": "コマンドパレット"
},
"deleteAndRegenerateMessage": {
"desc": "最後のメッセージを削除して再生成する",
"title": "削除して再生成"
+9 -6
View File
@@ -1481,9 +1481,6 @@
"gemini-2.0-flash-lite-001": {
"description": "Gemini 2.0 Flashモデルのバリアントで、コスト効率と低遅延などの目標に最適化されています。"
},
"gemini-2.0-flash-preview-image-generation": {
"description": "Gemini 2.0 Flash プレビュー モデル、画像生成をサポート"
},
"gemini-2.5-flash": {
"description": "Gemini 2.5 FlashはGoogleのコストパフォーマンスに優れたモデルで、包括的な機能を提供します。"
},
@@ -1511,9 +1508,6 @@
"gemini-2.5-flash-preview-04-17": {
"description": "Gemini 2.5 Flash Previewは、Googleのコストパフォーマンスに優れたモデルで、包括的な機能を提供します。"
},
"gemini-2.5-flash-preview-05-20": {
"description": "Gemini 2.5 Flash PreviewはGoogleのコストパフォーマンスに優れたモデルで、包括的な機能を提供します。"
},
"gemini-2.5-flash-preview-09-2025": {
"description": "Gemini 2.5 Flash のプレビューリリース(2025年9月25日)"
},
@@ -1529,6 +1523,9 @@
"gemini-2.5-pro-preview-06-05": {
"description": "Gemini 2.5 Pro Preview は Google の最先端思考モデルで、コード、数学、STEM 分野の複雑な問題を推論し、長いコンテキストを用いて大規模なデータセット、コードベース、ドキュメントを分析できます。"
},
"gemini-3-pro-preview": {
"description": "Gemini 3 Pro は、Google で最も高度なモデルであり、最先端の推論能力とマルチモーダルな理解力、さらに強力なエージェント機能とコンテキスト認識機能を備えています。"
},
"gemini-flash-latest": {
"description": "Gemini Flash の最新リリース"
},
@@ -1910,6 +1907,12 @@
"grok-4-0709": {
"description": "xAI の Grok 4 は強力な推論能力を備えています。"
},
"grok-4-1-fast-non-reasoning": {
"description": "最先端のマルチモーダルモデルであり、高性能なエージェントツールの呼び出しに特化して最適化されています。"
},
"grok-4-1-fast-reasoning": {
"description": "最先端のマルチモーダルモデルであり、高性能なエージェントツールの呼び出しに特化して最適化されています。"
},
"grok-4-fast-non-reasoning": {
"description": "コスト効率の高い推論モデルにおける最新の進展として、Grok 4 Fastをリリースできることを嬉しく思います。"
},
+34 -22
View File
@@ -1,4 +1,38 @@
{
"builtins": {
"lobe-knowledge-base": {
"apiName": {
"readKnowledge": "ナレッジベースの内容を読み取る",
"searchKnowledgeBase": "ナレッジベースを検索する"
},
"title": "ナレッジベース"
},
"lobe-local-system": {
"apiName": {
"editLocalFile": "ファイルを編集する",
"getCommandOutput": "コードの出力を取得する",
"globLocalFiles": "ファイルを検索する",
"grepContent": "内容を検索する",
"killCommand": "コードの実行を停止する",
"listLocalFiles": "ファイル一覧を表示する",
"moveLocalFiles": "ファイルを移動する",
"readLocalFile": "ファイルの内容を読み取る",
"renameLocalFile": "ファイル名を変更する",
"runCommand": "コードを実行する",
"searchLocalFiles": "ファイルを検索する",
"writeLocalFile": "ファイルに書き込む"
},
"title": "ローカルシステム"
},
"lobe-web-browsing": {
"apiName": {
"crawlMultiPages": "複数のページの内容を読み取る",
"crawlSinglePage": "ページの内容を読み取る",
"search": "ページを検索する"
},
"title": "ウェブ検索"
}
},
"confirm": "確定",
"debug": {
"arguments": "呼び出しパラメータ",
@@ -251,23 +285,6 @@
"content": "プラグインを呼び出し中...",
"plugin": "プラグイン実行中..."
},
"localSystem": {
"apiName": {
"editLocalFile": "ファイルを編集",
"getCommandOutput": "コード出力を取得",
"globLocalFiles": "ファイルを検索",
"grepContent": "内容を検索",
"killCommand": "コードの実行を停止",
"listLocalFiles": "ファイル一覧を表示",
"moveLocalFiles": "ファイルを移動",
"readLocalFile": "ファイル内容を読み込み",
"renameLocalFile": "ファイル名を変更",
"runCommand": "コードを実行",
"searchLocalFiles": "ファイルを検索",
"writeLocalFile": "ファイルに書き込み"
},
"title": "ローカルシステム"
},
"mcpInstall": {
"CHECKING_INSTALLATION": "インストール環境を確認中...",
"COMPLETED": "インストール完了",
@@ -375,11 +392,6 @@
"warning": "⚠️ このプラグインの出所を信頼していることを確認してください。悪意のあるプラグインはシステムの安全を脅かす可能性があります。"
},
"search": {
"apiName": {
"crawlMultiPages": "複数ページの内容を読み込み",
"crawlSinglePage": "ページ内容を読み込み",
"search": "ページを検索"
},
"config": {
"addKey": "キーを追加",
"close": "削除",
+8
View File
@@ -14,6 +14,14 @@
"images": "画像:",
"prompt": "プロンプト"
},
"lobe-knowledge-base": {
"readKnowledge": {
"meta": {
"chars": "文字数",
"lines": "行数"
}
}
},
"localFiles": {
"editFile": {
"newString": "置換後の文字列",
+4
View File
@@ -65,6 +65,9 @@
"thinking": {
"title": "심층 사고 스위치"
},
"thinkingLevel": {
"title": "사고 수준"
},
"title": "모델 확장 기능",
"urlContext": {
"desc": "활성화하면 실제 웹페이지 컨텍스트 내용을 얻기 위해 웹 링크를 자동으로 분석합니다",
@@ -396,6 +399,7 @@
"rejectReasonPlaceholder": "거부 사유를 입력하면 에이전트가 이해하고 이후 행동을 최적화하는 데 도움이 됩니다",
"rejectTitle": "이번 도구 호출 거부",
"rejectedWithReason": "이번 도구 호출이 다음 사유로 거부됨: {{reason}}",
"toolAbort": "이번 도구 호출이 사용자에 의해 취소되었습니다",
"toolRejected": "이번 도구 호출이 거부되었습니다"
}
},
+22
View File
@@ -135,6 +135,27 @@
}
},
"close": "닫기",
"cmdk": {
"about": "정보",
"communitySupport": "커뮤니티 지원",
"discover": "탐색",
"knowledgeBase": "지식 베이스",
"navigate": "탐색",
"newAgent": "새 에이전트 만들기",
"noResults": "관련 결과를 찾을 수 없습니다",
"openSettings": "설정 열기",
"painting": "AI 그림",
"searchPlaceholder": "명령어 입력 또는 검색...",
"settings": "설정",
"starOnGitHub": "GitHub에서 Star 주기",
"submitIssue": "문제 제출",
"theme": "테마",
"themeAuto": "시스템 설정 따르기",
"themeDark": "다크 모드",
"themeLight": "라이트 모드",
"toOpen": "열기",
"toSelect": "선택"
},
"confirm": "확인",
"contact": "문의하기",
"copy": "복사",
@@ -283,6 +304,7 @@
"business": "비즈니스 제휴",
"support": "이메일 지원"
},
"new": "새로운",
"oauth": "SSO 로그인",
"officialSite": "공식 웹사이트",
"ok": "확인",
+8 -10
View File
@@ -55,11 +55,11 @@
},
"documentList": {
"copyContent": "전체 내용 복사",
"documentCount": "총 {{count}}개의 문서",
"duplicate": "복사본 만들기",
"empty": "아직 문서가 없습니다. 위 버튼을 클릭하여 첫 문서를 작성해 보세요",
"empty": "아직 문서가 없습니다. 위 버튼을 클릭하여 첫 번째 문서를 만들어보세요",
"noResults": "일치하는 문서를 찾을 수 없습니다",
"selectNote": "편집할 문서를 선택하세요",
"pageCount": "총 {{count}}개의 문서",
"selectNote": "편집을 시작할 문서를 선택하세요",
"untitled": "제목 없음"
},
"empty": "업로드된 파일/폴더가 없습니다",
@@ -70,7 +70,6 @@
"uploadFile": "파일 업로드",
"uploadFolder": "폴더 업로드"
},
"newDocumentButton": "새 문서",
"newNoteDialog": {
"cancel": "취소",
"editTitle": "문서 편집",
@@ -83,14 +82,15 @@
"title": "새 문서 만들기",
"updateSuccess": "문서가 성공적으로 업데이트되었습니다"
},
"newPageButton": "새 문서 만들기",
"uploadButton": "업로드"
},
"home": {
"getStarted": "시작하기",
"greeting": "시작하기",
"quickActions": "빠른 작업",
"recentDocuments": "최근 문서",
"recentFiles": "최근 파일",
"recentPages": "최근 문서",
"subtitle": "지식 관리 시스템에 오신 것을 환영합니다. 여기서 문서를 관리해 보세요",
"uploadEntries": {
"files": {
@@ -102,7 +102,7 @@
"knowledgeBase": {
"title": "새 지식베이스 만들기"
},
"newDocument": {
"newPage": {
"title": "새 문서 만들기"
}
}
@@ -142,8 +142,8 @@
"downloadFile": "파일 다운로드",
"unsupportedFileAndContact": "이 파일 형식은 온라인 미리보기를 지원하지 않습니다. 미리보기 기능이 필요하시면 <1>의견을 보내주세요</1>"
},
"searchDocumentPlaceholder": "문서 검색",
"searchFilePlaceholder": "파일 검색",
"searchPagePlaceholder": "문서 검색",
"tab": {
"all": "전체",
"audios": "오디오",
@@ -156,9 +156,7 @@
"websites": "웹사이트"
},
"title": "지식 베이스",
"toggleLeftPanel": {
"title": "왼쪽 패널 표시/숨기기"
},
"toggleLeftPanel": "왼쪽 패널 표시/숨기기",
"uploadDock": {
"body": {
"collapse": "접기",
+4
View File
@@ -7,6 +7,10 @@
"desc": "현재 대화의 메시지와 업로드된 파일을 모두 삭제",
"title": "대화 메시지 지우기"
},
"commandPalette": {
"desc": "전역 명령 팔레트를 열어 기능에 빠르게 접근합니다",
"title": "명령 팔레트"
},
"deleteAndRegenerateMessage": {
"desc": "마지막 메시지를 삭제하고 다시 생성합니다",
"title": "삭제 후 다시 생성"
+9 -6
View File
@@ -1481,9 +1481,6 @@
"gemini-2.0-flash-lite-001": {
"description": "Gemini 2.0 플래시 모델 변형으로, 비용 효율성과 낮은 지연 시간 등의 목표를 위해 최적화되었습니다."
},
"gemini-2.0-flash-preview-image-generation": {
"description": "Gemini 2.0 Flash 미리보기 모델로, 이미지 생성을 지원합니다."
},
"gemini-2.5-flash": {
"description": "Gemini 2.5 Flash는 구글에서 가장 가성비가 뛰어난 모델로, 포괄적인 기능을 제공합니다."
},
@@ -1511,9 +1508,6 @@
"gemini-2.5-flash-preview-04-17": {
"description": "Gemini 2.5 Flash Preview는 Google의 가장 가성비 높은 모델로, 포괄적인 기능을 제공합니다."
},
"gemini-2.5-flash-preview-05-20": {
"description": "Gemini 2.5 Flash Preview는 Google의 최고의 가성비 모델로, 포괄적인 기능을 제공합니다."
},
"gemini-2.5-flash-preview-09-2025": {
"description": "Gemini 2.5 Flash의 미리보기 버전 (2025년 9월 25일)"
},
@@ -1529,6 +1523,9 @@
"gemini-2.5-pro-preview-06-05": {
"description": "Gemini 2.5 Pro Preview는 구글의 최첨단 사고 모델로, 코드, 수학 및 STEM 분야의 복잡한 문제를 추론할 수 있으며, 긴 문맥을 활용해 대규모 데이터셋, 코드베이스 및 문서를 분석합니다."
},
"gemini-3-pro-preview": {
"description": "Gemini 3 Pro는 Google의 가장 지능적인 모델로, 최첨단 추론 및 멀티모달 이해 능력과 강력한 에이전트 기능 및 분위기 인코딩 기능을 갖추고 있습니다."
},
"gemini-flash-latest": {
"description": "Gemini Flash 최신 버전"
},
@@ -1910,6 +1907,12 @@
"grok-4-0709": {
"description": "xAI의 Grok 4로, 강력한 추론 능력을 갖추고 있습니다."
},
"grok-4-1-fast-non-reasoning": {
"description": "최첨단 멀티모달 모델로, 고성능 에이전트 도구 호출에 최적화되어 있습니다."
},
"grok-4-1-fast-reasoning": {
"description": "최첨단 멀티모달 모델로, 고성능 에이전트 도구 호출에 최적화되어 있습니다."
},
"grok-4-fast-non-reasoning": {
"description": "비용 효율적인 추론 모델 분야에서의 최신 진전인 Grok 4 Fast를 발표하게 되어 기쁩니다."
},
+34 -22
View File
@@ -1,4 +1,38 @@
{
"builtins": {
"lobe-knowledge-base": {
"apiName": {
"readKnowledge": "지식 베이스 내용 읽기",
"searchKnowledgeBase": "지식 베이스 검색"
},
"title": "지식 베이스"
},
"lobe-local-system": {
"apiName": {
"editLocalFile": "파일 편집",
"getCommandOutput": "코드 출력 가져오기",
"globLocalFiles": "파일 검색",
"grepContent": "내용 검색",
"killCommand": "코드 실행 중지",
"listLocalFiles": "파일 목록 보기",
"moveLocalFiles": "파일 이동",
"readLocalFile": "파일 내용 읽기",
"renameLocalFile": "파일 이름 변경",
"runCommand": "코드 실행",
"searchLocalFiles": "파일 검색",
"writeLocalFile": "파일 쓰기"
},
"title": "로컬 시스템"
},
"lobe-web-browsing": {
"apiName": {
"crawlMultiPages": "여러 페이지 내용 읽기",
"crawlSinglePage": "페이지 내용 읽기",
"search": "웹 페이지 검색"
},
"title": "인터넷 검색"
}
},
"confirm": "확인",
"debug": {
"arguments": "호출 인자",
@@ -251,23 +285,6 @@
"content": "플러그인 호출 중...",
"plugin": "플러그인 실행 중..."
},
"localSystem": {
"apiName": {
"editLocalFile": "파일 편집",
"getCommandOutput": "코드 출력 가져오기",
"globLocalFiles": "파일 검색",
"grepContent": "내용 검색",
"killCommand": "코드 실행 중지",
"listLocalFiles": "파일 목록 보기",
"moveLocalFiles": "파일 이동",
"readLocalFile": "파일 내용 읽기",
"renameLocalFile": "파일 이름 변경",
"runCommand": "코드 실행",
"searchLocalFiles": "파일 검색",
"writeLocalFile": "파일 쓰기"
},
"title": "로컬 시스템"
},
"mcpInstall": {
"CHECKING_INSTALLATION": "설치 환경 확인 중...",
"COMPLETED": "설치 완료",
@@ -375,11 +392,6 @@
"warning": "⚠️ 이 플러그인의 출처를 신뢰할 수 있는지 확인해 주세요. 악성 플러그인은 시스템 보안에 위협이 될 수 있습니다."
},
"search": {
"apiName": {
"crawlMultiPages": "여러 페이지 내용 읽기",
"crawlSinglePage": "페이지 내용 읽기",
"search": "페이지 검색"
},
"config": {
"addKey": "API 키 추가",
"close": "삭제",
+8
View File
@@ -14,6 +14,14 @@
"images": "이미지:",
"prompt": "프롬프트"
},
"lobe-knowledge-base": {
"readKnowledge": {
"meta": {
"chars": "문자 수",
"lines": "줄 수"
}
}
},
"localFiles": {
"editFile": {
"newString": "다음으로 바꾸기",
+4
View File
@@ -65,6 +65,9 @@
"thinking": {
"title": "Diepdenkschakelaar"
},
"thinkingLevel": {
"title": "Denkniveau"
},
"title": "Modeluitbreidingsfunctie",
"urlContext": {
"desc": "Na inschakeling worden webkoppelingen automatisch geanalyseerd om de daadwerkelijke inhoud van de webpagina te verkrijgen",
@@ -396,6 +399,7 @@
"rejectReasonPlaceholder": "Het opgeven van een reden helpt de agent om toekomstige acties te verbeteren",
"rejectTitle": "Huidige tooloproep weigeren",
"rejectedWithReason": "Deze tooloproep is geweigerd met reden: {{reason}}",
"toolAbort": "Deze hulpmiddeloproep is door de gebruiker geannuleerd",
"toolRejected": "Deze tooloproep is geweigerd"
}
},
+22
View File
@@ -135,6 +135,27 @@
}
},
"close": "Sluiten",
"cmdk": {
"about": "Over",
"communitySupport": "Communityondersteuning",
"discover": "Ontdekken",
"knowledgeBase": "Kennisbank",
"navigate": "Navigeren",
"newAgent": "Nieuwe Assistent",
"noResults": "Geen resultaten gevonden",
"openSettings": "Instellingen openen",
"painting": "AI-schilderen",
"searchPlaceholder": "Voer een commando in of zoek...",
"settings": "Instellingen",
"starOnGitHub": "Geef ons een ster op GitHub",
"submitIssue": "Probleem melden",
"theme": "Thema",
"themeAuto": "Systeem volgen",
"themeDark": "Donkere modus",
"themeLight": "Lichte modus",
"toOpen": "Openen",
"toSelect": "Selecteren"
},
"confirm": "Bevestigen",
"contact": "Contacteer ons",
"copy": "Kopiëren",
@@ -283,6 +304,7 @@
"business": "Zakelijke samenwerking",
"support": "E-mailondersteuning"
},
"new": "Nieuw",
"oauth": "SSO inloggen",
"officialSite": "Officiële website",
"ok": "Oké",
+8 -10
View File
@@ -55,10 +55,10 @@
},
"documentList": {
"copyContent": "Volledige inhoud kopiëren",
"documentCount": "Totaal {{count}} documenten",
"duplicate": "Kopie maken",
"empty": "Nog geen documenten. Klik op de knop hierboven om je eerste document aan te maken",
"empty": "Nog geen documenten. Klik op de knop hierboven om je eerste document aan te maken.",
"noResults": "Geen overeenkomende documenten gevonden",
"pageCount": "Totaal {{count}} documenten",
"selectNote": "Selecteer een document om te beginnen met bewerken",
"untitled": "Zonder titel"
},
@@ -70,7 +70,6 @@
"uploadFile": "Bestand uploaden",
"uploadFolder": "Map uploaden"
},
"newDocumentButton": "Nieuw document",
"newNoteDialog": {
"cancel": "Annuleren",
"editTitle": "Document bewerken",
@@ -83,14 +82,15 @@
"title": "Nieuw document",
"updateSuccess": "Document succesvol bijgewerkt"
},
"newPageButton": "Nieuw document",
"uploadButton": "Uploaden"
},
"home": {
"getStarted": "Aan de slag",
"greeting": "Aan de slag",
"quickActions": "Snelle acties",
"recentDocuments": "Recente documenten",
"recentFiles": "Recente bestanden",
"recentPages": "Recente documenten",
"subtitle": "Welkom bij je kennisbank. Begin hier met het beheren van je documenten",
"uploadEntries": {
"files": {
@@ -102,8 +102,8 @@
"knowledgeBase": {
"title": "Nieuwe kennisbank"
},
"newDocument": {
"title": "Nieuw document"
"newPage": {
"title": "Nieuw document aanmaken"
}
}
},
@@ -142,8 +142,8 @@
"downloadFile": "Bestand downloaden",
"unsupportedFileAndContact": "Dit bestandsformaat wordt momenteel niet ondersteund voor online preview. Als u een preview wilt, neem dan gerust <1>contact met ons op</1>."
},
"searchDocumentPlaceholder": "Documenten zoeken",
"searchFilePlaceholder": "Zoek bestand",
"searchPagePlaceholder": "Documenten zoeken",
"tab": {
"all": "Alles",
"audios": "Audio's",
@@ -156,9 +156,7 @@
"websites": "Websites"
},
"title": "Kennisbank",
"toggleLeftPanel": {
"title": "Toon/Verberg het linkerpaneel"
},
"toggleLeftPanel": "Toon/verberg linker paneel",
"uploadDock": {
"body": {
"collapse": "Samenvouwen",
+4
View File
@@ -7,6 +7,10 @@
"desc": "Verwijder de berichten en geüploade bestanden van de huidige sessie",
"title": "Verwijder sessieberichten"
},
"commandPalette": {
"desc": "Open het globale opdrachtpaneel voor snelle toegang tot functies",
"title": "Opdrachtpaneel"
},
"deleteAndRegenerateMessage": {
"desc": "Verwijder het laatste bericht en genereer opnieuw",
"title": "Verwijderen en opnieuw genereren"
+9 -6
View File
@@ -1481,9 +1481,6 @@
"gemini-2.0-flash-lite-001": {
"description": "Gemini 2.0 Flash is een modelvariant die is geoptimaliseerd voor kosteneffectiviteit en lage latentie."
},
"gemini-2.0-flash-preview-image-generation": {
"description": "Gemini 2.0 Flash previewmodel, ondersteunt beeldgeneratie"
},
"gemini-2.5-flash": {
"description": "Gemini 2.5 Flash is het meest kosteneffectieve model van Google en biedt uitgebreide functionaliteiten."
},
@@ -1511,9 +1508,6 @@
"gemini-2.5-flash-preview-04-17": {
"description": "Gemini 2.5 Flash Preview is het meest kosteneffectieve model van Google, dat uitgebreide functionaliteit biedt."
},
"gemini-2.5-flash-preview-05-20": {
"description": "Gemini 2.5 Flash Preview is het meest kosteneffectieve model van Google en biedt uitgebreide functionaliteiten."
},
"gemini-2.5-flash-preview-09-2025": {
"description": "Preview release (25 september 2025) van Gemini 2.5 Flash"
},
@@ -1529,6 +1523,9 @@
"gemini-2.5-pro-preview-06-05": {
"description": "Gemini 2.5 Pro Preview is Google's meest geavanceerde denkwijze-model, in staat om complexe problemen op het gebied van code, wiskunde en STEM te redeneren, en grote datasets, codebases en documenten te analyseren met lange context."
},
"gemini-3-pro-preview": {
"description": "Gemini 3 Pro is het meest geavanceerde model van Google, met state-of-the-art redeneringsvermogen en multimodale interpretatie, evenals krachtige agent- en contextcodering."
},
"gemini-flash-latest": {
"description": "Laatste release van Gemini Flash"
},
@@ -1910,6 +1907,12 @@
"grok-4-0709": {
"description": "Grok 4 van xAI, met krachtige redeneervaardigheden."
},
"grok-4-1-fast-non-reasoning": {
"description": "Geavanceerd multimodaal model, geoptimaliseerd voor het aanroepen van krachtige agenttools."
},
"grok-4-1-fast-reasoning": {
"description": "Geavanceerd multimodaal model, geoptimaliseerd voor het aanroepen van krachtige agenttools."
},
"grok-4-fast-non-reasoning": {
"description": "We zijn verheugd Grok 4 Fast te introduceren, onze nieuwste vooruitgang in kosteneffectieve redeneermodellen."
},
+34 -22
View File
@@ -1,4 +1,38 @@
{
"builtins": {
"lobe-knowledge-base": {
"apiName": {
"readKnowledge": "Kennisbankinhoud lezen",
"searchKnowledgeBase": "Kennisbank doorzoeken"
},
"title": "Kennisbank"
},
"lobe-local-system": {
"apiName": {
"editLocalFile": "Bestand bewerken",
"getCommandOutput": "Code-uitvoer ophalen",
"globLocalFiles": "Bestanden zoeken met patroon",
"grepContent": "Inhoud doorzoeken",
"killCommand": "Code-uitvoering beëindigen",
"listLocalFiles": "Bestandenlijst bekijken",
"moveLocalFiles": "Bestanden verplaatsen",
"readLocalFile": "Bestandsinhoud lezen",
"renameLocalFile": "Bestand hernoemen",
"runCommand": "Code uitvoeren",
"searchLocalFiles": "Bestanden doorzoeken",
"writeLocalFile": "Bestand schrijven"
},
"title": "Lokaal systeem"
},
"lobe-web-browsing": {
"apiName": {
"crawlMultiPages": "Inhoud van meerdere pagina's lezen",
"crawlSinglePage": "Pagina-inhoud lezen",
"search": "Webpagina's doorzoeken"
},
"title": "Online zoeken"
}
},
"confirm": "Bevestigen",
"debug": {
"arguments": "Aanroepparameters",
@@ -251,23 +285,6 @@
"content": "Plugin aan het aanroepen...",
"plugin": "Plugin wordt uitgevoerd..."
},
"localSystem": {
"apiName": {
"editLocalFile": "Bestand bewerken",
"getCommandOutput": "Code-uitvoer ophalen",
"globLocalFiles": "Bestanden zoeken",
"grepContent": "Inhoud doorzoeken",
"killCommand": "Code-uitvoering beëindigen",
"listLocalFiles": "Bestandslijst bekijken",
"moveLocalFiles": "Bestanden verplaatsen",
"readLocalFile": "Bestandsinhoud lezen",
"renameLocalFile": "Naam wijzigen",
"runCommand": "Code uitvoeren",
"searchLocalFiles": "Bestanden zoeken",
"writeLocalFile": "Bestand schrijven"
},
"title": "Lokaal systeem"
},
"mcpInstall": {
"CHECKING_INSTALLATION": "Installatieomgeving controleren...",
"COMPLETED": "Installatie voltooid",
@@ -375,11 +392,6 @@
"warning": "⚠️ Bevestig dat u deze pluginbron vertrouwt, kwaadaardige plugins kunnen uw systeem in gevaar brengen."
},
"search": {
"apiName": {
"crawlMultiPages": "Meerdere pagina's lezen",
"crawlSinglePage": "Pagina-inhoud lezen",
"search": "Pagina zoeken"
},
"config": {
"addKey": "Sleutel toevoegen",
"close": "Verwijderen",
+8
View File
@@ -14,6 +14,14 @@
"images": "Afbeeldingen:",
"prompt": "prompt"
},
"lobe-knowledge-base": {
"readKnowledge": {
"meta": {
"chars": "Aantal tekens",
"lines": "Aantal regels"
}
}
},
"localFiles": {
"editFile": {
"newString": "Vervangen door",
+4
View File
@@ -65,6 +65,9 @@
"thinking": {
"title": "Przełącznik głębokiego myślenia"
},
"thinkingLevel": {
"title": "Poziom myślenia"
},
"title": "Funkcje rozszerzenia modelu",
"urlContext": {
"desc": "Po włączeniu automatycznie analizuje linki do stron internetowych, aby uzyskać rzeczywistą zawartość kontekstu strony",
@@ -396,6 +399,7 @@
"rejectReasonPlaceholder": "Wprowadzenie powodu odrzucenia pomoże Agentowi zrozumieć i zoptymalizować przyszłe działania",
"rejectTitle": "Odrzuć to wywołanie narzędzia",
"rejectedWithReason": "To wywołanie narzędzia zostało odrzucone: {{reason}}",
"toolAbort": "To wywołanie narzędzia zostało anulowane przez użytkownika",
"toolRejected": "To wywołanie narzędzia zostało odrzucone"
}
},
+22
View File
@@ -135,6 +135,27 @@
}
},
"close": "Zamknij",
"cmdk": {
"about": "O nas",
"communitySupport": "Wsparcie społeczności",
"discover": "Odkrywaj",
"knowledgeBase": "Baza wiedzy",
"navigate": "Nawigacja",
"newAgent": "Nowy asystent",
"noResults": "Brak wyników",
"openSettings": "Otwórz ustawienia",
"painting": "Sztuka AI",
"searchPlaceholder": "Wpisz polecenie lub wyszukaj...",
"settings": "Ustawienia",
"starOnGitHub": "Daj nam gwiazdkę na GitHubie",
"submitIssue": "Zgłoś problem",
"theme": "Motyw",
"themeAuto": "Zgodnie z systemem",
"themeDark": "Tryb ciemny",
"themeLight": "Tryb jasny",
"toOpen": "Otwórz",
"toSelect": "Wybierz"
},
"confirm": "Potwierdź",
"contact": "Skontaktuj się z nami",
"copy": "Kopiuj",
@@ -283,6 +304,7 @@
"business": "Współpraca biznesowa",
"support": "Wsparcie mailowe"
},
"new": "Nowy",
"oauth": "Logowanie SSO",
"officialSite": "Oficjalna strona internetowa",
"ok": "OK",
+7 -9
View File
@@ -55,10 +55,10 @@
},
"documentList": {
"copyContent": "Kopiuj całą treść",
"documentCount": "Łącznie {{count}} dokumentów",
"duplicate": "Utwórz kopię",
"empty": "Brak dokumentów. Kliknij przycisk powyżej, aby utworzyć pierwszy dokument",
"empty": "Brak dokumentów. Kliknij przycisk powyżej, aby utworzyć swój pierwszy dokument.",
"noResults": "Nie znaleziono pasujących dokumentów",
"pageCount": "Łącznie {{count}} dokumentów",
"selectNote": "Wybierz dokument, aby rozpocząć edycję",
"untitled": "Bez tytułu"
},
@@ -70,7 +70,6 @@
"uploadFile": "Prześlij plik",
"uploadFolder": "Prześlij folder"
},
"newDocumentButton": "Nowy dokument",
"newNoteDialog": {
"cancel": "Anuluj",
"editTitle": "Edytuj dokument",
@@ -83,14 +82,15 @@
"title": "Nowy dokument",
"updateSuccess": "Dokument został zaktualizowany pomyślnie"
},
"newPageButton": "Nowy dokument",
"uploadButton": "Prześlij"
},
"home": {
"getStarted": "Rozpocznij",
"greeting": "Zaczynamy",
"quickActions": "Szybkie akcje",
"recentDocuments": "Ostatnie dokumenty",
"recentFiles": "Ostatnie pliki",
"recentPages": "Ostatnie dokumenty",
"subtitle": "Witamy w bazie wiedzy. Zacznij zarządzać swoimi dokumentami już teraz",
"uploadEntries": {
"files": {
@@ -102,7 +102,7 @@
"knowledgeBase": {
"title": "Nowa baza wiedzy"
},
"newDocument": {
"newPage": {
"title": "Nowy dokument"
}
}
@@ -142,8 +142,8 @@
"downloadFile": "Pobierz plik",
"unsupportedFileAndContact": "Ten format pliku nie jest obecnie obsługiwany w podglądzie online. Jeśli chcesz uzyskać podgląd, zachęcamy do <1>skontaktowania się z nami</1>."
},
"searchDocumentPlaceholder": "Szukaj dokumentu",
"searchFilePlaceholder": "Szukaj pliku",
"searchPagePlaceholder": "Szukaj dokumentów",
"tab": {
"all": "Wszystko",
"audios": "Audio",
@@ -156,9 +156,7 @@
"websites": "Strony internetowe"
},
"title": "Baza wiedzy",
"toggleLeftPanel": {
"title": "Pokaż/ukryj panel po lewej stronie"
},
"toggleLeftPanel": "Pokaż/Ukryj panel po lewej stronie",
"uploadDock": {
"body": {
"collapse": "Zwiń",
+4
View File
@@ -7,6 +7,10 @@
"desc": "Wyczyść wiadomości i przesłane pliki w bieżącej rozmowie",
"title": "Wyczyść wiadomości rozmowy"
},
"commandPalette": {
"desc": "Otwórz globalny panel poleceń, aby szybko uzyskać dostęp do funkcji",
"title": "Panel poleceń"
},
"deleteAndRegenerateMessage": {
"desc": "Usuń ostatnią wiadomość i wygeneruj ponownie",
"title": "Usuń i wygeneruj ponownie"
+9 -6
View File
@@ -1481,9 +1481,6 @@
"gemini-2.0-flash-lite-001": {
"description": "Gemini 2.0 Flash to wariant modelu, zoptymalizowany pod kątem efektywności kosztowej i niskiego opóźnienia."
},
"gemini-2.0-flash-preview-image-generation": {
"description": "Model Gemini 2.0 Flash do generowania obrazów, wspierający generację obrazów"
},
"gemini-2.5-flash": {
"description": "Gemini 2.5 Flash to najbardziej opłacalny model Google, oferujący wszechstronne funkcje."
},
@@ -1511,9 +1508,6 @@
"gemini-2.5-flash-preview-04-17": {
"description": "Gemini 2.5 Flash Preview to najbardziej opłacalny model Google, oferujący wszechstronne funkcje."
},
"gemini-2.5-flash-preview-05-20": {
"description": "Gemini 2.5 Flash Preview to najbardziej opłacalny model Google, oferujący wszechstronne funkcje."
},
"gemini-2.5-flash-preview-09-2025": {
"description": "Wersja podglądowa (25 września 2025) Gemini 2.5 Flash"
},
@@ -1529,6 +1523,9 @@
"gemini-2.5-pro-preview-06-05": {
"description": "Gemini 2.5 Pro Preview to najnowocześniejszy model myślowy Google, zdolny do rozumowania nad złożonymi problemami w dziedzinach kodowania, matematyki i STEM oraz do analizy dużych zbiorów danych, repozytoriów kodu i dokumentów z wykorzystaniem długich kontekstów."
},
"gemini-3-pro-preview": {
"description": "Gemini 3 Pro to najinteligentniejszy model Google, oferujący najnowocześniejsze wnioskowanie i rozumienie multimodalne, a także zaawansowane funkcje agenta i kodowania kontekstu."
},
"gemini-flash-latest": {
"description": "Najnowsze wydanie Gemini Flash"
},
@@ -1910,6 +1907,12 @@
"grok-4-0709": {
"description": "Grok 4 od xAI, wyposażony w potężne zdolności rozumowania."
},
"grok-4-1-fast-non-reasoning": {
"description": "Nowoczesny model multimodalny, zoptymalizowany specjalnie do wydajnego korzystania z narzędzi pośredniczących."
},
"grok-4-1-fast-reasoning": {
"description": "Nowoczesny model multimodalny, zoptymalizowany specjalnie do wydajnego korzystania z narzędzi pośredniczących."
},
"grok-4-fast-non-reasoning": {
"description": "Z radością prezentujemy Grok 4 Fast, nasz najnowszy postęp w modelach inferencyjnych o wysokiej efektywności kosztowej."
},
+34 -22
View File
@@ -1,4 +1,38 @@
{
"builtins": {
"lobe-knowledge-base": {
"apiName": {
"readKnowledge": "Odczytaj zawartość bazy wiedzy",
"searchKnowledgeBase": "Przeszukaj bazę wiedzy"
},
"title": "Baza wiedzy"
},
"lobe-local-system": {
"apiName": {
"editLocalFile": "Edytuj plik",
"getCommandOutput": "Pobierz wynik polecenia",
"globLocalFiles": "Wyszukaj pliki",
"grepContent": "Przeszukaj zawartość",
"killCommand": "Zatrzymaj wykonywanie kodu",
"listLocalFiles": "Wyświetl listę plików",
"moveLocalFiles": "Przenieś pliki",
"readLocalFile": "Odczytaj zawartość pliku",
"renameLocalFile": "Zmień nazwę",
"runCommand": "Wykonaj kod",
"searchLocalFiles": "Wyszukaj pliki",
"writeLocalFile": "Zapisz plik"
},
"title": "System lokalny"
},
"lobe-web-browsing": {
"apiName": {
"crawlMultiPages": "Odczytaj zawartość wielu stron",
"crawlSinglePage": "Odczytaj zawartość strony",
"search": "Wyszukaj stronę"
},
"title": "Wyszukiwanie online"
}
},
"confirm": "Potwierdź",
"debug": {
"arguments": "Argumenty wywołania",
@@ -251,23 +285,6 @@
"content": "Wywoływanie wtyczki...",
"plugin": "Wtyczka działa..."
},
"localSystem": {
"apiName": {
"editLocalFile": "Edytuj plik",
"getCommandOutput": "Pobierz wynik polecenia",
"globLocalFiles": "Wyszukaj pasujące pliki",
"grepContent": "Przeszukaj zawartość",
"killCommand": "Zatrzymaj wykonywanie polecenia",
"listLocalFiles": "Wyświetl listę plików",
"moveLocalFiles": "Przenieś pliki",
"readLocalFile": "Odczytaj zawartość pliku",
"renameLocalFile": "Zmień nazwę",
"runCommand": "Wykonaj kod",
"searchLocalFiles": "Wyszukaj pliki",
"writeLocalFile": "Zapisz do pliku"
},
"title": "System lokalny"
},
"mcpInstall": {
"CHECKING_INSTALLATION": "Sprawdzanie środowiska instalacji...",
"COMPLETED": "Instalacja zakończona",
@@ -375,11 +392,6 @@
"warning": "⚠️ Upewnij się, że ufasz źródłu tej wtyczki, złośliwe wtyczki mogą zagrozić bezpieczeństwu Twojego systemu."
},
"search": {
"apiName": {
"crawlMultiPages": "Odczytaj zawartość wielu stron",
"crawlSinglePage": "Odczytaj zawartość strony",
"search": "Wyszukaj stronę"
},
"config": {
"addKey": "Dodaj klucz",
"close": "Usuń",

Some files were not shown because too many files have changed in this diff Show More