@lobehub/chat 1.15.21 → 1.15.23

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.

Potentially problematic release.


This version of @lobehub/chat might be problematic. Click here for more details.

Files changed (135) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/locales/ar/metadata.json +6 -6
  3. package/locales/ar/migration.json +9 -9
  4. package/locales/ar/plugin.json +1 -1
  5. package/locales/ar/setting.json +4 -4
  6. package/locales/ar/welcome.json +13 -13
  7. package/locales/bg-BG/metadata.json +7 -7
  8. package/locales/bg-BG/migration.json +12 -12
  9. package/locales/bg-BG/plugin.json +1 -1
  10. package/locales/bg-BG/setting.json +4 -4
  11. package/locales/bg-BG/welcome.json +13 -13
  12. package/locales/de-DE/metadata.json +6 -6
  13. package/locales/de-DE/migration.json +9 -9
  14. package/locales/de-DE/plugin.json +1 -1
  15. package/locales/de-DE/setting.json +4 -4
  16. package/locales/de-DE/welcome.json +15 -15
  17. package/locales/en-US/metadata.json +8 -8
  18. package/locales/en-US/migration.json +9 -9
  19. package/locales/en-US/plugin.json +1 -1
  20. package/locales/en-US/setting.json +4 -4
  21. package/locales/en-US/welcome.json +16 -16
  22. package/locales/es-ES/metadata.json +8 -8
  23. package/locales/es-ES/migration.json +9 -9
  24. package/locales/es-ES/plugin.json +1 -1
  25. package/locales/es-ES/setting.json +4 -4
  26. package/locales/es-ES/welcome.json +15 -15
  27. package/locales/fr-FR/metadata.json +7 -7
  28. package/locales/fr-FR/migration.json +8 -8
  29. package/locales/fr-FR/plugin.json +1 -1
  30. package/locales/fr-FR/setting.json +4 -4
  31. package/locales/fr-FR/welcome.json +12 -12
  32. package/locales/it-IT/metadata.json +6 -6
  33. package/locales/it-IT/migration.json +11 -11
  34. package/locales/it-IT/plugin.json +1 -1
  35. package/locales/it-IT/setting.json +4 -4
  36. package/locales/it-IT/welcome.json +16 -16
  37. package/locales/ja-JP/metadata.json +6 -6
  38. package/locales/ja-JP/migration.json +9 -9
  39. package/locales/ja-JP/plugin.json +1 -1
  40. package/locales/ja-JP/setting.json +4 -4
  41. package/locales/ja-JP/welcome.json +15 -15
  42. package/locales/ko-KR/metadata.json +6 -6
  43. package/locales/ko-KR/migration.json +9 -9
  44. package/locales/ko-KR/plugin.json +1 -1
  45. package/locales/ko-KR/setting.json +4 -4
  46. package/locales/ko-KR/welcome.json +13 -13
  47. package/locales/nl-NL/metadata.json +7 -7
  48. package/locales/nl-NL/migration.json +9 -9
  49. package/locales/nl-NL/plugin.json +1 -1
  50. package/locales/nl-NL/setting.json +4 -4
  51. package/locales/nl-NL/welcome.json +15 -15
  52. package/locales/pl-PL/metadata.json +6 -6
  53. package/locales/pl-PL/migration.json +11 -11
  54. package/locales/pl-PL/plugin.json +1 -1
  55. package/locales/pl-PL/setting.json +4 -4
  56. package/locales/pl-PL/welcome.json +16 -16
  57. package/locales/pt-BR/metadata.json +8 -8
  58. package/locales/pt-BR/migration.json +13 -13
  59. package/locales/pt-BR/plugin.json +1 -1
  60. package/locales/pt-BR/setting.json +4 -4
  61. package/locales/pt-BR/welcome.json +16 -16
  62. package/locales/ru-RU/metadata.json +6 -6
  63. package/locales/ru-RU/migration.json +11 -11
  64. package/locales/ru-RU/plugin.json +1 -1
  65. package/locales/ru-RU/setting.json +4 -4
  66. package/locales/ru-RU/welcome.json +16 -16
  67. package/locales/tr-TR/metadata.json +6 -6
  68. package/locales/tr-TR/migration.json +12 -12
  69. package/locales/tr-TR/plugin.json +1 -1
  70. package/locales/tr-TR/setting.json +4 -4
  71. package/locales/tr-TR/welcome.json +15 -15
  72. package/locales/vi-VN/metadata.json +6 -6
  73. package/locales/vi-VN/migration.json +8 -8
  74. package/locales/vi-VN/plugin.json +1 -1
  75. package/locales/vi-VN/setting.json +4 -4
  76. package/locales/vi-VN/welcome.json +9 -9
  77. package/locales/zh-CN/common.json +3 -3
  78. package/locales/zh-CN/market.json +1 -1
  79. package/locales/zh-CN/metadata.json +6 -6
  80. package/locales/zh-CN/migration.json +4 -4
  81. package/locales/zh-CN/plugin.json +2 -2
  82. package/locales/zh-CN/setting.json +4 -4
  83. package/locales/zh-CN/welcome.json +8 -8
  84. package/locales/zh-TW/metadata.json +6 -6
  85. package/locales/zh-TW/migration.json +6 -6
  86. package/locales/zh-TW/plugin.json +1 -1
  87. package/locales/zh-TW/setting.json +4 -4
  88. package/locales/zh-TW/welcome.json +10 -10
  89. package/package.json +1 -1
  90. package/src/app/(auth)/login/[[...login]]/page.tsx +2 -1
  91. package/src/app/(main)/chat/(workspace)/features/ShareButton/useScreenshot.ts +2 -1
  92. package/src/app/(main)/chat/(workspace)/features/TelemetryNotification.tsx +5 -2
  93. package/src/app/(main)/chat/(workspace)/page.tsx +5 -4
  94. package/src/app/(main)/chat/@session/_layout/Desktop/SessionHeader.tsx +2 -2
  95. package/src/app/(main)/chat/@session/_layout/Mobile/SessionHeader.tsx +2 -2
  96. package/src/app/(main)/chat/features/Migration/ExportConfigButton.tsx +3 -1
  97. package/src/app/(main)/chat/features/Migration/Modal.tsx +3 -2
  98. package/src/app/(main)/chat/features/Migration/Start.tsx +4 -2
  99. package/src/app/(main)/files/(content)/NotSupportClient.tsx +2 -1
  100. package/src/app/(main)/market/_layout/Desktop/Header.tsx +3 -2
  101. package/src/app/(main)/market/features/ShareAgentButton/Inner.tsx +2 -1
  102. package/src/app/(main)/settings/about/features/Analytics.tsx +2 -1
  103. package/src/app/(main)/settings/about/features/Version.tsx +3 -2
  104. package/src/app/(main)/settings/about/index.tsx +6 -1
  105. package/src/app/(main)/welcome/features/Hero.tsx +3 -1
  106. package/src/app/(main)/welcome/page.tsx +5 -4
  107. package/src/app/metadata.ts +11 -12
  108. package/src/components/Branding/ProductLogo.tsx +14 -0
  109. package/src/components/Branding/index.ts +1 -0
  110. package/src/config/featureFlags/schema.ts +11 -5
  111. package/src/config/modelProviders/deepseek.ts +1 -9
  112. package/src/config/modelProviders/groq.ts +3 -3
  113. package/src/config/modelProviders/novita.ts +5 -5
  114. package/src/config/modelProviders/ollama.ts +6 -6
  115. package/src/config/modelProviders/perplexity.ts +6 -6
  116. package/src/config/modelProviders/qwen.ts +1 -10
  117. package/src/config/modelProviders/siliconcloud.ts +61 -27
  118. package/src/config/modelProviders/stepfun.ts +8 -0
  119. package/src/const/branding.ts +5 -0
  120. package/src/features/Conversation/components/InboxWelcome/QuestionSuggest.tsx +2 -1
  121. package/src/features/Conversation/components/InboxWelcome/index.tsx +4 -1
  122. package/src/features/Conversation/components/VirtualizedList/index.tsx +2 -2
  123. package/src/features/PluginDevModal/UrlManifestForm.tsx +2 -1
  124. package/src/features/Setting/Footer.tsx +2 -1
  125. package/src/locales/default/common.ts +3 -3
  126. package/src/locales/default/market.ts +1 -1
  127. package/src/locales/default/metadata.ts +6 -6
  128. package/src/locales/default/migration.ts +4 -4
  129. package/src/locales/default/plugin.ts +2 -2
  130. package/src/locales/default/setting.ts +4 -5
  131. package/src/locales/default/welcome.ts +8 -8
  132. package/src/server/ld.ts +2 -1
  133. package/src/server/metadata.ts +2 -1
  134. package/src/store/user/slices/auth/selectors.ts +2 -1
  135. package/src/utils/config.ts +2 -1
