@lobehub/lobehub 2.0.0-next.365 → 2.0.0-next.368

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/.github/workflows/claude-migration-support.yml +121 -0
  2. package/CHANGELOG.md +77 -0
  3. package/changelog/v1.json +27 -0
  4. package/docs/development/database-schema.dbml +1 -0
  5. package/docs/self-hosting/advanced/auth/clerk-to-betterauth.mdx +12 -0
  6. package/docs/self-hosting/advanced/auth/clerk-to-betterauth.zh-CN.mdx +12 -0
  7. package/docs/self-hosting/advanced/auth/migration-internals.mdx +201 -0
  8. package/docs/self-hosting/advanced/auth/migration-internals.zh-CN.mdx +200 -0
  9. package/docs/self-hosting/advanced/auth/nextauth-to-betterauth.mdx +38 -0
  10. package/docs/self-hosting/advanced/auth/nextauth-to-betterauth.zh-CN.mdx +38 -0
  11. package/docs/self-hosting/advanced/auth/providers/casdoor.mdx +24 -7
  12. package/docs/self-hosting/advanced/auth/providers/casdoor.zh-CN.mdx +24 -7
  13. package/docs/self-hosting/advanced/auth/providers/logto.mdx +20 -7
  14. package/docs/self-hosting/advanced/auth/providers/logto.zh-CN.mdx +20 -7
  15. package/locales/ar/auth.json +2 -1
  16. package/locales/ar/models.json +6 -14
  17. package/locales/ar/providers.json +1 -0
  18. package/locales/ar/setting.json +1 -0
  19. package/locales/bg-BG/auth.json +2 -1
  20. package/locales/bg-BG/models.json +33 -7
  21. package/locales/bg-BG/providers.json +1 -0
  22. package/locales/bg-BG/setting.json +1 -0
  23. package/locales/de-DE/auth.json +2 -1
  24. package/locales/de-DE/models.json +32 -14
  25. package/locales/de-DE/providers.json +1 -0
  26. package/locales/de-DE/setting.json +1 -0
  27. package/locales/en-US/auth.json +1 -1
  28. package/locales/en-US/models.json +16 -15
  29. package/locales/en-US/providers.json +1 -0
  30. package/locales/en-US/setting.json +1 -0
  31. package/locales/es-ES/auth.json +2 -1
  32. package/locales/es-ES/models.json +5 -13
  33. package/locales/es-ES/providers.json +1 -0
  34. package/locales/es-ES/setting.json +1 -0
  35. package/locales/fa-IR/auth.json +2 -1
  36. package/locales/fa-IR/models.json +38 -12
  37. package/locales/fa-IR/providers.json +1 -0
  38. package/locales/fa-IR/setting.json +1 -0
  39. package/locales/fr-FR/auth.json +2 -1
  40. package/locales/fr-FR/models.json +43 -15
  41. package/locales/fr-FR/providers.json +1 -0
  42. package/locales/fr-FR/setting.json +1 -0
  43. package/locales/it-IT/auth.json +2 -1
  44. package/locales/it-IT/models.json +51 -10
  45. package/locales/it-IT/providers.json +1 -0
  46. package/locales/it-IT/setting.json +1 -0
  47. package/locales/ja-JP/auth.json +2 -1
  48. package/locales/ja-JP/models.json +33 -15
  49. package/locales/ja-JP/providers.json +1 -0
  50. package/locales/ja-JP/setting.json +1 -0
  51. package/locales/ko-KR/auth.json +2 -1
  52. package/locales/ko-KR/models.json +47 -8
  53. package/locales/ko-KR/providers.json +1 -0
  54. package/locales/ko-KR/setting.json +1 -0
  55. package/locales/nl-NL/auth.json +2 -1
  56. package/locales/nl-NL/models.json +5 -13
  57. package/locales/nl-NL/providers.json +1 -0
  58. package/locales/nl-NL/setting.json +1 -0
  59. package/locales/pl-PL/auth.json +2 -1
  60. package/locales/pl-PL/models.json +35 -13
  61. package/locales/pl-PL/providers.json +1 -0
  62. package/locales/pl-PL/setting.json +1 -0
  63. package/locales/pt-BR/auth.json +2 -1
  64. package/locales/pt-BR/models.json +50 -13
  65. package/locales/pt-BR/providers.json +1 -0
  66. package/locales/pt-BR/setting.json +1 -0
  67. package/locales/ru-RU/auth.json +2 -1
  68. package/locales/ru-RU/models.json +6 -9
  69. package/locales/ru-RU/providers.json +1 -0
  70. package/locales/ru-RU/setting.json +1 -0
  71. package/locales/tr-TR/auth.json +2 -1
  72. package/locales/tr-TR/models.json +49 -15
  73. package/locales/tr-TR/providers.json +1 -0
  74. package/locales/tr-TR/setting.json +1 -0
  75. package/locales/vi-VN/auth.json +2 -1
  76. package/locales/vi-VN/models.json +34 -7
  77. package/locales/vi-VN/providers.json +1 -0
  78. package/locales/vi-VN/setting.json +1 -0
  79. package/locales/zh-CN/auth.json +1 -1
  80. package/locales/zh-CN/models.json +48 -12
  81. package/locales/zh-CN/providers.json +1 -0
  82. package/locales/zh-CN/setting.json +1 -0
  83. package/locales/zh-TW/auth.json +2 -1
  84. package/locales/zh-TW/models.json +31 -14
  85. package/locales/zh-TW/providers.json +1 -0
  86. package/locales/zh-TW/setting.json +1 -0
  87. package/package.json +1 -1
  88. package/packages/database/migrations/0072_add_market_identifier_chat_group.sql +1 -0
  89. package/packages/database/migrations/meta/0072_snapshot.json +10726 -0
  90. package/packages/database/migrations/meta/_journal.json +7 -0
  91. package/packages/database/src/schemas/chatGroup.ts +1 -0
  92. package/scripts/_shared/checkDeprecatedAuth.js +10 -1
  93. package/src/app/[variants]/(main)/agent/cron/[cronId]/features/CronJobHeader.tsx +7 -2
  94. package/src/app/[variants]/(main)/agent/cron/[cronId]/index.tsx +16 -2
  95. package/src/app/[variants]/(main)/agent/profile/features/ProfileEditor/AgentHeader.tsx +0 -1
  96. package/src/app/[variants]/(main)/community/(detail)/agent/features/Details/Overview/index.tsx +0 -2
  97. package/src/app/[variants]/(main)/community/(detail)/agent/features/Sidebar/ActionButton/AddAgent.tsx +1 -3
  98. package/src/app/[variants]/(main)/community/(detail)/user/features/FollowStats.tsx +0 -2
  99. package/src/app/[variants]/(main)/community/(list)/features/SortButton/index.tsx +1 -1
  100. package/src/app/[variants]/(main)/community/features/UserAvatar/index.tsx +0 -2
  101. package/src/app/[variants]/(main)/group/profile/features/Header/AgentPublishButton/PublishResultModal.tsx +0 -1
  102. package/src/app/[variants]/(main)/group/profile/features/MemberProfile/AgentHeader.tsx +0 -1
  103. package/src/app/[variants]/(main)/settings/hotkey/features/Desktop.tsx +0 -1
  104. package/src/app/[variants]/(main)/settings/provider/features/ModelList/SearchResult.tsx +1 -1
  105. package/src/app/[variants]/(main)/settings/skill/features/Actions.tsx +0 -3
  106. package/src/app/[variants]/(main)/settings/skill/features/McpSkillItem.tsx +9 -3
  107. package/src/app/[variants]/(main)/settings/skill/features/SkillList.tsx +35 -1
  108. package/src/app/[variants]/(main)/settings/stats/features/usage/UsageCards/ActiveModels/ModelTable.tsx +0 -2
  109. package/src/components/Plugins/PluginTag.tsx +36 -23
  110. package/src/features/ChatInput/ActionBar/Tools/PopoverContent.tsx +3 -3
  111. package/src/features/ChatInput/ActionBar/Tools/useControls.tsx +96 -78
  112. package/src/features/ChatInput/Desktop/ContextContainer/ContextList.tsx +1 -1
  113. package/src/features/ChatInput/Mobile/FilePreview/FileItem/index.tsx +0 -2
  114. package/src/features/DevPanel/features/Table/TableCell.tsx +2 -2
  115. package/src/features/Electron/titlebar/RecentlyViewed.tsx +1 -0
  116. package/src/features/PluginDetailModal/index.tsx +1 -0
  117. package/src/features/Portal/Plugins/Body/index.tsx +0 -1
  118. package/src/features/ProfileEditor/AgentTool.tsx +141 -126
  119. package/src/features/ProfileEditor/Empty.tsx +22 -0
  120. package/src/features/ProfileEditor/PluginTag.tsx +33 -7
  121. package/src/features/ProfileEditor/PopoverContent.tsx +142 -0
  122. package/src/features/ProtocolUrlHandler/InstallPlugin/CustomPluginInstallModal.tsx +0 -1
  123. package/src/features/SkillStore/CommunityList/Item.tsx +5 -2
  124. package/src/features/SkillStore/CustomList/Item.tsx +149 -0
  125. package/src/features/SkillStore/CustomList/index.tsx +71 -0
  126. package/src/features/SkillStore/Empty.tsx +3 -0
  127. package/src/features/SkillStore/Search/index.tsx +5 -0
  128. package/src/features/SkillStore/SkillStoreContent.tsx +10 -2
  129. package/src/features/SkillStore/index.tsx +8 -1
  130. package/src/libs/trpc/middleware/userAuth.ts +0 -1
  131. package/src/locales/default/setting.ts +1 -0
  132. package/src/server/routers/lambda/file.ts +0 -2
  133. package/src/server/services/email/impls/nodemailer/index.ts +5 -4
  134. package/src/server/services/email/impls/resend/index.ts +4 -2
  135. package/src/services/import/index.ts +1 -2
  136. package/src/store/chat/slices/plugin/actions/pluginTypes.ts +2 -2
  137. package/src/store/file/slices/chat/action.ts +1 -1
  138. package/src/store/session/slices/session/action.ts +2 -0
  139. package/src/store/tool/slices/customPlugin/initialState.ts +2 -0
  140. package/src/store/tool/slices/mcpStore/action.ts +1 -0
