Skip to content

MichaelHuang7119/cc-switch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

129 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

CC Switch

CI/CD Status License: MIT Python 3.11+ FastAPI Svelte 5

๐ŸŒ ไธญๆ–‡ๆ–‡ๆกฃ | ไธญๆ–‡ๅฟซ้€ŸๆŒ‡ๅ— โ€ข ไธญๆ–‡ๆŠ€ๆœฏๆ–‡ๆกฃ

A high-performance AI model proxy service based on FastAPI and Svelte 5, supporting multi-provider configuration and management.

โœจ Project Introduction

CC Switch is an enterprise-grade API proxy service that implements Anthropic-compatible API endpoints and forwards requests to backend providers supporting OpenAI-compatible interfaces (such as Qwen, ModelScope, AI Ping, Anthropic, etc.). Through a unified API interface, you can easily switch between different AI model providers without modifying client code.

๐Ÿ—๏ธ Project Architecture

Backend Structure (FastAPI + Python 3.11+)

backend/app/
โ”œโ”€โ”€ main.py                    # Application entry point
โ”œโ”€โ”€ config/                    # Configuration management
โ”‚   โ”œโ”€โ”€ settings.py            # Main config (ProviderConfig, AppConfig, etc.)
โ”‚   โ””โ”€โ”€ hot_reload.py          # Config hot-reload with watchdog
โ”œโ”€โ”€ core/                      # Core business logic
โ”‚   โ”œโ”€โ”€ auth.py                # JWT auth, API key validation
โ”‚   โ”œโ”€โ”€ constants.py           # Constants (API_VERSION, MAX_MESSAGE_LENGTH, etc.)
โ”‚   โ”œโ”€โ”€ lifecycle.py           # Startup/shutdown events
โ”‚   โ”œโ”€โ”€ model_manager.py       # Provider & model routing
โ”‚   โ”œโ”€โ”€ models.py              # Pydantic models (Message, MessagesRequest, etc.)
โ”‚   โ””โ”€โ”€ permissions.py         # Permission definitions & checks
โ”œโ”€โ”€ routes/                    # API routes (unified under /routes/)
โ”‚   โ”œโ”€โ”€ messages.py            # /v1/messages endpoint
โ”‚   โ”œโ”€โ”€ auth.py                # /api/auth/* (login, register)
โ”‚   โ”œโ”€โ”€ api_keys.py            # /api/api_keys/* (API key management)
โ”‚   โ”œโ”€โ”€ providers.py           # /api/providers/* (provider management)
โ”‚   โ”œโ”€โ”€ conversations.py       # /api/conversations/* (chat history)
โ”‚   โ”œโ”€โ”€ health.py              # /api/health/* (health check)
โ”‚   โ”œโ”€โ”€ stats.py               # /api/stats/* (statistics)
โ”‚   โ”œโ”€โ”€ config.py              # /api/config/* (config management)
โ”‚   โ”œโ”€โ”€ preferences.py         # /api/preferences/* (user preferences)
โ”‚   โ”œโ”€โ”€ event_logging.py       # /api/event_logging/* (event logging)
โ”‚   โ”œโ”€โ”€ admin_permissions.py   # /api/admin/permissions/* (user & permission management)
โ”‚   โ””โ”€โ”€ oauth.py               # /oauth/* (OAuth login)
โ”œโ”€โ”€ services/                  # Business logic services
โ”‚   โ”œโ”€โ”€ handlers/              # Request handlers (OpenAI/Anthropic format)
โ”‚   โ”‚   โ”œโ”€โ”€ base.py
โ”‚   โ”‚   โ”œโ”€โ”€ openai_handler.py
โ”‚   โ”‚   โ””โ”€โ”€ anthropic_handler.py
โ”‚   โ”œโ”€โ”€ message_service.py     # Message processing & provider routing
โ”‚   โ”œโ”€โ”€ health_service.py      # Health monitoring service
โ”‚   โ”œโ”€โ”€ provider_service.py    # Provider management service
โ”‚   โ”œโ”€โ”€ token_counter.py       # Token counting & history lookup
โ”‚   โ”œโ”€โ”€ config_service.py      # Config service
โ”‚   โ””โ”€โ”€ oauth_service.py       # OAuth service
โ”œโ”€โ”€ converters/                # Format conversion (Anthropic โ†” OpenAI)
โ”‚   โ”œโ”€โ”€ anthropic_request_convert.py  # Anthropic โ†’ OpenAI request
โ”‚   โ””โ”€โ”€ openai_response_convert.py    # OpenAI โ†’ Anthropic response
โ”œโ”€โ”€ infrastructure/            # Infrastructure layer
โ”‚   โ”œโ”€โ”€ clients/               # Provider API clients
โ”‚   โ”‚   โ”œโ”€โ”€ openai_client.py
โ”‚   โ”‚   โ””โ”€โ”€ anthropic_client.py
โ”‚   โ”œโ”€โ”€ circuit_breaker.py     # Circuit breaker pattern
โ”‚   โ”œโ”€โ”€ concurrency_manager.py # Concurrency control
โ”‚   โ”œโ”€โ”€ retry.py               # Retry with backoff
โ”‚   โ”œโ”€โ”€ cache.py               # In-memory/Redis cache
โ”‚   โ””โ”€โ”€ telemetry.py           # OpenTelemetry integration
โ”œโ”€โ”€ database/                  # Data access layer (async SQLite)
โ”‚   โ”œโ”€โ”€ core.py                # Database connection & schema
โ”‚   โ”œโ”€โ”€ users.py               # User management
โ”‚   โ”œโ”€โ”€ api_keys.py            # API key storage
โ”‚   โ”œโ”€โ”€ conversations.py       # Chat conversations & messages
โ”‚   โ”œโ”€โ”€ request_logs.py        # Request logging
โ”‚   โ”œโ”€โ”€ token_usage.py         # Token usage tracking
โ”‚   โ”œโ”€โ”€ health_history.py      # Health history
โ”‚   โ”œโ”€โ”€ config_changes.py      # Config change history
โ”‚   โ”œโ”€โ”€ oauth_accounts.py      # OAuth account associations
โ”‚   โ””โ”€โ”€ encryption.py          # Encryption utilities
โ”œโ”€โ”€ utils/                     # Utility functions
โ”‚   โ”œโ”€โ”€ token_extractor.py     # Unified token extraction (supports OpenAI/Anthropic)
โ”‚   โ”œโ”€โ”€ security_utils.py      # Encryption, validation, API key masking
โ”‚   โ”œโ”€โ”€ color_logger.py        # Colored logging
โ”‚   โ”œโ”€โ”€ error_handler.py       # Error response formatting
โ”‚   โ””โ”€โ”€ response.py            # Response utilities
โ””โ”€โ”€ encryption_key.py          # Encryption key management