@@ -4,116 +4,150 @@ import { ModelProviderCard } from '@/types/llm';
4
4
  const SiliconCloud: ModelProviderCard = {
5
5
  chatModels: [
6
6
  {
7
- enabled: true,
8
- id: 'Qwen/Qwen2-72B-Instruct',
7
+ displayName: 'Qwen2 1.5B',
8
+ id: 'Qwen/Qwen2-1.5B-Instruct',
9
9
  tokens: 32_768,
10
10
  },
11
11
  {
12
+ displayName: 'Qwen2 7B',
12
13
  enabled: true,
13
- id: 'Qwen/Qwen2-Math-72B-Instruct',
14
+ id: 'Qwen/Qwen2-7B-Instruct',
14
15
  tokens: 32_768,
15
16
  },
16
17
  {
17
- enabled: true,
18
+ displayName: 'Qwen2 57B A14B',
18
19
  id: 'Qwen/Qwen2-57B-A14B-Instruct',
19
20
  tokens: 32_768,
20
21
  },
21
22
  {
22
- id: 'Qwen/Qwen2-7B-Instruct',
23
+ displayName: 'Qwen2 72B',
24
+ enabled: true,
25
+ id: 'Qwen/Qwen2-72B-Instruct',
23
26
  tokens: 32_768,
24
27
  },
25
28
  {
26
- id: 'Qwen/Qwen2-1.5B-Instruct',
29
+ displayName: 'Qwen2 Math 72B',
30
+ enabled: true,
31
+ id: 'Qwen/Qwen2-Math-72B-Instruct',
27
32
  tokens: 32_768,
28
33
  },
29
34
  {
30
- id: 'Qwen/Qwen1.5-110B-Chat',
35
+ displayName: 'Qwen1.5 7B',
36
+ id: 'Qwen/Qwen1.5-7B-Chat',
31
37
  tokens: 32_768,
32
38
  },
33
39
  {
34
- id: 'Qwen/Qwen1.5-32B-Chat',
40
+ displayName: 'Qwen1.5 14B',
41
+ id: 'Qwen/Qwen1.5-14B-Chat',
35
42
  tokens: 32_768,
36
43
  },
37
44
  {
38
- id: 'Qwen/Qwen1.5-14B-Chat',
45
+ displayName: 'Qwen1.5 32B',
46
+ id: 'Qwen/Qwen1.5-32B-Chat',
39
47
  tokens: 32_768,
40
48
  },
41
49
  {
42
- id: 'Qwen/Qwen1.5-7B-Chat',
50
+ displayName: 'Qwen1.5 110B',
51
+ id: 'Qwen/Qwen1.5-110B-Chat',
43
52
  tokens: 32_768,
44
53
  },
45
54
  {
46
- id: 'deepseek-ai/DeepSeek-Coder-V2-Instruct',
47
- tokens: 32_768,
55
+ displayName: 'Yi-1.5 6B',
56
+ id: '01-ai/Yi-1.5-6B-Chat',
57
+ tokens: 4096,
48
58
  },
49
59
  {
60
+ displayName: 'Yi-1.5 9B',
50
61
  enabled: true,
51
- id: 'deepseek-ai/DeepSeek-V2-Chat',
52
- tokens: 32_768,
62
+ id: '01-ai/Yi-1.5-9B-Chat-16K',
63
+ tokens: 16_384,
53
64
  },
54
65
  {
55
- id: 'deepseek-ai/deepseek-llm-67b-chat',
66
+ displayName: 'Yi-1.5 34B',
67
+ enabled: true,
68
+ id: '01-ai/Yi-1.5-34B-Chat-16K',
69
+ tokens: 16_384,
70
+ },
71
+ {
72
+ displayName: 'GLM-3 6B',
73
+ id: 'THUDM/chatglm3-6b',
56
74
  tokens: 32_768,
57
75
  },
58
76
  {
77
+ displayName: 'GLM-4 9B',
78
+ enabled: true,
59
79
  id: 'THUDM/glm-4-9b-chat',
60
80
  tokens: 32_768,
61
81
  },
62
82
  {
63
- id: 'THUDM/chatglm3-6b',
83
+ displayName: 'Internlm 2.5 7B',
84
+ enabled: true,
85
+ id: 'internlm/internlm2_5-7b-chat',
64
86
  tokens: 32_768,
65
87
  },
66
88
  {
89
+ displayName: 'Internlm 2.5 20B',
67
90
  enabled: true,
68
- id: '01-ai/Yi-1.5-34B-Chat-16K',
69
- tokens: 16_384,
91
+ id: 'internlm/internlm2_5-20b-chat',
92
+ tokens: 32_768,
70
93
  },
71
94
  {
72
- id: '01-ai/Yi-1.5-9B-Chat-16K',
73
- tokens: 16_384,
95
+ displayName: 'DeepSeek V2 Chat',
96
+ id: 'deepseek-ai/DeepSeek-V2-Chat',
97
+ tokens: 32_768,
74
98
  },
75
99
  {
76
- id: '01-ai/Yi-1.5-6B-Chat',
77
- tokens: 4096,
100
+ displayName: 'DeepSeek V2 Coder',
101
+ id: 'deepseek-ai/DeepSeek-Coder-V2-Instruct',
102
+ tokens: 32_768,
78
103
  },
79
104
  {
80
- id: 'internlm/internlm2_5-7b-chat',
105
+ displayName: 'DeepSeek LLM 67B',
106
+ id: 'deepseek-ai/deepseek-llm-67b-chat',
81
107
  tokens: 32_768,
82
108
  },
83
109
  {
110
+ displayName: 'Gemma 2 9B',
111
+ enabled: true,
84
112
  id: 'google/gemma-2-9b-it',
85
113
  tokens: 8192,
86
114
  },
87
115
  {
116
+ displayName: 'Gemma 2 27B',
117
+ enabled: true,
88
118
  id: 'google/gemma-2-27b-it',
89
119
  tokens: 8192,
90
120
  },
91
121
  {
92
- id: 'internlm/internlm2_5-20b-chat',
93
- tokens: 32_768,
94
- },
95
- {
122
+ displayName: 'Llama 3.1 8B',
123
+ enabled: true,
96
124
  id: 'meta-llama/Meta-Llama-3.1-8B-Instruct',
97
125
  tokens: 32_768,
98
126
  },
99
127
  {
128
+ displayName: 'Llama 3.1 70B',
100
129
  enabled: true,
101
130
  id: 'meta-llama/Meta-Llama-3.1-70B-Instruct',
102
131
  tokens: 32_768,
103
132
  },
104
133
  {
134
+ displayName: 'Llama 3.1 405B',
135
+ enabled: true,
105
136
  id: 'meta-llama/Meta-Llama-3.1-405B-Instruct',
106
137
  tokens: 32_768,
107
138
  },
108
139
  {
140
+ displayName: 'Llama 3 70B',
109
141
  id: 'meta-llama/Meta-Llama-3-70B-Instruct',
110
142
  tokens: 8192,
111
143
  },
112
144
  {
145
+ displayName: 'Mistral 7B',
113
146
  id: 'mistralai/Mistral-7B-Instruct-v0.2',
114
147
  tokens: 32_768,
115
148
  },
116
149
  {
150
+ displayName: 'Mistral 8x7B',
117
151
  id: 'mistralai/Mixtral-8x7B-Instruct-v0.1',
118
152
  tokens: 32_768,
119
153
  },
@@ -5,41 +5,49 @@ import { ModelProviderCard } from '@/types/llm';
5
5
  const Stepfun: ModelProviderCard = {
6
6
  chatModels: [
7
7
  {
8
+ displayName: 'Step 2 16K',
8
9
  enabled: true,
9
10
  id: 'step-2-16k',
10
11
  tokens: 16_000,
11
12
  },
12
13
  {
14
+ displayName: 'Step 1 256K',
13
15
  id: 'step-1-256k',
14
16
  tokens: 256_000,
15
17
  },
16
18
  {
19
+ displayName: 'Step 1 128K',
17
20
  enabled: true,
18
21
  id: 'step-1-128k',
19
22
  tokens: 128_000,
20
23
  },
21
24
  {
25
+ displayName: 'Step 1 32K',
22
26
  enabled: true,
23
27
  id: 'step-1-32k',
24
28
  tokens: 32_000,
25
29
  },
26
30
  {
31
+ displayName: 'Step 1 8K',
27
32
  enabled: true,
28
33
  id: 'step-1-8k',
29
34
  tokens: 8000,
30
35
  },
31
36
  {
37
+ displayName: 'Step 1 Flash',
32
38
  enabled: true,
33
39
  id: 'step-1-flash',
34
40
  tokens: 8000,
35
41
  },
36
42
  {
43
+ displayName: 'Step 1V 32K',
37
44
  enabled: true,
38
45
  id: 'step-1v-32k',
39
46
  tokens: 32_000,
40
47
  vision: true,
41
48
  },
42
49
  {
50
+ displayName: 'Step 1V 8K',
43
51
  enabled: true,
44
52
  id: 'step-1v-8k',
45
53
  tokens: 8000,
@@ -0,0 +1,5 @@
1
+ export const BRANDING_NAME = 'LobeChat';
2
+
3
+ export const ORG_NAME = 'lobehub';
4
+
5
+ export const LOBE_CHAT_CLOUD = 'LobeChat Cloud';
@@ -9,6 +9,7 @@ import { memo } from 'react';
9
9
  import { useTranslation } from 'react-i18next';
10
10
  import { Flexbox } from 'react-layout-kit';
11
11
 
12
+ import { BRANDING_NAME } from '@/const/branding';
12
13
  import { USAGE_DOCUMENTS } from '@/const/url';
13
14
  import { useSendMessage } from '@/features/ChatInput/useSend';
14
15
  import { useChatStore } from '@/store/chat';
@@ -81,7 +82,7 @@ const QuestionSuggest = memo<{ mobile?: boolean }>(({ mobile }) => {
81
82
  </Flexbox>
82
83
  <Flexbox gap={8} horizontal wrap={'wrap'}>
83
84
  {qa.slice(0, mobile ? 2 : 5).map((item) => {
84
- const text = t(`guide.qa.${item}` as any);
85
+ const text = t(`guide.qa.${item}` as any, { appName: BRANDING_NAME });
85
86
  return (
86
87
  <Flexbox
87
88
  align={'center'}
@@ -6,6 +6,7 @@ import { memo } from 'react';
6
6
  import { useTranslation } from 'react-i18next';
7
7
  import { Center, Flexbox } from 'react-layout-kit';
8
8
 
9
+ import { BRANDING_NAME } from '@/const/branding';
9
10
  import { useGreeting } from '@/hooks/useGreeting';
10
11
  import { featureFlagsSelectors, useServerConfigStore } from '@/store/serverConfig';
11
12
 
@@ -52,7 +53,9 @@ const InboxWelcome = memo(() => {
52
53
  <h1 className={styles.title}>{greeting}</h1>
53
54
  </Flexbox>
54
55
  <Markdown className={styles.desc} variant={'chat'}>
55
- {t(showCreateSession ? 'guide.defaultMessage' : 'guide.defaultMessageWithoutCreate')}
56
+ {t(showCreateSession ? 'guide.defaultMessage' : 'guide.defaultMessageWithoutCreate', {
57
+ appName: BRANDING_NAME,
58
+ })}
56
59
  </Markdown>
57
60
  {showWelcomeSuggest && (
58
61
  <>
@@ -64,8 +64,8 @@ const VirtualizedList = memo<VirtualizedListProps>(({ mobile }) => {
64
64
  }, [data.length]);
65
65
 
66
66
  const theme = useTheme();
67
- // overscan should be 1.5 times the height of the window
68
- const overscan = typeof window !== 'undefined' ? window.innerHeight * 1.5 : 0;
67
+ // overscan should be 3 times the height of the window
68
+ const overscan = typeof window !== 'undefined' ? window.innerHeight * 3 : 0;
69
69
 
70
70
  const itemContent = useCallback(
71
71
  (index: number, id: string) => {
@@ -7,6 +7,7 @@ import { useTranslation } from 'react-i18next';
7
7
  import { Flexbox } from 'react-layout-kit';
8
8
 
9
9
  import ManifestPreviewer from '@/components/ManifestPreviewer';
10
+ import { BRANDING_NAME } from '@/const/branding';
10
11
  import { toolService } from '@/services/tool';
11
12
  import { useToolStore } from '@/store/tool';
12
13
  import { pluginSelectors } from '@/store/tool/selectors';
@@ -49,7 +50,7 @@ const UrlManifestForm = memo<{ form: FormInstance; isEditMode: boolean }>(
49
50
  <FormItem
50
51
  extra={
51
52
  <Flexbox horizontal justify={'space-between'} style={{ marginTop: 8 }}>
52
- {t('dev.meta.manifest.desc')}
53
+ {t('dev.meta.manifest.desc', { appName: BRANDING_NAME })}
53
54
  {manifest && (
54
55
  <ManifestPreviewer manifest={manifest}>
55
56
  <ActionIcon
@@ -10,6 +10,7 @@ import { Center, Flexbox } from 'react-layout-kit';
10
10
 
11
11
  import GuideModal from '@/components/GuideModal';
12
12
  import GuideVideo from '@/components/GuideVideo';
13
+ import { BRANDING_NAME } from '@/const/branding';
13
14
  import { GITHUB, GITHUB_ISSUES } from '@/const/url';
14
15
  import { isOnServerSide } from '@/utils/env';
15
16
 
@@ -79,7 +80,7 @@ const Footer = memo<PropsWithChildren>(() => {
79
80
  <GuideModal
80
81
  cancelText={t('footer.later')}
81
82
  cover={<GuideVideo height={269} src={'/videos/feedback.mp4?v=1'} width={358} />}
82
- desc={t('footer.feedback.desc')}
83
+ desc={t('footer.feedback.desc', { appName: BRANDING_NAME })}
83
84
  okText={t('footer.feedback.action')}
84
85
  onCancel={() => setOpenFeedback(false)}
85
86
  onOk={() => {
@@ -56,7 +56,7 @@ export default {
56
56
  and: '并',
57
57
  feedback: {
58
58
  action: '分享反馈',
59
- desc: '您的每一个想法和建议对我们来说都弥足珍贵,我们迫不及待地想知道您的看法!欢迎联系我们提供产品功能和使用体验反馈,帮助我们将 LobeChat 建设得更好。',
59
+ desc: '您的每一个想法和建议对我们来说都弥足珍贵,我们迫不及待地想知道您的看法!欢迎联系我们提供产品功能和使用体验反馈,帮助我们将 {{appName}} 建设得更好。',
60
60
  title: '在 GitHub 分享您宝贵的反馈',
61
61
  },
62
62
  later: '稍后',
@@ -196,9 +196,9 @@ export default {
196
196
  telemetry: {
197
197
  allow: '允许',
198
198
  deny: '拒绝',
199
- desc: '我们希望匿名获取你的使用信息,进而帮助我们改进 LobeChat,并为你提供更好的产品体验。你可以在「设置」 - 「关于」随时关闭。',
199
+ desc: '我们希望匿名获取你的使用信息,进而帮助我们改进 {{appName}},并为你提供更好的产品体验。你可以在「设置」 - 「关于」随时关闭。',
200
200
  learnMore: '了解更多',
201
- title: '帮助 LobeChat 做得更好',
201
+ title: '帮助 {{appName}} 做得更好',
202
202
  },
203
203
  temp: '临时',
204
204
  terms: '服务条款',
@@ -7,7 +7,7 @@ export default {
7
7
  desc1: '在会话窗口中通过右上角设置进入你想提交助手的设置页面;',
8
8
  desc2: '点击右上角提交到助手市场按钮。',
9
9
  tag: '方法一',
10
- title: '通过 LobeChat 提交',
10
+ title: '通过 {{appName}} 提交',
11
11
  },
12
12
  func2: {
13
13
  button: '前往 Github 助手仓库',
@@ -1,20 +1,20 @@
1
1
  export default {
2
2
  chat: {
3
- description: 'LobeChat 带给你最好的 ChatGPT, OLLaMA, Gemini, Claude WebUI 使用体验',
4
- title: 'LobeChat:个人 LLM 效能工具,给自己一个更聪明的大脑',
3
+ description: '{{appName}} 带给你最好的 ChatGPT, Claude , Gemini, OLLaMA WebUI 使用体验',
4
+ title: '{{appName}}:个人 AI 效能工具,给自己一个更聪明的大脑',
5
5
  },
6
6
  market: {
7
7
  description:
8
- '内容创作、文案、问答、图像生成、视频生成、语音生成、智能 Agent、自动化工作流,定制你专属的 AI / GPTs / OLLaMA 智能助手',
8
+ '内容创作、文案、问答、图像生成、视频生成、语音生成、智能 Agent、自动化工作流,定制你专属的 AI 智能助手',
9
9
  title: '助手市场',
10
10
  },
11
11
  plugins: {
12
12
  description:
13
- '搜素、图表生成、学术、图像生成、视频生成、语音生成、自动化工作流,定制 ChatGPT / OLLaMA 专属的 ToolCall 插件能力',
13
+ '搜素、图表生成、学术、图像生成、视频生成、语音生成、自动化工作流,定制 ChatGPT / Claude 专属的 ToolCall 插件能力',
14
14
  title: '插件市场',
15
15
  },
16
16
  welcome: {
17
- description: 'LobeChat 带给你最好的 ChatGPT, OLLaMA, Gemini, Claude WebUI 使用体验',
18
- title: '欢迎使用 LobeChat:个人 LLM 效能工具,给自己一个更聪明的大脑',
17
+ description: '{{appName}} 带给你最好的 ChatGPT, Claude , Gemini, OLLaMA WebUI 使用体验',
18
+ title: '欢迎使用 {{appName}}:个人 AI 效能工具,给自己一个更聪明的大脑',
19
19
  },
20
20
  };
@@ -11,7 +11,7 @@ export default {
11
11
  confirm: '即将清空本地数据(全局设置不受影响),请确认你已经下载了数据备份。',
12
12
  },
13
13
  description:
14
- '在新版本中,LobeChat 的数据存储有了巨大的飞跃。因此我们要对旧版数据进行升级,进而为你带来更好的使用体验。',
14
+ '在新版本中,{{appName}} 的数据存储有了巨大的飞跃。因此我们要对旧版数据进行升级,进而为你带来更好的使用体验。',
15
15
  features: {
16
16
  capability: {
17
17
  desc: '基于 IndexedDB 技术,足以装下你一生的会话消息',
@@ -26,7 +26,7 @@ export default {
26
26
  title: '更易用',
27
27
  },
28
28
  },
29
- title: 'LobeChat 数据进化',
29
+ title: '{{appName}} 数据进化',
30
30
  upgrade: {
31
31
  error: {
32
32
  subTitle:
@@ -34,11 +34,11 @@ export default {
34
34
  title: '数据库升级失败',
35
35
  },
36
36
  success: {
37
- subTitle: 'LobeChat 的数据库已经升级到最新版本,立即开始体验吧',
37
+ subTitle: '{{appName}} 的数据库已经升级到最新版本,立即开始体验吧',
38
38
  title: '数据库升级成功',
39
39
  },
40
40
  },
41
- upgradeTip: '升级大致需要 10~20 秒,升级过程中请不要关闭 LobeChat',
41
+ upgradeTip: '升级大致需要 10~20 秒,升级过程中请不要关闭 {{appName}}',
42
42
  },
43
43
  migrateError: {
44
44
  missVersion: '导入数据缺少版本号,请检查文件后重试',
@@ -70,7 +70,7 @@ export default {
70
70
  pattenErrorMessage: '只能输入英文字符、数字 、- 和_ 这两个符号',
71
71
  },
72
72
  manifest: {
73
- desc: 'LobeChat 将会通过该链接安装插件',
73
+ desc: '{{appName}}将会通过该链接安装插件',
74
74
  label: '插件描述文件 (Manifest) URL',
75
75
  preview: '预览 Manifest',
76
76
  refresh: '刷新',
@@ -104,7 +104,7 @@ export default {
104
104
  edit: '编辑自定义插件',
105
105
  },
106
106
  type: {
107
- lobe: 'LobeChat 插件',
107
+ lobe: '{{appName}} 插件',
108
108
  openai: 'OpenAI 插件',
109
109
  },
110
110
  update: '更新',
@@ -12,7 +12,7 @@ export default {
12
12
  },
13
13
  analytics: {
14
14
  telemetry: {
15
- desc: '通过选择发送遥测数据,你可以帮助我们改善 LobeChat 整体用户体验',
15
+ desc: '通过选择发送遥测数据,你可以帮助我们改善 {{appName}} 整体用户体验',
16
16
  title: '发送匿名使用数据',
17
17
  },
18
18
  title: '数据统计',
@@ -70,13 +70,12 @@ export default {
70
70
  title: '模型展示名称',
71
71
  },
72
72
  files: {
73
- extra:
74
- '当前 LobeChat 的文件上传实现仅为一种 Hack 方案,仅限自行尝试。完整文件上传能力请等待后续实现',
73
+ extra: '当前文件上传实现仅为一种 Hack 方案,仅限自行尝试。完整文件上传能力请等待后续实现',
75
74
  title: '支持文件上传',
76
75
  },
77
76
  functionCall: {
78
77
  extra:
79
- '此配置将仅开启 LobeChat 中的函数调用能力,是否支持函数调用完全取决于模型本身,请自行测试该模型的函数调用能力可用性',
78
+ '此配置将仅开启应用中的函数调用能力,是否支持函数调用完全取决于模型本身,请自行测试该模型的函数调用能力可用性',
80
79
  title: '支持函数调用',
81
80
  },
82
81
  id: {
@@ -91,7 +90,7 @@ export default {
91
90
  },
92
91
  vision: {
93
92
  extra:
94
- '此配置将仅开启 LobeChat 中的图片上传配置,是否支持识别完全取决于模型本身,请自行测试该模型的视觉识别能力可用性',
93
+ '此配置将仅开启应用中的图片上传配置,是否支持识别完全取决于模型本身,请自行测试该模型的视觉识别能力可用性',
95
94
  title: '支持视觉识别',
96
95
  },
97
96
  },
@@ -10,16 +10,16 @@ export default {
10
10
  title: '新增助理推荐:',
11
11
  },
12
12
  defaultMessage:
13
- '我是您的私人智能助理 LobeChat ,请问现在能帮您做什么?\n如果需要获得更加专业或定制的助手,可以点击 `+` 创建自定义助手',
14
- defaultMessageWithoutCreate: '我是您的私人智能助理 LobeChat ,请问现在能帮您做什么?',
13
+ '我是您的私人智能助理 {{appName}} ,请问现在能帮您做什么?\n如果需要获得更加专业或定制的助手,可以点击 `+` 创建自定义助手',
14
+ defaultMessageWithoutCreate: '我是您的私人智能助理 {{appName}} ,请问现在能帮您做什么?',
15
15
  qa: {
16
16
  q01: 'LobeHub 是什么?',
17
- q02: 'LobeChat 是什么?',
18
- q03: 'LobeChat 是否有社区支持?',
19
- q04: 'LobeChat 支持哪些功能?',
20
- q05: 'LobeChat 如何部署和使用?',
21
- q06: 'LobeChat 的定价是如何的?',
22
- q07: 'LobeChat 是否免费?',
17
+ q02: '{{appName}} 是什么?',
18
+ q03: '{{appName}} 是否有社区支持?',
19
+ q04: '{{appName}} 支持哪些功能?',
20
+ q05: '{{appName}} 如何部署和使用?',
21
+ q06: '{{appName}} 的定价是如何的?',
22
+ q07: '{{appName}} 是否免费?',
23
23
  q08: '是否有云端服务版?',
24
24
  q09: '是否支持本地语言模型?',
25
25
  q10: '是否支持图像识别和生成?',
package/src/server/ld.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import urlJoin from 'url-join';
2
2
 
3
+ import { BRANDING_NAME } from '@/const/branding';
3
4
  import { EMAIL_BUSINESS, EMAIL_SUPPORT, OFFICIAL_SITE, OFFICIAL_URL, X } from '@/const/url';
4
5
 
5
6
  import pkg from '../../package.json';
@@ -205,7 +206,7 @@ class Ld {
205
206
  }
206
207
 
207
208
  private fixTitle(title: string) {
208
- return title.includes('LobeChat') ? title : `${title} · LobeChat`;
209
+ return title.includes(BRANDING_NAME) ? title : `${title} · ${BRANDING_NAME}`;
209
210
  }
210
211
 
211
212
  private fixUrl(url: string) {
@@ -1,5 +1,6 @@
1
1
  import { Metadata } from 'next';
2
2
 
3
+ import { BRANDING_NAME } from '@/const/branding';
3
4
  import { OG_URL, getCanonicalUrl } from '@/const/url';
4
5
  import { formatDescLength, formatTitleLength } from '@/utils/genOG';
5
6
 
@@ -23,7 +24,7 @@ export class Meta {
23
24
  const formatedTitle = formatTitleLength(title, 21);
24
25
  // eslint-disable-next-line no-param-reassign
25
26
  const formatedDescription = formatDescLength(description, tags);
26
- const siteTitle = title.includes('LobeChat') ? title : title + ' · LobeChat';
27
+ const siteTitle = title.includes(BRANDING_NAME) ? title : title + ` · ${BRANDING_NAME}`;
27
28
  return {
28
29
  alternates: { canonical: getCanonicalUrl(url) },
29
30
  description: formatedDescription,
@@ -1,10 +1,11 @@
1
1
  import { t } from 'i18next';
2
2
 
3
3
  import { enableClerk } from '@/const/auth';
4
+ import { BRANDING_NAME } from '@/const/branding';
4
5
  import { UserStore } from '@/store/user';
5
6
  import { LobeUser } from '@/types/user';
6
7
 
7
- const DEFAULT_USERNAME = 'LobeChat';
8
+ const DEFAULT_USERNAME = BRANDING_NAME;
8
9
 
9
10
  const nickName = (s: UserStore) => {
10
11
  if (!s.enableAuth()) return t('userPanel.defaultNickname', { ns: 'common' });
@@ -1,4 +1,5 @@
1
1
  import { notification } from '@/components/AntdStaticMethods';
2
+ import { BRANDING_NAME } from '@/const/branding';
2
3
  import { CURRENT_CONFIG_VERSION, Migration } from '@/migrations';
3
4
  import {
4
5
  ConfigFile,
@@ -12,7 +13,7 @@ import {
12
13
  } from '@/types/exportConfig';
13
14
 
14
15
  export const exportConfigFile = (config: object, fileName?: string) => {
15
- const file = `LobeChat-${fileName || '-config'}-v${CURRENT_CONFIG_VERSION}.json`;
16
+ const file = `${BRANDING_NAME}-${fileName || '-config'}-v${CURRENT_CONFIG_VERSION}.json`;
16
17
 
17
18
  // 创建一个 Blob 对象
18
19
  const blob = new Blob([JSON.stringify(config)], { type: 'application/json' });