@@ -0,0 +1,200 @@
1
+ ---
2
+ title: 认证迁移原理 - 技术深入解析
3
+ description: >-
4
+ LobeChat 认证迁移的技术原理解析,包括数据库 Schema、迁移原理和问题排查指南。
5
+ tags:
6
+ - 认证
7
+ - 迁移
8
+ - 数据库
9
+ - 问题排查
10
+ ---
11
+
12
+ # 认证迁移原理
13
+
14
+ 本文档解释 LobeChat 认证迁移的技术原理,适合有数据库和开发经验的用户,帮助理解迁移的底层逻辑。
15
+
16
+ <Callout type={'info'}>
17
+ 如需分步迁移指南,请参阅 [NextAuth 迁移](/docs/self-hosting/advanced/auth/nextauth-to-betterauth) 或 [Clerk 迁移](/docs/self-hosting/advanced/auth/clerk-to-betterauth)。
18
+ </Callout>
19
+
20
+ ## 核心数据库 Schema
21
+
22
+ 理解数据库 Schema 是排查迁移问题的关键。
23
+
24
+ ### Users 表
25
+
26
+ `users` 表是**认证框架无关**的通用用户表,适用于任何认证系统。每条记录代表一个唯一的用户身份及其关联的个人信息。
27
+
28
+ 关键字段:
29
+
30
+ | 字段 | 说明 |
31
+ | --------------------------------- | ---------- |
32
+ | `id` | 用户唯一标识(主键) |
33
+ | `email` | 用户邮箱地址(唯一) |
34
+ | `avatar`, `firstName`, `lastName` | 个人资料信息 |
35
+
36
+ ### Accounts 表
37
+
38
+ `accounts` 表存储认证提供商连接。不同的 SSO 提供商和邮箱密码认证都被视为独立的「账号」,关联到同一个用户。
39
+
40
+ 账号示例:
41
+
42
+ - Google SSO 登录
43
+ - GitHub SSO 登录
44
+ - 邮箱密码凭证
45
+ - Auth0(即使通过 Auth0 使用 Google 登录,也与直接使用 Google SSO 是不同的账号)
46
+
47
+ **关系**:一个用户可以有多个账号(1:N 关系)。
48
+
49
+ ```
50
+ ┌─────────────────┐ ┌─────────────────┐
51
+ │ users │ │ accounts │
52
+ ├─────────────────┤ ├─────────────────┤
53
+ │ id (PK) │◄───────┤│ user_id (FK) │
54
+ │ email (unique) │ │ provider │
55
+ │ avatar │ │ provider_id │
56
+ │ ... │ │ ... │
57
+ └─────────────────┘ └─────────────────┘
58
+
59
+ ┌───────┴───────┐
60
+ │ │
61
+ ┌───────▼──┐ ┌──────▼───┐
62
+ │ Google │ │ GitHub │
63
+ │ Account │ │ Account │
64
+ └──────────┘ └──────────┘
65
+ ```
66
+
67
+ ## 迁移原理
68
+
69
+ <Callout type={'warning'}>
70
+ 迁移不会保留登录会话。用户在迁移后必须重新登录。
71
+ </Callout>
72
+
73
+ ### 简单迁移
74
+
75
+ 简单迁移**只**迁移 `users` 表,忽略 `accounts` 表。
76
+
77
+ **工作原理:**
78
+
79
+ 1. 迁移后用户使用邮箱密码或 SSO 登录
80
+ 2. Better Auth 检查该邮箱是否存在于 `users` 表中
81
+ 3. 如果找到,用户将关联到其现有数据
82
+ 4. 在 `accounts` 表中创建新的账号记录
83
+
84
+ **为什么有效:**
85
+
86
+ 当你重置密码或使用 SSO 登录时,如果提供商返回的邮箱与 `users` 表中的现有邮箱匹配,系统会将你关联到该现有用户。
87
+
88
+ **局限性:**
89
+
90
+ 由于没有迁移 `accounts` 表,系统不知道之前关联的账号信息。
91
+
92
+ **示例场景:**
93
+
94
+ - 迁移前:用户将 Google(`a@gmail.com`)和 Microsoft(`b@outlook.com`)关联到同一个用户
95
+ - `users` 表存储主邮箱:`a@gmail.com`
96
+ - 简单迁移后:
97
+ - 使用 `a@gmail.com` 登录 → ✅ 关联到现有用户
98
+ - 使用 `b@outlook.com` 登录 → ❌ 创建**新用户**(没有账号记录将 `b@outlook.com` 关联到原用户)
99
+
100
+ ### 完整迁移
101
+
102
+ 完整迁移将账号数据从之前的认证系统迁移到 Better Auth 的 `accounts` 表。
103
+
104
+ **迁移的数据:**
105
+
106
+ - NextAuth:`nextauth_accounts` 表 → Better Auth `accounts` 表
107
+ - Clerk:Clerk API 中的 externalAccounts → Better Auth `accounts` 表
108
+
109
+ **结果:**
110
+
111
+ 所有之前关联的账号继续有效。使用 `b@outlook.com` 登录将正确关联到现有用户。
112
+
113
+ ## 问题排查
114
+
115
+ ### 问题:登录创建了新用户而不是关联到现有数据
116
+
117
+ 这通常发生在简单迁移后使用副邮箱登录时。
118
+
119
+ **诊断步骤:**
120
+
121
+ 1. **找到你的原始用户记录**
122
+
123
+ 通过主邮箱查询 `users` 表:
124
+
125
+ ```sql
126
+ SELECT id, email FROM users WHERE email = 'your-primary-email@example.com';
127
+ ```
128
+
129
+ 记下 `id` 值。
130
+
131
+ 2. **检查关联到该用户的账号**
132
+
133
+ 使用用户 ID 查询 `accounts` 表:
134
+
135
+ ```sql
136
+ SELECT * FROM accounts WHERE user_id = 'your-user-id';
137
+ ```
138
+
139
+ 3. **找到错误创建的账号**
140
+
141
+ 如果你使用副邮箱登录并创建了新用户,找到该账号:
142
+
143
+ ```sql
144
+ SELECT * FROM accounts WHERE provider_account_id = 'secondary-email@example.com';
145
+ -- 或者对于 SSO 提供商,按提供商的用户 ID 搜索
146
+ ```
147
+
148
+ **修复方法:**
149
+
150
+ 1. 删除错误创建的账号记录:
151
+
152
+ ```sql
153
+ DELETE FROM accounts WHERE id = 'incorrect-account-id';
154
+ ```
155
+
156
+ 2. 如果创建了新用户,可能还需要删除它:
157
+
158
+ ```sql
159
+ DELETE FROM users WHERE id = 'new-user-id';
160
+ ```
161
+
162
+ 3. 使用你的**主邮箱**(存储在 `users` 表中的邮箱)登录
163
+
164
+ 4. 登录后,进入 **设置 → 个人资料 → 关联账号** 重新关联你的副账号
165
+
166
+ ![个人资料页面 - 关联账号](https://hub-apac-1.lobeobjects.space/docs/d9b41a1607d49319fd670e88529199cf.png)
167
+
168
+ ### 问题:迁移后 SSO 登录不工作
169
+
170
+ **检查:**
171
+
172
+ 1. 确保 SSO 提供商已在 `AUTH_SSO_PROVIDERS` 中配置
173
+ 2. 验证提供商凭证(`AUTH_<PROVIDER>_ID`、`AUTH_<PROVIDER>_SECRET`)
174
+ 3. 对于完整迁移,验证账号记录是否正确创建:
175
+
176
+ ```sql
177
+ SELECT * FROM accounts WHERE provider = 'google'; -- 或你的提供商
178
+ ```
179
+
180
+ ### 问题:找不到原始用户数据
181
+
182
+ **检查:**
183
+
184
+ 1. 验证你使用的邮箱与 `users` 表中的邮箱匹配
185
+ 2. 检查你最初是否使用了不同的邮箱或 SSO 提供商
186
+ 3. 直接查询数据库查找符合条件的用户:
187
+
188
+ ```sql
189
+ SELECT * FROM users WHERE email LIKE '%your-domain.com';
190
+ ```
191
+
192
+ ## 相关阅读
193
+
194
+ <Cards>
195
+ <Card href={'/docs/self-hosting/advanced/auth/nextauth-to-betterauth'} title={'NextAuth 迁移指南'} />
196
+
197
+ <Card href={'/docs/self-hosting/advanced/auth/clerk-to-betterauth'} title={'Clerk 迁移指南'} />
198
+
199
+ <Card href={'/docs/self-hosting/advanced/auth'} title={'认证服务配置'} />
200
+ </Cards>
@@ -296,6 +296,16 @@ After migration is complete, follow [Simple Migration - Step 1](#steps) to confi
296
296
 
297
297
  ## Troubleshooting
298
298
 
299
+ ### Clear browser data before accessing
300
+
301
+ After migration, if you encounter login issues, try clearing your browser's site data first:
302
+
303
+ 1. Open browser DevTools (F12 or right-click → Inspect)
304
+ 2. Go to Application tab → Storage → Clear site data
305
+ 3. Refresh the page and try again
306
+
307
+ ![Clear Browser Site Data](https://hub-apac-1.lobeobjects.space/docs/733c50ee2302e5daa3d99dc0739238c8.png)
308
+
299
309
  ### Users can't log in after migration
300
310
 
301
311
  - Check that `AUTH_SECRET` is set correctly
@@ -317,9 +327,37 @@ After migration is complete, follow [Simple Migration - Step 1](#steps) to confi
317
327
 
318
328
  This error occurs because the database schema is outdated. Run `pnpm db:migrate` to update the database structure before running the migration script.
319
329
 
330
+ ### email\_not\_found error
331
+
332
+ If you see a redirect to `signin?callbackUrl=...&error=email_not_found`, it means LobeChat cannot get the user's email.
333
+
334
+ <Callout type={'warning'}>
335
+ **Important**: Better Auth currently **requires user email** for authentication. All SSO providers must be configured to return email information, otherwise users cannot log in.
336
+ </Callout>
337
+
338
+ Common causes:
339
+
340
+ **Cause 1: SSO connection not requesting email permission**
341
+
342
+ When configuring SSO connections (e.g., GitHub in Auth0), make sure to enable **Email Address** permission in the Attributes section. LobeChat requires user email for authentication.
343
+
344
+ **Cause 2: User email not configured in identity provider**
345
+
346
+ For identity providers like Casdoor or Logto, users may not have an email configured.
347
+
348
+ Solution:
349
+
350
+ 1. First configure the Webhook in LobeChat to sync user data from the identity provider:
351
+ - [Casdoor Webhook Configuration](/docs/self-hosting/advanced/auth/providers/casdoor)
352
+ - [Logto Webhook Configuration](/docs/self-hosting/advanced/auth/providers/logto)
353
+ 2. Then configure the user's email in the identity provider's admin console
354
+ 3. The user data will be synced to LobeChat via Webhook, and the user can then log in
355
+
320
356
  ## Related Reading
321
357
 
322
358
  <Cards>
359
+ <Card href={'/docs/self-hosting/advanced/auth/migration-internals'} title={'Migration Technical Deep Dive'} />
360
+
323
361
  <Card href={'/docs/self-hosting/advanced/auth'} title={'Authentication Service Configuration'} />
324
362
 
325
363
  <Card href={'/docs/self-hosting/environment-variables/auth'} title={'Auth Environment Variables'} />
@@ -291,6 +291,16 @@ npx tsx scripts/nextauth-to-betterauth/verify.ts
291
291
 
292
292
  ## 常见问题
293
293
 
294
+ ### 访问前清除浏览器数据
295
+
296
+ 迁移完成后,如果遇到登录问题,请先尝试清除浏览器的站点数据:
297
+
298
+ 1. 打开浏览器开发者工具(F12 或右键 → 检查)
299
+ 2. 进入 Application 标签页 → Storage → Clear site data
300
+ 3. 刷新页面后重试
301
+
302
+ ![清除浏览器站点数据](https://hub-apac-1.lobeobjects.space/docs/733c50ee2302e5daa3d99dc0739238c8.png)
303
+
294
304
  ### 迁移后用户无法登录
295
305
 
296
306
  - 检查 `AUTH_SECRET` 是否正确设置
@@ -312,9 +322,37 @@ npx tsx scripts/nextauth-to-betterauth/verify.ts
312
322
 
313
323
  这是因为数据库 schema 未更新。请先运行 `pnpm db:migrate` 更新数据库结构,然后再执行迁移脚本。
314
324
 
325
+ ### email\_not\_found 错误
326
+
327
+ 如果登录时跳转到 `signin?callbackUrl=...&error=email_not_found`,说明 LobeChat 无法获取用户邮箱。
328
+
329
+ <Callout type={'warning'}>
330
+ **重要提示**:Better Auth 目前**强依赖用户邮箱**进行身份认证。所有 SSO 提供商必须配置为返回邮箱信息,否则用户无法登录。
331
+ </Callout>
332
+
333
+ 常见原因:
334
+
335
+ **原因 1:SSO 连接未请求邮箱权限**
336
+
337
+ 配置 SSO 连接时(如 Auth0 中的 GitHub 连接),务必在 **Attributes** 部分勾选 **Email Address** 权限。LobeChat 需要用户邮箱进行身份认证。
338
+
339
+ **原因 2:用户在身份提供商中未配置邮箱**
340
+
341
+ 对于 Casdoor、Logto 等身份提供商,用户可能没有配置邮箱。
342
+
343
+ 解决方案:
344
+
345
+ 1. 先在 LobeChat 中配置身份提供商的 Webhook 以同步用户数据:
346
+ - [Casdoor Webhook 配置](/zh/docs/self-hosting/advanced/auth/providers/casdoor)
347
+ - [Logto Webhook 配置](/zh/docs/self-hosting/advanced/auth/providers/logto)
348
+ 2. 然后在身份提供商的管理后台为用户配置邮箱
349
+ 3. 用户数据通过 Webhook 同步到 LobeChat 后即可正常登录
350
+
315
351
  ## 相关阅读
316
352
 
317
353
  <Cards>
354
+ <Card href={'/zh/docs/self-hosting/advanced/auth/migration-internals'} title={'迁移技术原理'} />
355
+
318
356
  <Card href={'/zh/docs/self-hosting/advanced/auth'} title={'身份验证服务配置'} />
319
357
 
320
358
  <Card href={'/zh/docs/self-hosting/environment-variables/auth'} title={'认证相关环境变量'} />
@@ -39,17 +39,34 @@ tags:
39
39
 
40
40
  When deploying LobeChat, you need to configure the following environment variables:
41
41
 
42
- | Environment Variable | Type | Description |
43
- | -------------------------------- | -------- | ----------------------------------------------------------------------------- |
44
- | `AUTH_SECRET` | Required | Key used to encrypt session tokens. Generate using: `openssl rand -base64 32` |
45
- | `AUTH_SSO_PROVIDERS` | Required | SSO provider for LobeChat. Use `casdoor` for Casdoor |
46
- | `AUTH_CASDOOR_ID` | Required | Client ID from Casdoor application |
47
- | `AUTH_CASDOOR_SECRET` | Required | Client Secret from Casdoor application |
48
- | `AUTH_CASDOOR_ISSUER` | Required | Casdoor server URL (e.g., `https://your-casdoor-domain`) |
42
+ | Environment Variable | Type | Description |
43
+ | ------------------------ | -------- | ----------------------------------------------------------------------------- |
44
+ | `AUTH_SECRET` | Required | Key used to encrypt session tokens. Generate using: `openssl rand -base64 32` |
45
+ | `AUTH_SSO_PROVIDERS` | Required | SSO provider for LobeChat. Use `casdoor` for Casdoor |
46
+ | `AUTH_CASDOOR_ID` | Required | Client ID from Casdoor application |
47
+ | `AUTH_CASDOOR_SECRET` | Required | Client Secret from Casdoor application |
48
+ | `AUTH_CASDOOR_ISSUER` | Required | Casdoor server URL (e.g., `https://your-casdoor-domain`) |
49
+ | `CASDOOR_WEBHOOK_SECRET` | Optional | Secret key for validating Webhook requests from Casdoor |
49
50
 
50
51
  <Callout type={'tip'}>
51
52
  Go to [📘 Environment Variables](/docs/self-hosting/environment-variables/auth#casdoor) for detailed information on these variables.
52
53
  </Callout>
54
+
55
+ ### Configure Webhook (Optional)
56
+
57
+ > Available in Casdoor `>=1.843.0`.
58
+
59
+ Configure Casdoor Webhook to sync user data updates to LobeChat.
60
+
61
+ 1. Go to **Admin Tools** -> **Webhooks** and create a Webhook
62
+ 2. Fill in the following fields:
63
+ - URL: `https://your-domain.com/api/webhooks/casdoor`
64
+ - Method: `POST`
65
+ - Content Type: `application/json`
66
+ - Headers: `casdoor-secret`: `your-webhook-secret`
67
+ - Events: `update-user`
68
+ 3. Generate a secret at [generate-secret.vercel.app/10](https://generate-secret.vercel.app/10)
69
+ 4. Set the secret in the `CASDOOR_WEBHOOK_SECRET` environment variable
53
70
  </Steps>
54
71
 
55
72
  <Callout type={'info'}>
@@ -37,17 +37,34 @@ tags:
37
37
 
38
38
  在部署 LobeChat 时,你需要配置以下环境变量:
39
39
 
40
- | 环境变量 | 类型 | 描述 |
41
- | -------------------------------- | -- | ------------------------------------------------- |
42
- | `AUTH_SECRET` | 必选 | 用于加密会话令牌的密钥。使用以下命令生成:`openssl rand -base64 32` |
43
- | `AUTH_SSO_PROVIDERS` | 必选 | SSO 提供商。使用 Casdoor 请填写 `casdoor` |
44
- | `AUTH_CASDOOR_ID` | 必选 | Casdoor 应用的 Client ID |
45
- | `AUTH_CASDOOR_SECRET` | 必选 | Casdoor 应用的 Client Secret |
46
- | `AUTH_CASDOOR_ISSUER` | 必选 | Casdoor 服务器 URL(例如 `https://your-casdoor-domain`) |
40
+ | 环境变量 | 类型 | 描述 |
41
+ | ------------------------ | -- | ------------------------------------------------- |
42
+ | `AUTH_SECRET` | 必选 | 用于加密会话令牌的密钥。使用以下命令生成:`openssl rand -base64 32` |
43
+ | `AUTH_SSO_PROVIDERS` | 必选 | SSO 提供商。使用 Casdoor 请填写 `casdoor` |
44
+ | `AUTH_CASDOOR_ID` | 必选 | Casdoor 应用的 Client ID |
45
+ | `AUTH_CASDOOR_SECRET` | 必选 | Casdoor 应用的 Client Secret |
46
+ | `AUTH_CASDOOR_ISSUER` | 必选 | Casdoor 服务器 URL(例如 `https://your-casdoor-domain`) |
47
+ | `CASDOOR_WEBHOOK_SECRET` | 可选 | 用于验证 Casdoor 发送的 Webhook 请求是否合法的密钥 |
47
48
 
48
49
  <Callout type={'tip'}>
49
50
  前往 [📘 环境变量](/zh/docs/self-hosting/environment-variables/auth#casdoor) 可查阅相关变量详情。
50
51
  </Callout>
52
+
53
+ ### 配置 Webhook(可选)
54
+
55
+ > 在 Casdoor `>=1.843.0` 上可用。
56
+
57
+ 配置 Casdoor 的 Webhook 以便在用户信息更新时同步到 LobeChat。
58
+
59
+ 1. 前往 `管理工具` -> `Webhooks`,创建一个 Webhook
60
+ 2. 填写以下字段:
61
+ - 链接:`https://your-domain.com/api/webhooks/casdoor`
62
+ - 方法:`POST`
63
+ - 内容类型:`application/json`
64
+ - 协议头:`casdoor-secret`: `你的Webhook密钥`
65
+ - 事件:`update-user`
66
+ 3. 密钥可前往 [generate-secret.vercel.app/10](https://generate-secret.vercel.app/10) 生成
67
+ 4. 将密钥填写到环境变量 `CASDOOR_WEBHOOK_SECRET`
51
68
  </Steps>
52
69
 
53
70
  <Callout type={'info'}>部署成功后,用户将可以通过 Casdoor 身份认证并使用 LobeChat。</Callout>
@@ -41,17 +41,30 @@ tags:
41
41
 
42
42
  When deploying LobeChat, you need to configure the following environment variables:
43
43
 
44
- | Environment Variable | Type | Description |
45
- | -------------------------------- | -------- | ----------------------------------------------------------------------------- |
46
- | `AUTH_SECRET` | Required | Key used to encrypt session tokens. Generate using: `openssl rand -base64 32` |
47
- | `AUTH_SSO_PROVIDERS` | Required | SSO provider for LobeChat. Use `logto` for Logto |
48
- | `AUTH_LOGTO_ID` | Required | App ID from Logto application |
49
- | `AUTH_LOGTO_SECRET` | Required | App Secret from Logto application |
50
- | `AUTH_LOGTO_ISSUER` | Required | Logto issuer URL (e.g., `https://your-tenant.logto.app/oidc`) |
44
+ | Environment Variable | Type | Description |
45
+ | --------------------------- | -------- | ----------------------------------------------------------------------------- |
46
+ | `AUTH_SECRET` | Required | Key used to encrypt session tokens. Generate using: `openssl rand -base64 32` |
47
+ | `AUTH_SSO_PROVIDERS` | Required | SSO provider for LobeChat. Use `logto` for Logto |
48
+ | `AUTH_LOGTO_ID` | Required | App ID from Logto application |
49
+ | `AUTH_LOGTO_SECRET` | Required | App Secret from Logto application |
50
+ | `AUTH_LOGTO_ISSUER` | Required | Logto issuer URL (e.g., `https://your-tenant.logto.app/oidc`) |
51
+ | `LOGTO_WEBHOOK_SIGNING_KEY` | Optional | Secret key for validating Webhook requests from Logto |
51
52
 
52
53
  <Callout type={'tip'}>
53
54
  Go to [📘 Environment Variables](/docs/self-hosting/environment-variables/auth#logto) for detailed information on these variables.
54
55
  </Callout>
56
+
57
+ ### Configure Webhook (Optional)
58
+
59
+ Configure Logto Webhook to sync user data updates to LobeChat.
60
+
61
+ 1. Go to **Webhooks** in Logto Console and create a Webhook
62
+ 2. Fill in the following fields:
63
+ - Endpoint URL: `https://your-domain.com/api/webhooks/logto`
64
+ - Events:
65
+ - `User.Data.Updated`: Sync user profile updates
66
+ - `User.SuspensionStatus.Updated`: Sync user suspension status
67
+ 3. After creation, copy the `Signing Key` and set it in the `LOGTO_WEBHOOK_SIGNING_KEY` environment variable
55
68
  </Steps>
56
69
 
57
70
  <Callout type={'info'}>
@@ -39,17 +39,30 @@ tags:
39
39
 
40
40
  在部署 LobeChat 时,你需要配置以下环境变量:
41
41
 
42
- | 环境变量 | 类型 | 描述 |
43
- | -------------------------------- | -- | --------------------------------------------------------- |
44
- | `AUTH_SECRET` | 必选 | 用于加密会话令牌的密钥。使用以下命令生成:`openssl rand -base64 32` |
45
- | `AUTH_SSO_PROVIDERS` | 必选 | SSO 提供商。使用 Logto 请填写 `logto` |
46
- | `AUTH_LOGTO_ID` | 必选 | Logto 应用的 App ID |
47
- | `AUTH_LOGTO_SECRET` | 必选 | Logto 应用的 App Secret |
48
- | `AUTH_LOGTO_ISSUER` | 必选 | Logto Issuer URL(例如 `https://your-tenant.logto.app/oidc`) |
42
+ | 环境变量 | 类型 | 描述 |
43
+ | --------------------------- | -- | --------------------------------------------------------- |
44
+ | `AUTH_SECRET` | 必选 | 用于加密会话令牌的密钥。使用以下命令生成:`openssl rand -base64 32` |
45
+ | `AUTH_SSO_PROVIDERS` | 必选 | SSO 提供商。使用 Logto 请填写 `logto` |
46
+ | `AUTH_LOGTO_ID` | 必选 | Logto 应用的 App ID |
47
+ | `AUTH_LOGTO_SECRET` | 必选 | Logto 应用的 App Secret |
48
+ | `AUTH_LOGTO_ISSUER` | 必选 | Logto Issuer URL(例如 `https://your-tenant.logto.app/oidc`) |
49
+ | `LOGTO_WEBHOOK_SIGNING_KEY` | 可选 | 用于验证 Logto 发送的 Webhook 请求是否合法的密钥 |
49
50
 
50
51
  <Callout type={'tip'}>
51
52
  前往 [📘 环境变量](/zh/docs/self-hosting/environment-variables/auth#logto) 可查阅相关变量详情。
52
53
  </Callout>
54
+
55
+ ### 配置 Webhook(可选)
56
+
57
+ 配置 Logto 的 Webhook,以便在用户信息更新时 LobeChat 可以接收到通知并同步数据。
58
+
59
+ 1. 前往 Logto 控制台的 `Webhooks`,创建一个 Webhook
60
+ 2. 填写以下字段:
61
+ - 端点 URL:`https://your-domain.com/api/webhooks/logto`
62
+ - 事件:
63
+ - `User.Data.Updated`:同步用户资料信息的更新
64
+ - `User.SuspensionStatus.Updated`:同步用户暂停状态
65
+ 3. 创建后,复制 `签名密钥` 填写到环境变量 `LOGTO_WEBHOOK_SIGNING_KEY`
53
66
  </Steps>
54
67
 
55
68
  <Callout type={'info'}>部署成功后,用户将可以通过 Logto 身份认证并使用 LobeChat。</Callout>
@@ -94,9 +94,10 @@
94
94
  "betterAuth.signin.orContinueWith": "أو",
95
95
  "betterAuth.signin.passwordPlaceholder": "أدخل كلمة المرور",
96
96
  "betterAuth.signin.passwordStep.subtitle": "أدخل كلمة المرور للمتابعة",
97
+ "betterAuth.signin.setPassword": "قم بتعيين كلمة مرور",
97
98
  "betterAuth.signin.signupLink": "سجّل الآن",
98
99
  "betterAuth.signin.socialError": "فشل تسجيل الدخول الاجتماعي، يرجى المحاولة مرة أخرى",
99
- "betterAuth.signin.socialOnlyHint": "تم تسجيل هذا البريد الإلكتروني باستخدام حساب اجتماعي. يرجى تسجيل الدخول باستخدام مزود الخدمة المناسب.",
100
+ "betterAuth.signin.socialOnlyHint": "تم تسجيل هذا البريد الإلكتروني عبر حساب اجتماعي تابع لطرف ثالث. سجّل الدخول باستخدام ذلك المزود، أو",
100
101
  "betterAuth.signin.submit": "تسجيل الدخول",
101
102
  "betterAuth.signup.confirmPasswordPlaceholder": "تأكيد كلمة المرور",
102
103
  "betterAuth.signup.emailPlaceholder": "أدخل عنوان بريدك الإلكتروني",
@@ -271,20 +271,20 @@
271
271
  "chatgpt-4o-latest.description": "ChatGPT-4o هو نموذج ديناميكي يتم تحديثه في الوقت الفعلي، يجمع بين الفهم العميق والقدرة على التوليد لتلبية احتياجات الاستخدام الواسعة مثل دعم العملاء والتعليم والدعم الفني.",
272
272
  "claude-2.0.description": "Claude 2 يقدم تحسينات رئيسية للمؤسسات، بما في ذلك سياق 200 ألف رمز، تقليل الهلوسة، دعم التعليمات النظامية، وميزة جديدة: استدعاء الأدوات.",
273
273
  "claude-2.1.description": "Claude 2 يقدم تحسينات رئيسية للمؤسسات، بما في ذلك سياق 200 ألف رمز، تقليل الهلوسة، دعم التعليمات النظامية، وميزة جديدة: استدعاء الأدوات.",
274
- "claude-3-5-haiku-20241022.description": "Claude 3.5 Haiku هو أسرع نموذج من الجيل التالي من Anthropic. مقارنةً بـ Claude 3 Haiku، يقدم تحسينات في المهارات ويتفوق على أكبر نموذج سابق Claude 3 Opus في العديد من اختبارات الذكاء.",
274
+ "claude-3-5-haiku-20241022.description": "Claude 3.5 Haiku هو أسرع نموذج من الجيل الجديد من Anthropic، مع تحسينات في المهارات وتفوق على النموذج الرائد السابق Claude 3 Opus في العديد من المعايير.",
275
275
  "claude-3-5-haiku-latest.description": "Claude 3.5 Haiku يقدم استجابات سريعة للمهام الخفيفة.",
276
- "claude-3-7-sonnet-20250219.description": "Claude 3.7 Sonnet هو أذكى نموذج من Anthropic وأول نموذج هجيني للاستدلال في السوق. يمكنه تقديم ردود شبه فورية أو استدلال تدريجي مرئي للمستخدمين. يتميز Sonnet بقوة خاصة في البرمجة، علم البيانات، الرؤية، ومهام الوكلاء.",
276
+ "claude-3-7-sonnet-20250219.description": "Claude Sonnet 3.7 هو أذكى نموذج من Anthropic وأول نموذج هجيني للاستدلال في السوق، يدعم الاستجابات الفورية أو التفكير المطول مع تحكم دقيق.",
277
277
  "claude-3-7-sonnet-latest.description": "Claude 3.7 Sonnet هو أحدث وأقوى نموذج من Anthropic للمهام المعقدة، يتميز بالأداء العالي، الذكاء، الطلاقة، والفهم العميق.",
278
278
  "claude-3-haiku-20240307.description": "Claude 3 Haiku هو أسرع وأصغر نموذج من Anthropic، مصمم لتقديم استجابات شبه فورية بأداء سريع ودقيق.",
279
279
  "claude-3-opus-20240229.description": "Claude 3 Opus هو أقوى نموذج من Anthropic للمهام المعقدة، يتميز بالأداء العالي، الذكاء، الطلاقة، والفهم.",
280
280
  "claude-3-sonnet-20240229.description": "Claude 3 Sonnet يوازن بين الذكاء والسرعة لتلبية احتياجات المؤسسات، ويوفر فائدة عالية بتكلفة أقل ونشر موثوق على نطاق واسع.",
281
- "claude-haiku-4-5-20251001.description": "Claude Haiku 4.5 هو أسرع وأذكى نموذج Haiku من Anthropic، يتميز بسرعة فائقة وقدرة استدلال موسعة.",
281
+ "claude-haiku-4-5-20251001.description": "Claude Haiku 4.5 هو أسرع وأكثر نماذج Haiku ذكاءً من Anthropic، يتميز بسرعة فائقة وقدرة على التفكير المطول.",
282
282
  "claude-opus-4-1-20250805-thinking.description": "Claude Opus 4.1 Thinking هو إصدار متقدم يمكنه عرض عملية تفكيره.",
283
- "claude-opus-4-1-20250805.description": "Claude Opus 4.1 هو أحدث وأقوى نموذج من Anthropic للمهام المعقدة، يتميز بالأداء العالي، الذكاء، الطلاقة، والفهم.",
284
- "claude-opus-4-20250514.description": "Claude Opus 4 هو أقوى نموذج من Anthropic للمهام المعقدة للغاية، يتميز بالأداء العالي، الذكاء، الطلاقة، والفهم العميق.",
283
+ "claude-opus-4-1-20250805.description": "Claude Opus 4.1 هو أحدث وأقوى نموذج من Anthropic للمهام المعقدة للغاية، يتميز بالأداء العالي والذكاء والطلاقة والفهم العميق.",
284
+ "claude-opus-4-20250514.description": "Claude Opus 4 هو أقوى نموذج من Anthropic للمهام المعقدة للغاية، يتميز بالأداء العالي والذكاء والطلاقة والفهم العميق.",
285
285
  "claude-opus-4-5-20251101.description": "Claude Opus 4.5 هو النموذج الرائد من Anthropic، يجمع بين الذكاء الاستثنائي والأداء القابل للتوسع، مثالي للمهام المعقدة التي تتطلب استجابات عالية الجودة وتفكير متقدم.",
286
286
  "claude-sonnet-4-20250514-thinking.description": "Claude Sonnet 4 Thinking يمكنه تقديم استجابات شبه فورية أو تفكير متسلسل مرئي.",
287
- "claude-sonnet-4-20250514.description": "Claude Sonnet 4 يمكنه تقديم ردود شبه فورية أو تفكير تدريجي بخطوات مرئية.",
287
+ "claude-sonnet-4-20250514.description": "Claude Sonnet 4 هو أذكى نموذج من Anthropic حتى الآن، يوفر استجابات شبه فورية أو تفكيرًا متسلسلًا مع تحكم دقيق لمستخدمي واجهة البرمجة.",
288
288
  "claude-sonnet-4-5-20250929.description": "Claude Sonnet 4.5 هو أذكى نموذج من Anthropic حتى الآن.",
289
289
  "codegeex-4.description": "CodeGeeX-4 هو مساعد برمجة ذكي يدعم الأسئلة والأجوبة متعددة اللغات وإكمال الشيفرة لزيادة إنتاجية المطورين.",
290
290
  "codegeex4-all-9b.description": "CodeGeeX4-ALL-9B هو نموذج توليد شيفرة متعدد اللغات يدعم الإكمال والتوليد، تفسير الشيفرة، البحث عبر الإنترنت، استدعاء الوظائف، وأسئلة وأجوبة على مستوى المستودع، ويغطي مجموعة واسعة من سيناريوهات تطوير البرمجيات. يُعد من أفضل نماذج الشيفرة تحت 10B.",
@@ -355,7 +355,6 @@
355
355
  "deepseek-ai/deepseek-v3.1-terminus.description": "DeepSeek V3.1 هو نموذج تفكير من الجيل التالي يتمتع بقدرات أقوى في التفكير المعقد وسلسلة التفكير لمهام التحليل العميق.",
356
356
  "deepseek-ai/deepseek-v3.1.description": "DeepSeek V3.1 هو نموذج تفكير من الجيل التالي يتمتع بقدرات أقوى في التفكير المعقد وسلسلة التفكير لمهام التحليل العميق.",
357
357
  "deepseek-ai/deepseek-vl2.description": "DeepSeek-VL2 هو نموذج رؤية-لغة MoE يعتمد على DeepSeekMoE-27B مع تنشيط متفرق، ويحقق أداءً قويًا باستخدام 4.5 مليار معلمة نشطة فقط. يتميز في الأسئلة البصرية، وOCR، وفهم المستندات/الجداول/المخططات، والتأريض البصري.",
358
- "deepseek-chat.description": "نموذج مفتوح المصدر جديد يجمع بين القدرات العامة والبرمجية. يحافظ على حوار النموذج العام وقوة نموذج البرمجة، مع تحسين التوافق مع تفضيلات المستخدم. DeepSeek-V2.5 يعزز أيضًا مهارات الكتابة واتباع التعليمات.",
359
358
  "deepseek-coder-33B-instruct.description": "DeepSeek Coder 33B هو نموذج لغة برمجية تم تدريبه على 2 تريليون رمز (87٪ كود، 13٪ نص صيني/إنجليزي). يقدم نافذة سياق 16K ومهام الإكمال في المنتصف، ويوفر إكمال كود على مستوى المشاريع وملء مقاطع الكود.",
360
359
  "deepseek-coder-v2.description": "DeepSeek Coder V2 هو نموذج كود MoE مفتوح المصدر يتميز بأداء قوي في مهام البرمجة، ويضاهي GPT-4 Turbo.",
361
360
  "deepseek-coder-v2:236b.description": "DeepSeek Coder V2 هو نموذج كود MoE مفتوح المصدر يتميز بأداء قوي في مهام البرمجة، ويضاهي GPT-4 Turbo.",
@@ -378,7 +377,6 @@
378
377
  "deepseek-r1-fast-online.description": "الإصدار الكامل السريع من DeepSeek R1 مع بحث ويب في الوقت الحقيقي، يجمع بين قدرات بحجم 671B واستجابة أسرع.",
379
378
  "deepseek-r1-online.description": "الإصدار الكامل من DeepSeek R1 مع 671 مليار معلمة وبحث ويب في الوقت الحقيقي، يوفر فهمًا وتوليدًا أقوى.",
380
379
  "deepseek-r1.description": "يستخدم DeepSeek-R1 بيانات البداية الباردة قبل التعلم المعزز ويؤدي أداءً مماثلًا لـ OpenAI-o1 في الرياضيات، والبرمجة، والتفكير.",
381
- "deepseek-reasoner.description": "وضع التفكير في DeepSeek V3.2 ينتج سلسلة من الأفكار قبل الإجابة النهائية لتحسين الدقة.",
382
380
  "deepseek-v2.description": "DeepSeek V2 هو نموذج MoE فعال لمعالجة منخفضة التكلفة.",
383
381
  "deepseek-v2:236b.description": "DeepSeek V2 236B هو نموذج DeepSeek الموجه للبرمجة مع قدرات قوية في توليد الكود.",
384
382
  "deepseek-v3-0324.description": "DeepSeek-V3-0324 هو نموذج MoE يحتوي على 671 مليار معلمة يتميز بقوة في البرمجة، والقدرات التقنية، وفهم السياق، والتعامل مع النصوص الطويلة.",
@@ -472,7 +470,6 @@
472
470
  "ernie-tiny-8k.description": "ERNIE Tiny 8K هو نموذج فائق الخفة للأسئلة البسيطة، والتصنيف، والاستدلال منخفض التكلفة.",
473
471
  "ernie-x1-turbo-32k.description": "ERNIE X1 Turbo 32K هو نموذج تفكير سريع بسياق 32K للاستدلال المعقد والدردشة متعددة الأدوار.",
474
472
  "ernie-x1.1-preview.description": "معاينة ERNIE X1.1 هو نموذج تفكير مخصص للتقييم والاختبار.",
475
- "fal-ai/bytedance/seedream/v4.description": "Seedream 4.0 هو نموذج توليد صور من ByteDance Seed، يدعم إدخال النصوص والصور مع تحكم عالي الجودة في إخراج الصور. يقوم بإنشاء صور من التعليمات النصية.",
476
473
  "fal-ai/flux-kontext/dev.description": "نموذج FLUX.1 يركز على تحرير الصور، ويدعم إدخال النصوص والصور.",
477
474
  "fal-ai/flux-pro/kontext.description": "FLUX.1 Kontext [pro] يقبل النصوص وصور مرجعية كمدخلات، مما يتيح تعديلات محلية مستهدفة وتحولات معقدة في المشهد العام.",
478
475
  "fal-ai/flux/krea.description": "Flux Krea [dev] هو نموذج لتوليد الصور يتميز بميول جمالية نحو صور أكثر واقعية وطبيعية.",
@@ -480,8 +477,6 @@
480
477
  "fal-ai/hunyuan-image/v3.description": "نموذج قوي لتوليد الصور متعدد الوسائط أصلي.",
481
478
  "fal-ai/imagen4/preview.description": "نموذج عالي الجودة لتوليد الصور من Google.",
482
479
  "fal-ai/nano-banana.description": "Nano Banana هو أحدث وأسرع وأكثر نماذج Google كفاءةً لتوليد وتحرير الصور من خلال المحادثة.",
483
- "fal-ai/qwen-image-edit.description": "نموذج تحرير صور احترافي من فريق Qwen يدعم التعديلات الدلالية والمظهرية، ويحرر النصوص الصينية والإنجليزية بدقة، ويدعم تعديلات عالية الجودة مثل نقل الأسلوب وتدوير العناصر.",
484
- "fal-ai/qwen-image.description": "نموذج توليد صور قوي من فريق Qwen يتميز بعرض مميز للنصوص الصينية وأنماط بصرية متنوعة.",
485
480
  "flux-1-schnell.description": "نموذج تحويل النص إلى صورة يحتوي على 12 مليار معلمة من Black Forest Labs يستخدم تقنيات تقطير الانتشار العدائي الكامن لتوليد صور عالية الجودة في 1-4 خطوات. ينافس البدائل المغلقة ومتاح بموجب ترخيص Apache-2.0 للاستخدام الشخصي والبحثي والتجاري.",
486
481
  "flux-dev.description": "FLUX.1 [dev] هو نموذج مفتوح الأوزان ومقطر للاستخدام غير التجاري. يحافظ على جودة صور قريبة من المستوى الاحترافي واتباع التعليمات مع كفاءة تشغيل أعلى مقارنة بالنماذج القياسية من نفس الحجم.",
487
482
  "flux-kontext-max.description": "توليد وتحرير صور سياقية متقدمة، تجمع بين النصوص والصور لتحقيق نتائج دقيقة ومتسقة.",
@@ -513,8 +508,6 @@
513
508
  "gemini-2.0-flash-lite-001.description": "إصدار من Gemini 2.0 Flash محسن لتقليل التكلفة وتقليل التأخير.",
514
509
  "gemini-2.0-flash-lite.description": "إصدار من Gemini 2.0 Flash محسن لتقليل التكلفة وتقليل التأخير.",
515
510
  "gemini-2.0-flash.description": "Gemini 2.0 Flash يقدم ميزات الجيل التالي بما في ذلك السرعة الاستثنائية، واستخدام الأدوات الأصلية، والتوليد متعدد الوسائط، وسياق يصل إلى مليون رمز.",
516
- "gemini-2.5-flash-image-preview.description": "Nano Banana هو أحدث وأسرع وأكثر نماذج Google متعددة الوسائط كفاءة، يتيح توليد الصور وتحريرها عبر المحادثة.",
517
- "gemini-2.5-flash-image-preview:image.description": "Nano Banana هو أحدث وأسرع وأكثر نماذج Google متعددة الوسائط كفاءة، يتيح توليد الصور وتحريرها عبر المحادثة.",
518
511
  "gemini-2.5-flash-image.description": "Nano Banana هو أحدث وأسرع وأكثر نماذج Google متعددة الوسائط كفاءة، يتيح توليد الصور وتحريرها عبر المحادثة.",
519
512
  "gemini-2.5-flash-image:image.description": "Nano Banana هو أحدث وأسرع وأكثر نماذج Google متعددة الوسائط كفاءة، يتيح توليد الصور وتحريرها عبر المحادثة.",
520
513
  "gemini-2.5-flash-lite-preview-06-17.description": "Gemini 2.5 Flash-Lite Preview هو أصغر نموذج من Google وأفضلها من حيث القيمة، مصمم للاستخدام واسع النطاق.",
@@ -529,7 +522,6 @@
529
522
  "gemini-2.5-pro.description": "Gemini 2.5 Pro هو النموذج الرائد من Google في مجال الاستدلال، يدعم السياق الطويل للمهام المعقدة.",
530
523
  "gemini-3-flash-preview.description": "Gemini 3 Flash هو أذكى نموذج تم تصميمه للسرعة، يجمع بين الذكاء المتقدم وأساس بحث ممتاز.",
531
524
  "gemini-3-pro-image-preview.description": "Gemini 3 Pro Image (Nano Banana Pro) هو نموذج توليد الصور من Google ويدعم المحادثة متعددة الوسائط.",
532
- "gemini-3-pro-image-preview:image.description": "Gemini 3 Pro Image (Nano Banana Pro) هو نموذج توليد الصور من Google ويدعم المحادثة متعددة الوسائط.",
533
525
  "gemini-3-pro-preview.description": "Gemini 3 Pro هو أقوى نموذج من Google للوكيل الذكي والبرمجة الإبداعية، يقدم تفاعلاً أعمق وصورًا أغنى مع استدلال متقدم.",
534
526
  "gemini-flash-latest.description": "أحدث إصدار من Gemini Flash",
535
527
  "gemini-flash-lite-latest.description": "أحدث إصدار من Gemini Flash-Lite",
@@ -29,6 +29,7 @@
29
29
  "internlm.description": "منظمة مفتوحة المصدر تركز على أبحاث النماذج الكبيرة والأدوات، وتوفر منصة فعالة وسهلة الاستخدام تتيح الوصول إلى أحدث النماذج والخوارزميات.",
30
30
  "jina.description": "تأسست Jina AI في عام 2020، وهي شركة رائدة في مجال البحث الذكي. تشمل تقنياتها نماذج المتجهات، ومعيدو الترتيب، ونماذج لغوية صغيرة لبناء تطبيقات بحث توليدية ومتعددة الوسائط عالية الجودة.",
31
31
  "lmstudio.description": "LM Studio هو تطبيق سطح مكتب لتطوير وتجربة النماذج اللغوية الكبيرة على جهازك.",
32
+ "lobehub.description": "تستخدم LobeHub Cloud واجهات برمجة التطبيقات الرسمية للوصول إلى نماذج الذكاء الاصطناعي، وتقيس الاستخدام من خلال الأرصدة المرتبطة برموز النماذج.",
32
33
  "minimax.description": "تأسست MiniMax في عام 2021، وتبني نماذج ذكاء اصطناعي متعددة الوسائط للأغراض العامة، بما في ذلك نماذج نصية بمليارات المعلمات، ونماذج صوتية وبصرية، بالإضافة إلى تطبيقات مثل Hailuo AI.",
33
34
  "mistral.description": "تقدم Mistral نماذج متقدمة عامة ومتخصصة وبحثية للتفكير المعقد، والمهام متعددة اللغات، وتوليد الأكواد، مع دعم استدعاء الوظائف للتكامل المخصص.",
34
35
  "modelscope.description": "ModelScope هي منصة نماذج كخدمة من Alibaba Cloud، تقدم مجموعة واسعة من النماذج وخدمات الاستدلال.",
@@ -495,6 +495,7 @@
495
495
  "skillStore.networkError": "خطأ في الشبكة، يرجى المحاولة مرة أخرى",
496
496
  "skillStore.search": "ابحث عن المهارات بالاسم أو الكلمة المفتاحية، اضغط Enter للبحث…",
497
497
  "skillStore.tabs.community": "المجتمع",
498
+ "skillStore.tabs.custom": "مخصص",
498
499
  "skillStore.tabs.lobehub": "LobeHub",
499
500
  "skillStore.title": "متجر المهارات",
500
501
  "startConversation": "ابدأ المحادثة",
@@ -94,9 +94,10 @@
94
94
  "betterAuth.signin.orContinueWith": "ИЛИ",
95
95
  "betterAuth.signin.passwordPlaceholder": "Въведете паролата си",
96
96
  "betterAuth.signin.passwordStep.subtitle": "Въведете паролата си, за да продължите",
97
+ "betterAuth.signin.setPassword": "създайте парола",
97
98
  "betterAuth.signin.signupLink": "Регистрирайте се сега",
98
99
  "betterAuth.signin.socialError": "Неуспешен вход чрез социална мрежа, опитайте отново",
99
- "betterAuth.signin.socialOnlyHint": "Този имейл е регистриран чрез социален акаунт. Моля, влезте чрез съответния доставчик.",
100
+ "betterAuth.signin.socialOnlyHint": "Този имейл е регистриран чрез акаунт в социална мрежа. Влезте чрез този доставчик или",
100
101
  "betterAuth.signin.submit": "Вход",
101
102
  "betterAuth.signup.confirmPasswordPlaceholder": "Потвърдете паролата си",
102
103
  "betterAuth.signup.emailPlaceholder": "Въведете имейл адрес",