Frontend Structure (Svelte 5 + TypeScript)

frontend/src/
โ”œโ”€โ”€ lib/
โ”‚   โ”œโ”€โ”€ components/            # Reusable Svelte components
โ”‚   โ”‚   โ”œโ”€โ”€ chat/              # Chat-related components (ChatArea, MessageBubble, etc.)
โ”‚   โ”‚   โ”œโ”€โ”€ layout/            # Layout components (Header, MobileNav)
โ”‚   โ”‚   โ”œโ”€โ”€ providers/         # Provider management components
โ”‚   โ”‚   โ”œโ”€โ”€ settings/          # Settings components
โ”‚   โ”‚   โ”œโ”€โ”€ ui/                # Base UI components (Button, Input, Card, etc.)
โ”‚   โ”‚   โ”œโ”€โ”€ i18n/              # Internationalization component (Translate)
โ”‚   โ”‚   โ”œโ”€โ”€ ErrorMessageModal.svelte
โ”‚   โ”‚   โ”œโ”€โ”€ Pagination.svelte
โ”‚   โ”‚   โ”œโ”€โ”€ ProviderForm.svelte
โ”‚   โ”‚   โ”œโ”€โ”€ SettingsModal.svelte
โ”‚   โ”‚   โ”œโ”€โ”€ WelcomeModal.svelte
โ”‚   โ”‚   โ””โ”€โ”€ OAuthIcon.svelte
โ”‚   โ”œโ”€โ”€ services/              # API client services
โ”‚   โ”‚   โ”œโ”€โ”€ api.ts             # Main API client
โ”‚   โ”‚   โ”œโ”€โ”€ chatService.ts     # Chat service
โ”‚   โ”‚   โ”œโ”€โ”€ auth.ts            # Auth service
โ”‚   โ”‚   โ”œโ”€โ”€ permissions.ts     # Permission management service
โ”‚   โ”‚   โ”œโ”€โ”€ oauthProviders.ts  # OAuth provider configuration
โ”‚   โ”‚   โ”œโ”€โ”€ apiKeys.ts         # API Key service
โ”‚   โ”‚   โ”œโ”€โ”€ apiKeyStorage.ts   # Secure API Key storage
โ”‚   โ”‚   โ”œโ”€โ”€ providers.ts       # Provider service
โ”‚   โ”‚   โ”œโ”€โ”€ health.ts          # Health monitoring service
โ”‚   โ”‚   โ”œโ”€โ”€ stats.ts           # Statistics service
โ”‚   โ”‚   โ”œโ”€โ”€ config.ts          # Config service
โ”‚   โ”‚   โ””โ”€โ”€ preferences.ts     # User preferences service
โ”‚   โ”œโ”€โ”€ stores/                # Svelte stores (Svelte 5 $state)
โ”‚   โ”‚   โ”œโ”€โ”€ auth.svelte.ts     # Auth state
โ”‚   โ”‚   โ”œโ”€โ”€ chatSession.ts     # Chat session state
โ”‚   โ”‚   โ”œโ”€โ”€ providers.ts       # Provider state
โ”‚   โ”‚   โ”œโ”€โ”€ health.ts          # Health state
โ”‚   โ”‚   โ”œโ”€โ”€ language.ts        # Internationalization state
โ”‚   โ”‚   โ”œโ”€โ”€ theme.ts           # Theme state
โ”‚   โ”‚   โ”œโ”€โ”€ toast.ts           # Toast message state
โ”‚   โ”‚   โ””โ”€โ”€ config.ts          # Config state
โ”‚   โ”œโ”€โ”€ types/                 # TypeScript type definitions
โ”‚   โ”‚   โ”œโ”€โ”€ permission.ts      # Permission types
โ”‚   โ”‚   โ”œโ”€โ”€ apiKey.ts          # API Key types
โ”‚   โ”‚   โ”œโ”€โ”€ provider.ts        # Provider types
โ”‚   โ”‚   โ”œโ”€โ”€ health.ts          # Health types
โ”‚   โ”‚   โ”œโ”€โ”€ config.ts          # Config types
โ”‚   โ”‚   โ””โ”€โ”€ language.ts        # Language types
โ”‚   โ”œโ”€โ”€ config/                # Configuration files
โ”‚   โ”‚   โ””โ”€โ”€ keyboardShortcuts.ts  # Keyboard shortcuts
โ”‚   โ”œโ”€โ”€ utils/                 # Utility functions
โ”‚   โ”‚   โ”œโ”€โ”€ gesture.ts         # Gesture detection
โ”‚   โ”‚   โ””โ”€โ”€ session.ts         # Session management
โ”‚   โ””โ”€โ”€ i18n/                  # Internationalization resources (16 languages)
โ”œโ”€โ”€ routes/                    # SvelteKit pages
โ”‚   โ”œโ”€โ”€ +layout.svelte         # Root layout (auth & permission checks)
โ”‚   โ”œโ”€โ”€ +page.svelte           # Home page
โ”‚   โ”œโ”€โ”€ login/                 # Login page (email + OAuth)
โ”‚   โ”‚   โ””โ”€โ”€ +page.ts
โ”‚   โ”œโ”€โ”€ chat/                  # Chat page
โ”‚   โ”œโ”€โ”€ providers/             # Provider management
โ”‚   โ”œโ”€โ”€ api-keys/              # API Key management
โ”‚   โ”œโ”€โ”€ health/                # Health monitoring
โ”‚   โ”œโ”€โ”€ stats/                 # Usage statistics
โ”‚   โ”œโ”€โ”€ config/                # System configuration
โ”‚   โ”œโ”€โ”€ admin/
โ”‚   โ”‚   โ””โ”€โ”€ users/             # User management
โ”‚   โ”‚       โ”œโ”€โ”€ +page.svelte   # User list
โ”‚   โ”‚       โ””โ”€โ”€ [id]/          # User details & permission config
โ”‚   โ””โ”€โ”€ oauth/
โ”‚       โ””โ”€โ”€ [provider]/        # OAuth callback handling
โ”‚           โ””โ”€โ”€ callback/      # OAuth callback page
โ””โ”€โ”€ app.html                   # HTML template

