@lobehub/chat 0.84.0-beta.2 → 0.85.0

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 (203) hide show
  1. package/.github/workflows/lighthouse-badger-advanced.yml +74 -0
  2. package/.github/workflows/pre-welcome.yml +22 -0
  3. package/.github/workflows/release.yml +0 -3
  4. package/.github/workflows/sync.yml +11 -2
  5. package/.i18nrc.js +1 -2
  6. package/.releaserc.js +1 -14
  7. package/CHANGELOG.md +47 -10
  8. package/README.md +21 -0
  9. package/README.zh-CN.md +21 -0
  10. package/docs/Home.md +1 -0
  11. package/docs/Lighthouse.md +65 -0
  12. package/docs/Lighthouse.zh-CN.md +65 -0
  13. package/docs/_Sidebar.md +1 -0
  14. package/locales/en_US/common.json +5 -0
  15. package/locales/ja_JP/common.json +103 -0
  16. package/locales/ja_JP/empty.json +6 -0
  17. package/locales/ja_JP/error.json +42 -0
  18. package/locales/ja_JP/market.json +16 -0
  19. package/locales/ja_JP/plugin.json +107 -0
  20. package/locales/ja_JP/setting.json +225 -0
  21. package/locales/ja_JP/welcome.json +14 -0
  22. package/locales/ko_KR/common.json +103 -0
  23. package/locales/ko_KR/empty.json +6 -0
  24. package/locales/ko_KR/error.json +42 -0
  25. package/locales/ko_KR/market.json +16 -0
  26. package/locales/ko_KR/plugin.json +107 -0
  27. package/locales/ko_KR/setting.json +225 -0
  28. package/locales/ko_KR/welcome.json +14 -0
  29. package/locales/ru_RU/common.json +5 -0
  30. package/locales/zh_CN/common.json +5 -0
  31. package/locales/zh_TW/common.json +5 -0
  32. package/next.config.mjs +0 -3
  33. package/package.json +4 -4
  34. package/public/icons/maskable-icon-192x192.png +0 -0
  35. package/public/icons/maskable-icon-512x512.png +0 -0
  36. package/public/manifest.json +34 -5
  37. package/public/screenshots/screenshot-1.png +0 -0
  38. package/public/screenshots/screenshot-2.png +0 -0
  39. package/public/screenshots/screenshot-3.png +0 -0
  40. package/public/screenshots/screenshot-4.png +0 -0
  41. package/src/app/chat/(desktop)/features/{ChatHeader/Desktop.tsx → ChatHeader.tsx} +2 -2
  42. package/src/app/chat/(desktop)/features/{ChatInput/Desktop.tsx → ChatInput.tsx} +5 -7
  43. package/src/app/chat/(desktop)/features/{SessionHeader/Desktop.tsx → SessionHeader.tsx} +1 -1
  44. package/src/app/chat/(desktop)/features/{SessionList/Desktop.tsx → SessionList.tsx} +5 -4
  45. package/src/app/chat/(desktop)/features/{SideBar/Desktop.tsx → SideBar.tsx} +5 -4
  46. package/src/app/chat/(desktop)/index.tsx +14 -8
  47. package/src/app/chat/(desktop)/{layout/Desktop.tsx → layout.desktop.tsx} +7 -8
  48. package/src/app/chat/(desktop)/layout.responsive.tsx +12 -0
  49. package/src/app/chat/(mobile)/features/ChatHeader.tsx +54 -1
  50. package/src/app/chat/(mobile)/features/ChatInput.tsx +28 -8
  51. package/src/app/chat/(mobile)/features/SessionList.tsx +13 -8
  52. package/src/app/chat/{components/Inspector/Mobile.tsx → (mobile)/features/TopicList.tsx} +6 -4
  53. package/src/app/chat/(mobile)/index.tsx +3 -5
  54. package/src/app/chat/(mobile)/layout.mobile.tsx +17 -0
  55. package/src/app/chat/(mobile)/mobile/index.tsx +19 -0
  56. package/src/app/chat/(mobile)/mobile/layout.mobile.tsx +11 -0
  57. package/src/app/chat/(mobile)/mobile/page.tsx +2 -20
  58. package/src/app/chat/{components → features}/ChatHeader/ShareButton/Preview.tsx +25 -9
  59. package/src/app/chat/{components → features}/ChatHeader/ShareButton/style.ts +7 -7
  60. package/src/app/chat/{components/ChatInput → features/ChatInputContent}/Footer/SaveTopic.tsx +1 -1
  61. package/src/app/chat/{components/ChatInput → features/ChatInputContent}/index.tsx +3 -1
  62. package/src/app/chat/{components/SessionList → features/SessionListContent}/Inbox/index.tsx +7 -5
  63. package/src/app/chat/{components/SessionList → features/SessionListContent}/index.tsx +3 -1
  64. package/src/app/chat/{components/Inspector → features/TopicListContent}/index.tsx +3 -1
  65. package/src/app/chat/page.tsx +3 -1
  66. package/src/app/chat/settings/(desktop)/index.tsx +14 -0
  67. package/src/app/chat/settings/(desktop)/layout.desktop.tsx +10 -15
  68. package/src/app/chat/settings/(desktop)/layout.responsive.tsx +12 -0
  69. package/src/app/chat/settings/(mobile)/index.tsx +14 -0
  70. package/src/app/chat/settings/(mobile)/layout.mobile.tsx +4 -8
  71. package/src/app/chat/settings/features/EditPage.tsx +38 -0
  72. package/src/app/chat/settings/page.tsx +9 -33
  73. package/src/app/market/(desktop)/{AgentDetail/Desktop.tsx → features/AgentDetail.tsx} +5 -3
  74. package/src/app/market/(desktop)/index.tsx +12 -0
  75. package/src/app/market/(desktop)/{layout/Desktop.tsx → layout.desktop.tsx} +5 -5
  76. package/src/app/market/(desktop)/layout.responsive.tsx +16 -0
  77. package/src/app/market/{components/AgentDetail/Mobile.tsx → (mobile)/features/AgentDetail.tsx} +6 -4
  78. package/src/app/market/(mobile)/index.tsx +12 -0
  79. package/src/app/market/(mobile)/layout.mobile.tsx +5 -5
  80. package/src/app/market/{components/AgentDetail → features/AgentDetailContent}/AgentInfo/Header.tsx +1 -0
  81. package/src/app/market/{components/AgentDetail → features/AgentDetailContent}/index.tsx +3 -1
  82. package/src/app/market/features/TagList/index.tsx +2 -1
  83. package/src/app/market/page.tsx +8 -5
  84. package/src/app/settings/{features/Header/Desktop.tsx → (desktop)/features/Header.tsx} +2 -2
  85. package/src/app/settings/(desktop)/index.tsx +17 -0
  86. package/src/app/settings/{layout.desktop/Desktop.tsx → (desktop)/layout.desktop.tsx} +10 -9
  87. package/src/app/settings/(desktop)/layout.responsive.tsx +14 -0
  88. package/src/app/settings/{mobile → (mobile)/features}/ExtraList.tsx +1 -1
  89. package/src/app/settings/(mobile)/features/Header/Home.tsx +8 -0
  90. package/src/app/settings/{features/Header/Mobile.tsx → (mobile)/features/Header/index.tsx} +1 -0
  91. package/src/app/settings/(mobile)/index.tsx +3 -0
  92. package/src/app/settings/(mobile)/layout.mobile.tsx +19 -0
  93. package/src/app/settings/{mobile → (mobile)/mobile}/index.tsx +9 -9
  94. package/src/app/settings/(mobile)/mobile/layout.mobile.tsx +14 -0
  95. package/src/app/settings/agent/Agent.tsx +30 -0
  96. package/src/app/settings/agent/index.tsx +23 -0
  97. package/src/app/settings/agent/layout.tsx +1 -0
  98. package/src/app/settings/agent/page.tsx +2 -31
  99. package/src/app/settings/common/index.tsx +23 -0
  100. package/src/app/settings/common/layout.tsx +1 -0
  101. package/src/app/settings/common/page.tsx +2 -14
  102. package/src/app/settings/features/SideBar/index.tsx +2 -0
  103. package/src/app/settings/features/UpgradeAlert.tsx +32 -0
  104. package/src/app/settings/layout.server.tsx +12 -0
  105. package/src/app/settings/llm/index.tsx +23 -0
  106. package/src/app/settings/llm/layout.tsx +1 -0
  107. package/src/app/settings/llm/page.tsx +2 -14
  108. package/src/app/settings/page.tsx +14 -1
  109. package/src/app/welcome/{features/Footer/index.tsx → (desktop)/features/Footer.tsx} +14 -3
  110. package/src/app/welcome/(desktop)/features/Showcase.tsx +23 -0
  111. package/src/app/welcome/(desktop)/index.tsx +19 -0
  112. package/src/app/welcome/{DesktopLayout/Desktop.tsx → (desktop)/layout.desktop.tsx} +5 -8
  113. package/src/app/welcome/(desktop)/layout.responsive.tsx +14 -0
  114. package/src/app/welcome/(mobile)/features/Header.tsx +6 -0
  115. package/src/app/welcome/(mobile)/features/Showcase.tsx +16 -0
  116. package/src/app/welcome/(mobile)/index.tsx +10 -0
  117. package/src/app/welcome/(mobile)/layout.mobile.tsx +20 -0
  118. package/src/app/welcome/features/Banner/Hero.tsx +2 -3
  119. package/src/app/welcome/features/Banner/index.tsx +34 -31
  120. package/src/app/welcome/features/Banner/style.ts +10 -1
  121. package/src/app/welcome/page.tsx +9 -7
  122. package/src/components/ResponsiveIndex.tsx +17 -0
  123. package/src/const/url.ts +2 -1
  124. package/src/const/version.ts +6 -0
  125. package/src/features/MobileTabBar/index.tsx +1 -1
  126. package/src/features/SideBar/BottomActions.tsx +107 -81
  127. package/src/layout/{AppLayout.tsx → AppLayout.desktop.tsx} +2 -2
  128. package/src/layout/{AppMobileLayout.tsx → AppLayout.mobile.tsx} +2 -2
  129. package/src/layout/GlobalLayout/AppTheme.tsx +3 -3
  130. package/src/layout/GlobalLayout/Locale.tsx +2 -2
  131. package/src/layout/GlobalLayout/StoreHydration.tsx +15 -1
  132. package/src/layout/ResponsiveLayout.client.tsx +18 -0
  133. package/src/{components/ResponsiveLayout.tsx → layout/ResponsiveLayout.server.tsx} +4 -3
  134. package/src/locales/default/common.ts +5 -0
  135. package/src/locales/options.ts +8 -1
  136. package/src/locales/resources/index.ts +4 -0
  137. package/src/locales/resources/ja_JP.ts +19 -0
  138. package/src/locales/resources/ko_KR.ts +19 -0
  139. package/src/services/latestVersion.ts +11 -1
  140. package/src/store/global/initialState.ts +11 -9
  141. package/src/store/global/slices/common.ts +12 -0
  142. package/src/store/session/slices/session/initialState.ts +2 -2
  143. package/src/utils/VersionController.ts +1 -1
  144. package/src/utils/responsive.ts +1 -1
  145. package/.dockerignore +0 -10
  146. package/Dockerfile +0 -47
  147. package/src/app/chat/(desktop)/features/ChatHeader/index.tsx +0 -14
  148. package/src/app/chat/(desktop)/features/ChatInput/index.tsx +0 -22
  149. package/src/app/chat/(desktop)/features/SessionHeader/index.tsx +0 -14
  150. package/src/app/chat/(desktop)/features/SessionList/index.tsx +0 -20
  151. package/src/app/chat/(desktop)/features/SideBar/index.tsx +0 -20
  152. package/src/app/chat/(desktop)/layout/index.tsx +0 -25
  153. package/src/app/chat/(mobile)/features/Topics.tsx +0 -12
  154. package/src/app/chat/(mobile)/layout.tsx +0 -15
  155. package/src/app/chat/components/ChatHeader/Mobile.tsx +0 -54
  156. package/src/app/chat/components/ChatInput/Mobile.tsx +0 -35
  157. package/src/app/chat/components/SessionList/Mobile.tsx +0 -16
  158. package/src/app/chat/layout.tsx +0 -15
  159. package/src/app/chat/settings/layout.tsx +0 -14
  160. package/src/app/market/(desktop)/AgentDetail/index.tsx +0 -16
  161. package/src/app/market/(desktop)/Header/index.tsx +0 -13
  162. package/src/app/market/(desktop)/layout/index.tsx +0 -17
  163. package/src/app/market/(mobile)/AgentDetail.tsx +0 -12
  164. package/src/app/market/layout.tsx +0 -13
  165. package/src/app/settings/features/Header/index.tsx +0 -14
  166. package/src/app/settings/layout.desktop/index.tsx +0 -32
  167. package/src/app/settings/layout.mobile.tsx +0 -16
  168. package/src/app/settings/layout.tsx +0 -15
  169. package/src/app/settings/mobile/page.tsx +0 -7
  170. package/src/app/welcome/DesktopLayout/index.tsx +0 -15
  171. package/src/app/welcome/MobileLayout.tsx +0 -23
  172. package/src/app/welcome/layout.tsx +0 -22
  173. /package/src/app/chat/{components → features}/ChatHeader/PluginTag/PluginStatus.tsx +0 -0
  174. /package/src/app/chat/{components → features}/ChatHeader/PluginTag/index.tsx +0 -0
  175. /package/src/app/chat/{components → features}/ChatHeader/ShareButton/Inner.tsx +0 -0
  176. /package/src/app/chat/{components → features}/ChatHeader/ShareButton/index.tsx +0 -0
  177. /package/src/app/chat/{components/ChatInput → features/ChatInputContent}/ActionBar/ActionLeft.tsx +0 -0
  178. /package/src/app/chat/{components/ChatInput → features/ChatInputContent}/ActionBar/ActionRight.tsx +0 -0
  179. /package/src/app/chat/{components/ChatInput → features/ChatInputContent}/ActionBar/Token.tsx +0 -0
  180. /package/src/app/chat/{components/ChatInput → features/ChatInputContent}/Footer/index.tsx +0 -0
  181. /package/src/app/chat/features/{PageTitle.tsx → PageTitle/index.tsx} +0 -0
  182. /package/src/app/chat/{components/SessionList → features/SessionListContent}/CollapseGroup/index.tsx +0 -0
  183. /package/src/app/chat/{components/SessionList → features/SessionListContent}/List/AddButton.tsx +0 -0
  184. /package/src/app/chat/{components/SessionList → features/SessionListContent}/List/Item/Actions.tsx +0 -0
  185. /package/src/app/chat/{components/SessionList → features/SessionListContent}/List/Item/index.tsx +0 -0
  186. /package/src/app/chat/{components/SessionList → features/SessionListContent}/List/SkeletonList.tsx +0 -0
  187. /package/src/app/chat/{components/SessionList → features/SessionListContent}/List/index.tsx +0 -0
  188. /package/src/app/chat/{components/Inspector → features/TopicListContent}/SystemRole/Header.tsx +0 -0
  189. /package/src/app/chat/{components/Inspector → features/TopicListContent}/SystemRole/index.tsx +0 -0
  190. /package/src/app/chat/{components/Inspector → features/TopicListContent}/SystemRole/style.ts +0 -0
  191. /package/src/app/chat/{components/Inspector → features/TopicListContent}/Topic/DefaultContent.tsx +0 -0
  192. /package/src/app/chat/{components/Inspector → features/TopicListContent}/Topic/SkeletonList.tsx +0 -0
  193. /package/src/app/chat/{components/Inspector → features/TopicListContent}/Topic/TopicContent.tsx +0 -0
  194. /package/src/app/chat/{components/Inspector → features/TopicListContent}/Topic/TopicItem.tsx +0 -0
  195. /package/src/app/chat/{components/Inspector → features/TopicListContent}/Topic/index.tsx +0 -0
  196. /package/src/app/chat/{components/Inspector → features/TopicListContent}/TopicSearchBar/index.tsx +0 -0
  197. /package/src/app/market/(desktop)/{Header/Desktop.tsx → features/Header.tsx} +0 -0
  198. /package/src/app/market/(mobile)/{Header.tsx → features/Header.tsx} +0 -0
  199. /package/src/app/market/{components/AgentDetail → features/AgentDetailContent}/AgentInfo/Comment.tsx +0 -0
  200. /package/src/app/market/{components/AgentDetail → features/AgentDetailContent}/AgentInfo/Loading.tsx +0 -0
  201. /package/src/app/market/{components/AgentDetail → features/AgentDetailContent}/AgentInfo/TokenTag.tsx +0 -0
  202. /package/src/app/market/{components/AgentDetail → features/AgentDetailContent}/AgentInfo/index.tsx +0 -0
  203. /package/src/app/market/{components/AgentDetail → features/AgentDetailContent}/AgentInfo/style.ts +0 -0
