mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-19 06:30:10 +08:00
* build: add @biomejs/biome as a dependency * chore: add biome extension to vscode recommendations * chore: migrate from prettier to biome for code formatting Update VSCode settings to use Biome as the default formatter for multiple languages Add Biome to code actions on save and reorder search exclude patterns * build: add biome.json configuration file for code formatting * build: migrate from prettier to biome for formatting Update package.json scripts and biome.json configuration to use biome instead of prettier for code formatting. Adjust biome formatter includes/excludes patterns for better file matching. * refactor(eslint): remove unused prettier config and imports * chore: update biome.json configuration - Enable linter and set custom rules - Change jsxQuoteStyle to single quotes - Add json parser configuration - Set formatWithErrors to true * chore: migrate biome config from json to jsonc format The new jsonc format allows for comments in the configuration file, making it more maintainable and easier to document configuration choices. * style(biome): update ignore patterns and jsx quote style Update file ignore patterns from `/*` to `/**` for consistency Change jsxQuoteStyle from single to double quotes for alignment with project standards * refactor: simplify error type annotations from Error | any to any The change standardizes error handling by using 'any' type instead of union types with Error | any, making the code more consistent and reducing unnecessary type complexity. * chore: exclude tailwind.css from biome formatting * style: standardize quote usage and fix JSX formatting - Replace single quotes with double quotes in CSS imports and selectors - Fix JSX element closing bracket alignment and formatting - Standardize JSON formatting in package.json files * Revert "style: standardize quote usage and fix JSX formatting" This reverts commit0947f8505d. * fix: remove json import assertion for biome compatibility The import assertion syntax is not supported by biome, so it was replaced with a standard import statement. * style: change quote styles in biome.jsonc to use single quotes for JSX and double quotes for JS * style: change quote style from double to single in biome config * style: change JSX quote style from single to double * chore: update biome.jsonc to use single quotes for CSS formatting * chore: update biome config and format commands - Exclude tailwind.css from linter includes - Add biome lint to format commands * style: format JSX closing brackets for better readability * style: set bracketSameLine to true in biome config The change aligns with common JSX formatting preferences where brackets on the same line improve readability for many developers * Revert "style: format JSX closing brackets for better readability" This reverts commitd442c934ee. * style: format code and clean up whitespace - Remove unnecessary whitespace in CSS and TS files - Format package.json files to consistent style - Reorder tsconfig.json properties alphabetically - Improve code formatting in React components * style(biome): update biome.jsonc config with clearer comment Add explanation for keeping bracketSameLine as true to minimize changes in current PR while noting false would be better for future * chore: remove prettier dependency and format package.json files - Remove prettier from dependencies as it's no longer needed - Reformat package.json files for better readability * chore: replace prettier with biome for code formatting Remove all prettier-related configuration, dependencies, and references Update formatting scripts and documentation to use biome instead Adjust electron-builder config to exclude biome.jsonc * build: replace prettier with biome for formatting Use biome as the default formatter instead of prettier for better performance and modern tooling support * ci(i18n): replace prettier with biome for i18n formatting Update the auto-i18n workflow to use Biome instead of Prettier for formatting translated files. This change simplifies the dependencies by removing multiple Prettier plugins and using a single tool for formatting. * fix(i18n): Auto update translations for PR #10170 * style: format package.json files by consolidating array formatting Consolidate multi-line array formatting into single-line format for better readability and consistency across package.json files * Revert "fix(i18n): Auto update translations for PR #10170" This reverts commita7edd32efd. * ci(workflows): specify biome config path in auto-i18n workflow * chore: update biome.jsonc to use lexicographic sort order for json keys * ci(workflows): update biome format command to use --config-path flag * chore: exclude package.json from biome formatting * ci: update biome.jsonc linter configuration Update linter includes to target specific files and modify useSortedClasses rule * chore: reorder search exclude patterns in vscode settings * style(OGCard): reorder tailwind classes for consistent styling * fix(biome): update tailwind classes sorting to safe and warn level * docs(dev): update ide setup instructions in dev docs Replace Prettier with Biome as the recommended formatter and clarify editor options * build(extension-table-plus): replace prettier with biome for formatting - Add biome.json configuration file - Update package.json to use biome instead of prettier - Remove prettier from dependencies - Update lint script to use biome format * chore: replace biome.json with biome.jsonc for extended configuration Update biome configuration file to use JSONC format for comments and more detailed settings * chore: remove unused biome.jsonc configuration file --------- Co-authored-by: GitHub Action <action@github.com>
4.5 KiB
4.5 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Development Commands
Environment Setup
- Prerequisites: Node.js v22.x.x or higher, Yarn 4.9.1
- Setup Yarn:
corepack enable && corepack prepare yarn@4.9.1 --activate - Install Dependencies:
yarn install
Development
- Start Development:
yarn dev- Runs Electron app in development mode - Debug Mode:
yarn debug- Starts with debugging enabled, use chrome://inspect
Testing & Quality
- Run Tests:
yarn test- Runs all tests (Vitest) - Run E2E Tests:
yarn test:e2e- Playwright end-to-end tests - Type Check:
yarn typecheck- Checks TypeScript for both node and web - Lint:
yarn lint- ESLint with auto-fix - Format:
yarn format- Biome formatting
Build & Release
- Build:
yarn build- Builds for production (includes typecheck) - Platform-specific builds:
- Windows:
yarn build:win - macOS:
yarn build:mac - Linux:
yarn build:linux
- Windows:
Architecture Overview
Electron Multi-Process Architecture
- Main Process (
src/main/): Node.js backend handling system integration, file operations, and services - Renderer Process (
src/renderer/): React-based UI running in Chromium - Preload Scripts (
src/preload/): Secure bridge between main and renderer processes
Key Architectural Components
Main Process Services (src/main/services/)
- MCPService: Model Context Protocol server management
- KnowledgeService: Document processing and knowledge base management
- FileStorage/S3Storage/WebDav: Multiple storage backends
- WindowService: Multi-window management (main, mini, selection windows)
- ProxyManager: Network proxy handling
- SearchService: Full-text search capabilities
AI Core (src/renderer/src/aiCore/)
- Middleware System: Composable pipeline for AI request processing
- Client Factory: Supports multiple AI providers (OpenAI, Anthropic, Gemini, etc.)
- Stream Processing: Real-time response handling
State Management (src/renderer/src/store/)
- Redux Toolkit: Centralized state management
- Persistent Storage: Redux-persist for data persistence
- Thunks: Async actions for complex operations
Knowledge Management
- Embeddings: Vector search with multiple providers (OpenAI, Voyage, etc.)
- OCR: Document text extraction (system OCR, Doc2x, Mineru)
- Preprocessing: Document preparation pipeline
- Loaders: Support for various file formats (PDF, DOCX, EPUB, etc.)
Build System
- Electron-Vite: Development and build tooling (v4.0.0)
- Rolldown-Vite: Using experimental rolldown-vite instead of standard vite
- Workspaces: Monorepo structure with
packages/directory - Multiple Entry Points: Main app, mini window, selection toolbar
- Styled Components: CSS-in-JS styling with SWC optimization
Testing Strategy
- Vitest: Unit and integration testing
- Playwright: End-to-end testing
- Component Testing: React Testing Library
- Coverage: Available via
yarn test:coverage
Key Patterns
- IPC Communication: Secure main-renderer communication via preload scripts
- Service Layer: Clear separation between UI and business logic
- Plugin Architecture: Extensible via MCP servers and middleware
- Multi-language Support: i18n with dynamic loading
- Theme System: Light/dark themes with custom CSS variables
UI Design
The project is in the process of migrating from antd & styled-components to HeroUI. Please use HeroUI to build UI components. The use of antd and styled-components is prohibited.
HeroUI Docs: https://www.heroui.com/docs/guide/introduction
Logging Standards
Usage
// Main process
import { loggerService } from '@logger'
const logger = loggerService.withContext('moduleName')
// Renderer process (set window source first)
loggerService.initWindowSource('windowName')
const logger = loggerService.withContext('moduleName')
// Logging
logger.info('message', CONTEXT)
logger.error('message', new Error('error'), CONTEXT)
Log Levels (highest to lowest)
error- Critical errors causing crash/unusable functionalitywarn- Potential issues that don't affect core functionalityinfo- Application lifecycle and key user actionsverbose- Detailed flow information for feature tracingdebug- Development diagnostic info (not for production)silly- Extreme debugging, low-level information