@lobehub/lobehub 2.0.0-next.127 → 2.0.0-next.129

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 (61) hide show
  1. package/.env.example +23 -3
  2. package/.env.example.development +5 -0
  3. package/CHANGELOG.md +50 -0
  4. package/README.md +6 -6
  5. package/README.zh-CN.md +6 -6
  6. package/changelog/v1.json +18 -0
  7. package/docker-compose/local/docker-compose.yml +24 -1
  8. package/docker-compose/local/logto/docker-compose.yml +25 -2
  9. package/docker-compose.development.yml +6 -0
  10. package/docs/development/database-schema.dbml +8 -6
  11. package/locales/ar/auth.json +114 -1
  12. package/locales/bg-BG/auth.json +114 -1
  13. package/locales/de-DE/auth.json +114 -1
  14. package/locales/en-US/auth.json +42 -22
  15. package/locales/es-ES/auth.json +114 -1
  16. package/locales/fa-IR/auth.json +114 -1
  17. package/locales/fr-FR/auth.json +114 -1
  18. package/locales/it-IT/auth.json +114 -1
  19. package/locales/ja-JP/auth.json +114 -1
  20. package/locales/ko-KR/auth.json +114 -1
  21. package/locales/nl-NL/auth.json +114 -1
  22. package/locales/pl-PL/auth.json +114 -1
  23. package/locales/pt-BR/auth.json +114 -1
  24. package/locales/ru-RU/auth.json +114 -1
  25. package/locales/tr-TR/auth.json +114 -1
  26. package/locales/vi-VN/auth.json +114 -1
  27. package/locales/zh-CN/auth.json +36 -29
  28. package/locales/zh-TW/auth.json +114 -1
  29. package/package.json +4 -1
  30. package/packages/database/migrations/0050_thread_and_user_id.sql +18 -0
  31. package/packages/database/migrations/meta/0050_snapshot.json +8792 -0
  32. package/packages/database/migrations/meta/_journal.json +7 -0
  33. package/packages/database/src/client/db.ts +21 -21
  34. package/packages/database/src/core/migrations.json +51 -10
  35. package/packages/database/src/repositories/dataImporter/deprecated/index.ts +5 -5
  36. package/packages/database/src/repositories/dataImporter/index.ts +59 -59
  37. package/packages/database/src/repositories/knowledge/index.test.ts +17 -5
  38. package/packages/database/src/repositories/knowledge/index.ts +6 -6
  39. package/packages/database/src/schemas/generation.ts +16 -16
  40. package/packages/database/src/schemas/nextauth.ts +3 -3
  41. package/packages/database/src/schemas/oidc.ts +36 -36
  42. package/packages/database/src/schemas/topic.ts +8 -3
  43. package/packages/model-runtime/src/providers/newapi/index.ts +61 -18
  44. package/packages/model-runtime/src/runtimeMap.ts +1 -0
  45. package/packages/types/src/topic/thread.ts +3 -3
  46. package/src/app/[variants]/(main)/settings/provider/features/ProviderConfig/UpdateProviderInfo/SettingModal.tsx +10 -6
  47. package/src/envs/redis.ts +106 -0
  48. package/src/libs/redis/index.ts +5 -0
  49. package/src/libs/redis/manager.test.ts +107 -0
  50. package/src/libs/redis/manager.ts +56 -0
  51. package/src/libs/redis/redis.test.ts +158 -0
  52. package/src/libs/redis/redis.ts +117 -0
  53. package/src/libs/redis/types.ts +71 -0
  54. package/src/libs/redis/upstash.test.ts +154 -0
  55. package/src/libs/redis/upstash.ts +109 -0
  56. package/src/libs/redis/utils.test.ts +46 -0
  57. package/src/libs/redis/utils.ts +53 -0
  58. package/src/store/chat/slices/thread/action.ts +1 -1
  59. package/src/store/chat/slices/thread/initialState.ts +1 -1
  60. package/src/store/chat/slices/thread/selectors/util.ts +1 -1
  61. package/.github/workflows/check-console-log.yml +0 -117
package/.env.example CHANGED
@@ -24,9 +24,29 @@
24
24
  # Example: Allow specific internal servers while keeping SSRF protection
25
25
  # SSRF_ALLOW_IP_ADDRESS_LIST=192.168.1.100,10.0.0.50
26
26
 
27
- # #######################################
28
- # ######### AI Provider Service #########
29
- # #######################################
27
+ ########################################
28
+ ############ Redis Settings ############
29
+ ########################################
30
+
31
+ # Connection string for self-hosted Redis (Docker/K8s/managed). Use container hostname when running via docker-compose.
32
+ # REDIS_URL=redis://localhost:6379
33
+
34
+ # Optional database index.
35
+ # REDIS_DATABASE=0
36
+
37
+ # Optional authentication for managed Redis.
38
+ # REDIS_USERNAME=default
39
+ # REDIS_PASSWORD=yourpassword
40
+
41
+ # Set to '1' to enforce TLS when connecting to managed Redis or rediss:// endpoints.
42
+ # REDIS_TLS=0
43
+
44
+ # Namespace prefix for cache/queue keys.
45
+ # REDIS_PREFIX=lobechat
46
+
47
+ ########################################
48
+ ########## AI Provider Service #########
49
+ ########################################
30
50
 