@@ -0,0 +1,107 @@
1
+ {
2
+ "debug": {
3
+ "arguments": "함수 호출 인수",
4
+ "function_call": "함수 호출",
5
+ "response": "응답"
6
+ },
7
+ "dev": {
8
+ "confirmDeleteDevPlugin": "로컬 플러그인을 삭제하시겠습니까? 삭제 후에는 복구할 수 없습니다.",
9
+ "deleteSuccess": "플러그인이 성공적으로 삭제되었습니다.",
10
+ "manifest": {
11
+ "identifier": {
12
+ "desc": "플러그인의 고유 식별자",
13
+ "label": "식별자"
14
+ },
15
+ "mode": {
16
+ "local": "시각적 구성",
17
+ "local-tooltip": "시각적 구성은 일시적으로 지원되지 않습니다.",
18
+ "url": "온라인 링크"
19
+ },
20
+ "name": {
21
+ "desc": "플러그인 제목",
22
+ "label": "제목",
23
+ "placeholder": "검색 엔진"
24
+ }
25
+ },
26
+ "meta": {
27
+ "author": {
28
+ "desc": "플러그인 작성자",
29
+ "label": "작성자"
30
+ },
31
+ "avatar": {
32
+ "desc": "플러그인 아이콘으로는 Emoji 또는 URL을 사용할 수 있습니다.",
33
+ "label": "아이콘"
34
+ },
35
+ "description": {
36
+ "desc": "플러그인 설명",
37
+ "label": "설명",
38
+ "placeholder": "검색 엔진에서 정보 가져오기"
39
+ },
40
+ "formFieldRequired": "이 필드는 필수 입력 사항입니다.",
41
+ "homepage": {
42
+ "desc": "플러그인 홈페이지",
43
+ "label": "홈페이지"
44
+ },
45
+ "identifier": {
46
+ "desc": "플러그인의 고유 식별자는 manifest에서 자동으로 인식됩니다.",
47
+ "errorDuplicate": "식별자가 이미 있는 플러그인과 중복되었습니다. 식별자를 수정해주세요.",
48
+ "label": "식별자",
49
+ "pattenErrorMessage": "영문자, 숫자, - 및 _만 입력할 수 있습니다."
50
+ },
51
+ "manifest": {
52
+ "desc": "LobeChat은 이 링크를 통해 플러그인을 설치합니다.",
53
+ "jsonInvalid": "manifest가 규칙에 맞지 않습니다. 유효성 검사 결과: \n\n {{error}}",
54
+ "label": "플러그인 설명 파일 URL 주소",
55
+ "preview": "Manifest 미리보기",
56
+ "refresh": "새로 고침",
57
+ "requestError": "이 링크를 요청하는 중에 오류가 발생했습니다. 유효한 링크를 입력하고 링크가 크로스 도메인 액세스를 허용하는지 확인해주세요.",
58
+ "urlError": "이 링크는 JSON 형식의 내용을 반환하지 않습니다. 유효한 링크를 입력해주세요."
59
+ },
60
+ "title": {
61
+ "desc": "플러그인 제목",
62
+ "label": "제목",
63
+ "placeholder": "검색 엔진"
64
+ }
65
+ },
66
+ "metaConfig": "플러그인 메타 정보 구성",
67
+ "modalDesc": "사용자 정의 플러그인을 추가하면 플러그인 개발 검증 및 세션에서 직접 사용할 수 있습니다. 플러그인 개발 문서는 참조해주세요.",
68
+ "preview": {
69
+ "card": "플러그인 미리보기",
70
+ "desc": "플러그인 설명 미리보기",
71
+ "title": "플러그인 이름 미리보기"
72
+ },
73
+ "save": "저장",
74
+ "saveSuccess": "플러그인 설정이 성공적으로 저장되었습니다.",
75
+ "tabs": {
76
+ "manifest": "기능 설명 목록 (Manifest)",
77
+ "meta": "플러그인 메타 정보"
78
+ },
79
+ "title": "사용자 정의 플러그인 추가",
80
+ "update": "업데이트",
81
+ "updateSuccess": "플러그인 설정이 성공적으로 업데이트되었습니다."
82
+ },
83
+ "list": {
84
+ "item": {
85
+ "deprecated.title": "삭제됨",
86
+ "local.config": "구성",
87
+ "local.title": "사용자 정의"
88
+ }
89
+ },
90
+ "loading": {
91
+ "content": "데이터 가져오는 중...",
92
+ "plugin": "플러그인 실행 중..."
93
+ },
94
+ "pluginList": "플러그인 목록",
95
+ "plugins": {
96
+ "unknown": "플러그인 검사 중..."
97
+ },
98
+ "setting": "플러그인 설정",
99
+ "settings": {
100
+ "indexUrl": {
101
+ "title": "마켓 인덱스",
102
+ "tooltip": "온라인 편집은 지원되지 않습니다. 배포 환경 변수를 통해 설정해주세요."
103
+ },
104
+ "modalDesc": "플러그인 마켓의 주소를 구성하면 사용자 정의 플러그인 마켓을 사용할 수 있습니다.",
105
+ "title": "플러그인 마켓 설정"
106
+ }
107
+ }
@@ -0,0 +1,225 @@
1
+ {
2
+ "danger": {
3
+ "clear": {
4
+ "action": "지금 지우기",
5
+ "confirm": "모든 채팅 데이터를 지우시겠습니까?",
6
+ "desc": "모든 대화 데이터를 지웁니다.",
7
+ "success": "모든 대화 메시지가 지워졌습니다.",
8
+ "title": "모든 대화 메시지 지우기"
9
+ },
10
+ "reset": {
11
+ "action": "지금 재설정",
12
+ "confirm": "모든 설정을 재설정하시겠습니까?",
13
+ "currentVersion": "현재 버전",
14
+ "desc": "모든 설정 항목을 기본값으로 재설정합니다.",
15
+ "title": "모든 설정 재설정"
16
+ }
17
+ },
18
+ "header": {
19
+ "global": "전역 설정",
20
+ "session": "세션 설정",
21
+ "sessionWithName": "세션 설정 · {{name}}"
22
+ },
23
+ "llm": {
24
+ "AzureOpenAI": {
25
+ "endpoint": {
26
+ "desc": "Azure 포털에서 리소스를 확인할 때 이 값을 '키 및 엔드포인트' 섹션에서 찾을 수 있습니다.",
27
+ "placeholder": "https://docs-test-001.openai.azure.com",
28
+ "title": "Azure API 주소"
29
+ },
30
+ "models": {
31
+ "desc": "지원되는 모델",
32
+ "title": "모델 목록"
33
+ },
34
+ "title": "Azure OpenAI 설정",
35
+ "token": {
36
+ "desc": "Azure 포털에서 리소스를 확인할 때 이 값을 '키 및 엔드포인트' 섹션에서 찾을 수 있습니다. KEY1 또는 KEY2를 사용할 수 있습니다.",
37
+ "placeholder": "Azure API 키",
38
+ "title": "API 키"
39
+ }
40
+ },
41
+ "OpenAI": {
42
+ "azureApiVersion": {
43
+ "desc": "Azure의 API 버전입니다. YYYY-MM-DD 형식을 따릅니다. [최신 버전](https://learn.microsoft.com/ko-kr/azure/ai-services/openai/reference#chat-completions)을 확인하세요.",
44
+ "fetch": "목록 가져오기",
45
+ "title": "Azure API 버전"
46
+ },
47
+ "check": {
48
+ "button": "확인",
49
+ "desc": "API 키와 프록시 주소가 올바르게 입력되었는지 테스트합니다.",
50
+ "pass": "확인 완료",
51
+ "title": "연결성 확인"
52
+ },
53
+ "endpoint": {
54
+ "desc": "기본 주소 외에도 반드시 http(s)://를 포함해야 합니다.",
55
+ "placeholder": "https://api.openai.com/v1",
56
+ "title": "인터페이스 프록시 주소"
57
+ },
58
+ "models": {
59
+ "count": "총 {{count}}개의 모델 지원",
60
+ "desc": "지원되는 모델",
61
+ "fetch": "모델 목록 가져오기",
62
+ "notSupport": "Azure OpenAI에서 모델 목록을 볼 수 없습니다.",
63
+ "notSupportTip": "배포 이름과 모델 이름이 일치하는지 확인해야 합니다.",
64
+ "refetch": "모델 목록 다시 가져오기",
65
+ "title": "모델 목록"
66
+ },
67
+ "title": "OpenAI 설정",
68
+ "token": {
69
+ "desc": "자체 OpenAI 키 사용",
70
+ "placeholder": "OpenAI API 키",
71
+ "title": "API 키"
72
+ },
73
+ "useAzure": {
74
+ "desc": "Azure에서 제공하는 OpenAI 서비스 사용",
75
+ "fetch": "목록 가져오기",
76
+ "serverConfig": "관리자가 서버에서 Azure OpenAI를 구성했으므로 변경이 금지되었습니다.",
77
+ "title": "Azure OpenAI"
78
+ }
79
+ },
80
+ "waitingForMore": "더 많은 모델이 <1>계획 중</1>에 있으니 기대해주세요 ✨"
81
+ },
82
+ "settingAgent": {
83
+ "avatar": {
84
+ "title": "아바타"
85
+ },
86
+ "backgroundColor": {
87
+ "title": "배경색"
88
+ },
89
+ "description": {
90
+ "placeholder": "도우미 설명을 입력하세요.",
91
+ "title": "도우미 설명"
92
+ },
93
+ "name": {
94
+ "placeholder": "도우미 이름을 입력하세요.",
95
+ "title": "이름"
96
+ },
97
+ "prompt": {
98
+ "placeholder": "역할 프롬프트 힌트를 입력하세요.",
99
+ "title": "역할 설정"
100
+ },
101
+ "tag": {
102
+ "placeholder": "태그를 입력하세요.",
103
+ "title": "태그"
104
+ },
105
+ "title": "도우미 정보"
106
+ },
107
+ "settingChat": {
108
+ "chatStyleType": {
109
+ "title": "채팅 창 스타일",
110
+ "type": {
111
+ "chat": "대화 모드",
112
+ "docs": "문서 모드"
113
+ }
114
+ },
115
+ "compressThreshold": {
116
+ "desc": "압축되지 않은 이전 메시지가이 값보다 크면 압축됩니다.",
117
+ "title": "압축 임계값"
118
+ },
119
+ "enableCompressThreshold": {
120
+ "title": "이전 메시지 길이 압축 사용"
121
+ },
122
+ "enableHistoryCount": {
123
+ "alias": "제한 없음",
124
+ "limited": "대화 메시지 {{number}} 개만 포함",
125
+ "title": "대화 메시지 제한",
126
+ "unlimited": "대화 메시지 제한 없음"
127
+ },
128
+ "historyCount": {
129
+ "desc": "요청당 포함되는 이전 메시지 수",
130
+ "title": "포함된 이전 메시지 수"
131
+ },
132
+ "inputTemplate": {
133
+ "desc": "사용자의 최신 메시지가이 템플릿에 채워집니다.",
134
+ "placeholder": "사전 처리 템플릿 {{text}}은(는) 실시간 입력 정보로 대체됩니다.",
135
+ "title": "사용자 입력 사전 처리"
136
+ },
137
+ "title": "채팅 설정"
138
+ },
139
+ "settingModel": {
140
+ "enableMaxTokens": {
141
+ "title": "단일 응답 제한 사용"
142
+ },
143
+ "frequencyPenalty": {
144
+ "desc": "값이 클수록 반복 단어가 줄어듭니다.",
145
+ "title": "빈도 패널티"
146
+ },
147
+ "maxTokens": {
148
+ "desc": "단일 상호 작용에 사용되는 최대 토큰 수",
149
+ "title": "단일 응답 제한"
150
+ },
151
+ "model": {
152
+ "desc": "ChatGPT 모델",
153
+ "list": {
154
+ "gpt-3.5-turbo": "GPT 3.5",
155
+ "gpt-3.5-turbo-16k": "GPT 3.5 (16K)",
156
+ "gpt-4": "GPT 4",
157
+ "gpt-4-32k": "GPT 4 (32K)"
158
+ },
159
+ "title": "모델"
160
+ },
161
+ "presencePenalty": {
162
+ "desc": "값이 클수록 새로운 주제로 확장될 가능성이 높아집니다.",
163
+ "title": "주제 신선도"
164
+ },
165
+ "temperature": {
166
+ "desc": "값이 클수록 응답이 더 무작위 해집니다.",
167
+ "title": "랜덤성",
168
+ "titleWithValue": "랜덤성 {{value}}"
169
+ },
170
+ "title": "모델 설정",
171
+ "topP": {
172
+ "desc": "랜덤성과 유사하지만 함께 변경하지 마십시오.",
173
+ "title": "상위 P 샘플링"
174
+ }
175
+ },
176
+ "settingPlugin": {
177
+ "add": "추가",
178
+ "addTooltip": "사용자 정의 플러그인 추가",
179
+ "clearDeprecated": "사용되지 않는 플러그인 제거",
180
+ "config": "{{id}} 플러그인 구성",
181
+ "settings": "플러그인 마켓 설정",
182
+ "title": "플러그인 목록"
183
+ },
184
+ "settingSystem": {
185
+ "accessCode": {
186
+ "desc": "관리자가 암호 액세스를 활성화했습니다.",
187
+ "placeholder": "액세스 코드를 입력하세요.",
188
+ "title": "액세스 코드"
189
+ },
190
+ "title": "시스템 설정"
191
+ },
192
+ "settingTheme": {
193
+ "avatar": {
194
+ "title": "아바타"
195
+ },
196
+ "fontSize": {
197
+ "desc": "채팅 콘텐츠의 글꼴 크기",
198
+ "title": "글꼴 크기"
199
+ },
200
+ "lang": {
201
+ "autoMode": "시스템에 따름",
202
+ "title": "언어"
203
+ },
204
+ "neutralColor": {
205
+ "desc": "다양한 색상 경향의 중립적인 사용자 정의",
206
+ "title": "중립 색상"
207
+ },
208
+ "primaryColor": {
209
+ "desc": "사용자 정의 테마 색상",
210
+ "title": "테마 색상"
211
+ },
212
+ "themeMode": {
213
+ "auto": "자동",
214
+ "dark": "다크",
215
+ "light": "라이트",
216
+ "title": "테마"
217
+ },
218
+ "title": "테마 설정"
219
+ },
220
+ "tab": {
221
+ "agent": "기본 도우미",
222
+ "common": "일반 설정",
223
+ "llm": "언어 모델"
224
+ }
225
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "button": {
3
+ "import": "구성 가져오기",
4
+ "start": "지금 시작"
5
+ },
6
+ "header": "환영합니다",
7
+ "pickAgent": "또는 다음 도우미 템플릿 중 하나를 선택하세요",
8
+ "skip": "생성 건너뛰기",
9
+ "slogan": {
10
+ "desc1": "뇌 클러스터를 시작하여 아이디어를 자극하세요. 당신의 지능형 어시스턴트가 항상 여기에 있습니다.",
11
+ "desc2": "첫 번째 어시스턴트를 만들어 보세요. 시작해 봅시다~",
12
+ "title": "더 똑똑한 뇌를 위해 스스로에게 선물하세요"
13
+ }
14
+ }
@@ -94,5 +94,10 @@
94
94
  },
