diff --git a/.github/workflows/auto-i18n.yml b/.github/workflows/auto-i18n.yml index 054dea40e..29cfd1fda 100644 --- a/.github/workflows/auto-i18n.yml +++ b/.github/workflows/auto-i18n.yml @@ -1,7 +1,7 @@ name: Auto I18N env: - API_KEY: ${{ secrets.TRANSLATE_API_KEY}} + API_KEY: ${{ secrets.TRANSLATE_API_KEY }} MODEL: ${{ vars.MODEL || 'deepseek/deepseek-v3.1'}} BASE_URL: ${{ vars.BASE_URL || 'https://api.ppinfra.com/openai'}} @@ -35,7 +35,7 @@ jobs: # 在临时目录安装依赖 mkdir -p /tmp/translation-deps cd /tmp/translation-deps - echo '{"dependencies": {"openai": "^5.12.2", "cli-progress": "^3.12.0", "tsx": "^4.20.3", "prettier": "^3.5.3", "prettier-plugin-sort-json": "^4.1.1"}}' > package.json + echo '{"dependencies": {"openai": "^5.12.2", "cli-progress": "^3.12.0", "tsx": "^4.20.3", "prettier": "^3.5.3", "prettier-plugin-sort-json": "^4.1.1", "prettier-plugin-tailwindcss": "^0.6.14"}}' > package.json npm install --no-package-lock # 设置 NODE_PATH 让项目能找到这些依赖 diff --git a/.prettierrc b/.prettierrc index 85e2eb0ca..7a0676110 100644 --- a/.prettierrc +++ b/.prettierrc @@ -3,9 +3,11 @@ "endOfLine": "lf", "jsonRecursiveSort": true, "jsonSortOrder": "{\"*\": \"lexical\"}", - "plugins": ["prettier-plugin-sort-json"], + "plugins": ["prettier-plugin-sort-json", "prettier-plugin-tailwindcss"], "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 new file mode 100644 index 000000000..c5aceeb3c --- /dev/null +++ b/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "aliases": { + "components": "@renderer/ui/third-party", + "hooks": "@renderer/hooks", + "lib": "@renderer/lib", + "ui": "@renderer/ui", + "utils": "@renderer/utils" + }, + "iconLibrary": "lucide", + "rsc": false, + "style": "new-york", + "tailwind": { + "baseColor": "zinc", + "config": "", + "css": "src/renderer/src/assets/styles/tailwind.css", + "cssVariables": true, + "prefix": "" + }, + "tsx": true +} diff --git a/electron.vite.config.ts b/electron.vite.config.ts index dff0a94a3..83f82b5f4 100644 --- a/electron.vite.config.ts +++ b/electron.vite.config.ts @@ -60,6 +60,7 @@ 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 133025b1f..6863613c1 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -123,7 +123,9 @@ export default defineConfig([ '.gitignore', 'scripts/cloudflare-worker.js', 'src/main/integration/nutstore/sso/lib/**', - 'src/main/integration/cherryin/index.js' + 'src/main/integration/cherryin/index.js', + 'src/main/integration/nutstore/sso/lib/**', + 'src/renderer/src/ui/**' ] } ]) diff --git a/package.json b/package.json index f5c4e7103..9936eaca9 100644 --- a/package.json +++ b/package.json @@ -128,6 +128,7 @@ "@eslint/js": "^9.22.0", "@google/genai": "patch:@google/genai@npm%3A1.0.1#~/.yarn/patches/@google-genai-npm-1.0.1-e26f0f9af7.patch", "@hello-pangea/dnd": "^18.0.1", + "@heroui/react": "^2.8.3", "@kangfenmao/keyv-storage": "^0.1.0", "@langchain/community": "^0.3.50", "@langchain/core": "^0.3.68", @@ -148,6 +149,7 @@ "@reduxjs/toolkit": "^2.2.5", "@shikijs/markdown-it": "^3.12.0", "@swc/plugin-styled-components": "^8.0.4", + "@tailwindcss/vite": "^4.1.13", "@tanstack/react-query": "^5.85.5", "@tanstack/react-virtual": "^3.13.12", "@testing-library/dom": "^10.4.0", @@ -210,6 +212,7 @@ "cheerio": "^1.1.2", "chokidar": "^4.0.3", "cli-progress": "^3.12.0", + "clsx": "^2.1.1", "code-inspector-plugin": "^0.20.14", "color": "^5.0.0", "concurrently": "^9.2.1", @@ -238,6 +241,7 @@ "fast-diff": "^1.3.0", "fast-xml-parser": "^5.2.0", "fetch-socks": "1.3.2", + "framer-motion": "^12.23.12", "franc-min": "^6.2.0", "fs-extra": "^11.2.0", "google-auth-library": "^9.15.1", @@ -272,6 +276,7 @@ "playwright": "^1.52.0", "prettier": "^3.5.3", "prettier-plugin-sort-json": "^4.1.1", + "prettier-plugin-tailwindcss": "^0.6.14", "proxy-agent": "^6.5.0", "react": "^19.0.0", "react-dom": "^19.0.0", @@ -301,17 +306,18 @@ "remark-math": "^6.0.0", "remove-markdown": "^0.6.2", "rollup-plugin-visualizer": "^5.12.0", - "sass": "^1.88.0", "shiki": "^3.12.0", "strict-url-sanitise": "^0.0.1", "string-width": "^7.2.0", "striptags": "^3.2.0", "styled-components": "^6.1.11", + "tailwindcss": "^4.1.13", "tar": "^7.4.3", "tiny-pinyin": "^1.3.2", "tokenx": "^1.1.0", "tsx": "^4.20.3", "turndown-plugin-gfm": "^1.0.2", + "tw-animate-css": "^1.3.8", "typescript": "^5.6.2", "undici": "6.21.2", "unified": "^11.0.5", @@ -356,7 +362,7 @@ "prettier --write", "eslint --fix" ], - "*.{json,yml,yaml,css,scss,html}": [ + "*.{json,yml,yaml,css,html}": [ "prettier --write" ] } diff --git a/packages/aiCore/package.json b/packages/aiCore/package.json index 020c95d7c..16d9af76a 100644 --- a/packages/aiCore/package.json +++ b/packages/aiCore/package.json @@ -1,6 +1,6 @@ { "name": "@cherrystudio/ai-core", - "version": "1.0.0-alpha.11", + "version": "1.0.0-alpha.12", "description": "Cherry Studio AI Core - Unified AI Provider Interface Based on Vercel AI SDK", "main": "dist/index.js", "module": "dist/index.mjs", diff --git a/resources/cherry-studio/license.html b/resources/cherry-studio/license.html index ce3079a32..1df611e47 100644 --- a/resources/cherry-studio/license.html +++ b/resources/cherry-studio/license.html @@ -8,18 +8,18 @@
-本项目采用区分用户的双重许可 (User-Segmented Dual Licensing) 模式。
指在您的组织(包括公司、非营利组织、政府机构、教育机构等任何实体)中,能够访问、使用或以任何方式直接或间接受益于本软件(Cherry Studio)功能的个人总数不超过10人。这包括但不限于开发者、测试人员、运营人员、最终用户、通过集成系统间接使用者等。 @@ -40,10 +40,10 @@
This project employs a User-Segmented Dual Licensing model.
Refers to any organization (including companies, non-profits, government agencies, educational institutions, etc.) where the total number of individuals who can access, use, or in any way directly or indirectly @@ -162,10 +162,10 @@
+
{{ formatDate(release.published_at) }}