31
51
  # ## OpenAI ###
32
52
 
@@ -31,6 +31,11 @@ DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@localhost:5432/${LOBE_DB
31
31
  # Database driver type
32
32
  DATABASE_DRIVER=node
33
33
 
34
+ # Redis Cache/Queue Configuration
35
+ REDIS_URL=redis://localhost:6379
36
+ REDIS_PREFIX=lobechat
37
+ REDIS_TLS=0
38
+
34
39
  # Authentication Configuration
35
40
  # Enable Better Auth authentication
36
41
  NEXT_PUBLIC_ENABLE_BETTER_AUTH=1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,56 @@
2
2
 
3
3
  # Changelog
4
4
 
5
+ ## [Version 2.0.0-next.129](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.128...v2.0.0-next.129)
6
+
7
+ <sup>Released on **2025-11-28**</sup>
8
+
9
+ #### 🐛 Bug Fixes
10
+
11
+ - **misc**: Filter out file with `sourceType` = `file`.
12
+
13
+ <br/>
14
+
15
+ <details>
16
+ <summary><kbd>Improvements and Fixes</kbd></summary>
17
+
18
+ #### What's fixed
19
+
20
+ - **misc**: Filter out file with `sourceType` = `file`, closes [#10474](https://github.com/lobehub/lobe-chat/issues/10474) ([e1c99a0](https://github.com/lobehub/lobe-chat/commit/e1c99a0))
21
+
22
+ </details>
23
+
24
+ <div align="right">
25
+
26
+ [![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
27
+
28
+ </div>
29
+
30
+ ## [Version 2.0.0-next.128](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.127...v2.0.0-next.128)
31
+
32
+ <sup>Released on **2025-11-28**</sup>
33
+
34
+ #### 💄 Styles
35
+
36
+ - **misc**: Update i18n.
37
+
38
+ <br/>
39
+
40
+ <details>
41
+ <summary><kbd>Improvements and Fixes</kbd></summary>
42
+
43
+ #### Styles
44
+
45
+ - **misc**: Update i18n, closes [#10466](https://github.com/lobehub/lobe-chat/issues/10466) ([37bd67a](https://github.com/lobehub/lobe-chat/commit/37bd67a))
46
+
47
+ </details>
48
+
49
+ <div align="right">
50
+
51
+ [![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
52
+
53
+ </div>
54
+
5
55
  ## [Version 2.0.0-next.127](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.126...v2.0.0-next.127)
6
56
 
7
57
  <sup>Released on **2025-11-27**</sup>
package/README.md CHANGED
@@ -345,12 +345,12 @@ In addition, these plugins are not limited to news aggregation, but can also ext
345
345
 
346
346
  <!-- PLUGIN LIST -->
347
347
 
348
- | Recent Submits | Description |
349
- | ---------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
350
- | [SEO](https://lobechat.com/discover/plugin/SEO)<br/><sup>By **orrenprunckun** on **2025-11-14**</sup> | Enter any URL and keyword and get an On-Page SEO analysis & insights!<br/>`seo` |
351
- | [Shopping tools](https://lobechat.com/discover/plugin/ShoppingTools)<br/><sup>By **shoppingtools** on **2025-10-27**</sup> | Search for products on eBay & AliExpress, find eBay events & coupons. Get prompt examples.<br/>`shopping` `e-bay` `ali-express` `coupons` |
352
- | [Web](https://lobechat.com/discover/plugin/web)<br/><sup>By **Proghit** on **2025-01-24**</sup> | Smart web search that reads and analyzes pages to deliver comprehensive answers from Google results.<br/>`web` `search` |
353
- | [Bing_websearch](https://lobechat.com/discover/plugin/Bingsearch-identifier)<br/><sup>By **FineHow** on **2024-12-22**</sup> | Search for information from the internet base BingApi<br/>`bingsearch` |
348
+ | Recent Submits | Description |
349
+ | -------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
350
+ | [PortfolioMeta](https://lobechat.com/discover/plugin/StockData)<br/><sup>By **portfoliometa** on **2025-11-28**</sup> | Analyze stocks and get comprehensive real-time investment data and analytics.<br/>`stock` |
351
+ | [SEO](https://lobechat.com/discover/plugin/SEO)<br/><sup>By **orrenprunckun** on **2025-11-14**</sup> | Enter any URL and keyword and get an On-Page SEO analysis & insights!<br/>`seo` |
352
+ | [Shopping tools](https://lobechat.com/discover/plugin/ShoppingTools)<br/><sup>By **shoppingtools** on **2025-10-27**</sup> | Search for products on eBay & AliExpress, find eBay events & coupons. Get prompt examples.<br/>`shopping` `e-bay` `ali-express` `coupons` |
353
+ | [Web](https://lobechat.com/discover/plugin/web)<br/><sup>By **Proghit** on **2025-01-24**</sup> | Smart web search that reads and analyzes pages to deliver comprehensive answers from Google results.<br/>`web` `search` |
354
354
 
355
355
  > 📊 Total plugins: [<kbd>**41**</kbd>](https://lobechat.com/discover/plugins)
356
356
 
package/README.zh-CN.md CHANGED
@@ -338,12 +338,12 @@ LobeChat 的插件生态系统是其核心功能的重要扩展,它极大地
338
338
 
339
339
  <!-- PLUGIN LIST -->
340
340
 
341
- | 最近新增 | 描述 |
342
- | -------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
343
- | [SEO](https://lobechat.com/discover/plugin/SEO)<br/><sup>By **orrenprunckun** on **2025-11-14**</sup> | 输入任何 URL 和关键词,获取页面 SEO 分析和见解!<br/>`seo` |
344
- | [购物工具](https://lobechat.com/discover/plugin/ShoppingTools)<br/><sup>By **shoppingtools** on **2025-10-27**</sup> | eBay AliExpress 上搜索产品,查找 eBay 活动和优惠券。获取快速示例。<br/>`购物` `e-bay` `ali-express` `优惠券` |
345
- | [网页](https://lobechat.com/discover/plugin/web)<br/><sup>By **Proghit** on **2025-01-24**</sup> | 智能网页搜索,读取和分析页面,以提供来自 Google 结果的全面答案。<br/>`网页` `搜索` |
346
- | [必应网页搜索](https://lobechat.com/discover/plugin/Bingsearch-identifier)<br/><sup>By **FineHow** on **2024-12-22**</sup> | 通过 BingApi 搜索互联网上的信息<br/>`bingsearch` |
341
+ | 最近新增 | 描述 |
342
+ | --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
343
+ | [PortfolioMeta](https://lobechat.com/discover/plugin/StockData)<br/><sup>By **portfoliometa** on **2025-11-28**</sup> | 分析股票并获取全面的实时投资数据和分析。<br/>`股票` |
344
+ | [SEO](https://lobechat.com/discover/plugin/SEO)<br/><sup>By **orrenprunckun** on **2025-11-14**</sup> | 输入任何 URL 和关键词,获取页面 SEO 分析和见解!<br/>`seo` |
345
+ | [购物工具](https://lobechat.com/discover/plugin/ShoppingTools)<br/><sup>By **shoppingtools** on **2025-10-27**</sup> | eBay 和 AliExpress 上搜索产品,查找 eBay 活动和优惠券。获取快速示例。<br/>`购物` `e-bay` `ali-express` `优惠券` |
346
+ | [网页](https://lobechat.com/discover/plugin/web)<br/><sup>By **Proghit** on **2025-01-24**</sup> | 智能网页搜索,读取和分析页面,以提供来自 Google 结果的全面答案。<br/>`网页` `搜索` |
347
347
 
348
348
  > 📊 Total plugins: [<kbd>**41**</kbd>](https://lobechat.com/discover/plugins)
349
349
 
package/changelog/v1.json CHANGED
@@ -1,4 +1,22 @@
1
1
  [
2
+ {
3
+ "children": {
4
+ "fixes": [
5
+ "Filter out file with sourceType = file."
6
+ ]
7
+ },
8
+ "date": "2025-11-28",
9
+ "version": "2.0.0-next.129"
10
+ },
11
+ {
12
+ "children": {
13
+ "improvements": [
14
+ "Update i18n."
15
+ ]
16
+ },
17
+ "date": "2025-11-28",
18
+ "version": "2.0.0-next.128"
19
+ },
2
20
  {
3
21
  "children": {
4
22
  "fixes": [
@@ -35,6 +35,23 @@ services:
35
35
  networks:
36
36
  - lobe-network
37
37
 
38
+ redis:
39
+ image: redis:7-alpine
40
+ container_name: lobe-redis
41
+ ports:
42
+ - '6379:6379'
43
+ command: redis-server --save 60 1000 --appendonly yes
44
+ volumes:
45
+ - 'redis_data:/data'
46
+ healthcheck:
47
+ test: ['CMD', 'redis-cli', 'ping']
48
+ interval: 5s
49
+ timeout: 3s
50
+ retries: 5
51
+ restart: always
52
+ networks:
53
+ - lobe-network
54
+
38
55
  minio:
39
56
  image: minio/minio:RELEASE.2025-04-22T22-12-26Z
40
57
  container_name: lobe-minio
@@ -107,6 +124,8 @@ services:
107
124
  condition: service_started
108
125
  casdoor:
109
126
  condition: service_started
127
+ redis:
128
+ condition: service_healthy
110
129
 
111
130
  environment:
112
131
  - 'NEXT_AUTH_SSO_PROVIDERS=casdoor'
@@ -121,6 +140,9 @@ services:
121
140
  - 'LLM_VISION_IMAGE_USE_BASE64=1'
122
141
  - 'S3_SET_ACL=0'
123
142
  - 'SEARXNG_URL=http://searxng:8080'
143
+ - 'REDIS_URL=redis://redis:6379'
144
+ - 'REDIS_PREFIX=lobechat'
145
+ - 'REDIS_TLS=0'
124
146
  env_file:
125
147
  - .env
126
148
  restart: always
@@ -248,7 +270,8 @@ volumes:
248
270
  driver: local
249
271
  prometheus_data:
250
272
  driver: local
251
-
273
+ redis_data:
274
+ driver: local
252
275
 
253
276
  networks:
254
277
  lobe-network:
@@ -32,10 +32,27 @@ services:
32
32
  networks:
33
33
  - lobe-network
34
34
 
35
+ redis:
36
+ image: redis:7-alpine
37
+ container_name: lobe-redis
38
+ ports:
39
+ - '6379:6379'
40
+ command: redis-server --save 60 1000 --appendonly yes
41
+ volumes:
42
+ - 'redis_data:/data'
43
+ healthcheck:
44
+ test: ['CMD', 'redis-cli', 'ping']
45
+ interval: 5s
46
+ timeout: 3s
47
+ retries: 5
48
+ restart: always
49
+ networks:
50
+ - lobe-network
51
+
35
52
  minio:
36
53
  image: minio/minio:RELEASE.2025-04-22T22-12-26Z
37
54
  container_name: lobe-minio
38
- network_mode: 'service:network-service'
55
+ network_mode: "service:network-service"
39
56
  volumes:
40
57
  - './s3_data:/etc/minio/data'
41
58
  environment:
@@ -46,7 +63,6 @@ services:
46
63
  command: >
47
64
  server /etc/minio/data --address ":${MINIO_PORT}" --console-address ":9001"
48
65
 
49
-
50
66
  logto:
51
67
  image: svhd/logto
52
68
  container_name: lobe-logto
@@ -75,6 +91,8 @@ services:
75
91
  condition: service_started
76
92
  logto:
77
93
  condition: service_started
94
+ redis:
95
+ condition: service_healthy
78
96
 
79
97
  environment:
80
98
  - 'APP_URL=http://localhost:3210'
@@ -88,6 +106,9 @@ services:
88
106
  - 'S3_BUCKET=${MINIO_LOBE_BUCKET}'
89
107
  - 'S3_PUBLIC_DOMAIN=http://localhost:${MINIO_PORT}'
90
108
  - 'S3_ENABLE_PATH_STYLE=1'
109
+ - 'REDIS_URL=redis://redis:6379'
110
+ - 'REDIS_PREFIX=lobechat'
111
+ - 'REDIS_TLS=0'
91
112
  env_file:
92
113
  - .env
93
114
  restart: always
@@ -97,6 +118,8 @@ volumes:
97
118
  driver: local
98
119
  s3_data:
99
120
  driver: local
121
+ redis_data:
122
+ driver: local
100
123
 
101
124
  networks:
102
125
  lobe-network:
@@ -19,6 +19,10 @@ services:
19
19
  extends:
20
20
  file: docker-compose/local/docker-compose.yml
21
21
  service: postgresql
22
+ redis:
23
+ extends:
24
+ file: docker-compose/local/docker-compose.yml
25
+ service: redis
22
26
  minio:
23
27
  extends:
24
28
  file: docker-compose/local/docker-compose.yml
@@ -78,6 +82,8 @@ volumes:
78
82
  driver: local
79
83
  prometheus_data:
80
84
  driver: local
85
+ redis_data:
86
+ driver: local
81
87
 
82
88
  networks:
83
89
  lobe-network:
@@ -506,7 +506,7 @@ table nextauth_accounts {
506
506
  session_state text
507
507
  token_type text
508
508
  type text [not null]
509
- userId text [not null]
509
+ user_id text [not null]
510
510
 
511
511
  indexes {
512
512
  (provider, providerAccountId) [pk]
@@ -521,17 +521,17 @@ table nextauth_authenticators {
521
521
  credentialPublicKey text [not null]
522
522
  providerAccountId text [not null]
523
523
  transports text
524
- userId text [not null]
524
+ user_id text [not null]
525
525
 
526
526
  indexes {
527
- (userId, credentialID) [pk]
527
+ (user_id, credentialID) [pk]
528
528
  }
529
529
  }
530
530
 
531
531
  table nextauth_sessions {
532
532
  expires timestamp [not null]
533
533
  sessionToken text [pk, not null]
534
- userId text [not null]
534
+ user_id text [not null]
535
535
  }
536
536
 
537
537
  table nextauth_verificationtokens {
@@ -925,10 +925,12 @@ table sessions {
925
925
  table threads {
926
926
  id text [pk, not null]
927
927
  title text
928
+ content text
929
+ editor_data jsonb
928
930
  type text [not null]
929
- status text [default: 'active']
931
+ status text
930
932
  topic_id text [not null]
931
- source_message_id text [not null]
933
+ source_message_id text
932
934
  parent_thread_id text
933
935
  client_id text
934
936
  user_id text [not null]
@@ -52,6 +52,104 @@
52
52
  "required": "لا يمكن أن يكون المحتوى فارغًا"
53
53
  }
54
54
  },
55
+ "betterAuth": {
56
+ "errors": {
57
+ "emailInvalid": "يرجى إدخال عنوان بريد إلكتروني صالح",
58
+ "emailNotRegistered": "هذا البريد الإلكتروني غير مسجل",
59
+ "emailNotVerified": "لم يتم التحقق من البريد الإلكتروني، يرجى التحقق أولاً",
60
+ "emailRequired": "يرجى إدخال عنوان البريد الإلكتروني",
61
+ "firstNameRequired": "يرجى إدخال الاسم الأول",
62
+ "lastNameRequired": "يرجى إدخال اسم العائلة",
63
+ "loginFailed": "فشل تسجيل الدخول، يرجى التحقق من البريد الإلكتروني وكلمة المرور",
64
+ "passwordFormat": "يجب أن تحتوي كلمة المرور على أحرف وأرقام",
65
+ "passwordMaxLength": "يجب ألا تتجاوز كلمة المرور 64 حرفًا",
66
+ "passwordMinLength": "يجب أن تتكون كلمة المرور من 8 أحرف على الأقل",
67
+ "passwordRequired": "يرجى إدخال كلمة المرور",
68
+ "usernameRequired": "يرجى إدخال اسم المستخدم"
69
+ },
70
+ "resetPassword": {
71
+ "backToSignIn": "العودة إلى تسجيل الدخول",
72
+ "confirmPasswordPlaceholder": "تأكيد كلمة المرور الجديدة",
73
+ "confirmPasswordRequired": "يرجى تأكيد كلمة المرور الجديدة",
74
+ "description": "يرجى إدخال كلمة المرور الجديدة",
75
+ "error": "فشل إعادة تعيين كلمة المرور، يرجى المحاولة مرة أخرى",
76
+ "invalidToken": "رابط إعادة التعيين غير صالح أو منتهي الصلاحية",
77
+ "newPasswordPlaceholder": "أدخل كلمة المرور الجديدة",
78
+ "passwordMismatch": "كلمتا المرور غير متطابقتين",
79
+ "submit": "إعادة تعيين كلمة المرور",
80
+ "success": "تمت إعادة تعيين كلمة المرور بنجاح، يرجى تسجيل الدخول باستخدام كلمة المرور الجديدة",
81
+ "title": "إعادة تعيين كلمة المرور"
82
+ },
83
+ "signin": {
84
+ "backToEmail": "العودة لتعديل البريد الإلكتروني",
85
+ "continueWithAuth0": "تسجيل الدخول باستخدام Auth0",
86
+ "continueWithAuthelia": "تسجيل الدخول باستخدام Authelia",
87
+ "continueWithAuthentik": "تسجيل الدخول باستخدام Authentik",
88
+ "continueWithCasdoor": "تسجيل الدخول باستخدام Casdoor",
89
+ "continueWithCloudflareZeroTrust": "تسجيل الدخول باستخدام Cloudflare Zero Trust",
90
+ "continueWithCognito": "تسجيل الدخول باستخدام AWS Cognito",
91
+ "continueWithFeishu": "تسجيل الدخول باستخدام Feishu",
92
+ "continueWithGithub": "تسجيل الدخول باستخدام GitHub",
93
+ "continueWithGoogle": "تسجيل الدخول باستخدام Google",
94
+ "continueWithKeycloak": "تسجيل الدخول باستخدام Keycloak",
95
+ "continueWithLogto": "تسجيل الدخول باستخدام Logto",
96
+ "continueWithMicrosoft": "تسجيل الدخول باستخدام Microsoft",
97
+ "continueWithOIDC": "تسجيل الدخول باستخدام OIDC",
98
+ "continueWithOkta": "تسجيل الدخول باستخدام Okta",
99
+ "continueWithWechat": "تسجيل الدخول باستخدام WeChat",
100
+ "continueWithZitadel": "تسجيل الدخول باستخدام Zitadel",
101
+ "emailPlaceholder": "يرجى إدخال عنوان البريد الإلكتروني",
102
+ "emailStep": {
103
+ "subtitle": "يرجى إدخال بريدك الإلكتروني للمتابعة",
104
+ "title": "تسجيل الدخول"
105
+ },
106
+ "error": "فشل تسجيل الدخول، يرجى التحقق من البريد الإلكتروني وكلمة المرور",
107
+ "forgotPassword": "هل نسيت كلمة المرور؟",
108
+ "forgotPasswordError": "فشل إرسال رابط إعادة تعيين كلمة المرور",
109
+ "forgotPasswordSent": "تم إرسال رابط إعادة تعيين كلمة المرور، يرجى التحقق من بريدك الإلكتروني",
110
+ "magicLinkButton": "إرسال رابط تسجيل الدخول",
111
+ "magicLinkError": "فشل إرسال رابط تسجيل الدخول، يرجى المحاولة لاحقًا",
112
+ "magicLinkSent": "تم إرسال رابط تسجيل الدخول، يرجى التحقق من بريدك الإلكتروني",
113
+ "nextStep": "الخطوة التالية",
114
+ "noAccount": "ليس لديك حساب؟",
115
+ "orContinueWith": "أو المتابعة باستخدام",
116
+ "passwordPlaceholder": "يرجى إدخال كلمة المرور",
117
+ "passwordStep": {
118
+ "subtitle": "يرجى إدخال كلمة المرور للمتابعة"
119
+ },
120
+ "signupLink": "سجّل الآن",
121
+ "socialError": "فشل تسجيل الدخول عبر الشبكات الاجتماعية، يرجى المحاولة مرة أخرى",
122
+ "socialOnlyHint": "تم تسجيل هذا البريد الإلكتروني باستخدام حساب اجتماعي، يرجى تسجيل الدخول باستخدامه",
123
+ "submit": "تسجيل الدخول"
124
+ },
125
+ "signup": {
126
+ "emailPlaceholder": "يرجى إدخال عنوان البريد الإلكتروني",
127
+ "error": "فشل التسجيل، يرجى المحاولة مرة أخرى",
128
+ "firstNamePlaceholder": "الاسم الأول",
129
+ "hasAccount": "هل لديك حساب؟",
130
+ "lastNamePlaceholder": "اسم العائلة",
131
+ "passwordPlaceholder": "يرجى إدخال كلمة المرور",
132
+ "signinLink": "تسجيل الدخول الآن",
133
+ "submit": "تسجيل",
134
+ "subtitle": "انضم إلى مجتمع LobeChat",
135
+ "success": "تم التسجيل بنجاح! يرجى التحقق من بريدك الإلكتروني لتأكيد الحساب",
136
+ "title": "إنشاء حساب",
137
+ "usernamePlaceholder": "يرجى إدخال اسم المستخدم"
138
+ },
139
+ "verifyEmail": {
140
+ "backToSignIn": "العودة إلى تسجيل الدخول",
141
+ "checkSpam": "إذا لم تتلقَ البريد الإلكتروني، يرجى التحقق من مجلد الرسائل غير المرغوب فيها",
142
+ "descriptionPrefix": "لقد أرسلنا رسالة تحقق إلى",
143
+ "descriptionSuffix": "",
144
+ "resend": {
145
+ "button": "إعادة إرسال رسالة التحقق",
146
+ "error": "فشل الإرسال، يرجى المحاولة لاحقًا",
147
+ "noEmail": "عنوان البريد الإلكتروني مفقود",
148
+ "success": "تمت إعادة إرسال رسالة التحقق، يرجى التحقق من بريدك الإلكتروني"
149
+ },
150
+ "title": "تحقق من بريدك الإلكتروني"
151
+ }
152
+ },
55
153
  "date": {
56
154
  "prevMonth": "الشهر الماضي",
57
155
  "recent30Days": "آخر 30 يومًا"
@@ -86,16 +184,31 @@
86
184
  "loginOrSignup": "تسجيل الدخول / الاشتراك",
87
185
  "profile": {
88
186
  "avatar": "الصورة الشخصية",
187
+ "cancel": "إلغاء",
188
+ "changePassword": "إعادة تعيين كلمة المرور",
89
189
  "email": "عنوان البريد الإلكتروني",
190
+ "fullName": "الاسم الكامل",
191
+ "fullNameInputHint": "يرجى إدخال الاسم الكامل الجديد",
192
+ "password": "كلمة المرور",
193
+ "resetPasswordError": "فشل إرسال رابط إعادة تعيين كلمة المرور",
194
+ "resetPasswordSent": "تم إرسال رابط إعادة تعيين كلمة المرور، يرجى التحقق من بريدك الإلكتروني",
195
+ "save": "حفظ",
90
196
  "sso": {
197
+ "link": {
198
+ "button": "ربط الحساب",
199
+ "success": "تم ربط الحساب بنجاح"
200
+ },
91
201
  "loading": "جارٍ تحميل الحسابات المرتبطة من طرف ثالث",
92
202
  "providers": "الحسابات المتصلة",
93
203
  "unlink": {
94
- "description": "بعد unlink ، لن تتمكن من تسجيل الدخول باستخدام حساب {{provider}} \"{{providerAccountId}}\". إذا كنت بحاجة إلى إعادة ربط حساب {{provider}} بالحساب الحالي، يرجى التأكد من أن عنوان البريد الإلكتروني لحساب {{provider}} هو {{email}}، وسنقوم بربطه تلقائيًا بالحساب المسجل الدخول عند تسجيل الدخول.",
204
+ "description": "بعد إلغاء الربط، لن تتمكن من تسجيل الدخول باستخدام حساب {{provider}} \"{{providerAccountId}}\". إذا كنت ترغب في ربط حساب {{provider}} بهذا الحساب مرة أخرى، يرجى التأكد من أن عنوان البريد الإلكتروني لحساب {{provider}} هو {{email}}، وسنقوم بربطه تلقائيًا عند تسجيل الدخول.",
95
205
  "forbidden": "يجب أن تحتفظ بحساب طرف ثالث واحد على الأقل مرتبطًا.",
96
206
  "title": "هل تريد فصل حساب الطرف الثالث {{provider}}؟"
97
207
  }
98
208
  },
209
+ "title": "تفاصيل الملف الشخصي",
210
+ "updateAvatar": "تحديث الصورة الشخصية",
211
+ "updateFullName": "تحديث الاسم الكامل",
99
212
  "username": "اسم المستخدم"
100
213
  },
101
214
  "signout": "تسجيل الخروج",
@@ -52,6 +52,104 @@
52
52
  "required": "Полето не може да бъде празно"
53
53
  }
54
54
  },
55
+ "betterAuth": {
56
+ "errors": {
57
+ "emailInvalid": "Моля, въведете валиден имейл адрес",
58
+ "emailNotRegistered": "Този имейл все още не е регистриран",
59
+ "emailNotVerified": "Имейлът не е потвърден, моля първо го потвърдете",
60
+ "emailRequired": "Моля, въведете имейл адрес",
61
+ "firstNameRequired": "Моля, въведете собствено име",
62
+ "lastNameRequired": "Моля, въведете фамилно име",
63
+ "loginFailed": "Входът не бе успешен, моля проверете имейла и паролата",
64
+ "passwordFormat": "Паролата трябва да съдържа както букви, така и цифри",
65
+ "passwordMaxLength": "Паролата не може да надвишава 64 знака",
66
+ "passwordMinLength": "Паролата трябва да бъде поне 8 знака",
67
+ "passwordRequired": "Моля, въведете парола",
68
+ "usernameRequired": "Моля, въведете потребителско име"
69
+ },
70
+ "resetPassword": {
71
+ "backToSignIn": "Обратно към вход",
72
+ "confirmPasswordPlaceholder": "Потвърдете новата парола",
73
+ "confirmPasswordRequired": "Моля, потвърдете новата парола",
74
+ "description": "Моля, въведете новата си парола",
75
+ "error": "Неуспешно нулиране на паролата, моля опитайте отново",
76
+ "invalidToken": "Невалиден или изтекъл линк за нулиране",
77
+ "newPasswordPlaceholder": "Въведете нова парола",
78
+ "passwordMismatch": "Двете пароли не съвпадат",
79
+ "submit": "Нулирай паролата",
80
+ "success": "Паролата е успешно нулирана, моля влезте с новата парола",
81
+ "title": "Нулиране на парола"
82
+ },
83
+ "signin": {
84
+ "backToEmail": "Обратно към редактиране на имейл",
85
+ "continueWithAuth0": "Вход с Auth0",
86
+ "continueWithAuthelia": "Вход с Authelia",
87
+ "continueWithAuthentik": "Вход с Authentik",
88
+ "continueWithCasdoor": "Вход с Casdoor",
89
+ "continueWithCloudflareZeroTrust": "Вход с Cloudflare Zero Trust",
90
+ "continueWithCognito": "Вход с AWS Cognito",
91
+ "continueWithFeishu": "Вход с Feishu",
92
+ "continueWithGithub": "Вход с GitHub",
93
+ "continueWithGoogle": "Вход с Google",
94
+ "continueWithKeycloak": "Вход с Keycloak",
95
+ "continueWithLogto": "Вход с Logto",
96
+ "continueWithMicrosoft": "Вход с Microsoft",
97
+ "continueWithOIDC": "Вход с OIDC",
98
+ "continueWithOkta": "Вход с Okta",
99
+ "continueWithWechat": "Вход с WeChat",
100
+ "continueWithZitadel": "Вход с Zitadel",
101
+ "emailPlaceholder": "Моля, въведете имейл адрес",
102
+ "emailStep": {
103
+ "subtitle": "Моля, въведете имейл адреса си, за да продължите",
104
+ "title": "Вход"
105
+ },
106
+ "error": "Входът не бе успешен, моля проверете имейла и паролата",
107
+ "forgotPassword": "Забравена парола?",
108
+ "forgotPasswordError": "Неуспешно изпращане на линк за нулиране на парола",
109
+ "forgotPasswordSent": "Линк за нулиране на парола е изпратен, моля проверете имейла си",
110
+ "magicLinkButton": "Изпрати линк за вход",
111
+ "magicLinkError": "Неуспешно изпращане на линк за вход, моля опитайте по-късно",
112
+ "magicLinkSent": "Линк за вход е изпратен, моля проверете имейла си",
113
+ "nextStep": "Следваща стъпка",
114
+ "noAccount": "Нямате акаунт?",
115
+ "orContinueWith": "или",
116
+ "passwordPlaceholder": "Моля, въведете парола",
117
+ "passwordStep": {
118
+ "subtitle": "Моля, въведете паролата си, за да продължите"
119
+ },
120
+ "signupLink": "Регистрирайте се сега",
121
+ "socialError": "Неуспешен социален вход, моля опитайте отново",
122
+ "socialOnlyHint": "Този имейл е регистриран чрез социален акаунт, моля влезте чрез него",
123
+ "submit": "Вход"
124
+ },
125
+ "signup": {
126
+ "emailPlaceholder": "Моля, въведете имейл адрес",
127
+ "error": "Регистрацията не бе успешна, моля опитайте отново",
128
+ "firstNamePlaceholder": "Собствено име",
129
+ "hasAccount": "Вече имате акаунт?",
130
+ "lastNamePlaceholder": "Фамилно име",
131
+ "passwordPlaceholder": "Моля, въведете парола",
132
+ "signinLink": "Влезте сега",
133
+ "submit": "Регистрация",
134
+ "subtitle": "Присъединете се към общността на LobeChat",
135
+ "success": "Регистрацията е успешна! Моля, проверете имейла си за потвърждение",
136
+ "title": "Създаване на акаунт",
137
+ "usernamePlaceholder": "Моля, въведете потребителско име"
138
+ },
139
+ "verifyEmail": {
140
+ "backToSignIn": "Обратно към вход",
141
+ "checkSpam": "Ако не сте получили имейл, моля проверете папката със спам",
142
+ "descriptionPrefix": "Изпратихме имейл за потвърждение на",
143
+ "descriptionSuffix": "",
144
+ "resend": {
145
+ "button": "Изпрати отново имейл за потвърждение",
146
+ "error": "Изпращането не бе успешно, моля опитайте по-късно",
147
+ "noEmail": "Липсва имейл адрес",
148
+ "success": "Имейлът за потвърждение е изпратен отново, моля проверете пощата си"
149
+ },
150
+ "title": "Потвърдете имейла си"
151
+ }
152
+ },
55
153
  "date": {
56
154
  "prevMonth": "Миналия месец",
57
155
  "recent30Days": "Последните 30 дни"
@@ -86,16 +184,31 @@
86
184
  "loginOrSignup": "Вход / Регистрация",
87
185
  "profile": {
88
186
  "avatar": "Аватар",
187
+ "cancel": "Отказ",
188
+ "changePassword": "Нулиране на парола",
89
189
  "email": "Имейл адрес",
190
+ "fullName": "Пълно име",
191
+ "fullNameInputHint": "Моля, въведете новото си пълно име",
192
+ "password": "Парола",
193
+ "resetPasswordError": "Неуспешно изпращане на линк за нулиране на парола",
194
+ "resetPasswordSent": "Линк за нулиране на парола е изпратен, моля проверете имейла си",
195
+ "save": "Запази",
90
196
  "sso": {
197
+ "link": {
198
+ "button": "Свържи акаунт",
199
+ "success": "Акаунтът е успешно свързан"
200
+ },
91
201
  "loading": "Зареждане на свързаните трети страни акаунти",
92
202
  "providers": "Свързани акаунти",
93
203
  "unlink": {
94
- "description": "След като свържете, няма да можете да използвате акаунта на {{provider}} {{providerAccountId}} за вход. Ако искате отново да свържете акаунта на {{provider}} с текущия акаунт, уверете се, че имейл адресът на акаунта на {{provider}} е {{email}}, а ние автоматично ще ви свържем с текущия влезлия акаунт при вход.",
204
+ "description": "След като прекъснете връзката, няма да можете да влизате с акаунта {{provider}} \"{{providerAccountId}}\". Ако искате отново да свържете акаунта {{provider}} с текущия акаунт, уверете се, че имейл адресът на акаунта {{provider}} е {{email}}. Ще го свържем автоматично при следващ вход.",
95
205
  "forbidden": "Трябва да имате поне един свързан акаунт на трета страна.",
96
206
  "title": "Наистина ли искате да свържете акаунта на трета страна {{provider}}?"
97
207
  }
98
208
  },
209
+ "title": "Детайли на профила",
210
+ "updateAvatar": "Актуализирай аватара",
211
+ "updateFullName": "Актуализирай пълното име",
99
212
  "username": "Потребителско име"
100
213
  },
101
214
  "signout": "Изход",