95
95
  "updateAgent": "Обновление информации о помощнике",
96
96
  "updatePrompt": "Обновление подсказок",
97
+ "upgradeVersion": {
98
+ "action": "Обновить сейчас",
99
+ "hasNew": "Доступно обновление",
100
+ "newVersion": "Доступна новая версия: {{version}}"
101
+ },
97
102
  "warp": "Разрыв строки"
98
103
  }
@@ -94,5 +94,10 @@
94
94
  },
95
95
  "updateAgent": "更新助理信息",
96
96
  "updatePrompt": "更新提示词",
97
+ "upgradeVersion": {
98
+ "action": "立即升级",
99
+ "hasNew": "有可用更新",
100
+ "newVersion": "有新版本可用:{{version}}"
101
+ },
97
102
  "warp": "换行"
98
103
  }
@@ -94,5 +94,10 @@
94
94
  },
95
95
  "updateAgent": "更新助理資訊",
96
96
  "updatePrompt": "更新提示",
97
+ "upgradeVersion": {
98
+ "action": "立即升級",
99
+ "hasNew": "有可用更新",
100
+ "newVersion": "有新版本可用:{{version}}"
101
+ },
97
102
  "warp": "換行"
98
103
  }
package/next.config.mjs CHANGED
@@ -2,7 +2,6 @@ import analyzer from '@next/bundle-analyzer';
2
2
  import nextPWA from 'next-pwa';
