@lobehub/chat 1.51.3 → 1.51.4

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 (588) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/changelog/v1.json +5 -0
  3. package/next.config.ts +5 -0
  4. package/package.json +2 -2
  5. package/src/app/{(main) → [variants]/(main)}/(mobile)/me/(home)/page.tsx +7 -4
  6. package/src/app/{(main) → [variants]/(main)}/(mobile)/me/profile/features/Category.tsx +1 -1
  7. package/src/app/{(main) → [variants]/(main)}/(mobile)/me/profile/page.tsx +7 -4
  8. package/src/app/{(main) → [variants]/(main)}/(mobile)/me/settings/page.tsx +7 -4
  9. package/src/app/{(main) → [variants]/(main)}/_layout/Desktop/SideBar/index.tsx +11 -6
  10. package/src/app/{(main) → [variants]/(main)}/_layout/Mobile/index.tsx +3 -4
  11. package/src/app/{(main) → [variants]/(main)}/changelog/modal/page.tsx +3 -2
  12. package/src/app/{(main) → [variants]/(main)}/changelog/page.tsx +7 -6
  13. package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@conversation/default.tsx +6 -5
  14. package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@portal/default.tsx +5 -4
  15. package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@topic/default.tsx +6 -5
  16. package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/_layout/Mobile/ChatHeader/index.tsx +1 -1
  17. package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/page.tsx +4 -3
  18. package/src/app/{(main) → [variants]/(main)}/chat/@session/default.tsx +3 -2
  19. package/src/app/{(main) → [variants]/(main)}/chat/layout.ts +2 -0
  20. package/src/app/{(main) → [variants]/(main)}/chat/settings/layout.tsx +2 -2
  21. package/src/app/{(main) → [variants]/(main)}/discover/(detail)/assistant/[slug]/features/InfoSidebar/SuggestionItem.tsx +2 -2
  22. package/src/app/{(main) → [variants]/(main)}/discover/(detail)/assistant/[slug]/page.tsx +2 -2
  23. package/src/app/{(main) → [variants]/(main)}/discover/(detail)/model/[...slugs]/page.tsx +3 -3
  24. package/src/app/{(main) → [variants]/(main)}/discover/(detail)/plugin/[slug]/page.tsx +2 -2
  25. package/src/app/{(main) → [variants]/(main)}/discover/(detail)/provider/[slug]/page.tsx +2 -2
  26. package/src/app/{(main) → [variants]/(main)}/discover/(list)/(home)/page.tsx +10 -3
  27. package/src/app/{(main) → [variants]/(main)}/discover/(list)/assistants/[slug]/page.tsx +2 -2
  28. package/src/app/{(main) → [variants]/(main)}/discover/(list)/assistants/page.tsx +10 -4
  29. package/src/app/{(main) → [variants]/(main)}/discover/(list)/models/[slug]/page.tsx +2 -2
  30. package/src/app/{(main) → [variants]/(main)}/discover/(list)/models/page.tsx +11 -5
  31. package/src/app/{(main) → [variants]/(main)}/discover/(list)/plugins/[slug]/page.tsx +2 -2
  32. package/src/app/{(main) → [variants]/(main)}/discover/(list)/plugins/page.tsx +11 -5
  33. package/src/app/{(main) → [variants]/(main)}/discover/(list)/providers/page.tsx +11 -5
  34. package/src/app/{(main) → [variants]/(main)}/discover/layout.tsx +2 -0
  35. package/src/app/{(main) → [variants]/(main)}/discover/search/page.tsx +3 -3
  36. package/src/app/{(main) → [variants]/(main)}/files/(content)/@menu/features/FileMenu/index.tsx +1 -1
  37. package/src/app/{(main) → [variants]/(main)}/files/(content)/@modal/(.)[id]/FullscreenModal.tsx +1 -1
  38. package/src/app/{(main) → [variants]/(main)}/files/(content)/page.tsx +1 -1
  39. package/src/app/{(main) → [variants]/(main)}/files/hooks/useFileCategory.ts +1 -4
  40. package/src/app/{(main) → [variants]/(main)}/files/layout.tsx +2 -0
  41. package/src/app/{(main) → [variants]/(main)}/profile/(home)/[[...slugs]]/page.tsx +4 -3
  42. package/src/app/{(main) → [variants]/(main)}/profile/features/ClerkProfile.tsx +3 -1
  43. package/src/app/{(main) → [variants]/(main)}/profile/security/page.tsx +4 -3
  44. package/src/app/{(main) → [variants]/(main)}/profile/stats/page.tsx +4 -3
  45. package/src/app/{(main) → [variants]/(main)}/settings/@category/features/CategoryContent.tsx +2 -1
  46. package/src/app/{(main) → [variants]/(main)}/settings/common/features/Common.tsx +1 -1
  47. package/src/app/{(main) → [variants]/(main)}/settings/common/features/Theme/index.tsx +1 -1
  48. package/src/app/{(main) → [variants]/(main)}/settings/layout.ts +2 -0
  49. package/src/app/{(main) → [variants]/(main)}/settings/llm/components/ProviderConfig/index.tsx +2 -2
  50. package/src/app/{(main) → [variants]/(main)}/settings/provider/layout.tsx +2 -2
  51. package/src/app/{(main) → [variants]/(main)}/settings/sync/features/WebRTC/index.tsx +1 -1
  52. package/src/app/{@modal → [variants]/@modal}/(.)changelog/modal/page.tsx +5 -6
  53. package/src/app/{@modal → [variants]/@modal}/_layout/SettingModalLayout.tsx +2 -2
  54. package/src/app/{@modal → [variants]/@modal}/chat/(.)settings/modal/features/CategoryContent.tsx +1 -1
  55. package/src/app/{@modal → [variants]/@modal}/chat/(.)settings/modal/layout.tsx +1 -1
  56. package/src/app/[variants]/layout.tsx +94 -0
  57. package/src/app/{page.tsx → [variants]/page.tsx} +3 -1
  58. package/src/components/server/ServerLayout.tsx +19 -5
  59. package/src/hooks/useActiveTabKey.ts +0 -7
  60. package/src/layout/AuthProvider/Clerk/index.tsx +0 -1
  61. package/src/layout/GlobalProvider/ReactScan.tsx +2 -4
  62. package/src/layout/GlobalProvider/StoreInitialization.tsx +7 -2
  63. package/src/layout/GlobalProvider/index.tsx +21 -29
  64. package/src/locales/create.ts +15 -16
  65. package/src/middleware.ts +96 -23
  66. package/src/server/translation.test.ts +0 -7
  67. package/src/server/translation.ts +2 -5
  68. package/src/types/discover.ts +4 -1
  69. package/src/types/next.ts +4 -0
  70. package/src/utils/locale.ts +20 -4
  71. package/src/utils/server/routeVariants.ts +80 -0
  72. package/src/app/layout.tsx +0 -67
  73. package/src/hooks/useSettingsTab.ts +0 -12
  74. /package/src/app/{(main) → [variants]/(main)}/(mobile)/me/(home)/__tests__/UserBanner.test.tsx +0 -0
  75. /package/src/app/{(main) → [variants]/(main)}/(mobile)/me/(home)/__tests__/useCategory.test.tsx +0 -0
  76. /package/src/app/{(main) → [variants]/(main)}/(mobile)/me/(home)/features/Category.tsx +0 -0
  77. /package/src/app/{(main) → [variants]/(main)}/(mobile)/me/(home)/features/Header.tsx +0 -0
  78. /package/src/app/{(main) → [variants]/(main)}/(mobile)/me/(home)/features/UserBanner.tsx +0 -0
  79. /package/src/app/{(main) → [variants]/(main)}/(mobile)/me/(home)/features/useCategory.tsx +0 -0
  80. /package/src/app/{(main) → [variants]/(main)}/(mobile)/me/(home)/layout.tsx +0 -0
  81. /package/src/app/{(main) → [variants]/(main)}/(mobile)/me/(home)/loading.tsx +0 -0
  82. /package/src/app/{(main) → [variants]/(main)}/(mobile)/me/data/features/Category.tsx +0 -0
  83. /package/src/app/{(main) → [variants]/(main)}/(mobile)/me/data/features/Header.tsx +0 -0
  84. /package/src/app/{(main) → [variants]/(main)}/(mobile)/me/data/layout.tsx +0 -0
  85. /package/src/app/{(main) → [variants]/(main)}/(mobile)/me/data/loading.tsx +0 -0
  86. /package/src/app/{(main) → [variants]/(main)}/(mobile)/me/data/page.tsx +0 -0
  87. /package/src/app/{(main) → [variants]/(main)}/(mobile)/me/profile/features/Header.tsx +0 -0
  88. /package/src/app/{(main) → [variants]/(main)}/(mobile)/me/profile/layout.tsx +0 -0
  89. /package/src/app/{(main) → [variants]/(main)}/(mobile)/me/profile/loading.tsx +0 -0
  90. /package/src/app/{(main) → [variants]/(main)}/(mobile)/me/settings/features/Category.tsx +0 -0
  91. /package/src/app/{(main) → [variants]/(main)}/(mobile)/me/settings/features/Header.tsx +0 -0
  92. /package/src/app/{(main) → [variants]/(main)}/(mobile)/me/settings/features/useCategory.tsx +0 -0
  93. /package/src/app/{(main) → [variants]/(main)}/(mobile)/me/settings/layout.tsx +0 -0
  94. /package/src/app/{(main) → [variants]/(main)}/(mobile)/me/settings/loading.tsx +0 -0
  95. /package/src/app/{(main) → [variants]/(main)}/_layout/Desktop/SideBar/Avatar.test.tsx +0 -0
  96. /package/src/app/{(main) → [variants]/(main)}/_layout/Desktop/SideBar/Avatar.tsx +0 -0
  97. /package/src/app/{(main) → [variants]/(main)}/_layout/Desktop/SideBar/BottomActions.tsx +0 -0
  98. /package/src/app/{(main) → [variants]/(main)}/_layout/Desktop/SideBar/PinList/index.tsx +0 -0
  99. /package/src/app/{(main) → [variants]/(main)}/_layout/Desktop/SideBar/TopActions.test.tsx +0 -0
  100. /package/src/app/{(main) → [variants]/(main)}/_layout/Desktop/SideBar/TopActions.tsx +0 -0
  101. /package/src/app/{(main) → [variants]/(main)}/_layout/Desktop/index.tsx +0 -0
  102. /package/src/app/{(main) → [variants]/(main)}/_layout/Mobile/NavBar.tsx +0 -0
  103. /package/src/app/{(main) → [variants]/(main)}/changelog/_layout/Desktop.tsx +0 -0
  104. /package/src/app/{(main) → [variants]/(main)}/changelog/_layout/Mobile/Header.tsx +0 -0
  105. /package/src/app/{(main) → [variants]/(main)}/changelog/_layout/Mobile/index.tsx +0 -0
  106. /package/src/app/{(main) → [variants]/(main)}/changelog/error.tsx +0 -0
  107. /package/src/app/{(main) → [variants]/(main)}/changelog/features/GridLayout.tsx +0 -0
  108. /package/src/app/{(main) → [variants]/(main)}/changelog/features/Hero.tsx +0 -0
  109. /package/src/app/{(main) → [variants]/(main)}/changelog/features/Post.tsx +0 -0
  110. /package/src/app/{(main) → [variants]/(main)}/changelog/features/PublishedTime.tsx +0 -0
  111. /package/src/app/{(main) → [variants]/(main)}/changelog/features/VersionTag.tsx +0 -0
  112. /package/src/app/{(main) → [variants]/(main)}/changelog/layout.tsx +0 -0
  113. /package/src/app/{(main) → [variants]/(main)}/changelog/loading.tsx +0 -0
  114. /package/src/app/{(main) → [variants]/(main)}/changelog/not-found.tsx +0 -0
  115. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@conversation/features/ChatHydration/index.tsx +0 -0
  116. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@conversation/features/ChatInput/Desktop/Footer/SendMore.tsx +0 -0
  117. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@conversation/features/ChatInput/Desktop/Footer/ShortcutHint.tsx +0 -0
  118. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@conversation/features/ChatInput/Desktop/Footer/index.tsx +0 -0
  119. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@conversation/features/ChatInput/Desktop/TextArea.test.tsx +0 -0
  120. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@conversation/features/ChatInput/Desktop/TextArea.tsx +0 -0
  121. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@conversation/features/ChatInput/Desktop/index.tsx +0 -0
  122. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@conversation/features/ChatInput/index.tsx +0 -0
  123. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@conversation/features/ChatList/ChatItem/Thread.tsx +0 -0
  124. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@conversation/features/ChatList/ChatItem/ThreadItem.tsx +0 -0
  125. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@conversation/features/ChatList/ChatItem/index.tsx +0 -0
  126. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@conversation/features/ChatList/Content.tsx +0 -0
  127. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@conversation/features/ChatList/WelcomeChatItem/InboxWelcome/AgentsSuggest.tsx +0 -0
  128. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@conversation/features/ChatList/WelcomeChatItem/InboxWelcome/QuestionSuggest.tsx +0 -0
  129. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@conversation/features/ChatList/WelcomeChatItem/InboxWelcome/index.tsx +0 -0
  130. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@conversation/features/ChatList/WelcomeChatItem/WelcomeMessage.tsx +0 -0
  131. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@conversation/features/ChatList/WelcomeChatItem/index.tsx +0 -0
  132. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@conversation/features/ChatList/index.tsx +0 -0
  133. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@conversation/features/ThreadHydration.tsx +0 -0
  134. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@conversation/features/ZenModeToast/Toast.tsx +0 -0
  135. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@conversation/features/ZenModeToast/index.tsx +0 -0
  136. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@portal/_layout/Desktop.tsx +0 -0
  137. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@portal/_layout/Mobile.tsx +0 -0
  138. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@portal/error.tsx +0 -0
  139. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@portal/features/Body.tsx +0 -0
  140. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@portal/loading.tsx +0 -0
  141. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@topic/_layout/Desktop.tsx +0 -0
  142. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@topic/_layout/Mobile.tsx +0 -0
  143. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@topic/features/Header.tsx +0 -0
  144. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@topic/features/SkeletonList.tsx +0 -0
  145. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@topic/features/SystemRole/SystemRoleContent.tsx +0 -0
  146. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@topic/features/SystemRole/index.tsx +0 -0
  147. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@topic/features/SystemRole/style.ts +0 -0
  148. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@topic/features/TopicListContent/ByTimeMode/GroupItem.tsx +0 -0
  149. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@topic/features/TopicListContent/ByTimeMode/index.tsx +0 -0
  150. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@topic/features/TopicListContent/FlatMode/index.tsx +0 -0
  151. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@topic/features/TopicListContent/ThreadItem/Content.tsx +0 -0
  152. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@topic/features/TopicListContent/ThreadItem/index.tsx +0 -0
  153. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@topic/features/TopicListContent/TopicItem/DefaultContent.tsx +0 -0
  154. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@topic/features/TopicListContent/TopicItem/TopicContent.tsx +0 -0
  155. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@topic/features/TopicListContent/TopicItem/index.tsx +0 -0
  156. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@topic/features/TopicListContent/index.tsx +0 -0
  157. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/@topic/features/TopicSearchBar/index.tsx +0 -0
  158. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/_layout/Desktop/ChatHeader/HeaderAction.tsx +0 -0
  159. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/_layout/Desktop/ChatHeader/KnowledgeTag.tsx +0 -0
  160. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/_layout/Desktop/ChatHeader/Main.tsx +0 -0
  161. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/_layout/Desktop/ChatHeader/Tags.tsx +0 -0
  162. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/_layout/Desktop/ChatHeader/index.tsx +0 -0
  163. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/_layout/Desktop/HotKeys.tsx +0 -0
  164. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/_layout/Desktop/Portal.tsx +0 -0
  165. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/_layout/Desktop/TopicPanel.tsx +0 -0
  166. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/_layout/Desktop/index.tsx +0 -0
  167. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/_layout/Mobile/ChatHeader/ChatHeaderTitle.tsx +0 -0
  168. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/_layout/Mobile/TopicModal.tsx +0 -0
  169. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/_layout/Mobile/index.tsx +0 -0
  170. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/_layout/type.ts +0 -0
  171. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/_layout/useInitAgentConfig.ts +0 -0
  172. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/features/ChangelogModal.tsx +0 -0
  173. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/features/SettingButton.tsx +0 -0
  174. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/features/ShareButton/index.tsx +0 -0
  175. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/features/TelemetryNotification.tsx +0 -0
  176. /package/src/app/{(main) → [variants]/(main)}/chat/(workspace)/layout.ts +0 -0
  177. /package/src/app/{(main) → [variants]/(main)}/chat/@session/_layout/Desktop/PanelBody.tsx +0 -0
  178. /package/src/app/{(main) → [variants]/(main)}/chat/@session/_layout/Desktop/SessionHeader.tsx +0 -0
  179. /package/src/app/{(main) → [variants]/(main)}/chat/@session/_layout/Desktop/index.tsx +0 -0
  180. /package/src/app/{(main) → [variants]/(main)}/chat/@session/_layout/Mobile/SessionHeader.tsx +0 -0
  181. /package/src/app/{(main) → [variants]/(main)}/chat/@session/_layout/Mobile/index.tsx +0 -0
  182. /package/src/app/{(main) → [variants]/(main)}/chat/@session/features/SessionHydration.tsx +0 -0
  183. /package/src/app/{(main) → [variants]/(main)}/chat/@session/features/SessionListContent/CollapseGroup/Actions.tsx +0 -0
  184. /package/src/app/{(main) → [variants]/(main)}/chat/@session/features/SessionListContent/CollapseGroup/index.tsx +0 -0
  185. /package/src/app/{(main) → [variants]/(main)}/chat/@session/features/SessionListContent/DefaultMode.tsx +0 -0
  186. /package/src/app/{(main) → [variants]/(main)}/chat/@session/features/SessionListContent/Inbox/index.tsx +0 -0
  187. /package/src/app/{(main) → [variants]/(main)}/chat/@session/features/SessionListContent/List/AddButton.tsx +0 -0
  188. /package/src/app/{(main) → [variants]/(main)}/chat/@session/features/SessionListContent/List/Item/Actions.tsx +0 -0
  189. /package/src/app/{(main) → [variants]/(main)}/chat/@session/features/SessionListContent/List/Item/index.tsx +0 -0
  190. /package/src/app/{(main) → [variants]/(main)}/chat/@session/features/SessionListContent/List/index.tsx +0 -0
  191. /package/src/app/{(main) → [variants]/(main)}/chat/@session/features/SessionListContent/ListItem/index.tsx +0 -0
  192. /package/src/app/{(main) → [variants]/(main)}/chat/@session/features/SessionListContent/Modals/ConfigGroupModal/GroupItem.tsx +0 -0
  193. /package/src/app/{(main) → [variants]/(main)}/chat/@session/features/SessionListContent/Modals/ConfigGroupModal/index.tsx +0 -0
  194. /package/src/app/{(main) → [variants]/(main)}/chat/@session/features/SessionListContent/Modals/CreateGroupModal.tsx +0 -0
  195. /package/src/app/{(main) → [variants]/(main)}/chat/@session/features/SessionListContent/Modals/RenameGroupModal.tsx +0 -0
  196. /package/src/app/{(main) → [variants]/(main)}/chat/@session/features/SessionListContent/SearchMode.tsx +0 -0
  197. /package/src/app/{(main) → [variants]/(main)}/chat/@session/features/SessionListContent/index.tsx +0 -0
  198. /package/src/app/{(main) → [variants]/(main)}/chat/@session/features/SessionSearchBar.tsx +0 -0
  199. /package/src/app/{(main) → [variants]/(main)}/chat/@session/features/SkeletonList.tsx +0 -0
  200. /package/src/app/{(main) → [variants]/(main)}/chat/_layout/Desktop/SessionPanel.tsx +0 -0
  201. /package/src/app/{(main) → [variants]/(main)}/chat/_layout/Desktop/index.tsx +0 -0
  202. /package/src/app/{(main) → [variants]/(main)}/chat/_layout/Mobile.tsx +0 -0
  203. /package/src/app/{(main) → [variants]/(main)}/chat/_layout/type.ts +0 -0
  204. /package/src/app/{(main) → [variants]/(main)}/chat/error.tsx +0 -0
  205. /package/src/app/{(main) → [variants]/(main)}/chat/features/Migration/DBReader.ts +0 -0
  206. /package/src/app/{(main) → [variants]/(main)}/chat/features/Migration/ExportConfigButton.tsx +0 -0
  207. /package/src/app/{(main) → [variants]/(main)}/chat/features/Migration/Failed.tsx +0 -0
  208. /package/src/app/{(main) → [variants]/(main)}/chat/features/Migration/Modal.tsx +0 -0
  209. /package/src/app/{(main) → [variants]/(main)}/chat/features/Migration/Start.tsx +0 -0
  210. /package/src/app/{(main) → [variants]/(main)}/chat/features/Migration/UpgradeButton.tsx +0 -0
  211. /package/src/app/{(main) → [variants]/(main)}/chat/features/Migration/const.ts +0 -0
  212. /package/src/app/{(main) → [variants]/(main)}/chat/features/Migration/index.tsx +0 -0
  213. /package/src/app/{(main) → [variants]/(main)}/chat/features/PageTitle/index.tsx +0 -0
  214. /package/src/app/{(main) → [variants]/(main)}/chat/loading.tsx +0 -0
  215. /package/src/app/{(main) → [variants]/(main)}/chat/not-found.tsx +0 -0
  216. /package/src/app/{(main) → [variants]/(main)}/chat/settings/_layout/Desktop/Header.tsx +0 -0
  217. /package/src/app/{(main) → [variants]/(main)}/chat/settings/_layout/Desktop/index.tsx +0 -0
  218. /package/src/app/{(main) → [variants]/(main)}/chat/settings/_layout/Mobile/Header.tsx +0 -0
  219. /package/src/app/{(main) → [variants]/(main)}/chat/settings/_layout/Mobile/index.tsx +0 -0
  220. /package/src/app/{(main) → [variants]/(main)}/chat/settings/error.tsx +0 -0
  221. /package/src/app/{(main) → [variants]/(main)}/chat/settings/features/EditPage.tsx +0 -0
  222. /package/src/app/{(main) → [variants]/(main)}/chat/settings/features/HeaderContent.tsx +0 -0
  223. /package/src/app/{(main) → [variants]/(main)}/chat/settings/features/SubmitAgentButton/SubmitAgentModal.tsx +0 -0
  224. /package/src/app/{(main) → [variants]/(main)}/chat/settings/features/SubmitAgentButton/index.tsx +0 -0
  225. /package/src/app/{(main) → [variants]/(main)}/chat/settings/features/SubmitAgentButton/style.ts +0 -0
  226. /package/src/app/{(main) → [variants]/(main)}/chat/settings/loading.tsx +0 -0
  227. /package/src/app/{(main) → [variants]/(main)}/chat/settings/modal/page.tsx +0 -0
  228. /package/src/app/{(main) → [variants]/(main)}/chat/settings/not-found.tsx +0 -0
  229. /package/src/app/{(main) → [variants]/(main)}/chat/settings/page.tsx +0 -0
  230. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/_layout/Desktop.tsx +0 -0
  231. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/_layout/Mobile/Header.tsx +0 -0
  232. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/_layout/Mobile/index.tsx +0 -0
  233. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/assistant/[slug]/features/Actions.tsx +0 -0
  234. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/assistant/[slug]/features/AddAgent.tsx +0 -0
  235. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/assistant/[slug]/features/ConversationExample/TopicList.tsx +0 -0
  236. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/assistant/[slug]/features/ConversationExample/index.tsx +0 -0
  237. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/assistant/[slug]/features/Header.tsx +0 -0
  238. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/assistant/[slug]/features/InfoSidebar/ToolItem.tsx +0 -0
  239. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/assistant/[slug]/features/InfoSidebar/index.tsx +0 -0
  240. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/assistant/[slug]/features/SystemRole.tsx +0 -0
  241. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/assistant/[slug]/features/Temp.tsx +0 -0
  242. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/error.tsx +0 -0
  243. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/features/Back.tsx +0 -0
  244. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/features/Block.tsx +0 -0
  245. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/features/DetailLayout.tsx +0 -0
  246. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/features/HighlightBlock.tsx +0 -0
  247. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/features/ShareButton.tsx +0 -0
  248. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/features/SidebarContainer.tsx +0 -0
  249. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/layout.tsx +0 -0
  250. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/loading.tsx +0 -0
  251. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/model/[...slugs]/features/Actions.tsx +0 -0
  252. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/model/[...slugs]/features/ChatWithModel.tsx +0 -0
  253. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/model/[...slugs]/features/Header.tsx +0 -0
  254. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/model/[...slugs]/features/InfoSidebar/SuggestionItem.tsx +0 -0
  255. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/model/[...slugs]/features/InfoSidebar/index.tsx +0 -0
  256. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/model/[...slugs]/features/ParameterList/ParameterItem.tsx +0 -0
  257. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/model/[...slugs]/features/ParameterList/index.tsx +0 -0
  258. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/model/[...slugs]/features/ProviderList/ProviderItem.tsx +0 -0
  259. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/model/[...slugs]/features/ProviderList/index.tsx +0 -0
  260. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/not-found.tsx +0 -0
  261. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/plugin/[slug]/features/Actions.tsx +0 -0
  262. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/plugin/[slug]/features/Header.tsx +0 -0
  263. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/plugin/[slug]/features/InfoSidebar/SuggestionItem.tsx +0 -0
  264. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/plugin/[slug]/features/InfoSidebar/index.tsx +0 -0
  265. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/plugin/[slug]/features/InstallPlugin.tsx +0 -0
  266. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/plugin/[slug]/features/ParameterList.tsx +0 -0
  267. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/plugin/[slug]/features/Schema.tsx +0 -0
  268. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/provider/[slug]/features/Actions.tsx +0 -0
  269. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/provider/[slug]/features/Header.tsx +0 -0
  270. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/provider/[slug]/features/InfoSidebar/SuggestionItem.tsx +0 -0
  271. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/provider/[slug]/features/InfoSidebar/index.tsx +0 -0
  272. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/provider/[slug]/features/ModelList/ModelItem.tsx +0 -0
  273. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/provider/[slug]/features/ModelList/index.tsx +0 -0
  274. /package/src/app/{(main) → [variants]/(main)}/discover/(detail)/provider/[slug]/features/ProviderConfig.tsx +0 -0
  275. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/(home)/Client.tsx +0 -0
  276. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/(home)/features/AssistantList.tsx +0 -0
  277. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/(home)/features/ModelList.tsx +0 -0
  278. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/(home)/features/PluginList.tsx +0 -0
  279. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/(home)/loading.tsx +0 -0
  280. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/_layout/Desktop/Nav.tsx +0 -0
  281. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/_layout/Desktop/index.tsx +0 -0
  282. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/_layout/Desktop/useScroll.ts +0 -0
  283. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/_layout/Mobile/Header.tsx +0 -0
  284. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/_layout/Mobile/Nav.tsx +0 -0
  285. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/_layout/Mobile/index.tsx +0 -0
  286. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/assistants/_layout/Desktop.tsx +0 -0
  287. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/assistants/_layout/Mobile.tsx +0 -0
  288. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/assistants/features/Card.tsx +0 -0
  289. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/assistants/features/Category.tsx +0 -0
  290. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/assistants/features/List.tsx +0 -0
  291. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/assistants/features/useCategory.tsx +0 -0
  292. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/assistants/layout.tsx +0 -0
  293. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/assistants/loading.tsx +0 -0
  294. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/error.tsx +0 -0
  295. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/layout.tsx +0 -0
  296. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/loading.tsx +0 -0
  297. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/models/_layout/Desktop.tsx +0 -0
  298. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/models/_layout/Mobile.tsx +0 -0
  299. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/models/features/Card.tsx +0 -0
  300. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/models/features/Category.tsx +0 -0
  301. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/models/features/List.tsx +0 -0
  302. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/models/features/const.ts +0 -0
  303. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/models/layout.tsx +0 -0
  304. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/models/loading.tsx +0 -0
  305. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/not-found.tsx +0 -0
  306. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/plugins/_layout/Desktop.tsx +0 -0
  307. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/plugins/_layout/Mobile.tsx +0 -0
  308. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/plugins/features/Card.tsx +0 -0
  309. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/plugins/features/Category.tsx +0 -0
  310. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/plugins/features/List.tsx +0 -0
  311. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/plugins/features/useCategory.tsx +0 -0
  312. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/plugins/layout.tsx +0 -0
  313. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/plugins/loading.tsx +0 -0
  314. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/providers/features/Card.tsx +0 -0
  315. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/providers/features/List.tsx +0 -0
  316. /package/src/app/{(main) → [variants]/(main)}/discover/(list)/providers/loading.tsx +0 -0
  317. /package/src/app/{(main) → [variants]/(main)}/discover/_layout/Desktop/Header.tsx +0 -0
  318. /package/src/app/{(main) → [variants]/(main)}/discover/_layout/Desktop/index.tsx +0 -0
  319. /package/src/app/{(main) → [variants]/(main)}/discover/_layout/Mobile/index.tsx +0 -0
  320. /package/src/app/{(main) → [variants]/(main)}/discover/components/CardBanner.tsx +0 -0
  321. /package/src/app/{(main) → [variants]/(main)}/discover/components/CategoryContainer.tsx +0 -0
  322. /package/src/app/{(main) → [variants]/(main)}/discover/components/CategoryMenu.tsx +0 -0
  323. /package/src/app/{(main) → [variants]/(main)}/discover/components/GitHubAvatar.tsx +0 -0
  324. /package/src/app/{(main) → [variants]/(main)}/discover/components/GridLoadingCard.tsx +0 -0
  325. /package/src/app/{(main) → [variants]/(main)}/discover/components/ListLoading.tsx +0 -0
  326. /package/src/app/{(main) → [variants]/(main)}/discover/components/Loading.tsx +0 -0
  327. /package/src/app/{(main) → [variants]/(main)}/discover/components/SearchResultCount.tsx +0 -0
  328. /package/src/app/{(main) → [variants]/(main)}/discover/components/Statistic.tsx +0 -0
  329. /package/src/app/{(main) → [variants]/(main)}/discover/components/Title.tsx +0 -0
  330. /package/src/app/{(main) → [variants]/(main)}/discover/components/VirtuosoGridList/index.tsx +0 -0
  331. /package/src/app/{(main) → [variants]/(main)}/discover/components/VirtuosoGridList/useScrollParent.ts +0 -0
  332. /package/src/app/{(main) → [variants]/(main)}/discover/error.tsx +0 -0
  333. /package/src/app/{(main) → [variants]/(main)}/discover/features/CreateButton/Inner.tsx +0 -0
  334. /package/src/app/{(main) → [variants]/(main)}/discover/features/CreateButton/index.tsx +0 -0
  335. /package/src/app/{(main) → [variants]/(main)}/discover/features/LikeButton.tsx +0 -0
  336. /package/src/app/{(main) → [variants]/(main)}/discover/features/ModelFeatureTags.tsx +0 -0
  337. /package/src/app/{(main) → [variants]/(main)}/discover/features/StoreSearchBar.tsx +0 -0
  338. /package/src/app/{(main) → [variants]/(main)}/discover/features/const.ts +0 -0
  339. /package/src/app/{(main) → [variants]/(main)}/discover/features/useNav.tsx +0 -0
  340. /package/src/app/{(main) → [variants]/(main)}/discover/loading.tsx +0 -0
  341. /package/src/app/{(main) → [variants]/(main)}/discover/not-found.tsx +0 -0
  342. /package/src/app/{(main) → [variants]/(main)}/discover/search/_layout/Desktop.tsx +0 -0
  343. /package/src/app/{(main) → [variants]/(main)}/discover/search/_layout/Mobile/Header.tsx +0 -0
  344. /package/src/app/{(main) → [variants]/(main)}/discover/search/_layout/Mobile/Nav.tsx +0 -0
  345. /package/src/app/{(main) → [variants]/(main)}/discover/search/_layout/Mobile/index.tsx +0 -0
  346. /package/src/app/{(main) → [variants]/(main)}/discover/search/features/AssistantsResult.tsx +0 -0
  347. /package/src/app/{(main) → [variants]/(main)}/discover/search/features/Category.tsx +0 -0
  348. /package/src/app/{(main) → [variants]/(main)}/discover/search/features/ModelsResult.tsx +0 -0
  349. /package/src/app/{(main) → [variants]/(main)}/discover/search/features/PluginsResult.tsx +0 -0
  350. /package/src/app/{(main) → [variants]/(main)}/discover/search/features/ProvidersResult.tsx +0 -0
  351. /package/src/app/{(main) → [variants]/(main)}/discover/search/layout.tsx +0 -0
  352. /package/src/app/{(main) → [variants]/(main)}/discover/search/loading.tsx +0 -0
  353. /package/src/app/{(main) → [variants]/(main)}/error.tsx +0 -0
  354. /package/src/app/{(main) → [variants]/(main)}/files/(content)/@menu/default.tsx +0 -0
  355. /package/src/app/{(main) → [variants]/(main)}/files/(content)/@menu/features/KnowledgeBase/EmptyStatus.tsx +0 -0
  356. /package/src/app/{(main) → [variants]/(main)}/files/(content)/@menu/features/KnowledgeBase/Item/Content.tsx +0 -0
  357. /package/src/app/{(main) → [variants]/(main)}/files/(content)/@menu/features/KnowledgeBase/Item/index.tsx +0 -0
  358. /package/src/app/{(main) → [variants]/(main)}/files/(content)/@menu/features/KnowledgeBase/KnowledgeBaseList.tsx +0 -0
  359. /package/src/app/{(main) → [variants]/(main)}/files/(content)/@menu/features/KnowledgeBase/SkeletonList.tsx +0 -0
  360. /package/src/app/{(main) → [variants]/(main)}/files/(content)/@menu/features/KnowledgeBase/index.tsx +0 -0
  361. /package/src/app/{(main) → [variants]/(main)}/files/(content)/@modal/(.)[id]/FileDetail.tsx +0 -0
  362. /package/src/app/{(main) → [variants]/(main)}/files/(content)/@modal/(.)[id]/FilePreview.tsx +0 -0
  363. /package/src/app/{(main) → [variants]/(main)}/files/(content)/@modal/(.)[id]/page.tsx +0 -0
  364. /package/src/app/{(main) → [variants]/(main)}/files/(content)/@modal/default.tsx +0 -0
  365. /package/src/app/{(main) → [variants]/(main)}/files/(content)/NotSupportClient.tsx +0 -0
  366. /package/src/app/{(main) → [variants]/(main)}/files/(content)/_layout/Desktop/index.tsx +0 -0
  367. /package/src/app/{(main) → [variants]/(main)}/files/(content)/_layout/Mobile.tsx +0 -0
  368. /package/src/app/{(main) → [variants]/(main)}/files/(content)/_layout/type.ts +0 -0
  369. /package/src/app/{(main) → [variants]/(main)}/files/(content)/layout.tsx +0 -0
  370. /package/src/app/{(main) → [variants]/(main)}/files/[id]/Header.tsx +0 -0
  371. /package/src/app/{(main) → [variants]/(main)}/files/[id]/page.tsx +0 -0
  372. /package/src/app/{(main) → [variants]/(main)}/files/features/FileDetail.tsx +0 -0
  373. /package/src/app/{(main) → [variants]/(main)}/files/loading.tsx +0 -0
  374. /package/src/app/{(main) → [variants]/(main)}/layout.tsx +0 -0
  375. /package/src/app/{(main) → [variants]/(main)}/not-found.tsx +0 -0
  376. /package/src/app/{(main) → [variants]/(main)}/profile/(home)/Client.tsx +0 -0
  377. /package/src/app/{(main) → [variants]/(main)}/profile/@category/default.tsx +0 -0
  378. /package/src/app/{(main) → [variants]/(main)}/profile/@category/features/CategoryContent.tsx +0 -0
  379. /package/src/app/{(main) → [variants]/(main)}/profile/_layout/Desktop/Header.tsx +0 -0
  380. /package/src/app/{(main) → [variants]/(main)}/profile/_layout/Desktop/SideBar.tsx +0 -0
  381. /package/src/app/{(main) → [variants]/(main)}/profile/_layout/Desktop/index.tsx +0 -0
  382. /package/src/app/{(main) → [variants]/(main)}/profile/_layout/Mobile/Header.tsx +0 -0
  383. /package/src/app/{(main) → [variants]/(main)}/profile/_layout/Mobile/index.tsx +0 -0
  384. /package/src/app/{(main) → [variants]/(main)}/profile/_layout/type.ts +0 -0
  385. /package/src/app/{(main) → [variants]/(main)}/profile/error.tsx +0 -0
  386. /package/src/app/{(main) → [variants]/(main)}/profile/hooks/useCategory.tsx +0 -0
  387. /package/src/app/{(main) → [variants]/(main)}/profile/layout.tsx +0 -0
  388. /package/src/app/{(main) → [variants]/(main)}/profile/loading.tsx +0 -0
  389. /package/src/app/{(main) → [variants]/(main)}/profile/not-found.tsx +0 -0
  390. /package/src/app/{(main) → [variants]/(main)}/profile/stats/Client.tsx +0 -0
  391. /package/src/app/{(main) → [variants]/(main)}/profile/stats/features/AiHeatmaps.tsx +0 -0
  392. /package/src/app/{(main) → [variants]/(main)}/profile/stats/features/AssistantsRank.tsx +0 -0
  393. /package/src/app/{(main) → [variants]/(main)}/profile/stats/features/ModelsRank.tsx +0 -0
  394. /package/src/app/{(main) → [variants]/(main)}/profile/stats/features/ShareButton/Preview.tsx +0 -0
  395. /package/src/app/{(main) → [variants]/(main)}/profile/stats/features/ShareButton/ShareModal.tsx +0 -0
  396. /package/src/app/{(main) → [variants]/(main)}/profile/stats/features/ShareButton/TotalCard.tsx +0 -0
  397. /package/src/app/{(main) → [variants]/(main)}/profile/stats/features/ShareButton/index.tsx +0 -0
  398. /package/src/app/{(main) → [variants]/(main)}/profile/stats/features/TimeLabel.tsx +0 -0
  399. /package/src/app/{(main) → [variants]/(main)}/profile/stats/features/TopicsRank.tsx +0 -0
  400. /package/src/app/{(main) → [variants]/(main)}/profile/stats/features/TotalAssistants.tsx +0 -0
  401. /package/src/app/{(main) → [variants]/(main)}/profile/stats/features/TotalMessages.tsx +0 -0
  402. /package/src/app/{(main) → [variants]/(main)}/profile/stats/features/TotalTopics.tsx +0 -0
  403. /package/src/app/{(main) → [variants]/(main)}/profile/stats/features/TotalWords.tsx +0 -0
  404. /package/src/app/{(main) → [variants]/(main)}/profile/stats/features/Welcome.tsx +0 -0
  405. /package/src/app/{(main) → [variants]/(main)}/repos/[id]/@menu/Head/index.tsx +0 -0
  406. /package/src/app/{(main) → [variants]/(main)}/repos/[id]/@menu/Menu/index.tsx +0 -0
  407. /package/src/app/{(main) → [variants]/(main)}/repos/[id]/@menu/default.tsx +0 -0
  408. /package/src/app/{(main) → [variants]/(main)}/repos/[id]/_layout/Desktop/index.tsx +0 -0
  409. /package/src/app/{(main) → [variants]/(main)}/repos/[id]/_layout/Mobile.tsx +0 -0
  410. /package/src/app/{(main) → [variants]/(main)}/repos/[id]/_layout/type.ts +0 -0
  411. /package/src/app/{(main) → [variants]/(main)}/repos/[id]/evals/components/Container.tsx +0 -0
  412. /package/src/app/{(main) → [variants]/(main)}/repos/[id]/evals/components/Tabs.tsx +0 -0
  413. /package/src/app/{(main) → [variants]/(main)}/repos/[id]/evals/dataset/CreateDataset/CreateForm.tsx +0 -0
  414. /package/src/app/{(main) → [variants]/(main)}/repos/[id]/evals/dataset/CreateDataset/index.tsx +0 -0
  415. /package/src/app/{(main) → [variants]/(main)}/repos/[id]/evals/dataset/DatasetDetail/index.tsx +0 -0
  416. /package/src/app/{(main) → [variants]/(main)}/repos/[id]/evals/dataset/DatasetList/Item.tsx +0 -0
  417. /package/src/app/{(main) → [variants]/(main)}/repos/[id]/evals/dataset/DatasetList/index.tsx +0 -0
  418. /package/src/app/{(main) → [variants]/(main)}/repos/[id]/evals/dataset/EmptyGuide/index.tsx +0 -0
  419. /package/src/app/{(main) → [variants]/(main)}/repos/[id]/evals/dataset/page.tsx +0 -0
  420. /package/src/app/{(main) → [variants]/(main)}/repos/[id]/evals/evaluation/CreateEvaluation/CreateForm.tsx +0 -0
  421. /package/src/app/{(main) → [variants]/(main)}/repos/[id]/evals/evaluation/CreateEvaluation/index.tsx +0 -0
  422. /package/src/app/{(main) → [variants]/(main)}/repos/[id]/evals/evaluation/CreateEvaluation/useModal.tsx +0 -0
  423. /package/src/app/{(main) → [variants]/(main)}/repos/[id]/evals/evaluation/EmptyGuide/index.tsx +0 -0
  424. /package/src/app/{(main) → [variants]/(main)}/repos/[id]/evals/evaluation/EvaluationList/index.tsx +0 -0
  425. /package/src/app/{(main) → [variants]/(main)}/repos/[id]/evals/evaluation/page.tsx +0 -0
  426. /package/src/app/{(main) → [variants]/(main)}/repos/[id]/evals/layout.tsx +0 -0
  427. /package/src/app/{(main) → [variants]/(main)}/repos/[id]/evals/page.tsx +0 -0
  428. /package/src/app/{(main) → [variants]/(main)}/repos/[id]/hooks/useKnowledgeItem.ts +0 -0
  429. /package/src/app/{(main) → [variants]/(main)}/repos/[id]/layout.tsx +0 -0
  430. /package/src/app/{(main) → [variants]/(main)}/repos/[id]/not-found.tsx +0 -0
  431. /package/src/app/{(main) → [variants]/(main)}/repos/[id]/page.tsx +0 -0
  432. /package/src/app/{(main) → [variants]/(main)}/repos/layout.tsx +0 -0
  433. /package/src/app/{(main) → [variants]/(main)}/settings/@category/default.tsx +0 -0
  434. /package/src/app/{(main) → [variants]/(main)}/settings/@category/features/UpgradeAlert.tsx +0 -0
  435. /package/src/app/{(main) → [variants]/(main)}/settings/_layout/Desktop/Header.tsx +0 -0
  436. /package/src/app/{(main) → [variants]/(main)}/settings/_layout/Desktop/SideBar.tsx +0 -0
  437. /package/src/app/{(main) → [variants]/(main)}/settings/_layout/Desktop/index.tsx +0 -0
  438. /package/src/app/{(main) → [variants]/(main)}/settings/_layout/Mobile/Header.tsx +0 -0
  439. /package/src/app/{(main) → [variants]/(main)}/settings/_layout/Mobile/index.tsx +0 -0
  440. /package/src/app/{(main) → [variants]/(main)}/settings/_layout/type.ts +0 -0
  441. /package/src/app/{(main) → [variants]/(main)}/settings/about/features/AboutList.tsx +0 -0
  442. /package/src/app/{(main) → [variants]/(main)}/settings/about/features/Analytics.tsx +0 -0
  443. /package/src/app/{(main) → [variants]/(main)}/settings/about/features/ItemCard.tsx +0 -0
  444. /package/src/app/{(main) → [variants]/(main)}/settings/about/features/ItemLink.tsx +0 -0
  445. /package/src/app/{(main) → [variants]/(main)}/settings/about/features/Version.tsx +0 -0
  446. /package/src/app/{(main) → [variants]/(main)}/settings/about/index.tsx +0 -0
  447. /package/src/app/{(main) → [variants]/(main)}/settings/about/page.tsx +0 -0
  448. /package/src/app/{(main) → [variants]/(main)}/settings/agent/index.tsx +0 -0
  449. /package/src/app/{(main) → [variants]/(main)}/settings/agent/page.tsx +0 -0
  450. /package/src/app/{(main) → [variants]/(main)}/settings/common/features/Theme/ThemeSwatches/ThemeSwatchesNeutral.tsx +0 -0
  451. /package/src/app/{(main) → [variants]/(main)}/settings/common/features/Theme/ThemeSwatches/ThemeSwatchesPrimary.tsx +0 -0
  452. /package/src/app/{(main) → [variants]/(main)}/settings/common/features/Theme/ThemeSwatches/index.ts +0 -0
  453. /package/src/app/{(main) → [variants]/(main)}/settings/common/index.tsx +0 -0
  454. /package/src/app/{(main) → [variants]/(main)}/settings/common/page.tsx +0 -0
  455. /package/src/app/{(main) → [variants]/(main)}/settings/error.tsx +0 -0
  456. /package/src/app/{(main) → [variants]/(main)}/settings/features/UpgradeAlert.tsx +0 -0
  457. /package/src/app/{(main) → [variants]/(main)}/settings/hooks/useCategory.tsx +0 -0
  458. /package/src/app/{(main) → [variants]/(main)}/settings/hooks/useSyncSettings.ts +0 -0
  459. /package/src/app/{(main) → [variants]/(main)}/settings/llm/ProviderList/Azure/index.tsx +0 -0
  460. /package/src/app/{(main) → [variants]/(main)}/settings/llm/ProviderList/Bedrock/index.tsx +0 -0
  461. /package/src/app/{(main) → [variants]/(main)}/settings/llm/ProviderList/Cloudflare/index.tsx +0 -0
  462. /package/src/app/{(main) → [variants]/(main)}/settings/llm/ProviderList/Github/index.tsx +0 -0
  463. /package/src/app/{(main) → [variants]/(main)}/settings/llm/ProviderList/HuggingFace/index.tsx +0 -0
  464. /package/src/app/{(main) → [variants]/(main)}/settings/llm/ProviderList/Ollama/Checker.tsx +0 -0
  465. /package/src/app/{(main) → [variants]/(main)}/settings/llm/ProviderList/Ollama/index.tsx +0 -0
  466. /package/src/app/{(main) → [variants]/(main)}/settings/llm/ProviderList/OpenAI/index.tsx +0 -0
  467. /package/src/app/{(main) → [variants]/(main)}/settings/llm/ProviderList/providers.tsx +0 -0
  468. /package/src/app/{(main) → [variants]/(main)}/settings/llm/components/Checker.tsx +0 -0
  469. /package/src/app/{(main) → [variants]/(main)}/settings/llm/components/ProviderModelList/CustomModelOption.tsx +0 -0
  470. /package/src/app/{(main) → [variants]/(main)}/settings/llm/components/ProviderModelList/ModelConfigModal/Form.tsx +0 -0
  471. /package/src/app/{(main) → [variants]/(main)}/settings/llm/components/ProviderModelList/ModelConfigModal/index.tsx +0 -0
  472. /package/src/app/{(main) → [variants]/(main)}/settings/llm/components/ProviderModelList/ModelFetcher.tsx +0 -0
  473. /package/src/app/{(main) → [variants]/(main)}/settings/llm/components/ProviderModelList/Option.tsx +0 -0
  474. /package/src/app/{(main) → [variants]/(main)}/settings/llm/components/ProviderModelList/index.tsx +0 -0
  475. /package/src/app/{(main) → [variants]/(main)}/settings/llm/const.ts +0 -0
  476. /package/src/app/{(main) → [variants]/(main)}/settings/llm/features/Footer.tsx +0 -0
  477. /package/src/app/{(main) → [variants]/(main)}/settings/llm/index.tsx +0 -0
  478. /package/src/app/{(main) → [variants]/(main)}/settings/llm/page.tsx +0 -0
  479. /package/src/app/{(main) → [variants]/(main)}/settings/llm/type.ts +0 -0
  480. /package/src/app/{(main) → [variants]/(main)}/settings/loading.tsx +0 -0
  481. /package/src/app/{(main) → [variants]/(main)}/settings/not-found.tsx +0 -0
  482. /package/src/app/{(main) → [variants]/(main)}/settings/provider/(detail)/[id]/ClientMode.tsx +0 -0
  483. /package/src/app/{(main) → [variants]/(main)}/settings/provider/(detail)/[id]/index.tsx +0 -0
  484. /package/src/app/{(main) → [variants]/(main)}/settings/provider/(detail)/[id]/page.tsx +0 -0
  485. /package/src/app/{(main) → [variants]/(main)}/settings/provider/(detail)/azure/page.tsx +0 -0
  486. /package/src/app/{(main) → [variants]/(main)}/settings/provider/(detail)/bedrock/page.tsx +0 -0
  487. /package/src/app/{(main) → [variants]/(main)}/settings/provider/(detail)/cloudflare/page.tsx +0 -0
  488. /package/src/app/{(main) → [variants]/(main)}/settings/provider/(detail)/doubao/page.tsx +0 -0
  489. /package/src/app/{(main) → [variants]/(main)}/settings/provider/(detail)/github/page.tsx +0 -0
  490. /package/src/app/{(main) → [variants]/(main)}/settings/provider/(detail)/huggingface/page.tsx +0 -0
  491. /package/src/app/{(main) → [variants]/(main)}/settings/provider/(detail)/ollama/CheckError.tsx +0 -0
  492. /package/src/app/{(main) → [variants]/(main)}/settings/provider/(detail)/ollama/Container.tsx +0 -0
  493. /package/src/app/{(main) → [variants]/(main)}/settings/provider/(detail)/ollama/OllamaModelDownloader/index.tsx +0 -0
  494. /package/src/app/{(main) → [variants]/(main)}/settings/provider/(detail)/ollama/OllamaModelDownloader/useDownloadMonitor.ts +0 -0
  495. /package/src/app/{(main) → [variants]/(main)}/settings/provider/(detail)/ollama/page.tsx +0 -0
  496. /package/src/app/{(main) → [variants]/(main)}/settings/provider/(detail)/openai/page.tsx +0 -0
  497. /package/src/app/{(main) → [variants]/(main)}/settings/provider/(list)/Footer.tsx +0 -0
  498. /package/src/app/{(main) → [variants]/(main)}/settings/provider/(list)/ProviderGrid/Card.tsx +0 -0
  499. /package/src/app/{(main) → [variants]/(main)}/settings/provider/(list)/ProviderGrid/EnableSwitch.tsx +0 -0
  500. /package/src/app/{(main) → [variants]/(main)}/settings/provider/(list)/ProviderGrid/index.tsx +0 -0
  501. /package/src/app/{(main) → [variants]/(main)}/settings/provider/(list)/ProviderGrid/style.ts +0 -0
  502. /package/src/app/{(main) → [variants]/(main)}/settings/provider/(list)/index.tsx +0 -0
  503. /package/src/app/{(main) → [variants]/(main)}/settings/provider/ProviderMenu/AddNew.tsx +0 -0
  504. /package/src/app/{(main) → [variants]/(main)}/settings/provider/ProviderMenu/All.tsx +0 -0
  505. /package/src/app/{(main) → [variants]/(main)}/settings/provider/ProviderMenu/Item.tsx +0 -0
  506. /package/src/app/{(main) → [variants]/(main)}/settings/provider/ProviderMenu/List.tsx +0 -0
  507. /package/src/app/{(main) → [variants]/(main)}/settings/provider/ProviderMenu/SearchResult.tsx +0 -0
  508. /package/src/app/{(main) → [variants]/(main)}/settings/provider/ProviderMenu/SkeletonList.tsx +0 -0
  509. /package/src/app/{(main) → [variants]/(main)}/settings/provider/ProviderMenu/SortProviderModal/GroupItem.tsx +0 -0
  510. /package/src/app/{(main) → [variants]/(main)}/settings/provider/ProviderMenu/SortProviderModal/index.tsx +0 -0
  511. /package/src/app/{(main) → [variants]/(main)}/settings/provider/ProviderMenu/index.tsx +0 -0
  512. /package/src/app/{(main) → [variants]/(main)}/settings/provider/_layout/Desktop.tsx +0 -0
  513. /package/src/app/{(main) → [variants]/(main)}/settings/provider/_layout/Mobile.tsx +0 -0
  514. /package/src/app/{(main) → [variants]/(main)}/settings/provider/const.ts +0 -0
  515. /package/src/app/{(main) → [variants]/(main)}/settings/provider/features/CreateNewProvider/index.tsx +0 -0
  516. /package/src/app/{(main) → [variants]/(main)}/settings/provider/features/ModelList/CreateNewModelModal/Form.tsx +0 -0
  517. /package/src/app/{(main) → [variants]/(main)}/settings/provider/features/ModelList/CreateNewModelModal/index.tsx +0 -0
  518. /package/src/app/{(main) → [variants]/(main)}/settings/provider/features/ModelList/DisabledModels.tsx +0 -0
  519. /package/src/app/{(main) → [variants]/(main)}/settings/provider/features/ModelList/EmptyModels.tsx +0 -0
  520. /package/src/app/{(main) → [variants]/(main)}/settings/provider/features/ModelList/EnabledModelList/index.tsx +0 -0
  521. /package/src/app/{(main) → [variants]/(main)}/settings/provider/features/ModelList/ModelConfigModal/index.tsx +0 -0
  522. /package/src/app/{(main) → [variants]/(main)}/settings/provider/features/ModelList/ModelItem.tsx +0 -0
  523. /package/src/app/{(main) → [variants]/(main)}/settings/provider/features/ModelList/ModelTitle/Search.tsx +0 -0
  524. /package/src/app/{(main) → [variants]/(main)}/settings/provider/features/ModelList/ModelTitle/index.tsx +0 -0
  525. /package/src/app/{(main) → [variants]/(main)}/settings/provider/features/ModelList/SearchResult.tsx +0 -0
  526. /package/src/app/{(main) → [variants]/(main)}/settings/provider/features/ModelList/SkeletonList.tsx +0 -0
  527. /package/src/app/{(main) → [variants]/(main)}/settings/provider/features/ModelList/SortModelModal/ListItem.tsx +0 -0
  528. /package/src/app/{(main) → [variants]/(main)}/settings/provider/features/ModelList/SortModelModal/index.tsx +0 -0
  529. /package/src/app/{(main) → [variants]/(main)}/settings/provider/features/ModelList/index.tsx +0 -0
  530. /package/src/app/{(main) → [variants]/(main)}/settings/provider/features/ProviderConfig/Checker.tsx +0 -0
  531. /package/src/app/{(main) → [variants]/(main)}/settings/provider/features/ProviderConfig/EnableSwitch.tsx +0 -0
  532. /package/src/app/{(main) → [variants]/(main)}/settings/provider/features/ProviderConfig/SkeletonInput.tsx +0 -0
  533. /package/src/app/{(main) → [variants]/(main)}/settings/provider/features/ProviderConfig/UpdateProviderInfo/SettingModal.tsx +0 -0
  534. /package/src/app/{(main) → [variants]/(main)}/settings/provider/features/ProviderConfig/UpdateProviderInfo/index.tsx +0 -0
  535. /package/src/app/{(main) → [variants]/(main)}/settings/provider/features/ProviderConfig/index.tsx +0 -0
  536. /package/src/app/{(main) → [variants]/(main)}/settings/provider/page.tsx +0 -0
  537. /package/src/app/{(main) → [variants]/(main)}/settings/provider/type.ts +0 -0
  538. /package/src/app/{(main) → [variants]/(main)}/settings/sync/features/Alert.tsx +0 -0
  539. /package/src/app/{(main) → [variants]/(main)}/settings/sync/features/DeviceInfo/Card.tsx +0 -0
  540. /package/src/app/{(main) → [variants]/(main)}/settings/sync/features/DeviceInfo/DeviceName.tsx +0 -0
  541. /package/src/app/{(main) → [variants]/(main)}/settings/sync/features/DeviceInfo/SystemIcon.tsx +0 -0
  542. /package/src/app/{(main) → [variants]/(main)}/settings/sync/features/DeviceInfo/index.tsx +0 -0
  543. /package/src/app/{(main) → [variants]/(main)}/settings/sync/features/WebRTC/ChannelNameInput.tsx +0 -0
  544. /package/src/app/{(main) → [variants]/(main)}/settings/sync/features/WebRTC/SyncSwitch/index.css +0 -0
  545. /package/src/app/{(main) → [variants]/(main)}/settings/sync/features/WebRTC/SyncSwitch/index.tsx +0 -0
  546. /package/src/app/{(main) → [variants]/(main)}/settings/sync/features/WebRTC/generateRandomRoomName.ts +0 -0
  547. /package/src/app/{(main) → [variants]/(main)}/settings/sync/index.tsx +0 -0
  548. /package/src/app/{(main) → [variants]/(main)}/settings/sync/page.tsx +0 -0
  549. /package/src/app/{(main) → [variants]/(main)}/settings/system-agent/features/createForm.tsx +0 -0
  550. /package/src/app/{(main) → [variants]/(main)}/settings/system-agent/features/useSync.ts +0 -0
  551. /package/src/app/{(main) → [variants]/(main)}/settings/system-agent/index.tsx +0 -0
  552. /package/src/app/{(main) → [variants]/(main)}/settings/system-agent/page.tsx +0 -0
  553. /package/src/app/{(main) → [variants]/(main)}/settings/tts/features/OpenAI.tsx +0 -0
  554. /package/src/app/{(main) → [variants]/(main)}/settings/tts/features/STT.tsx +0 -0
  555. /package/src/app/{(main) → [variants]/(main)}/settings/tts/features/const.tsx +0 -0
  556. /package/src/app/{(main) → [variants]/(main)}/settings/tts/index.tsx +0 -0
  557. /package/src/app/{(main) → [variants]/(main)}/settings/tts/page.tsx +0 -0
  558. /package/src/app/{@modal → [variants]/@modal}/(.)changelog/modal/features/Cover.tsx +0 -0
  559. /package/src/app/{@modal → [variants]/@modal}/(.)changelog/modal/features/Hero.tsx +0 -0
  560. /package/src/app/{@modal → [variants]/@modal}/(.)changelog/modal/features/Pagination.tsx +0 -0
  561. /package/src/app/{@modal → [variants]/@modal}/(.)changelog/modal/features/Post.tsx +0 -0
  562. /package/src/app/{@modal → [variants]/@modal}/(.)changelog/modal/features/PublishedTime.tsx +0 -0
  563. /package/src/app/{@modal → [variants]/@modal}/(.)changelog/modal/features/ReadDetail.tsx +0 -0
  564. /package/src/app/{@modal → [variants]/@modal}/(.)changelog/modal/features/UpdateChangelogStatus.tsx +0 -0
  565. /package/src/app/{@modal → [variants]/@modal}/(.)changelog/modal/features/VersionTag.tsx +0 -0
  566. /package/src/app/{@modal → [variants]/@modal}/(.)changelog/modal/layout.tsx +0 -0
  567. /package/src/app/{@modal → [variants]/@modal}/(.)changelog/modal/loading.tsx +0 -0
  568. /package/src/app/{@modal → [variants]/@modal}/_layout/ModalLayout.tsx +0 -0
  569. /package/src/app/{@modal → [variants]/@modal}/chat/(.)settings/modal/features/useCategory.tsx +0 -0
  570. /package/src/app/{@modal → [variants]/@modal}/chat/(.)settings/modal/loading.tsx +0 -0
  571. /package/src/app/{@modal → [variants]/@modal}/chat/(.)settings/modal/page.tsx +0 -0
  572. /package/src/app/{@modal → [variants]/@modal}/default.tsx +0 -0
  573. /package/src/app/{@modal → [variants]/@modal}/error.tsx +0 -0
  574. /package/src/app/{@modal → [variants]/@modal}/layout.tsx +0 -0
  575. /package/src/app/{@modal → [variants]/@modal}/loading.tsx +0 -0
  576. /package/src/app/{error.tsx → [variants]/error.tsx} +0 -0
  577. /package/src/app/{global-error.tsx → [variants]/global-error.tsx} +0 -0
  578. /package/src/app/{loading → [variants]/loading}/Client/Content.tsx +0 -0
  579. /package/src/app/{loading → [variants]/loading}/Client/Error.tsx +0 -0
  580. /package/src/app/{loading → [variants]/loading}/Client/Redirect.tsx +0 -0
  581. /package/src/app/{loading → [variants]/loading}/Client/index.tsx +0 -0
  582. /package/src/app/{loading → [variants]/loading}/Server/Content.tsx +0 -0
  583. /package/src/app/{loading → [variants]/loading}/Server/Redirect.tsx +0 -0
  584. /package/src/app/{loading → [variants]/loading}/Server/index.tsx +0 -0
  585. /package/src/app/{loading → [variants]/loading}/index.tsx +0 -0
  586. /package/src/app/{loading → [variants]/loading}/stage.ts +0 -0
  587. /package/src/app/{metadata.ts → [variants]/metadata.ts} +0 -0
  588. /package/src/app/{not-found.tsx → [variants]/not-found.tsx} +0 -0
