From 4805e07106aa30080ce72655d3d6fbb6e43dbe4d Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Wed, 6 Aug 2025 14:29:55 +0800 Subject: [PATCH] Revert "feat(cherry-store): add cherry store (#8683)" This reverts commit 4d79c96a4b86edc033590a4782142b86eca0b312. --- .prettierrc | 4 +- components.json | 21 - electron.vite.config.ts | 1 - eslint.config.mjs | 3 +- package.json | 24 +- scripts/update-languages.ts | 2 +- .../preprocess/MineruPreprocessProvider.ts | 2 +- src/renderer/src/Router.tsx | 8 +- .../feat/ImageGenerationMiddleware.ts | 4 +- src/renderer/src/assets/styles/index.scss | 1 - src/renderer/src/assets/styles/tailwind.css | 146 - .../CodeBlockView/MermaidPreview.tsx | 2 +- src/renderer/src/components/ImageViewer.tsx | 2 +- .../components/Popups/AddAssistantPopup.tsx | 2 +- .../src/components/Tab/TabContainer.tsx | 13 +- .../InputEmbeddingDimension.test.tsx.snap | 4 +- .../__snapshots__/Spinner.test.tsx.snap | 1 - src/renderer/src/components/app/Sidebar.tsx | 23 +- src/renderer/src/context/ThemeProvider.tsx | 7 - src/renderer/src/entryPoint.tsx | 1 - src/renderer/src/hooks/use-mobile.ts | 19 - src/renderer/src/i18n/label.ts | 10 +- src/renderer/src/i18n/locales/en-us.json | 8 - src/renderer/src/i18n/locales/ja-jp.json | 8 - src/renderer/src/i18n/locales/ru-ru.json | 8 - src/renderer/src/i18n/locales/zh-cn.json | 8 - src/renderer/src/i18n/locales/zh-tw.json | 8 - src/renderer/src/i18n/translate/el-gr.json | 8 - src/renderer/src/i18n/translate/es-es.json | 8 - src/renderer/src/i18n/translate/fr-fr.json | 8 - src/renderer/src/i18n/translate/pt-pt.json | 8 - .../pages => }/agents/AgentsPage.tsx | 49 +- .../agents/agentGroupTranslations.ts | 0 .../agents/components/AddAgentPopup.tsx | 0 .../agents/components/AgentCard.tsx | 0 .../agents/components/AgentGroupIcon.tsx | 2 +- .../agents/components/ImportAgentPopup.tsx | 0 .../agents/components/ManageAgentsPopup.tsx | 0 .../{discover/pages => }/agents/index.ts | 0 .../discover/components/DiscoverMain.tsx | 19 - .../discover/components/DiscoverSidebar.tsx | 59 - .../discover/hooks/useDiscoverCategories.ts | 53 - src/renderer/src/pages/discover/index.tsx | 46 - src/renderer/src/pages/discover/routers.ts | 50 - src/renderer/src/pages/discover/type.ts | 7 - .../src/pages/home/Messages/Blocks/index.tsx | 4 +- .../pages/home/Messages/MessageContent.tsx | 4 +- .../src/pages/home/Messages/MessageImage.tsx | 5 +- .../src/pages/launchpad/LaunchpadPage.tsx | 4 +- .../pages => }/minapps/MinAppsPage.tsx | 88 +- .../MiniappSettings/MinappSettingsPopup.tsx | 0 .../MiniappSettings/MiniAppIconsManager.tsx | 0 .../MiniappSettings/MiniAppSettings.tsx | 0 .../pages => }/minapps/NewAppButton.tsx | 0 .../DisplaySettings/SidebarIconsManager.tsx | 5 +- src/renderer/src/store/migrate.ts | 22 - src/renderer/src/store/settings.ts | 17 +- src/renderer/src/types/cherryStore.ts | 24 - src/renderer/src/ui/badge.tsx | 46 - src/renderer/src/ui/button.tsx | 59 - src/renderer/src/ui/input.tsx | 21 - src/renderer/src/ui/separator.tsx | 28 - src/renderer/src/ui/sheet.tsx | 137 - src/renderer/src/ui/sidebar.tsx | 724 --- src/renderer/src/ui/skeleton.tsx | 13 - src/renderer/src/ui/tooltip.tsx | 61 - src/renderer/src/ui/vercel-tabs.tsx | 130 - src/renderer/src/utils/index.ts | 6 - src/renderer/src/utils/motionVariants.ts | 6 +- .../action/components/WindowFooter.tsx | 2 +- tsconfig.json | 6 +- tsconfig.node.json | 4 +- vitest.config.ts | 3 +- yarn.lock | 5440 +++++++---------- 74 files changed, 2328 insertions(+), 5188 deletions(-) delete mode 100644 components.json delete mode 100644 src/renderer/src/assets/styles/tailwind.css delete mode 100644 src/renderer/src/hooks/use-mobile.ts rename src/renderer/src/pages/{discover/pages => }/agents/AgentsPage.tsx (91%) rename src/renderer/src/pages/{discover/pages => }/agents/agentGroupTranslations.ts (100%) rename src/renderer/src/pages/{discover/pages => }/agents/components/AddAgentPopup.tsx (100%) rename src/renderer/src/pages/{discover/pages => }/agents/components/AgentCard.tsx (100%) rename src/renderer/src/pages/{discover/pages => }/agents/components/AgentGroupIcon.tsx (94%) rename src/renderer/src/pages/{discover/pages => }/agents/components/ImportAgentPopup.tsx (100%) rename src/renderer/src/pages/{discover/pages => }/agents/components/ManageAgentsPopup.tsx (100%) rename src/renderer/src/pages/{discover/pages => }/agents/index.ts (100%) delete mode 100644 src/renderer/src/pages/discover/components/DiscoverMain.tsx delete mode 100644 src/renderer/src/pages/discover/components/DiscoverSidebar.tsx delete mode 100644 src/renderer/src/pages/discover/hooks/useDiscoverCategories.ts delete mode 100644 src/renderer/src/pages/discover/index.tsx delete mode 100644 src/renderer/src/pages/discover/routers.ts delete mode 100644 src/renderer/src/pages/discover/type.ts rename src/renderer/src/pages/{discover/pages => }/minapps/MinAppsPage.tsx (72%) rename src/renderer/src/pages/{discover/pages => }/minapps/MiniappSettings/MinappSettingsPopup.tsx (100%) rename src/renderer/src/pages/{discover/pages => }/minapps/MiniappSettings/MiniAppIconsManager.tsx (100%) rename src/renderer/src/pages/{discover/pages => }/minapps/MiniappSettings/MiniAppSettings.tsx (100%) rename src/renderer/src/pages/{discover/pages => }/minapps/NewAppButton.tsx (100%) delete mode 100644 src/renderer/src/types/cherryStore.ts delete mode 100644 src/renderer/src/ui/badge.tsx delete mode 100644 src/renderer/src/ui/button.tsx delete mode 100644 src/renderer/src/ui/input.tsx delete mode 100644 src/renderer/src/ui/separator.tsx delete mode 100644 src/renderer/src/ui/sheet.tsx delete mode 100644 src/renderer/src/ui/sidebar.tsx delete mode 100644 src/renderer/src/ui/skeleton.tsx delete mode 100644 src/renderer/src/ui/tooltip.tsx delete mode 100644 src/renderer/src/ui/vercel-tabs.tsx diff --git a/.prettierrc b/.prettierrc index 7a0676110..85e2eb0ca 100644 --- a/.prettierrc +++ b/.prettierrc @@ -3,11 +3,9 @@ "endOfLine": "lf", "jsonRecursiveSort": true, "jsonSortOrder": "{\"*\": \"lexical\"}", - "plugins": ["prettier-plugin-sort-json", "prettier-plugin-tailwindcss"], + "plugins": ["prettier-plugin-sort-json"], "printWidth": 120, "semi": false, "singleQuote": true, - "tailwindFunctions": ["clsx"], - "tailwindStylesheet": "./src/renderer/src/assets/styles/tailwind.css", "trailingComma": "none" } diff --git a/components.json b/components.json deleted file mode 100644 index 06461d66d..000000000 --- a/components.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "$schema": "https://ui.shadcn.com/schema.json", - "style": "new-york", - "rsc": false, - "tsx": true, - "tailwind": { - "config": "", - "css": "src/renderer/src/assets/styles/tailwind.css", - "baseColor": "zinc", - "cssVariables": true, - "prefix": "" - }, - "aliases": { - "components": "@renderer/ui/third-party", - "utils": "@renderer/utils", - "ui": "@renderer/ui", - "lib": "@renderer/lib", - "hooks": "@renderer/hooks" - }, - "iconLibrary": "lucide" -} \ No newline at end of file diff --git a/electron.vite.config.ts b/electron.vite.config.ts index 0da977400..f7cbd950f 100644 --- a/electron.vite.config.ts +++ b/electron.vite.config.ts @@ -58,7 +58,6 @@ export default defineConfig({ }, renderer: { plugins: [ - (async () => (await import('@tailwindcss/vite')).default())(), react({ tsDecorators: true, plugins: [ diff --git a/eslint.config.mjs b/eslint.config.mjs index 341c152e0..abaadac84 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -122,8 +122,7 @@ export default defineConfig([ '.yarn/**', '.gitignore', 'scripts/cloudflare-worker.js', - 'src/main/integration/nutstore/sso/lib/**', - 'src/renderer/src/ui/**' + 'src/main/integration/nutstore/sso/lib/**' ] } ]) diff --git a/package.json b/package.json index 66515bc1f..f225b4c8c 100644 --- a/package.json +++ b/package.json @@ -128,17 +128,9 @@ "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/sdk-trace-web": "^2.0.0", "@playwright/test": "^1.52.0", - "@radix-ui/react-collapsible": "^1.1.10", - "@radix-ui/react-dialog": "^1.1.14", - "@radix-ui/react-dropdown-menu": "^2.1.14", - "@radix-ui/react-separator": "^1.1.7", - "@radix-ui/react-slot": "^1.2.3", - "@radix-ui/react-tabs": "^1.1.11", - "@radix-ui/react-tooltip": "^1.2.7", "@reduxjs/toolkit": "^2.2.5", "@shikijs/markdown-it": "^3.9.1", - "@swc/plugin-styled-components": "^9.0.2", - "@tailwindcss/vite": "^4.1.5", + "@swc/plugin-styled-components": "^7.1.5", "@tanstack/react-query": "^5.27.0", "@tanstack/react-virtual": "^3.13.12", "@testing-library/dom": "^10.4.0", @@ -162,7 +154,7 @@ "@uiw/codemirror-extensions-langs": "^4.23.14", "@uiw/codemirror-themes-all": "^4.23.14", "@uiw/react-codemirror": "^4.23.14", - "@vitejs/plugin-react-swc": "^3.11.0", + "@vitejs/plugin-react-swc": "^3.9.0", "@vitest/browser": "^3.2.4", "@vitest/coverage-v8": "^3.2.4", "@vitest/ui": "^3.2.4", @@ -176,9 +168,7 @@ "axios": "^1.7.3", "browser-image-compression": "^2.0.2", "chardet": "^2.1.0", - "class-variance-authority": "^0.7.1", "cli-progress": "^3.12.0", - "clsx": "^2.1.1", "code-inspector-plugin": "^0.20.14", "color": "^5.0.0", "country-flag-emoji-polyfill": "0.1.8", @@ -218,13 +208,12 @@ "lint-staged": "^15.5.0", "lodash": "^4.17.21", "lru-cache": "^11.1.0", - "lucide-react": "^0.536.0", + "lucide-react": "^0.525.0", "macos-release": "^3.4.0", "markdown-it": "^14.1.0", "mermaid": "^11.7.0", "mime": "^4.0.4", - "motion": "^12.12.1", - "next-themes": "^0.4.6", + "motion": "^12.10.5", "notion-helper": "^1.3.22", "npx-scope-finder": "^1.2.0", "openai": "patch:openai@npm%3A5.1.0#~/.yarn/patches/openai-npm-5.1.0-0e7b3ccb07.patch", @@ -233,7 +222,6 @@ "playwright": "^1.52.0", "prettier": "^3.5.3", "prettier-plugin-sort-json": "^4.1.1", - "prettier-plugin-tailwindcss": "^0.6.11", "proxy-agent": "^6.5.0", "rc-virtual-list": "^3.18.6", "react": "^19.0.0", @@ -264,17 +252,13 @@ "strict-url-sanitise": "^0.0.1", "string-width": "^7.2.0", "styled-components": "^6.1.11", - "tailwind-merge": "^3.3.1", - "tailwindcss": "^4.1.5", "tar": "^7.4.3", "tiny-pinyin": "^1.3.2", "tokenx": "^1.1.0", "tsx": "^4.20.3", - "tw-animate-css": "^1.3.6", "typescript": "^5.6.2", "undici": "6.21.2", "unified": "^11.0.5", - "usehooks-ts": "^3.1.1", "uuid": "^10.0.0", "vite": "npm:rolldown-vite@latest", "vitest": "^3.2.4", diff --git a/scripts/update-languages.ts b/scripts/update-languages.ts index 58640637b..91416a973 100644 --- a/scripts/update-languages.ts +++ b/scripts/update-languages.ts @@ -1,6 +1,6 @@ import { exec } from 'child_process' import * as fs from 'fs/promises' -import * as linguistLanguages from 'linguist-languages' +import linguistLanguages from 'linguist-languages' import * as path from 'path' import { promisify } from 'util' diff --git a/src/main/knowledge/preprocess/MineruPreprocessProvider.ts b/src/main/knowledge/preprocess/MineruPreprocessProvider.ts index a86b3cc61..afc19ae34 100644 --- a/src/main/knowledge/preprocess/MineruPreprocessProvider.ts +++ b/src/main/knowledge/preprocess/MineruPreprocessProvider.ts @@ -273,7 +273,7 @@ export default class MineruPreprocessProvider extends BasePreprocessProvider { const response = await fetch(uploadUrl, { method: 'PUT', - body: new Uint8Array(fileBuffer), + body: fileBuffer, headers: { 'Content-Type': 'application/pdf' } diff --git a/src/renderer/src/Router.tsx b/src/renderer/src/Router.tsx index 132f42cf3..624c6ccc4 100644 --- a/src/renderer/src/Router.tsx +++ b/src/renderer/src/Router.tsx @@ -7,11 +7,12 @@ import Sidebar from './components/app/Sidebar' import TabsContainer from './components/Tab/TabContainer' import NavigationHandler from './handler/NavigationHandler' import { useNavbarPosition } from './hooks/useSettings' -import DiscoverPage from './pages/discover' +import AgentsPage from './pages/agents/AgentsPage' import FilesPage from './pages/files/FilesPage' import HomePage from './pages/home/HomePage' import KnowledgePage from './pages/knowledge/KnowledgePage' import LaunchpadPage from './pages/launchpad/LaunchpadPage' +import MinAppsPage from './pages/minapps/MinAppsPage' import PaintingsRoutePage from './pages/paintings/PaintingsRoutePage' import SettingsPage from './pages/settings/SettingsPage' import TranslatePage from './pages/translate/TranslatePage' @@ -23,15 +24,14 @@ const Router: FC = () => { return ( } /> - {/* } /> */} + } /> } /> } /> } /> } /> - {/* } /> */} + } /> } /> } /> - } /> ) }, []) diff --git a/src/renderer/src/aiCore/middleware/feat/ImageGenerationMiddleware.ts b/src/renderer/src/aiCore/middleware/feat/ImageGenerationMiddleware.ts index 500381607..ceb8d791d 100644 --- a/src/renderer/src/aiCore/middleware/feat/ImageGenerationMiddleware.ts +++ b/src/renderer/src/aiCore/middleware/feat/ImageGenerationMiddleware.ts @@ -50,9 +50,7 @@ export const ImageGenerationMiddleware: CompletionsMiddleware = if (!block.file) return null const binaryData: Uint8Array = await FileManager.readBinaryImage(block.file) const mimeType = `${block.file.type}/${block.file.ext.slice(1)}` - return await toFile(new Blob([binaryData.slice()]), block.file.origin_name || 'image.png', { - type: mimeType - }) + return await toFile(new Blob([binaryData]), block.file.origin_name || 'image.png', { type: mimeType }) }) ) imageFiles = imageFiles.concat(userImages.filter(Boolean) as Blob[]) diff --git a/src/renderer/src/assets/styles/index.scss b/src/renderer/src/assets/styles/index.scss index d1c32c17e..0a6696bd9 100644 --- a/src/renderer/src/assets/styles/index.scss +++ b/src/renderer/src/assets/styles/index.scss @@ -49,7 +49,6 @@ body { font-family: var(--font-family); text-rendering: optimizeLegibility; transition: background-color 0.3s linear; - background-color: unset; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; diff --git a/src/renderer/src/assets/styles/tailwind.css b/src/renderer/src/assets/styles/tailwind.css deleted file mode 100644 index 1cb99ed02..000000000 --- a/src/renderer/src/assets/styles/tailwind.css +++ /dev/null @@ -1,146 +0,0 @@ -@import 'tailwindcss' source('../../../../renderer'); -@import 'tw-animate-css'; - -@custom-variant dark (&:is(.dark *)); - -/* 如需自定义: -1. 清晰地组织自定义 CSS 到相应的层中。 -2. 基础样式(如全局重置、链接样式)放入 base 层; -3. 可复用的组件样式(如果仍使用 @apply 或原生 CSS 嵌套创建)放入 components 层; -4. 新的自定义工具类放入 utilities 层。 -*/ - -:root { - --radius: 0.625rem; - --background: oklch(1 0 0); - --foreground: oklch(0.141 0.005 285.823); - --card: oklch(1 0 0); - --card-foreground: oklch(0.141 0.005 285.823); - --popover: oklch(1 0 0); - --popover-foreground: oklch(0.141 0.005 285.823); - --primary: oklch(0.21 0.006 285.885); - --primary-foreground: oklch(0.985 0 0); - --secondary: oklch(0.967 0.001 286.375); - --secondary-foreground: oklch(0.21 0.006 285.885); - --muted: oklch(0.967 0.001 286.375); - --muted-foreground: oklch(0.552 0.016 285.938); - --accent: oklch(0.967 0.001 286.375); - --accent-foreground: oklch(0.21 0.006 285.885); - --destructive: oklch(0.577 0.245 27.325); - --border: oklch(0.92 0.004 286.32); - --input: oklch(0.92 0.004 286.32); - --ring: oklch(0.705 0.015 286.067); - --chart-1: oklch(0.646 0.222 41.116); - --chart-2: oklch(0.6 0.118 184.704); - --chart-3: oklch(0.398 0.07 227.392); - --chart-4: oklch(0.828 0.189 84.429); - --chart-5: oklch(0.769 0.188 70.08); - --sidebar: oklch(0.985 0 0); - --sidebar-foreground: oklch(0.141 0.005 285.823); - --sidebar-primary: oklch(0.21 0.006 285.885); - --sidebar-primary-foreground: oklch(0.985 0 0); - --sidebar-accent: oklch(0.967 0.001 286.375); - --sidebar-accent-foreground: oklch(0.21 0.006 285.885); - --sidebar-border: oklch(0.92 0.004 286.32); - --sidebar-ring: oklch(0.705 0.015 286.067); -} - -.dark { - --background: oklch(0.141 0.005 285.823); - --foreground: oklch(0.985 0 0); - --card: oklch(0.21 0.006 285.885); - --card-foreground: oklch(0.985 0 0); - --popover: oklch(0.21 0.006 285.885); - --popover-foreground: oklch(0.985 0 0); - --primary: oklch(0.92 0.004 286.32); - --primary-foreground: oklch(0.21 0.006 285.885); - --secondary: oklch(0.274 0.006 286.033); - --secondary-foreground: oklch(0.985 0 0); - --muted: oklch(0.274 0.006 286.033); - --muted-foreground: oklch(0.705 0.015 286.067); - --accent: oklch(0.274 0.006 286.033); - --accent-foreground: oklch(0.985 0 0); - --destructive: oklch(0.704 0.191 22.216); - --border: oklch(1 0 0 / 10%); - --input: oklch(1 0 0 / 15%); - --ring: oklch(0.552 0.016 285.938); - --chart-1: oklch(0.488 0.243 264.376); - --chart-2: oklch(0.696 0.17 162.48); - --chart-3: oklch(0.769 0.188 70.08); - --chart-4: oklch(0.627 0.265 303.9); - --chart-5: oklch(0.645 0.246 16.439); - --sidebar: oklch(0.21 0.006 285.885); - --sidebar-foreground: oklch(0.985 0 0); - --sidebar-primary: oklch(0.488 0.243 264.376); - --sidebar-primary-foreground: oklch(0.985 0 0); - --sidebar-accent: oklch(0.274 0.006 286.033); - --sidebar-accent-foreground: oklch(0.985 0 0); - --sidebar-border: oklch(1 0 0 / 10%); - --sidebar-ring: oklch(0.552 0.016 285.938); -} - -@theme inline { - --color-background: var(--background); - --color-foreground: var(--foreground); - --color-card: var(--card); - --color-card-foreground: var(--card-foreground); - --color-popover: var(--popover); - --color-popover-foreground: var(--popover-foreground); - --color-primary: var(--primary); - --color-primary-foreground: var(--primary-foreground); - --color-secondary: var(--secondary); - --color-secondary-foreground: var(--secondary-foreground); - --color-muted: var(--muted); - --color-muted-foreground: var(--muted-foreground); - --color-accent: var(--accent); - --color-accent-foreground: var(--accent-foreground); - --color-destructive: var(--destructive); - --color-destructive-foreground: var(--destructive-foreground); - --color-border: var(--border); - --color-input: var(--input); - --color-ring: var(--ring); - --color-chart-1: var(--chart-1); - --color-chart-2: var(--chart-2); - --color-chart-3: var(--chart-3); - --color-chart-4: var(--chart-4); - --color-chart-5: var(--chart-5); - --radius-sm: calc(var(--radius) - 4px); - --radius-md: calc(var(--radius) - 2px); - --radius-lg: var(--radius); - --radius-xl: calc(var(--radius) + 4px); - --color-sidebar: var(--sidebar); - --color-sidebar-foreground: var(--sidebar-foreground); - --color-sidebar-primary: var(--sidebar-primary); - --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); - --color-sidebar-accent: var(--sidebar-accent); - --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); - --color-sidebar-border: var(--sidebar-border); - --color-sidebar-ring: var(--sidebar-ring); - --animate-marquee: marquee var(--duration) infinite linear; - --animate-marquee-vertical: marquee-vertical var(--duration) linear infinite; - @keyframes marquee { - from { - transform: translateX(0); - } - to { - transform: translateX(calc(-100% - var(--gap))); - } - } - @keyframes marquee-vertical { - from { - transform: translateY(0); - } - to { - transform: translateY(calc(-100% - var(--gap))); - } - } -} - -@layer base { - * { - @apply border-border outline-ring/50; - } - body { - @apply bg-background text-foreground; - } -} diff --git a/src/renderer/src/components/CodeBlockView/MermaidPreview.tsx b/src/renderer/src/components/CodeBlockView/MermaidPreview.tsx index b2ed8b0d6..b57c4a68a 100644 --- a/src/renderer/src/components/CodeBlockView/MermaidPreview.tsx +++ b/src/renderer/src/components/CodeBlockView/MermaidPreview.tsx @@ -142,7 +142,7 @@ const MermaidPreview: React.FC = ({ children, setTools }) => }> {(mermaidError || error) && {mermaidError || error}} - + ) diff --git a/src/renderer/src/components/ImageViewer.tsx b/src/renderer/src/components/ImageViewer.tsx index a18f4d00c..ddb28a4d5 100644 --- a/src/renderer/src/components/ImageViewer.tsx +++ b/src/renderer/src/components/ImageViewer.tsx @@ -36,7 +36,7 @@ const ImageViewer: React.FC = ({ src, style, ...props }) => { if (!match) throw new Error('无效的 base64 图片格式') const mimeType = match[1] const byteArray = Base64.toUint8Array(match[2]) - const blob = new Blob([byteArray.slice()], { type: mimeType }) + const blob = new Blob([byteArray], { type: mimeType }) await navigator.clipboard.write([new ClipboardItem({ [mimeType]: blob })]) } else if (src.startsWith('file://')) { // 处理本地文件路径 diff --git a/src/renderer/src/components/Popups/AddAssistantPopup.tsx b/src/renderer/src/components/Popups/AddAssistantPopup.tsx index efef3354b..b3ea93662 100644 --- a/src/renderer/src/components/Popups/AddAssistantPopup.tsx +++ b/src/renderer/src/components/Popups/AddAssistantPopup.tsx @@ -1,7 +1,7 @@ import { TopView } from '@renderer/components/TopView' import { useAgents } from '@renderer/hooks/useAgents' import { useAssistants, useDefaultAssistant } from '@renderer/hooks/useAssistant' -import { useSystemAgents } from '@renderer/pages/discover/pages/agents' +import { useSystemAgents } from '@renderer/pages/agents' import { createAssistantFromAgent } from '@renderer/services/AssistantService' import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' import { Agent, Assistant } from '@renderer/types' diff --git a/src/renderer/src/components/Tab/TabContainer.tsx b/src/renderer/src/components/Tab/TabContainer.tsx index d4383fec7..81ebad43e 100644 --- a/src/renderer/src/components/Tab/TabContainer.tsx +++ b/src/renderer/src/components/Tab/TabContainer.tsx @@ -12,15 +12,16 @@ import { ThemeMode } from '@renderer/types' import { classNames } from '@renderer/utils' import { Tooltip } from 'antd' import { - Compass, FileSearch, Folder, Home, Languages, + LayoutGrid, Monitor, Moon, Palette, Settings, + Sparkle, SquareTerminal, Sun, X @@ -40,14 +41,14 @@ const getTabIcon = (tabId: string): React.ReactNode | undefined => { switch (tabId) { case 'home': return - // case 'agents': - // return + case 'agents': + return case 'translate': return case 'paintings': return - // case 'apps': - // return + case 'apps': + return case 'knowledge': return case 'mcp': @@ -56,8 +57,6 @@ const getTabIcon = (tabId: string): React.ReactNode | undefined => { return case 'settings': return - case 'discover': - return default: return null } diff --git a/src/renderer/src/components/__tests__/__snapshots__/InputEmbeddingDimension.test.tsx.snap b/src/renderer/src/components/__tests__/__snapshots__/InputEmbeddingDimension.test.tsx.snap index 694f03157..f05613003 100644 --- a/src/renderer/src/components/__tests__/__snapshots__/InputEmbeddingDimension.test.tsx.snap +++ b/src/renderer/src/components/__tests__/__snapshots__/InputEmbeddingDimension.test.tsx.snap @@ -8,7 +8,7 @@ exports[`InputEmbeddingDimension > basic rendering > should match snapshot with @@ -43,7 +43,7 @@ exports[`InputEmbeddingDimension > basic rendering > should match snapshot with diff --git a/src/renderer/src/components/__tests__/__snapshots__/Spinner.test.tsx.snap b/src/renderer/src/components/__tests__/__snapshots__/Spinner.test.tsx.snap index 3dd4e2238..aa374d932 100644 --- a/src/renderer/src/components/__tests__/__snapshots__/Spinner.test.tsx.snap +++ b/src/renderer/src/components/__tests__/__snapshots__/Spinner.test.tsx.snap @@ -26,7 +26,6 @@ exports[`Spinner > should match snapshot 1`] = ` stroke-linecap="round" stroke-linejoin="round" stroke-width="2" - style="color: unset;" viewBox="0 0 24 24" width="16" xmlns="http://www.w3.org/2000/svg" diff --git a/src/renderer/src/components/app/Sidebar.tsx b/src/renderer/src/components/app/Sidebar.tsx index 077e1846e..eb67cf16f 100644 --- a/src/renderer/src/components/app/Sidebar.tsx +++ b/src/renderer/src/components/app/Sidebar.tsx @@ -16,15 +16,16 @@ import { isEmoji } from '@renderer/utils' import { Avatar, Tooltip } from 'antd' import { CircleHelp, - Compass, FileSearch, Folder, Languages, + LayoutGrid, MessageSquare, Monitor, Moon, Palette, Settings, + Sparkle, Sun } from 'lucide-react' import { FC } from 'react' @@ -38,7 +39,7 @@ import { SidebarOpenedMinappTabs, SidebarPinnedApps } from './PinnedMinapps' const Sidebar: FC = () => { const { hideMinappPopup, openMinapp } = useMinappPopup() const { minappShow, currentMinappId } = useRuntime() - // const { sidebarIcons } = useSettings() + const { sidebarIcons } = useSettings() const { pinned } = useMinapps() const { pathname } = useLocation() @@ -52,8 +53,8 @@ const Sidebar: FC = () => { const backgroundColor = useNavBackgroundColor() - // const showPinnedApps = pinned.length > 0 && sidebarIcons.visible.includes('minapp') - const showPinnedApps = pinned.length > 0 + const showPinnedApps = pinned.length > 0 && sidebarIcons.visible.includes('minapp') + const to = async (path: string) => { await modelGenerating() navigate(path) @@ -147,24 +148,22 @@ const MainMenus: FC = () => { const iconMap = { assistants: , - // agents: , + agents: , paintings: , translate: , - // minapp: , + minapp: , knowledge: , - files: , - discover: + files: } const pathMap = { assistants: '/', - // agents: '/agents', + agents: '/agents', paintings: `/paintings/${defaultPaintingProvider}`, translate: '/translate', - // minapp: '/apps', + minapp: '/apps', knowledge: '/knowledge', - files: '/files', - discover: '/discover' + files: '/files' } return sidebarIcons.visible.map((icon) => { diff --git a/src/renderer/src/context/ThemeProvider.tsx b/src/renderer/src/context/ThemeProvider.tsx index 21dc9e0b6..71755a0dc 100644 --- a/src/renderer/src/context/ThemeProvider.tsx +++ b/src/renderer/src/context/ThemeProvider.tsx @@ -23,12 +23,6 @@ interface ThemeProviderProps extends PropsWithChildren { defaultTheme?: ThemeMode } -const tailwindThemeChange = (theme: ThemeMode) => { - const root = window.document.documentElement - root.classList.remove('light', 'dark') - root.classList.add(theme) -} - export const ThemeProvider: React.FC = ({ children }) => { // 用户设置的主题 const { theme: settedTheme, setTheme: setSettedTheme } = useSettings() @@ -70,7 +64,6 @@ export const ThemeProvider: React.FC = ({ children }) => { useEffect(() => { window.api.setTheme(settedTheme) - tailwindThemeChange(settedTheme) }, [settedTheme]) return ( diff --git a/src/renderer/src/entryPoint.tsx b/src/renderer/src/entryPoint.tsx index 835f4830b..bf6a3cb6a 100644 --- a/src/renderer/src/entryPoint.tsx +++ b/src/renderer/src/entryPoint.tsx @@ -1,5 +1,4 @@ import './assets/styles/index.scss' -import './assets/styles/tailwind.css' import '@ant-design/v5-patch-for-react-19' import { createRoot } from 'react-dom/client' diff --git a/src/renderer/src/hooks/use-mobile.ts b/src/renderer/src/hooks/use-mobile.ts deleted file mode 100644 index 4331d5c56..000000000 --- a/src/renderer/src/hooks/use-mobile.ts +++ /dev/null @@ -1,19 +0,0 @@ -import * as React from 'react' - -const MOBILE_BREAKPOINT = 768 - -export function useIsMobile() { - const [isMobile, setIsMobile] = React.useState(undefined) - - React.useEffect(() => { - const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`) - const onChange = () => { - setIsMobile(window.innerWidth < MOBILE_BREAKPOINT) - } - mql.addEventListener('change', onChange) - setIsMobile(window.innerWidth < MOBILE_BREAKPOINT) - return () => mql.removeEventListener('change', onChange) - }, []) - - return !!isMobile -} diff --git a/src/renderer/src/i18n/label.ts b/src/renderer/src/i18n/label.ts index c01ee7d5f..4915ef5eb 100644 --- a/src/renderer/src/i18n/label.ts +++ b/src/renderer/src/i18n/label.ts @@ -93,8 +93,8 @@ export const getProgressLabel = (key: string): string => { } const titleKeyMap = { - // agents: 'title.agents', - // apps: 'title.apps', + agents: 'title.agents', + apps: 'title.apps', files: 'title.files', home: 'title.home', knowledge: 'title.knowledge', @@ -103,8 +103,7 @@ const titleKeyMap = { memories: 'title.memories', paintings: 'title.paintings', settings: 'title.settings', - translate: 'title.translate', - discover: 'title.discover' + translate: 'title.translate' } as const export const getTitleLabel = (key: string): string => { @@ -128,8 +127,7 @@ const sidebarIconKeyMap = { translate: 'translate.title', minapp: 'minapp.title', knowledge: 'knowledge.title', - files: 'files.title', - discover: 'discover.title' + files: 'files.title' } as const export const getSidebarIconLabel = (key: string): string => { diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index 489b732b4..ae2cc8a76 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -740,13 +740,6 @@ "warning": "Warning", "you": "You" }, - "discover": { - "install": "Installation", - "title": "Discover", - "uninstall": "uninstall", - "update": "update", - "update_all": "Full Update" - }, "docs": { "title": "Docs" }, @@ -3450,7 +3443,6 @@ "title": { "agents": "Agents", "apps": "Apps", - "discover": "Discover", "files": "Files", "home": "Home", "knowledge": "Knowledge Base", diff --git a/src/renderer/src/i18n/locales/ja-jp.json b/src/renderer/src/i18n/locales/ja-jp.json index ef1efc156..8e3d2a9c1 100644 --- a/src/renderer/src/i18n/locales/ja-jp.json +++ b/src/renderer/src/i18n/locales/ja-jp.json @@ -740,13 +740,6 @@ "warning": "警告", "you": "あなた" }, - "discover": { - "install": "インストール", - "title": "発見", - "uninstall": "アンインストール", - "update": "更新", - "update_all": "すべて更新" - }, "docs": { "title": "ドキュメント" }, @@ -3450,7 +3443,6 @@ "title": { "agents": "エージェント", "apps": "アプリ", - "discover": "発見", "files": "ファイル", "home": "ホーム", "knowledge": "ナレッジベース", diff --git a/src/renderer/src/i18n/locales/ru-ru.json b/src/renderer/src/i18n/locales/ru-ru.json index 88519bf69..c959dda58 100644 --- a/src/renderer/src/i18n/locales/ru-ru.json +++ b/src/renderer/src/i18n/locales/ru-ru.json @@ -740,13 +740,6 @@ "warning": "Предупреждение", "you": "Вы" }, - "discover": { - "install": "Установка", - "title": "Откройте для себя", - "uninstall": "десинь", - "update": "обновление", - "update_all": "Все обновления" - }, "docs": { "title": "Документация" }, @@ -3450,7 +3443,6 @@ "title": { "agents": "Агенты", "apps": "Приложения", - "discover": "Откройте для себя", "files": "Файлы", "home": "Главная", "knowledge": "База знаний", diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index 0fc3ad78c..78bd4143c 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -740,13 +740,6 @@ "warning": "警告", "you": "用户" }, - "discover": { - "install": "安装", - "title": "发现", - "uninstall": "卸载", - "update": "更新", - "update_all": "全部更新" - }, "docs": { "title": "帮助文档" }, @@ -3450,7 +3443,6 @@ "title": { "agents": "智能体", "apps": "小程序", - "discover": "发现", "files": "文件", "home": "首页", "knowledge": "知识库", diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json index a299fade5..84869ab5c 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -740,13 +740,6 @@ "warning": "警告", "you": "您" }, - "discover": { - "install": "安裝", - "title": "發現", - "uninstall": "卸載", - "update": "更新", - "update_all": "全部更新" - }, "docs": { "title": "說明文件" }, @@ -3450,7 +3443,6 @@ "title": { "agents": "智能體", "apps": "小程序", - "discover": "發現", "files": "文件", "home": "主頁", "knowledge": "知識庫", diff --git a/src/renderer/src/i18n/translate/el-gr.json b/src/renderer/src/i18n/translate/el-gr.json index 5c702db58..7ba4a69d9 100644 --- a/src/renderer/src/i18n/translate/el-gr.json +++ b/src/renderer/src/i18n/translate/el-gr.json @@ -740,13 +740,6 @@ "warning": "Προσοχή", "you": "Εσείς" }, - "discover": { - "install": "Εγκατάσταση", - "title": "ανακάλυψη", - "uninstall": "απεγκατάσταση", - "update": "ενημέρωση", - "update_all": "Όλα τα πρόσφατα" - }, "docs": { "title": "Βοήθεια" }, @@ -3446,7 +3439,6 @@ "title": { "agents": "Πράκτορες", "apps": "Εφαρμογές", - "discover": "Ανακάλυψη", "files": "Αρχεία", "home": "Αρχική Σελίδα", "knowledge": "Βάση Γνώσης", diff --git a/src/renderer/src/i18n/translate/es-es.json b/src/renderer/src/i18n/translate/es-es.json index fa07f9ce6..83ec9a0ac 100644 --- a/src/renderer/src/i18n/translate/es-es.json +++ b/src/renderer/src/i18n/translate/es-es.json @@ -740,13 +740,6 @@ "warning": "Advertencia", "you": "Usuario" }, - "discover": { - "install": "instalación", - "title": "Descubrir", - "uninstall": "desinstalar", - "update": "actualización", - "update_all": "Todo actualizado." - }, "docs": { "title": "Documentación de Ayuda" }, @@ -3446,7 +3439,6 @@ "title": { "agents": "Agentes", "apps": "Aplicaciones", - "discover": "Descubrir", "files": "Archivos", "home": "Inicio", "knowledge": "Base de conocimiento", diff --git a/src/renderer/src/i18n/translate/fr-fr.json b/src/renderer/src/i18n/translate/fr-fr.json index e2f30569a..6f84b6add 100644 --- a/src/renderer/src/i18n/translate/fr-fr.json +++ b/src/renderer/src/i18n/translate/fr-fr.json @@ -740,13 +740,6 @@ "warning": "Avertissement", "you": "Vous" }, - "discover": { - "install": "installer", - "title": "Découvrir", - "uninstall": "désinstaller", - "update": "Mise à jour", - "update_all": "Mises à jour complètes" - }, "docs": { "title": "Documentation d'aide" }, @@ -3446,7 +3439,6 @@ "title": { "agents": "Agent intelligent", "apps": "Mini-programmes", - "discover": "Découvrir", "files": "Fichiers", "home": "Page d'accueil", "knowledge": "Base de connaissances", diff --git a/src/renderer/src/i18n/translate/pt-pt.json b/src/renderer/src/i18n/translate/pt-pt.json index 7ebec7665..1dc8ed5cd 100644 --- a/src/renderer/src/i18n/translate/pt-pt.json +++ b/src/renderer/src/i18n/translate/pt-pt.json @@ -740,13 +740,6 @@ "warning": "Aviso", "you": "Você" }, - "discover": { - "install": "Instalação", - "title": "Descoberta", - "uninstall": "desinstalar", - "update": "atualização", - "update_all": "Todas as atualizações" - }, "docs": { "title": "Documentação de Ajuda" }, @@ -3446,7 +3439,6 @@ "title": { "agents": "Agentes", "apps": "Miniaplicativos", - "discover": "Descoberta", "files": "Arquivos", "home": "Página Inicial", "knowledge": "Base de Conhecimento", diff --git a/src/renderer/src/pages/discover/pages/agents/AgentsPage.tsx b/src/renderer/src/pages/agents/AgentsPage.tsx similarity index 91% rename from src/renderer/src/pages/discover/pages/agents/AgentsPage.tsx rename to src/renderer/src/pages/agents/AgentsPage.tsx index 0e5a8db40..727e06566 100644 --- a/src/renderer/src/pages/discover/pages/agents/AgentsPage.tsx +++ b/src/renderer/src/pages/agents/AgentsPage.tsx @@ -1,4 +1,5 @@ import { ImportOutlined, PlusOutlined } from '@ant-design/icons' +import { Navbar, NavbarCenter } from '@renderer/components/app/Navbar' import CustomTag from '@renderer/components/CustomTag' import { HStack } from '@renderer/components/Layout' import ListItem from '@renderer/components/ListItem' @@ -178,28 +179,27 @@ const AgentsPage: FC = () => { return ( - {/* */} - {/* */} - {/* {t('agents.title')} */} - {/*
- } - value={searchInput} - maxLength={50} - onChange={handleSearchInputChange} - onPressEnter={handleSearch} - onBlur={handleSearchInputBlur} - /> -
*/} - {/*
*/} - {/*
*/} + + + {t('agents.title')} + } + value={searchInput} + maxLength={50} + onChange={handleSearchInputChange} + onPressEnter={handleSearch} + onBlur={handleSearchInputBlur} + /> +
+ +
@@ -310,13 +310,14 @@ const AgentsPage: FC = () => { const Container = styled.div` display: flex; + flex: 1; flex-direction: column; height: 100%; - overflow: hidden; ` const AgentsGroupList = styled(Scrollbar)` min-width: 160px; + height: calc(100vh - var(--navbar-height)); display: flex; flex-direction: column; gap: 8px; @@ -334,10 +335,10 @@ const AgentsGroupList = styled(Scrollbar)` const Main = styled.div` flex: 1; display: flex; - overflow: hidden; ` const AgentsListContainer = styled.div` + height: calc(100vh - var(--navbar-height)); flex: 1; display: flex; flex-direction: column; diff --git a/src/renderer/src/pages/discover/pages/agents/agentGroupTranslations.ts b/src/renderer/src/pages/agents/agentGroupTranslations.ts similarity index 100% rename from src/renderer/src/pages/discover/pages/agents/agentGroupTranslations.ts rename to src/renderer/src/pages/agents/agentGroupTranslations.ts diff --git a/src/renderer/src/pages/discover/pages/agents/components/AddAgentPopup.tsx b/src/renderer/src/pages/agents/components/AddAgentPopup.tsx similarity index 100% rename from src/renderer/src/pages/discover/pages/agents/components/AddAgentPopup.tsx rename to src/renderer/src/pages/agents/components/AddAgentPopup.tsx diff --git a/src/renderer/src/pages/discover/pages/agents/components/AgentCard.tsx b/src/renderer/src/pages/agents/components/AgentCard.tsx similarity index 100% rename from src/renderer/src/pages/discover/pages/agents/components/AgentCard.tsx rename to src/renderer/src/pages/agents/components/AgentCard.tsx diff --git a/src/renderer/src/pages/discover/pages/agents/components/AgentGroupIcon.tsx b/src/renderer/src/pages/agents/components/AgentGroupIcon.tsx similarity index 94% rename from src/renderer/src/pages/discover/pages/agents/components/AgentGroupIcon.tsx rename to src/renderer/src/pages/agents/components/AgentGroupIcon.tsx index 2b93672e7..2e08ff3cd 100644 --- a/src/renderer/src/pages/discover/pages/agents/components/AgentGroupIcon.tsx +++ b/src/renderer/src/pages/agents/components/AgentGroupIcon.tsx @@ -1,4 +1,4 @@ -import { groupTranslations } from '@renderer/pages/discover/pages/agents/agentGroupTranslations' +import { groupTranslations } from '@renderer/pages/agents/agentGroupTranslations' import { DynamicIcon, IconName } from 'lucide-react/dynamic' import { FC } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/pages/discover/pages/agents/components/ImportAgentPopup.tsx b/src/renderer/src/pages/agents/components/ImportAgentPopup.tsx similarity index 100% rename from src/renderer/src/pages/discover/pages/agents/components/ImportAgentPopup.tsx rename to src/renderer/src/pages/agents/components/ImportAgentPopup.tsx diff --git a/src/renderer/src/pages/discover/pages/agents/components/ManageAgentsPopup.tsx b/src/renderer/src/pages/agents/components/ManageAgentsPopup.tsx similarity index 100% rename from src/renderer/src/pages/discover/pages/agents/components/ManageAgentsPopup.tsx rename to src/renderer/src/pages/agents/components/ManageAgentsPopup.tsx diff --git a/src/renderer/src/pages/discover/pages/agents/index.ts b/src/renderer/src/pages/agents/index.ts similarity index 100% rename from src/renderer/src/pages/discover/pages/agents/index.ts rename to src/renderer/src/pages/agents/index.ts diff --git a/src/renderer/src/pages/discover/components/DiscoverMain.tsx b/src/renderer/src/pages/discover/components/DiscoverMain.tsx deleted file mode 100644 index d4391edb5..000000000 --- a/src/renderer/src/pages/discover/components/DiscoverMain.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import React, { Suspense } from 'react' -import { Navigate, Route, Routes } from 'react-router-dom' - -import { ROUTERS } from '../routers' - -const DiscoverContent: React.FC = () => { - return ( - - - } /> - {ROUTERS.map((route) => ( - } /> - ))} - - - ) -} - -export default DiscoverContent diff --git a/src/renderer/src/pages/discover/components/DiscoverSidebar.tsx b/src/renderer/src/pages/discover/components/DiscoverSidebar.tsx deleted file mode 100644 index 95df9f96b..000000000 --- a/src/renderer/src/pages/discover/components/DiscoverSidebar.tsx +++ /dev/null @@ -1,59 +0,0 @@ -// 还没测,目前助手和小程序用不到这个 - -import { Badge } from '@renderer/ui/badge' -import { - Sidebar, - SidebarContent, - SidebarMenu, - SidebarMenuButton, - SidebarMenuSubItem, - SidebarProvider -} from '@renderer/ui/sidebar' - -import { InternalCategory } from '../type' - -interface DiscoverSidebarProps { - activeCategory: InternalCategory | undefined -} - -export default function DiscoverSidebar({ activeCategory }: DiscoverSidebarProps) { - if (!activeCategory) { - return ( - - -

No active category selected.

-
-
- ) - } - - return ( - - - - - {activeCategory.items && - activeCategory.items.length > 0 && - activeCategory.items.map((subItem) => ( - - { - // onSelectSubcategory(subItem.id, subItem) - }} - size="sm"> - {subItem.name} - {typeof subItem.count === 'number' && ( - - {subItem.count} - - )} - - - ))} - - - - - ) -} diff --git a/src/renderer/src/pages/discover/hooks/useDiscoverCategories.ts b/src/renderer/src/pages/discover/hooks/useDiscoverCategories.ts deleted file mode 100644 index 3132dfe79..000000000 --- a/src/renderer/src/pages/discover/hooks/useDiscoverCategories.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { CherryStoreType } from '@renderer/types/cherryStore' -import { useCallback, useMemo } from 'react' -import { useLocation, useNavigate, useSearchParams } from 'react-router-dom' - -import { ROUTERS, ROUTERS_MAP } from '../routers' - -export function useDiscoverCategories() { - const location = useLocation() - const navigate = useNavigate() - const [searchParams, setSearchParams] = useSearchParams() - - const activeTabId = useMemo(() => { - // e.g., location.pathname = /discover/assistant, segments = ['discover', 'assistant'] - const pathSegments = location.pathname.split('/').filter(Boolean) - const currentTabId = pathSegments[1] as CherryStoreType - - return ROUTERS_MAP.has(currentTabId) ? currentTabId : ROUTERS[0].id - }, [location.pathname]) - - const activeCategoryId = useMemo(() => { - return searchParams.get('categoryId') || 'all' - }, [searchParams]) - - const handleSelectTab = useCallback( - (newTabId: string) => { - if (activeTabId !== newTabId) { - navigate(`/discover/${newTabId}`) - } - }, - [activeTabId, navigate] - ) - - const handleSelectCategory = useCallback( - (newCategoryId: string) => { - if (activeCategoryId !== newCategoryId) { - setSearchParams({ categoryId: newCategoryId }) - } - }, - [activeCategoryId, setSearchParams] - ) - - const currentCategory = useMemo(() => { - return ROUTERS_MAP.get(activeTabId) - }, [activeTabId]) - - return { - activeTabId, - activeCategoryId, - currentCategory, - handleSelectTab, - handleSelectCategory - } -} diff --git a/src/renderer/src/pages/discover/index.tsx b/src/renderer/src/pages/discover/index.tsx deleted file mode 100644 index bffc9318c..000000000 --- a/src/renderer/src/pages/discover/index.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import { Navbar, NavbarCenter } from '@renderer/components/app/Navbar' -import { Tabs } from '@renderer/ui/vercel-tabs' -import { useMemo } from 'react' -import { useTranslation } from 'react-i18next' - -import DiscoverMain from './components/DiscoverMain' -import DiscoverSidebar from './components/DiscoverSidebar' -import { useDiscoverCategories } from './hooks/useDiscoverCategories' -import { ROUTERS } from './routers' - -export default function DiscoverPage() { - const { t } = useTranslation() - const { activeTabId, currentCategory, handleSelectTab } = useDiscoverCategories() - - const tabs = useMemo(() => ROUTERS.map((router) => ({ id: router.id, label: router.title })), []) - - return ( -
-
- - - {t('discover.title')} - - - - {ROUTERS.length > 0 && ( -
- -
- )} - -
- {currentCategory?.hasSidebar && ( -
- -
- )} - -
- -
-
-
-
- ) -} diff --git a/src/renderer/src/pages/discover/routers.ts b/src/renderer/src/pages/discover/routers.ts deleted file mode 100644 index c5de9324b..000000000 --- a/src/renderer/src/pages/discover/routers.ts +++ /dev/null @@ -1,50 +0,0 @@ -import i18n from '@renderer/i18n' -import { CherryStoreType } from '@renderer/types/cherryStore' -import { lazy } from 'react' - -export const ROUTERS = [ - { - id: CherryStoreType.ASSISTANT, - title: i18n.t('assistants.title'), - path: CherryStoreType.ASSISTANT, - component: lazy(() => import('./pages/agents/AgentsPage')), - hasSidebar: false, // 目前都没有侧边栏 - items: [{ id: 'all', name: `All ${i18n.t('assistants.title')}` }] // 预设 "All" 子分类 - }, - { - id: CherryStoreType.MINI_APP, - title: i18n.t('minapp.title'), - path: CherryStoreType.MINI_APP, - component: lazy(() => import('./pages/minapps/MinAppsPage')), - hasSidebar: false, // 目前都没有侧边栏 - items: [{ id: 'all', name: `All ${i18n.t('minapp.title')}` }] // 预设 "All" 子分类 - } - // { - // id: CherryStoreType.TRANSLATE, - // title: i18n.t('translate.title'), - // path: 'translate', - // component: lazy(() => import('../translate/TranslatePage')) - // }, - // { - // id: CherryStoreType.FILES, - // title: i18n.t('files.title'), - // path: 'files', - // component: lazy(() => import('../files/FilesPage')) - // }, - // { - // id: CherryStoreType.PAINTINGS, - // title: i18n.t('paintings.title'), - // path: 'paintings/*', - // isPrefix: true, - // component: lazy(() => import('../paintings/PaintingsRoutePage')) - // } - // { - // id: CherryStoreType.MCP_SERVER, - // title: i18n.t('common.mcp'), - // path: 'mcp-servers/*', - // isPrefix: true, - // component: lazy(() => import('../mcp-servers')) - // } -] - -export const ROUTERS_MAP = new Map(ROUTERS.map((router) => [router.id, router])) diff --git a/src/renderer/src/pages/discover/type.ts b/src/renderer/src/pages/discover/type.ts deleted file mode 100644 index 79c1dd367..000000000 --- a/src/renderer/src/pages/discover/type.ts +++ /dev/null @@ -1,7 +0,0 @@ -export interface InternalCategory { - id: string - title: string - path: string - hasSidebar?: boolean - items: Array<{ id: string; name: string; count?: number }> -} diff --git a/src/renderer/src/pages/home/Messages/Blocks/index.tsx b/src/renderer/src/pages/home/Messages/Blocks/index.tsx index efd7e737f..3da83aeec 100644 --- a/src/renderer/src/pages/home/Messages/Blocks/index.tsx +++ b/src/renderer/src/pages/home/Messages/Blocks/index.tsx @@ -3,7 +3,7 @@ import type { RootState } from '@renderer/store' import { messageBlocksSelectors } from '@renderer/store/messageBlock' import type { ImageMessageBlock, MainTextMessageBlock, Message, MessageBlock } from '@renderer/types/newMessage' import { MessageBlockStatus, MessageBlockType } from '@renderer/types/newMessage' -import { AnimatePresence, motion, type Variants } from 'motion/react' +import { AnimatePresence, motion } from 'motion/react' import React, { useMemo } from 'react' import { useSelector } from 'react-redux' import styled from 'styled-components' @@ -25,7 +25,7 @@ interface AnimatedBlockWrapperProps { enableAnimation: boolean } -const blockWrapperVariants: Variants = { +const blockWrapperVariants = { visible: { opacity: 1, x: 0, diff --git a/src/renderer/src/pages/home/Messages/MessageContent.tsx b/src/renderer/src/pages/home/Messages/MessageContent.tsx index 420cd7d46..61b113a01 100644 --- a/src/renderer/src/pages/home/Messages/MessageContent.tsx +++ b/src/renderer/src/pages/home/Messages/MessageContent.tsx @@ -15,9 +15,7 @@ const MessageContent: React.FC = ({ message }) => { <> {!isEmpty(message.mentions) && ( - {message.mentions?.map((model) => ( - {'@' + model.name} - ))} + {message.mentions?.map((model) => {'@' + model.name})} )} diff --git a/src/renderer/src/pages/home/Messages/MessageImage.tsx b/src/renderer/src/pages/home/Messages/MessageImage.tsx index 413f0a2cb..a0faf46d0 100644 --- a/src/renderer/src/pages/home/Messages/MessageImage.tsx +++ b/src/renderer/src/pages/home/Messages/MessageImage.tsx @@ -62,10 +62,7 @@ const MessageImage: FC = ({ block }) => { byteArrays.push(byteArray) } - const blob = new Blob( - byteArrays.map((b) => b.slice()), - { type: mimeType } - ) + const blob = new Blob(byteArrays, { type: mimeType }) await navigator.clipboard.write([new ClipboardItem({ [mimeType]: blob })]) } else { throw new Error('无效的 base64 图片格式') diff --git a/src/renderer/src/pages/launchpad/LaunchpadPage.tsx b/src/renderer/src/pages/launchpad/LaunchpadPage.tsx index b5dfb96c0..0a19d6c18 100644 --- a/src/renderer/src/pages/launchpad/LaunchpadPage.tsx +++ b/src/renderer/src/pages/launchpad/LaunchpadPage.tsx @@ -20,7 +20,7 @@ const LaunchpadPage: FC = () => { { icon: , text: t('title.apps'), - path: '/discover/mini-app', + path: '/apps', bgColor: 'linear-gradient(135deg, #8B5CF6, #A855F7)' // 小程序:紫色,代表多功能和灵活性 }, { @@ -38,7 +38,7 @@ const LaunchpadPage: FC = () => { { icon: , text: t('title.agents'), - path: '/discover/assistant', + path: '/agents', bgColor: 'linear-gradient(135deg, #6366F1, #4F46E5)' // AI助手:靛蓝渐变,代表智能和科技 }, { diff --git a/src/renderer/src/pages/discover/pages/minapps/MinAppsPage.tsx b/src/renderer/src/pages/minapps/MinAppsPage.tsx similarity index 72% rename from src/renderer/src/pages/discover/pages/minapps/MinAppsPage.tsx rename to src/renderer/src/pages/minapps/MinAppsPage.tsx index c52d75247..db82bf43a 100644 --- a/src/renderer/src/pages/discover/pages/minapps/MinAppsPage.tsx +++ b/src/renderer/src/pages/minapps/MinAppsPage.tsx @@ -1,6 +1,8 @@ +import { Navbar, NavbarMain } from '@renderer/components/app/Navbar' import App from '@renderer/components/MinApp/MinApp' import Scrollbar from '@renderer/components/Scrollbar' import { useMinapps } from '@renderer/hooks/useMinapps' +import { useNavbarPosition } from '@renderer/hooks/useSettings' import { Button, Input } from 'antd' import { Search, SettingsIcon } from 'lucide-react' import React, { FC, useState } from 'react' @@ -14,7 +16,7 @@ const AppsPage: FC = () => { const { t } = useTranslation() const [search, setSearch] = useState('') const { minapps } = useMinapps() - // const { isTopNavbar } = useNavbarPosition() + const { isTopNavbar } = useNavbarPosition() const filteredApps = search ? minapps.filter( @@ -35,40 +37,38 @@ const AppsPage: FC = () => { return ( - {/* */} - {/* */} - {/* {t('minapp.title')} */} -
- } - value={search} - onChange={(e) => setSearch(e.target.value)} - /> -
- {/*
*/} - {/*
*/} + + + {t('minapp.title')} + } + value={search} + onChange={(e) => setSearch(e.target.value)} + /> + - ) -} - -function SidebarRail({ className, ...props }: React.ComponentProps<"button">) { - const { toggleSidebar } = useSidebar() - - return ( -