3
3
 
4
4
  const isProd = process.env.NODE_ENV === 'production';
5
- const buildWithDocker = process.env.DOCKER === 'true';
6
5
 
7
6
  const withBundleAnalyzer = analyzer({
8
7
  enabled: process.env.ANALYZE === 'true',
@@ -33,8 +32,6 @@ const nextConfig = {
33
32
  AGENTS_INDEX_URL: process.env.AGENTS_INDEX_URL,
34
33
  PLUGINS_INDEX_URL: process.env.PLUGINS_INDEX_URL,
35
34
  },
36
-
37
- output: buildWithDocker ? 'standalone' : undefined,
38
35
  };
39
36
 
40
37
  export default isProd ? withBundleAnalyzer(withPWA(nextConfig)) : nextConfig;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lobehub/chat",
3
- "version": "0.84.0-beta.2",
3
+ "version": "0.85.0",
4
4
  "description": "An open-source, extensible (Function Calling), high-performance chatbot framework. It supports one-click free deployment of your private ChatGPT/LLM web application",
5
5
  "keywords": [
6
6
  "chatbot",
@@ -25,7 +25,6 @@
25
25
  "scripts": {
26
26
  "build": "next build",
27
27
  "build:analyze": "ANALYZE=true next build",
28
- "build:docker": "DOCKER=true next build",
29
28
  "dev": "next dev -p 3010",
30
29
  "i18n": "npm run i18n:workflow && lobe-i18n",
31
30
  "i18n:workflow": "ts-node --project ./tsconfig.json scripts/i18nWorkflow/index.ts",
@@ -84,7 +83,6 @@
84
83
  "emoji-mart": "^5",
85
84
  "fast-deep-equal": "^3",
86
85
  "gpt-tokenizer": "^2",
87
- "html-to-image": "^1",
88
86
  "i18next": "^23",
89
87
  "i18next-browser-languagedetector": "^7",
90
88
  "i18next-resources-for-ts": "^1",
@@ -94,6 +92,7 @@
94
92
  "lodash-es": "^4",
95
93
  "lucide-react": "latest",
96
94
  "mixpanel-browser": "^2",
95
+ "modern-screenshot": "^4",
97
96
  "nanoid": "^5",
98
97
  "next": "^13.5.3",
99
98
  "openai": "^4.10.0",
@@ -108,6 +107,7 @@
108
107
  "remark": "^14",
109
108
  "remark-gfm": "^3",
110
109
  "remark-html": "^15",
110
+ "semver": "^7",
111
111
  "swr": "^2",
112
112
  "systemjs": "^6",
113
113
  "ts-md5": "^1",
@@ -120,7 +120,6 @@
120
120
  "zustand-utils": "^1"
121
121
  },
122
122
  "devDependencies": {
123
- "@codedependant/semantic-release-docker": "^4",
124
123
  "@commitlint/cli": "^17",
125
124
  "@lobehub/i18n-cli": "latest",
126
125
  "@lobehub/lint": "latest",
@@ -134,6 +133,7 @@
134
133
  "@types/node": "^20",
135
134
  "@types/react": "^18",
136
135
  "@types/react-dom": "^18",
136
+ "@types/semver": "^7",
137
137
  "@types/systemjs": "^6",
138
138
  "@types/ua-parser-js": "^0.7",
139
139
  "@types/uuid": "^9",
@@ -6,12 +6,26 @@
6
6
  {
7
7
  "src": "/icons/icon-192x192.png",
8
8
  "sizes": "192x192",
9
- "type": "image/png"
9
+ "type": "image/png",
10
+ "purpose": "any"
11
+ },
12
+ {
13
+ "src": "/icons/maskable-icon-192x192.png",
14
+ "sizes": "192x192",
15
+ "type": "image/png",
16
+ "purpose": "maskable"
10
17
  },
11
18
  {
12
19
  "src": "/icons/icon-512x512.png",
13
20
  "sizes": "512x512",
14
- "type": "image/png"
21
+ "type": "image/png",
22
+ "purpose": "any"
23
+ },
24
+ {
25
+ "src": "/icons/maskable-icon-512x512.png",
26
+ "sizes": "512x512",
27
+ "type": "image/png",
28
+ "purpose": "maskable"
15
29
  }
16
30
  ],
17
31
  "id": "/",
@@ -20,13 +34,28 @@
20
34
  "scope": "/",
21
35
  "screenshots": [
22
36
  {
23
- "src": "https://registry.npmmirror.com/@lobehub/assets-favicons/1.4.0/files/assets/og-960x540.png",
24
- "sizes": "960x540",
37
+ "src": "/screenshots/screenshot-1.png",
38
+ "sizes": "750x1334",
39
+ "type": "image/png"
40
+ },
41
+ {
42
+ "src": "/screenshots/screenshot-2.png",
43
+ "sizes": "750x1334",
44
+ "type": "image/png"
45
+ },
46
+ {
47
+ "src": "/screenshots/screenshot-3.png",
48
+ "sizes": "750x1334",
49
+ "type": "image/png"
50
+ },
51
+ {
52
+ "src": "/screenshots/screenshot-4.png",
53
+ "sizes": "750x1334",
25
54
  "type": "image/png"
26
55
  }
27
56
  ],
28
57
  "short_name": "LobeChat",
29
58
  "splash_pages": null,
30
- "start_url": "/",
59
+ "start_url": ".",
31
60
  "theme_color": "#000000"
32
61
  }
@@ -12,8 +12,8 @@ import { useSessionChatInit, useSessionStore } from '@/store/session';
12
12
  import { agentSelectors, sessionSelectors } from '@/store/session/selectors';
13
13
  import { pathString } from '@/utils/url';
14
14
 
15
- import PluginTag from '../../../components/ChatHeader/PluginTag';
16
- import ShareButton from '../../../components/ChatHeader/ShareButton';
15
+ import PluginTag from '../../features/ChatHeader/PluginTag';
16
+ import ShareButton from '../../features/ChatHeader/ShareButton';
17
17
 
18
18
  const Header = memo(() => {
19
19
  const init = useSessionChatInit();
@@ -1,15 +1,13 @@
1
1
  import { DraggablePanel } from '@lobehub/ui';
2
- import { ReactNode, memo } from 'react';
2
+ import { memo, useState } from 'react';
3
3
 
4
4
  import { CHAT_TEXTAREA_HEIGHT, HEADER_HEIGHT } from '@/const/layoutTokens';
5
5
  import { useGlobalStore } from '@/store/global';
6
6
 
7
- interface ChatInputDesktopLayoutProps {
8
- children: ReactNode;
9
- expand?: boolean;
10
- }
7
+ import ChatInputContent from '../../features/ChatInputContent';
11
8
 
12
- const ChatInputDesktopLayout = memo<ChatInputDesktopLayoutProps>(({ children, expand }) => {
9
+ const ChatInputDesktopLayout = memo(() => {
10
+ const [expand, setExpand] = useState<boolean>(false);
13
11
  const [inputHeight, updatePreference] = useGlobalStore((s) => [
14
12
  s.preference.inputHeight,
15
13
  s.updatePreference,
@@ -32,7 +30,7 @@ const ChatInputDesktopLayout = memo<ChatInputDesktopLayoutProps>(({ children, ex
32
30
  size={{ height: inputHeight, width: '100%' }}
33
31
  style={{ zIndex: 10 }}
34
32
  >
35
- {children}
33
+ <ChatInputContent expand={expand} onExpandChange={setExpand} />
36
34
  </DraggablePanel>
37
35
  );
38
36
  });
@@ -7,7 +7,7 @@ import { Flexbox } from 'react-layout-kit';
7
7
 
8
8
  import { useSessionStore } from '@/store/session';
9
9
 
10
- import SessionSearchBar from '../../../features/SessionSearchBar';
10
+ import SessionSearchBar from '../../features/SessionSearchBar';
11
11
 
12
12
  export const useStyles = createStyles(({ css, token }) => ({
13
13
  logo: css`
@@ -1,21 +1,22 @@
1
1
  import { DraggablePanelBody } from '@lobehub/ui';
2
2
  import { createStyles } from 'antd-style';
3
- import { ReactNode, memo } from 'react';
3
+ import { memo } from 'react';
4
4
 
5
5
  import FolderPanel from '@/features/FolderPanel';
6
6
 
7
- import Header from '../SessionHeader';
7
+ import SessionListContent from '../../features/SessionListContent';
8
+ import Header from './SessionHeader';
8
9
 
9
10
  const useStyles = createStyles(({ stylish }) => stylish.noScrollbar);
10
11
 
11
- const Sessions = memo<{ children: ReactNode }>(({ children }) => {
12
+ const Sessions = memo(() => {
12
13
  const { styles } = useStyles();
13
14
 
14
15
  return (
15
16
  <FolderPanel>
16
17
  <Header />
17
18
  <DraggablePanelBody className={styles} style={{ padding: 0 }}>
18
- {children}
19
+ <SessionListContent />
19
20
  </DraggablePanelBody>
20
21
  </FolderPanel>
21
22
  );
@@ -1,6 +1,6 @@
1
1
  import { DraggablePanel, DraggablePanelContainer } from '@lobehub/ui';
2
2
  import { createStyles } from 'antd-style';
3
- import { ReactNode, memo } from 'react';
3
+ import { memo } from 'react';
4
4
 
5
5
  import SafeSpacing from '@/components/SafeSpacing';
6
6
  import { CHAT_SIDEBAR_WIDTH } from '@/const/layoutTokens';
@@ -8,7 +8,8 @@ import { useGlobalStore } from '@/store/global';
8
8
  import { useSessionStore } from '@/store/session';
9
9
  import { sessionSelectors } from '@/store/session/selectors';
10
10
 
11
- import SystemRole from '../../../components/Inspector/SystemRole';
11
+ import TopicListContent from '../../features/TopicListContent';
12
+ import SystemRole from '../../features/TopicListContent/SystemRole';
12
13
 
13
14
  const useStyles = createStyles(({ css, token }) => ({
14
15
  content: css`
@@ -23,7 +24,7 @@ const useStyles = createStyles(({ css, token }) => ({
23
24
  `,
24
25
  }));
25
26
 
26
- const Desktop = memo<{ children: ReactNode }>(({ children }) => {
27
+ const Desktop = memo(() => {
27
28
  const { styles } = useStyles();
28
29
  const [showAgentSettings, toggleConfig] = useGlobalStore((s) => [
29
30
  s.preference.showChatSideBar,
@@ -49,7 +50,7 @@ const Desktop = memo<{ children: ReactNode }>(({ children }) => {
49
50
  >
50
51
  <SafeSpacing />
51
52
  {!isInbox && <SystemRole />}
52
- {children}
53
+ <TopicListContent />
53
54
  </DraggablePanelContainer>
54
55
  </DraggablePanel>
55
56
  );