package/CHANGELOG.md CHANGED
@@ -2,6 +2,23 @@
2
2
 
3
3
  # Changelog
4
4
 
5
+ ### [Version 1.51.4](https://github.com/lobehub/lobe-chat/compare/v1.51.3...v1.51.4)
6
+
7
+ <sup>Released on **2025-02-06**</sup>
8
+
9
+ <br/>
10
+
11
+ <details>
12
+ <summary><kbd>Improvements and Fixes</kbd></summary>
13
+
14
+ </details>
15
+
16
+ <div align="right">
17
+
18
+ [![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
19
+
20
+ </div>
21
+
5
22
  ### [Version 1.51.3](https://github.com/lobehub/lobe-chat/compare/v1.51.2...v1.51.3)
6
23
 
7
24
  <sup>Released on **2025-02-05**</sup>
package/changelog/v1.json CHANGED
@@ -1,4 +1,9 @@
1
1
  [
2
+ {
3
+ "children": {},
4
+ "date": "2025-02-06",
5
+ "version": "1.51.4"
6
+ },
2
7
  {
3
8
  "children": {
4
9
  "improvements": [
package/next.config.ts CHANGED
@@ -176,6 +176,11 @@ const nextConfig: NextConfig = {
176
176
  permanent: false,
177
177
  source: '/repos',
178
178
  },
179
+ {
180
+ destination: '/files',
181
+ permanent: false,
182
+ source: '/repos',
183
+ },
179
184
  ],
180
185
  // when external packages in dev mode with turbopack, this config will lead to bundle error
181
186
  serverExternalPackages: isProd ? ['@electric-sql/pglite'] : undefined,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lobehub/chat",
3
- "version": "1.51.3",
3
+ "version": "1.51.4",
4
4
  "description": "Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.",
5
5
  "keywords": [
6
6
  "framework",
@@ -317,7 +317,7 @@
317
317
  "vitest": "~1.2.2",
318
318
  "vitest-canvas-mock": "^0.3.3"
319
319
  },
320
- "packageManager": "pnpm@9.15.4",
320
+ "packageManager": "pnpm@10.2.0",
321
321
  "publishConfig": {
322
322
  "access": "public",
323
323
  "registry": "https://registry.npmjs.org"
@@ -4,7 +4,8 @@ import { Center } from 'react-layout-kit';
4
4
  import BrandWatermark from '@/components/BrandWatermark';
5
5
  import { metadataModule } from '@/server/metadata';
6
6
  import { translation } from '@/server/translation';
7
- import { isMobileDevice } from '@/utils/server/responsive';
7
+ import { DynamicLayoutProps } from '@/types/next';
8
+ import { RouteVariants } from '@/utils/server/routeVariants';
8
9
 
9
10
  import Category from './features/Category';
10
11
  import UserBanner from './features/UserBanner';
@@ -17,10 +18,10 @@ export const generateMetadata = async () => {
17
18
  });
18
19
  };
19
20
 
20
- const Page = async () => {
21
- const mobile = await isMobileDevice();
21
+ const Page = async (props: DynamicLayoutProps) => {
22
+ const isMobile = await RouteVariants.getIsMobile(props);
22
23
 
23
- if (!mobile) return redirect('/chat');
24
+ if (!isMobile) return redirect('/chat');
24
25
 
25
26
  return (
26
27
  <>
@@ -36,3 +37,5 @@ const Page = async () => {
36
37
  Page.displayName = 'Me';
37
38
 
38
39
  export default Page;
40
+
41
+ export const dynamic = 'force-static';
@@ -9,7 +9,7 @@ import Cell, { CellProps } from '@/components/Cell';
9
9
  import { isDeprecatedEdition } from '@/const/version';
10
10
  import { ProfileTabs } from '@/store/global/initialState';
11
11
  import { useUserStore } from '@/store/user';
12
- import { authSelectors } from '@/store/user/slices/auth/selectors';
12
+ import { authSelectors } from '@/store/user/selectors';
13
13
 
14
14
  const Category = memo(() => {
15
15
  const [isLogin, enableAuth, isLoginWithClerk, signOut] = useUserStore((s) => [
@@ -2,7 +2,8 @@ import { redirect } from 'next/navigation';
2
2
 
3
3
  import { metadataModule } from '@/server/metadata';
4
4
  import { translation } from '@/server/translation';
5
- import { isMobileDevice } from '@/utils/server/responsive';
5
+ import { DynamicLayoutProps } from '@/types/next';
6
+ import { RouteVariants } from '@/utils/server/routeVariants';
6
7
 
7
8
  import Category from './features/Category';
8
9
 
@@ -15,10 +16,10 @@ export const generateMetadata = async () => {
15
16
  });
16
17
  };
17
18
 
18
- const Page = async () => {
19
- const mobile = await isMobileDevice();
19
+ const Page = async (props: DynamicLayoutProps) => {
20
+ const isMobile = await RouteVariants.getIsMobile(props);
20
21
 
21
- if (!mobile) return redirect('/profile');
22
+ if (!isMobile) return redirect('/profile');
22
23
 
23
24
  return <Category />;
24
25
  };
@@ -26,3 +27,5 @@ const Page = async () => {
26
27
  Page.displayName = 'MeProfile';
27
28
 
28
29
  export default Page;
30
+
31
+ export const dynamic = 'force-static';
@@ -2,7 +2,8 @@ import { redirect } from 'next/navigation';
2
2
 
3
3
  import { metadataModule } from '@/server/metadata';
4
4
  import { translation } from '@/server/translation';
5
- import { isMobileDevice } from '@/utils/server/responsive';
5
+ import { DynamicLayoutProps } from '@/types/next';
6
+ import { RouteVariants } from '@/utils/server/routeVariants';
6
7
 
7
8
  import Category from './features/Category';
8
9
 
@@ -15,10 +16,10 @@ export const generateMetadata = async () => {
15
16
  });
16
17
  };
17
18
 
18
- const Page = async () => {
19
- const mobile = await isMobileDevice();
19
+ const Page = async (props: DynamicLayoutProps) => {
20
+ const isMobile = await RouteVariants.getIsMobile(props);
20
21
 
21
- if (!mobile) return redirect('/settings/common');
22
+ if (!isMobile) return redirect('/settings/common');
22
23
 
23
24
  return <Category />;
24
25
  };
@@ -26,3 +27,5 @@ const Page = async () => {
26
27
  Page.displayName = 'MeSettings';
27
28
 
28
29
  export default Page;
30
+
31
+ export const dynamic = 'force-static';
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { SideNav } from '@lobehub/ui';
4
4
  import { parseAsBoolean, useQueryState } from 'nuqs';
5
- import { memo } from 'react';
5
+ import { Suspense, memo } from 'react';
6
6
 
7
7
  import { useActiveTabKey } from '@/hooks/useActiveTabKey';
8
8
  import { useGlobalStore } from '@/store/global';
@@ -14,11 +14,16 @@ import BottomActions from './BottomActions';
14
14
  import PinList from './PinList';
15
15
  import TopActions from './TopActions';
16
16
 
17
- const Nav = memo(() => {
17
+ const Top = () => {
18
+ const [isPinned] = useQueryState('pinned', parseAsBoolean);
18
19
  const sidebarKey = useActiveTabKey();
20
+
21
+ return <TopActions isPinned={isPinned} tab={sidebarKey} />;
22
+ };
23
+
24
+ const Nav = memo(() => {
19
25
  const inZenMode = useGlobalStore(systemStatusSelectors.inZenMode);
20
26
  const { showPinList } = useServerConfigStore(featureFlagsSelectors);
21
- const [isPinned] = useQueryState('pinned', parseAsBoolean);
22
27
 
23
28
  return (
24
29
  !inZenMode && (
@@ -27,10 +32,10 @@ const Nav = memo(() => {
27
32
  bottomActions={<BottomActions />}
28
33
  style={{ height: '100%', zIndex: 100 }}
29
34
  topActions={
30
- <>
31
- <TopActions isPinned={isPinned} tab={sidebarKey} />
35
+ <Suspense>
36
+ <Top />
32
37
  {showPinList && <PinList />}
33
- </>
38
+ </Suspense>
34
39
  }
35
40
  />
36
41
  )
@@ -2,9 +2,9 @@
2
2
 
3
3
  import dynamic from 'next/dynamic';
4
4
  import { usePathname } from 'next/navigation';
5
- import qs from 'query-string';
6
5
  import { PropsWithChildren, memo } from 'react';
7
6
 
7
+ import { withSuspense } from '@/components/withSuspense';
8
8
  import { useShowMobileWorkspace } from '@/hooks/useShowMobileWorkspace';
9
9
  import { featureFlagsSelectors, useServerConfigStore } from '@/store/serverConfig';
10
10
 
@@ -24,8 +24,7 @@ const MOBILE_NAV_ROUTES = new Set([
24
24
  const Layout = memo(({ children }: PropsWithChildren) => {
25
25
  const showMobileWorkspace = useShowMobileWorkspace();
26
26
  const pathname = usePathname();
27
- const { url } = qs.parseUrl(pathname);
28
- const showNav = !showMobileWorkspace && MOBILE_NAV_ROUTES.has(url);
27
+ const showNav = !showMobileWorkspace && MOBILE_NAV_ROUTES.has(pathname);
29
28
 
30
29
  const { showCloudPromotion } = useServerConfigStore(featureFlagsSelectors);
31
30
 
@@ -40,4 +39,4 @@ const Layout = memo(({ children }: PropsWithChildren) => {
40
39
 
41
40
  Layout.displayName = 'MobileMainLayout';
42
41
 
43
- export default Layout;
42
+ export default withSuspense(Layout);
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { useLayoutEffect } from 'react';
4
4
 
5
+ import { withSuspense } from '@/components/withSuspense';
5
6
  import { useQueryRoute } from '@/hooks/useQueryRoute';
6
7
 
7
8
  /**
@@ -10,7 +11,7 @@ import { useQueryRoute } from '@/hooks/useQueryRoute';
10
11
  * @refs: https://github.com/lobehub/lobe-chat/discussions/2295#discussioncomment-9290942
11
12
  */
12
13
 
13
- const ChangelogModalFallback = () => {
14
+ const ChangelogModal = () => {
14
15
  const router = useQueryRoute();
15
16
 
16
17
  useLayoutEffect(() => {
@@ -20,4 +21,4 @@ const ChangelogModalFallback = () => {
20
21
  return null;
21
22
  };
22
23
 
23
- export default ChangelogModalFallback;
24
+ export default withSuspense(ChangelogModal);
@@ -4,7 +4,7 @@ import { Fragment, Suspense } from 'react';
4
4
  import { Flexbox } from 'react-layout-kit';
5
5
  import urlJoin from 'url-join';
6
6
 
7
- import Pagination from '@/app/@modal/(.)changelog/modal/features/Pagination';
7
+ import Pagination from '@/app/[variants]/@modal/(.)changelog/modal/features/Pagination';
8
8
  import StructuredData from '@/components/StructuredData';
9
9
  import { serverFeatureFlags } from '@/config/featureFlags';
10
10
  import { BRANDING_NAME } from '@/const/branding';
@@ -13,7 +13,8 @@ import { ldModule } from '@/server/ld';
13
13
  import { metadataModule } from '@/server/metadata';
14
14
  import { ChangelogService } from '@/server/services/changelog';
15
15
  import { translation } from '@/server/translation';
16
- import { isMobileDevice } from '@/utils/server/responsive';
16
+ import { DynamicLayoutProps } from '@/types/next';
17
+ import { RouteVariants } from '@/utils/server/routeVariants';
17
18
 
18
19
  import GridLayout from './features/GridLayout';
19
20
  import Post from './features/Post';
@@ -28,12 +29,12 @@ export const generateMetadata = async () => {
28
29
  });
29
30
  };
30
31
 
31
- const Page = async () => {
32
+ const Page = async (props: DynamicLayoutProps) => {
32
33
  const hideDocs = serverFeatureFlags().hideDocs;
33
34
 
34
35
  if (hideDocs) return notFound();
35
36
 
36
- const mobile = await isMobileDevice();
37
+ const isMobile = await RouteVariants.getIsMobile(props);
37
38
  const { t, locale } = await translation('metadata');
38
39
  const changelogService = new ChangelogService();
39
40
  const data = await changelogService.getChangelogIndex();
@@ -49,7 +50,7 @@ const Page = async () => {
49
50
  return (
50
51
  <>
51
52
  <StructuredData ld={ld} />
52
- <Flexbox gap={mobile ? 16 : 48}>
53
+ <Flexbox gap={isMobile ? 16 : 48}>
53
54
  {data?.map((item) => (
54
55
  <Fragment key={item.id}>
55
56
  <Suspense
@@ -60,7 +61,7 @@ const Page = async () => {
60
61
  </GridLayout>
61
62
  }
62
63
  >
63
- <Post locale={locale} mobile={mobile} {...item} />
64
+ <Post locale={locale} mobile={isMobile} {...item} />
64
65
  </Suspense>
65
66
  </Fragment>
66
67
  ))}
@@ -1,4 +1,5 @@
1
- import { isMobileDevice } from '@/utils/server/responsive';
1
+ import { DynamicLayoutProps } from '@/types/next';
2
+ import { RouteVariants } from '@/utils/server/routeVariants';
2
3
 
3
4
  import ChatHydration from './features/ChatHydration';
4
5
  import ChatInput from './features/ChatInput';
@@ -6,14 +7,14 @@ import ChatList from './features/ChatList';
6
7
  import ThreadHydration from './features/ThreadHydration';
7
8
  import ZenModeToast from './features/ZenModeToast';
8
9
 
9
- const ChatConversation = async () => {
10
- const mobile = await isMobileDevice();
10
+ const ChatConversation = async (props: DynamicLayoutProps) => {
11
+ const isMobile = await RouteVariants.getIsMobile(props);
11
12
 
12
13
  return (
13
14
  <>
14
15
  <ZenModeToast />
15
- <ChatList mobile={mobile} />
16
- <ChatInput mobile={mobile} />
16
+ <ChatList mobile={isMobile} />
17
+ <ChatInput mobile={isMobile} />
17
18
  <ChatHydration />
18
19
  <ThreadHydration />
19
20
  </>
@@ -1,17 +1,18 @@
1
1
  import React, { Suspense, lazy } from 'react';
2
2
 
3
3
  import Loading from '@/components/Loading/BrandTextLoading';
4
- import { isMobileDevice } from '@/utils/server/responsive';
4
+ import { DynamicLayoutProps } from '@/types/next';
5
+ import { RouteVariants } from '@/utils/server/routeVariants';
5
6
 
6
7
  import Desktop from './_layout/Desktop';
7
8
  import Mobile from './_layout/Mobile';
8
9
 
9
10
  const PortalBody = lazy(() => import('@/features/Portal/router'));
10
11
 
11
- const Inspector = async () => {
12
- const mobile = await isMobileDevice();
12
+ const Inspector = async (props: DynamicLayoutProps) => {
13
+ const isMobile = await RouteVariants.getIsMobile(props);
13
14
 
14
- const Layout = mobile ? Mobile : Desktop;
15
+ const Layout = isMobile ? Mobile : Desktop;
15
16
 
16
17
  return (
17
18
  <Suspense fallback={<Loading />}>
@@ -1,7 +1,8 @@
1
1
  // import TopicListContent from './features/TopicListContent';
2
2
  import React, { Suspense, lazy } from 'react';
3
3
 
4
- import { isMobileDevice } from '@/utils/server/responsive';
4
+ import { DynamicLayoutProps } from '@/types/next';
5
+ import { RouteVariants } from '@/utils/server/routeVariants';
5
6
 
6
7
  import Desktop from './_layout/Desktop';
7
8
  import Mobile from './_layout/Mobile';
@@ -10,14 +11,14 @@ import SystemRole from './features/SystemRole';
10
11
 
11
12
  const TopicContent = lazy(() => import('./features/TopicListContent'));
12
13
 
13
- const Topic = async () => {
14
- const mobile = await isMobileDevice();
14
+ const Topic = async (props: DynamicLayoutProps) => {
15
+ const isMobile = await RouteVariants.getIsMobile(props);
15
16
 
16
- const Layout = mobile ? Mobile : Desktop;
17
+ const Layout = isMobile ? Mobile : Desktop;
17
18
 
18
19
  return (
19
20
  <>
20
- {!mobile && <SystemRole />}
21
+ {!isMobile && <SystemRole />}
21
22
  <Layout>
22
23
  <Suspense fallback={<SkeletonList />}>
23
24
  <TopicContent />
@@ -3,7 +3,7 @@
3
3
  import { MobileNavBar } from '@lobehub/ui/mobile';
4
4
  import { memo, useState } from 'react';
5
5
 
6
- import { useInitAgentConfig } from '@/app/(main)/chat/(workspace)/_layout/useInitAgentConfig';
6
+ import { useInitAgentConfig } from '@/app/[variants]/(main)/chat/(workspace)/_layout/useInitAgentConfig';
7
7
  import { INBOX_SESSION_ID } from '@/const/session';
8
8
  import { useQueryRoute } from '@/hooks/useQueryRoute';
9
9
  import { featureFlagsSelectors, useServerConfigStore } from '@/store/serverConfig';
@@ -6,7 +6,8 @@ import { BRANDING_NAME } from '@/const/branding';
6
6
  import { ldModule } from '@/server/ld';
7
7
  import { metadataModule } from '@/server/metadata';
8
8
  import { translation } from '@/server/translation';
9
- import { isMobileDevice } from '@/utils/server/responsive';
9
+ import { DynamicLayoutProps } from '@/types/next';
10
+ import { RouteVariants } from '@/utils/server/routeVariants';
10
11
 
11
12
  import PageTitle from '../features/PageTitle';
12
13
  import Changelog from './features/ChangelogModal';
@@ -21,9 +22,9 @@ export const generateMetadata = async () => {
21
22
  });
22
23
  };
23
24
 
24
- const Page = async () => {
25
+ const Page = async (props: DynamicLayoutProps) => {
25
26
  const { hideDocs, showChangelog } = serverFeatureFlags();
26
- const mobile = await isMobileDevice();
27
+ const mobile = await RouteVariants.getIsMobile(props);
27
28
  const { t } = await translation('metadata');
28
29
  const ld = ldModule.generate({
29
30
  description: t('chat.description', { appName: BRANDING_NAME }),
@@ -2,6 +2,7 @@ import { Suspense, lazy } from 'react';
2
2
 
3
3
  import CircleLoading from '@/components/Loading/CircleLoading';
4
4
  import ServerLayout from '@/components/server/ServerLayout';
5
+ import { DynamicLayoutProps } from '@/types/next';
5
6
 
6
7
  import Desktop from './_layout/Desktop';
7
8
  import Mobile from './_layout/Mobile';
@@ -12,10 +13,10 @@ const SessionListContent = lazy(() => import('./features/SessionListContent'));
12
13
 
13
14
  const Layout = ServerLayout({ Desktop, Mobile });
14
15
 
15
- const Session = () => {
16
+ const Session = (props: DynamicLayoutProps) => {
16
17
  return (
17
18
  <Suspense fallback={<CircleLoading />}>
18
- <Layout>
19
+ <Layout {...props}>
19
20
  <Suspense fallback={<SkeletonList />}>
20
21
  <SessionListContent />
21
22
  </Suspense>
@@ -9,3 +9,5 @@ const Layout = ServerLayout<LayoutProps>({ Desktop, Mobile });
9
9
  Layout.displayName = 'ChatLayout';
10
10
 
11
11
  export default Layout;
12
+
13
+ export const dynamic = 'force-static';
@@ -9,11 +9,11 @@ import Mobile from './_layout/Mobile';
9
9
 
10
10
  const SessionSettingsLayout = ServerLayout({ Desktop, Mobile });
11
11
 
12
- const Layout = ({ children }: PropsWithChildren) => {
12
+ const Layout = ({ children, ...res }: PropsWithChildren) => {
13
13
  const isAgentEditable = serverFeatureFlags().isAgentEditable;
14
14
  if (!isAgentEditable) return notFound();
15
15
 
16
- return <SessionSettingsLayout>{children}</SessionSettingsLayout>;
16
+ return <SessionSettingsLayout {...res}>{children}</SessionSettingsLayout>;
17
17
  };
18
18
 
19
19
  Layout.displayName = 'SessionSettingsLayout';
@@ -33,13 +33,13 @@ export interface SuggestionItemProps
33
33
  extends Omit<DiscoverAssistantItem, 'suggestions' | 'socialData' | 'category' | 'config'>,
34
34
  FlexboxProps {}
35
35
 
36
- const SuggestionItem = memo<SuggestionItemProps>(({ className, meta, identifier, ...rest }) => {
36
+ const SuggestionItem = memo<SuggestionItemProps>(({ className, meta, identifier }) => {
37
37
  const { avatar, title, description, backgroundColor } = meta;
38
38
 
39
39
  const { cx, styles, theme } = useStyles();
40
40
 
41
41
  return (
42
- <Flexbox className={cx(styles.container, className)} gap={12} key={identifier} {...rest}>
42
+ <Flexbox className={cx(styles.container, className)} gap={12} key={identifier}>
43
43
  <Flexbox align={'center'} gap={12} horizontal width={'100%'}>
44
44
  <Avatar
45
45
  alt={title}
@@ -7,7 +7,7 @@ import { metadataModule } from '@/server/metadata';
7
7
  import { DiscoverService } from '@/server/services/discover';
8
8
  import { translation } from '@/server/translation';
9
9
  import { DiscoverPageProps, DiscoverPlugintem } from '@/types/discover';
10
- import { isMobileDevice } from '@/utils/server/responsive';
10
+ import { RouteVariants } from '@/utils/server/routeVariants';
11
11
 
12
12
  import DetailLayout from '../../features/DetailLayout';
13
13
  import Actions from './features/Actions';
@@ -62,7 +62,7 @@ const Page = async (props: DiscoverPageProps) => {
62
62
 
63
63
  const { slug: identifier } = params;
64
64
  const { t, locale } = await translation('metadata', searchParams?.hl);
65
- const mobile = await isMobileDevice();
65
+ const mobile = await RouteVariants.getIsMobile(props);
66
66
 
67
67
  const discoverService = new DiscoverService();
68
68
  const data = await discoverService.getAssistantById(locale, identifier);
@@ -9,7 +9,7 @@ import { DiscoverService } from '@/server/services/discover';
9
9
  import { translation } from '@/server/translation';
10
10
  import { DiscoverProviderItem } from '@/types/discover';
11
11
  import { PageProps } from '@/types/next';
12
- import { isMobileDevice } from '@/utils/server/responsive';
12
+ import { RouteVariants } from '@/utils/server/routeVariants';
13
13
 
14
14
  import DetailLayout from '../../features/DetailLayout';
15
15
  import Actions from './features/Actions';
@@ -18,7 +18,7 @@ import InfoSidebar from './features/InfoSidebar';
18
18
  import ParameterList from './features/ParameterList';
19
19
  import ProviderList from './features/ProviderList';
20
20
 
21
- type Props = PageProps<{ slugs: string[] }, { hl?: Locales }>;
21
+ type Props = PageProps<{ slugs: string[]; variants: string }, { hl?: Locales }>;
22
22
 
23
23
  export const generateMetadata = async (props: Props) => {
24
24
  const params = await props.params;
@@ -72,7 +72,7 @@ const Page = async (props: Props) => {
72
72
  const identifier = decodeURIComponent(slugs.join('/'));
73
73
  const { t, locale } = await translation('metadata', searchParams?.hl);
74
74
  const { t: td } = await translation('models', searchParams?.hl);
75
- const mobile = await isMobileDevice();
75
+ const mobile = await RouteVariants.getIsMobile(props);
76
76
 
77
77
  const discoverService = new DiscoverService();
78
78
  const data = await discoverService.getModelById(locale, identifier);
@@ -7,7 +7,7 @@ import { metadataModule } from '@/server/metadata';
7
7
  import { DiscoverService } from '@/server/services/discover';
8
8
  import { translation } from '@/server/translation';
9
9
  import { DiscoverPageProps } from '@/types/discover';
10
- import { isMobileDevice } from '@/utils/server/responsive';
10
+ import { RouteVariants } from '@/utils/server/routeVariants';
11
11
 
12
12
  import DetailLayout from '../../features/DetailLayout';
13
13
  import Actions from './features/Actions';
@@ -64,7 +64,7 @@ const Page = async (props: DiscoverPageProps) => {
64
64
 
65
65
  const { slug: identifier } = params;
66
66
  const { t, locale } = await translation('metadata', searchParams?.hl);
67
- const mobile = await isMobileDevice();
67
+ const mobile = await RouteVariants.getIsMobile(props);
68
68
 
69
69
  const discoverService = new DiscoverService();
70
70
  const data = await discoverService.getPluginById(locale, identifier, true);
@@ -9,7 +9,7 @@ import { DiscoverService } from '@/server/services/discover';
9
9
  import { DocService } from '@/server/services/doc';
10
10
  import { translation } from '@/server/translation';
11
11
  import { DiscoverModelItem, DiscoverPageProps } from '@/types/discover';
12
- import { isMobileDevice } from '@/utils/server/responsive';
12
+ import { RouteVariants } from '@/utils/server/routeVariants';
13
13
 
14
14
  import DetailLayout from '../../features/DetailLayout';
15
15
  import Actions from './features/Actions';
@@ -62,7 +62,7 @@ const Page = async (props: DiscoverPageProps) => {
62
62
  const { slug: identifier } = params;
63
63
  const { t, locale } = await translation('metadata', searchParams?.hl);
64
64
  const { t: td } = await translation('models', searchParams?.hl);
65
- const mobile = await isMobileDevice();
65
+ const mobile = await RouteVariants.getIsMobile(props);
66
66
 
67
67
  const discoverService = new DiscoverService();
68
68
  const data = await discoverService.getProviderById(locale, identifier);
@@ -4,14 +4,19 @@ import { ldModule } from '@/server/ld';
4
4
  import { metadataModule } from '@/server/metadata';
5
5
  import { DiscoverService } from '@/server/services/discover';
6
6
  import { translation } from '@/server/translation';
7
+ import { DynamicLayoutProps } from '@/types/next';
8
+ import { parsePageLocale } from '@/utils/locale';
7
9
 
8
10
  import Client from './Client';
9
11
 
10
- type Props = { searchParams: Promise<{ hl?: Locales }> };
12
+ interface Props extends DynamicLayoutProps {
13
+ searchParams: Promise<{ hl?: Locales }>;
14
+ }
11
15
 
12
16
  export const generateMetadata = async (props: Props) => {
13
17
  const searchParams = await props.searchParams;
14
- const { t, locale } = await translation('metadata', searchParams?.hl);
18
+ const { t } = await translation('metadata', searchParams?.hl);
19
+ const locale = await parsePageLocale(props);
15
20
  return metadataModule.generate({
16
21
  alternate: true,
17
22
  description: t('discover.description'),
@@ -23,7 +28,9 @@ export const generateMetadata = async (props: Props) => {
23
28
 
24
29
  const Page = async (props: Props) => {
25
30
  const searchParams = await props.searchParams;
26
- const { t, locale } = await translation('metadata', searchParams?.hl);
31
+ const { t } = await translation('metadata', searchParams?.hl);
32
+ const locale = await parsePageLocale(props);
33
+
27
34
  const ld = ldModule.generate({
28
35
  description: t('discover.description'),
29
36
  title: t('discover.title'),
@@ -6,7 +6,7 @@ import { metadataModule } from '@/server/metadata';
6
6
  import { DiscoverService } from '@/server/services/discover';
7
7
  import { translation } from '@/server/translation';
8
8
  import { AssistantCategory, DiscoverPageProps } from '@/types/discover';
9
- import { isMobileDevice } from '@/utils/server/responsive';
9
+ import { RouteVariants } from '@/utils/server/routeVariants';
10
10
 
11
11
  import List from '../features/List';
12
12
 
@@ -32,7 +32,7 @@ const Page = async (props: DiscoverPageProps<AssistantCategory>) => {
32
32
 
33
33
  const { t, locale } = await translation('metadata', searchParams?.hl);
34
34
  const { t: td } = await translation('discover', searchParams?.hl);
35
- const mobile = await isMobileDevice();
35
+ const mobile = await RouteVariants.getIsMobile(props);
36
36
 
37
37
  const discoverService = new DiscoverService();
38
38
  const items = await discoverService.getAssistantCategory(locale, params.slug);