Request Flow

Client Request
  โ†“
API Routes (/routes/messages.py, /routes/*.py)
  โ†“
Message Service (message_service.py)
  โ†“
Converters (converters/)
  โ†“
Provider Handler (services/handlers/)
  โ†“
Provider Client (infrastructure/clients/)
  โ†“
Backend AI Provider (OpenAI/Anthropic format)
  โ†“
Response Conversion
  โ†“
Client

๐Ÿš€ Key Features

  • ๐Ÿ”ฅ High-Performance Architecture - Async database + connection pool, HTTP connection pool optimization, supports 10k QPS
  • ๐Ÿ›ก๏ธ Enterprise-Grade Security - JWT key management, encrypted data storage, strong password policies
  • ๐Ÿ” Multiple Authentication Methods - Email/password login + OAuth social login (GitHub, Google, Feishu, Microsoft, OIDC)
  • ๐Ÿ‘ฅ User Management - Complete user lifecycle management (create, edit, delete, enable/disable)
  • ๐Ÿ›ก๏ธ Fine-Grained Permission Control - 9 permission points for precise access control, per-user permission configuration
  • ๐ŸŒ Internationalization Support - 16 languages supported (Chinese, English, Japanese, Korean, etc.)
  • ๐ŸŒ Modern Management Interface - Svelte 5 + TypeScript, PWA support, dark/light themes
  • ๐Ÿ”ง Smart Management - OpenTelemetry integration, health monitoring, automatic failover, circuit breaker pattern
  • ๐Ÿ“Š Operations Monitoring - Performance statistics, token usage tracking, real-time logs
  • ๐Ÿ’ฌ Conversation Management - Chat history, multi-conversation support, token usage statistics
  • ๐Ÿข Multi-Provider Support - Unified API interface, intelligent model mapping, provider token limits

๐Ÿƒโ€โ™‚๏ธ Quick Start

Environment Requirements

  • Python 3.9+ (recommended 3.11+)
  • Node.js 18+ (recommended 20+)
  • npm/pnpm/yarn (recommended pnpm)
  • Docker & Docker Compose (optional, for containerized deployment)

๐Ÿš€ One-Click Deployment (Recommended)

Docker Compose

# Clone the repository
git clone https://github.com/MichaelHuang7119/cc-switch.git
cd cc-switch

# Start all services (backend + frontend)
docker-compose up -d

# Check service status
docker-compose ps

# View logs
docker-compose logs -f frontend
docker-compose logs -f backend

After starting the services:

Local Development

1. Start Backend Service

cd backend
bash start.sh  # With hot reload for development mode: bash start.sh --dev

2. Start Frontend Service (New Terminal)

cd frontend
# Using bash start script
bash start.sh  # With hot reload for development mode: bash start.sh --dev
# Using npm/pnpm (can specify port)
pnpm install  # or: npm install, install dependencies first time
pnpm dev -- --port 5173  # or: npm dev -- --port 5173

๐Ÿ”‘ First Login

  1. Visit the frontend management interface: http://localhost:5173
  2. System will automatically redirect to login page
  3. Use default admin credentials:

Important: Please change the password immediately after first login! Production environments require strong passwords.

โš™๏ธ Required Environment Variables

Production environment please set the following environment variables for data security and extended configuration:

# Required - JWT secret key
export JWT_SECRET_KEY="your-strong-secret-key-here"

# Recommended - Encryption key (for sensitive data encryption)
export ENCRYPTION_KEY="your-fernet-encryption-key-here"

# Recommended - Admin password (at least 12 characters)
export ADMIN_PASSWORD="your-secure-password"

# Performance optimization - database connection pool
export DB_POOL_SIZE=20
export DB_POOL_TIMEOUT=30.0

# Optional - monitoring configuration
export ENABLE_TELEMETRY=true
export OTLP_ENDPOINT=http://jaeger:4318

๐Ÿ”‘ Configure Claude Code

  1. Configure AI Providers:

Option 1: Edit backend configuration file

Edit the backend/provider.json file:

{
  "providers": [
    {
      "name": "qwen",
      "enabled": true,
      "priority": 1,
      "api_key": "${QWEN_API_KEY}",
      "base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1",
      "timeout": 60,
      "max_retries": 1,
      "models": {
        "big": ["qwen-plus", "qwen-max"],
        "middle": ["qwen-turbo"],
        "small": ["qwen-plus"]
      }
    },
    {
      "name": "anthropic-direct",
      "enabled": true,
      "priority": 2,
      "api_key": "${ANTHROPIC_API_KEY}",
      "base_url": "https://api.anthropic.com",
      "api_format": "anthropic",
      "timeout": 60,
      "max_retries": 1,
      "models": {
        "big": ["claude-3-opus-20240229"],
        "middle": ["claude-3-sonnet-20240229"],
        "small": ["claude-3-haiku-20240307"]
      }
    }
  ],
  "fallback_strategy": "priority",
  "circuit_breaker": {
    "failure_threshold": 5,
    "recovery_timeout": 60
  }
}

Option 2: Configure via frontend

Providers

  1. Create an API Key:

Method 1: Create via cURL using backend API

Creating an API Key requires admin privileges. You must obtain a JWT token first.

# Step 1: Login to get JWT token
curl -X POST http://localhost:8000/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email": "[email protected]", "password": "admin123"}'

Response example:

{
  "access_token": "eyJhbGciOiJIUzI1NiIs...",
  "token_type": "bearer",
  "user": {
    "id": 1,
    "email": "[email protected]",
    "name": "Administrator",
    "is_admin": true
  }
}
# Step 2: Create API Key
curl -X POST http://localhost:8000/api/api-keys \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <your_JWT_token>" \
  -d '{"name": "my-api-key", "email": "[email protected]"}'

Response example:

{
  "id": 1,
  "api_key": "sk-abc123...",  // Full API Key is only shown now, please store it safely
  "key_prefix": "sk-abc1...",
  "name": "my-api-key",
  "email": "[email protected]",
  "is_active": true
}

Method 2: Create via frontend interface

  • Login to the management interface
  • Go to "API Key Management" page
  • Click "Create API Key"
  • Fill in name and email (optional)
  • Copy the generated API Key (Note: Cannot view the full key after creation)

ApiKeys

  1. Configure Claude Code Environment Variables:
# Backend only (assuming backend port is 8000)
export ANTHROPIC_BASE_URL=http://localhost:8000

# When both frontend and backend are running, you can also access via frontend proxy (e.g., port 5173)
export ANTHROPIC_BASE_URL=http://localhost:5173

# API Key: in development mode, can be any value; in production, use the created valid key
export ANTHROPIC_API_KEY="sk-xxxxxxxxxxxxx"

# Claude Code model configuration: haiku (small), sonnet (middle), opus (big)
# These correspond to the small, middle, big model tiers in provider.json
# For example:
# export ANTHROPIC_MODEL="sonnet"
# export ANTHROPIC_SMALL_FAST_MODEL="haiku"
# export ANTHROPIC_DEFAULT_SONNET_MODEL="sonnet"
# export ANTHROPIC_DEFAULT_OPUS_MODEL="opus"
# export ANTHROPIC_DEFAULT_HAIKU_MODEL="haiku"

๐Ÿ” Configure OAuth Login (Optional)

The system supports multiple OAuth providers for social login. Configure the corresponding environment variables to enable:

# GitHub OAuth
export GITHUB_CLIENT_ID="your-github-client-id"
export GITHUB_CLIENT_SECRET="your-github-client-secret"

# Google OAuth
export GOOGLE_CLIENT_ID="your-google-client-id"
export GOOGLE_CLIENT_SECRET="your-google-client-secret"

# Feishu OAuth (Lark)
export FEISHU_CLIENT_ID="your-feishu-client-id"
export FEISHU_CLIENT_SECRET="your-feishu-client-secret"

# Microsoft OAuth (Azure AD)
export MICROSOFT_CLIENT_ID="your-microsoft-client-id"
export MICROSOFT_CLIENT_SECRET="your-microsoft-client-secret"
export MICROSOFT_TENANT_ID="common"  # or specific tenant ID

# Generic OIDC (supports Logto, Keycloak, Authentik, etc.)
export OIDC_CLIENT_ID="your-oidc-client-id"
export OIDC_CLIENT_SECRET="your-oidc-client-secret"
export OIDC_AUTHORIZATION_URL="https://your-oidc-server/oauth/authorize"
export OIDC_TOKEN_URL="https://your-oidc-server/oauth/token"

After configuration, the login page will display the corresponding OAuth login buttons.

Login

๐Ÿ“š API Usage Examples

Basic Message Request

# Access backend directly (http://localhost:8000/v1/messages)
# Or via frontend proxy (http://localhost:5173/v1/messages)
curl -X POST http://localhost:8000/v1/messages \
  -H "Content-Type: application/json" \
  -H "X-API-Key: sk-xxxxxxxxxxxxx" \
  -d '{
    "model": "haiku",
    "messages": [{"role": "user", "content": "Hello!"}],
    "max_tokens": 100
  }'

Streaming Request

# Access backend directly (http://localhost:8000/v1/messages)
# Or via frontend proxy (http://localhost:5173/v1/messages)
curl -X POST http://localhost:8000/v1/messages \
  -H "Content-Type: application/json" \
  -H "X-API-Key: sk-xxxxxxxxxxxxx" \
  -d '{
    "model": "sonnet",
    "messages": [{"role": "user", "content": "Tell me a story"}],
    "max_tokens": 200,
    "stream": true
  }'

Tool Calling (Function Calling)

# Access backend directly (http://localhost:8000/v1/messages)
# Or via frontend proxy (http://localhost:5173/v1/messages)
curl -X POST http://localhost:8000/v1/messages \
  -H "Content-Type: application/json" \
  -H "X-API-Key: sk-xxxxxxxxxxxxx" \
  -d '{
    "model": "opus",
    "messages": [{"role": "user", "content": "What'"'"'s the weather in Beijing today?"}],
    "max_tokens": 200,
    "tools": [{
      "name": "get_weather",
      "description": "Get weather information for a specified city",
      "input_schema": {
        "type": "object",
        "properties": {
          "location": {
            "type": "string",
            "description": "City name"
          }
        },
        "required": ["location"]
      }
    }]
  }'

๐Ÿ“Š Monitoring and Statistics

Check Health Status

# Access backend directly (http://localhost:8000/health)
# Or via frontend proxy (http://localhost:5173/health)
curl http://localhost:8000/health

Get Token Usage Statistics

# Access backend directly (http://localhost:8000/api/stats/token-usage)
# Or via frontend proxy (http://localhost:5173/api/stats/token-usage)
curl -H "Authorization: Bearer <your-jwt-token>" \
  http://localhost:8000/api/stats/token-usage

View Request Logs

# Access backend directly (http://localhost:8000/api/stats/requests)
# Or via frontend proxy (http://localhost:5173/api/stats/requests)
curl -H "Authorization: Bearer <your-jwt-token>" \
  http://localhost:8000/api/stats/requests

๐ŸŒ Documentation

๐Ÿ“š Development Resources

๐ŸŒ API & Demo

๐Ÿ› Support & Issues

๐Ÿ‡จ๐Ÿ‡ณ Chinese Resources

๐Ÿ“ Changelog

(2026-01-03) - User Authentication & Permission Management Enhancements

  • OAuth Multi-Provider Support: Added GitHub, Google, Feishu, Microsoft, OIDC OAuth login methods
  • User Management System: Complete user CRUD with pagination, search, enable/disable
  • Fine-Grained Permission Control: 9 permission points (chat, conversations, preferences, providers, api_keys, stats, health, config, users)
  • Per-User Permission Configuration: Support configuring permissions per user, admins have all permissions
  • Frontend Route Protection: Unauthorized users are automatically redirected when accessing restricted pages
  • Enhanced API Key Management: Secure storage, one-time full key display, one-click copy

(2025-11-29) - Comprehensive internationalization and user experience improvements

  • 16 Language Support Added: Chinese, English, ๆ—ฅๆœฌ่ชž, ํ•œ๊ตญ์–ด, Franรงais, Espaรฑol, Deutsch, ะ ัƒััะบะธะน, Portuguรชs, Italiano, Nederlands, ุงู„ุนุฑุจูŠุฉ, เคนเคฟเคจเฅเคฆเฅ€, เน„เธ—เธข, Tiแบฟng Viแป‡t, Bahasa Indonesia
  • Smart Language Switching: One-click language switching in top navigation bar, automatically remembers user preferences
  • Full Localization: All pages, forms, buttons, messages, Toast notifications completely translated
  • Fixed Chat Timestamps: Resolved "Invalid Date" issue, supports multiple time formats
  • Svelte 5 Upgrade: Fully upgraded to Svelte 5 syntax, using $state() and $derived() features

๐Ÿค Contributing

We welcome all forms of contribution! Please read the "Contributing Guidelines" section in ๐Ÿ“˜ Development Guide for detailed information.

๐Ÿ’– Support the Project

If this project is helpful to you, please consider supporting our development efforts!

Your support helps us:

  • ๐Ÿš€ Continuously develop and optimize features
  • ๐Ÿ› Quickly fix issues
  • ๐Ÿ“š Improve documentation and examples
  • ๐ŸŒ Add more language support
  • โ˜• Keep developers motivated

Sponsor Us

Alipay
Alipay QR Code
Scan to sponsor
WeChat Pay
WeChat Pay QR Code
Scan to sponsor

Thanks for every bit of support! ๐Ÿ™

๐Ÿ“„ License

This project is licensed under the MIT License.

โญ Acknowledgments

Thanks to all developers who have contributed to this project!


Documentation | Development Guide | Issue Tracker | Changelog

Made with โค๏ธ by the CCS Team

About

High performance claude code router, support multi-providers.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors