Commit Graph

21 Commits

  • Feat/provider individual config (#663)
    * refactor(ui): simplify UpdateBadge to minimal dot indicator
    
    * feat(provider): add individual test and proxy config for providers
    
    Add support for provider-specific model test and proxy configurations:
    
    - Add ProviderTestConfig and ProviderProxyConfig types in Rust and TypeScript
    - Create ProviderAdvancedConfig component with collapsible panels
    - Update stream_check service to merge provider config with global config
    - Proxy config UI follows global proxy style (single URL input)
    
    Provider-level configs stored in meta field, no database schema changes needed.
    
    * feat(ui): add failover toggle and improve proxy controls
    
    - Add FailoverToggle component with slide animation
    - Simplify ProxyToggle style to match FailoverToggle
    - Add usage statistics button when proxy is active
    - Fix i18n parameter passing for failover messages
    - Add missing failover translation keys (inQueue, addQueue, priority)
    - Replace AboutSection icon with app logo
    
    * fix(proxy): support system proxy fallback and provider-level proxy config
    
    - Remove no_proxy() calls in http_client.rs to allow system proxy fallback
    - Add get_for_provider() to build HTTP client with provider-specific proxy
    - Update forwarder.rs and stream_check.rs to use provider proxy config
    - Fix EditProviderDialog.tsx to include provider.meta in useMemo deps
    - Add useEffect in ProviderAdvancedConfig.tsx to sync expand state
    
    Fixes #636
    Fixes #583
    
    * fix(ui): sync toast theme with app setting
    
    * feat(settings): add log config management
    
    Fixes #612
    Fixes #514
    
    * fix(proxy): increase request body size limit to 200MB
    
    Fixes #666
    
    * docs(proxy): update timeout config descriptions and defaults
    
    Fixes #612
    
    * fix(proxy): filter x-goog-api-key header to prevent duplication
    
    * fix(proxy): prevent proxy recursion when system proxy points to localhost
    
    Detect if HTTP_PROXY, HTTPS_PROXY, or ALL_PROXY environment variables
    point to loopback addresses (localhost, 127.0.0.1), and bypass system
    proxy in such cases to avoid infinite request loops.
    
    * fix(i18n): add providerAdvanced i18n keys and fix failover toast parameter
    
    - Add providerAdvanced.* i18n keys to en.json, zh.json, and ja.json
    - Fix failover toggleFailed toast to pass detail parameter
    - Remove Chinese fallback text from UI for English/Japanese users
    
    * fix(tray): restore tray-provider events and enable Auto failover properly
    
    - Emit provider-switched event on tray provider click (backward compatibility)
    - Auto button now: starts proxy, takes over live config, enables failover
    
    * fix(log): enable dynamic log level and single file mode
    
    - Initialize log at Trace level for dynamic adjustment
    - Change rotation strategy to KeepSome(1) for single file
    - Set max file size to 1GB
    - Delete old log file on startup for clean start
    
    * fix(tray): fix clippy uninlined format args warning
    
    Use inline format arguments: {app_type_str} instead of {}
    
    * fix(provider): allow typing :// in endpoint URL inputs
    
    Change input type from "url" to "text" to prevent browser
    URL validation from blocking :// input.
    
    Closes #681
    
    * fix(stream-check): use Gemini native streaming API format
    
    - Change endpoint from OpenAI-compatible to native streamGenerateContent
    - Add alt=sse parameter for SSE format response
    - Use x-goog-api-key header instead of Bearer token
    - Convert request body to Gemini contents/parts format
    
    * feat(proxy): add request logging for debugging
    
    Add debug logs for outgoing requests including URL and body content
    with byte size, matching the existing response logging format.
    
    * fix(log): prevent usize underflow in KeepSome rotation strategy
    
    KeepSome(n) internally computes n-2, so n=1 causes underflow.
    Use KeepSome(2) as the minimum safe value.
  • fix(opencode): add OpenCode support to skills functionality
    Add missing OpenCode branch in parse_app_type() and include OpenCode
    in all app iteration loops for skills operations (uninstall, scan,
    import, migrate).
  • feat(opencode): Phase 1 - Backend data structure expansion for OpenCode support
    Add OpenCode as the 4th supported application with additive provider management:
    
    - Add OpenCode variant to AppType enum with all related match statements
    - Add enabled_opencode field to McpApps and SkillApps structures
    - Add opencode field to McpRoot and PromptRoot
    - Add database schema migration v3→v4 with enabled_opencode columns
    - Add settings.rs support for opencode_config_dir and current_provider_opencode
    - Create opencode_config.rs module for config file I/O operations
    - Update all services (proxy, mcp, skill, provider, stream_check) for OpenCode
    - Add OpenCode support to deeplink provider and MCP parsing
    - Update commands/config.rs for OpenCode config status and paths
    
    Key design decisions:
    - OpenCode uses additive mode (no is_current needed, no proxy support)
    - Config path: ~/.config/opencode/opencode.json
    - MCP format: stdio→local, sse/http→remote conversion planned
    - Stream check returns error (not yet implemented for OpenCode)
  • Feature/global proxy (#596)
    * refactor(proxy): simplify logging for better readability
    
    - Delete 17 verbose debug logs from handlers, streaming, and response_processor
    - Convert excessive INFO logs to DEBUG level for internal processing details
    - Add 2 critical INFO logs in forwarder.rs for failover scenarios:
      - Log when switching to next provider after failure
      - Log when all providers have been exhausted
    - Fix clippy uninlined_format_args warning
    
    This reduces log noise while maintaining visibility into key user-facing decisions.
    
    * fix: replace unsafe unwrap() calls with proper error handling
    
    - database/dao/mcp.rs: Use map_err for serde_json serialization
    - database/dao/providers.rs: Use map_err for settings_config and meta serialization
    - commands/misc.rs: Use expect() for compile-time regex pattern
    - services/prompt.rs: Use unwrap_or_default() for SystemTime
    - deeplink/provider.rs: Replace unwrap() with is_none_or pattern for Option checks
    
    Reduces potential panic points from 26 to 1 (static regex init, safe).
    
    * refactor(proxy): simplify verbose logging output
    
    - Remove response JSON full output logging in response_processor
    - Remove per-request INFO logs in provider_router (failover status, provider selection)
    - Change model mapping log from INFO to DEBUG
    - Change usage logging failure from INFO to WARN
    - Remove redundant debug logs for circuit breaker operations
    
    Reduces log noise significantly while preserving important warnings and errors.
    
    * feat(proxy): add structured log codes for i18n support
    
    Add error code system to proxy module logs for multi-language support:
    
    - CB-001~006: Circuit breaker state transitions and triggers
    - SRV-001~004: Proxy server lifecycle events
    - FWD-001~002: Request forwarding and failover
    - FO-001~005: Failover switch operations
    - USG-001~002: Usage logging errors
    
    Log format: [CODE] Chinese message
    Frontend/log tools can map codes to any language.
    
    New file: src/proxy/log_codes.rs - centralized code definitions
    
    * chore: bump version to 3.9.1
    
    * style: format code with prettier and rustfmt
    
    * fix(ui): allow number inputs to be fully cleared before saving
    
    - Convert numeric state to string type for controlled inputs
    - Use isNaN() check instead of || fallback to allow 0 values
    - Apply fix to ProxyPanel, CircuitBreakerConfigPanel,
      AutoFailoverConfigPanel, and ModelTestConfigPanel
    
    * feat(pricing): support @ separator in model name matching
    
    - Refactor model name cleaning into chained method calls
    - Add @ to - replacement (e.g., gpt-5.2-codex@low → gpt-5.2-codex-low)
    - Add test case for @ separator matching
    
    * feat(proxy): add global proxy settings support
    
    Add ability to configure a global HTTP/HTTPS proxy for all outbound
    requests including provider API calls, speed tests, and stream checks.
    
    * fix(proxy): improve validation and error handling in proxy config panels
    
    - Add StopTimeout/StopFailed error types for proper stop() error reporting
    - Replace silent clamp with validation-and-block in config panels
    - Add listenAddress format validation in ProxyPanel
    - Use log_codes constants instead of hardcoded strings
    - Use once_cell::Lazy for regex precompilation
    
    * fix(proxy): harden error handling and input validation
    
    - Handle RwLock poisoning in settings.rs with unwrap_or_else
    - Add fallback for dirs::home_dir() in config modules
    - Normalize localhost to 127.0.0.1 in ProxyPanel
    - Format IPv6 addresses with brackets for valid URLs
    - Strict port validation with pure digit regex
    - Treat NaN as validation failure in config panels
    - Log warning on cost_multiplier parse failure
    - Align timeoutSeconds range to [0, 300] across all panels
    
    * feat(proxy): add local proxy auto-scan and fix hot-reload
    
    - Add scan_local_proxies command to detect common proxy ports
    - Fix SkillService not using updated proxy after hot-reload
    - Move global proxy settings to advanced tab
    - Add error handling for scan failures
    
    * fix(proxy): allow localhost input in proxy address field
    
    * fix(proxy): restore request timeout and fix proxy hot-reload issues
    
    - Add URL scheme validation in build_client (http/https/socks5/socks5h)
    - Restore per-request timeout for speedtest, stream_check, usage_script, forwarder
    - Fix set_global_proxy_url to validate before persisting to DB
    - Mask proxy credentials in all log outputs
    - Fix forwarder hot-reload by fetching client on each request
    
    * style: format code with prettier
    
    * fix(proxy): improve global proxy stability and error handling
    
    - Fix RwLock silent failures with explicit error propagation
    - Handle init() duplicate calls gracefully with warning log
    - Align fallback client config with build_client settings
    - Make scan_local_proxies async to avoid UI blocking
    - Add mixed mode support for Clash 7890 port (http+socks5)
    - Use multiple test targets for better proxy connectivity test
    - Clear invalid proxy config on init failure
    - Restore timeout constraints in usage_script
    - Fix mask_url output for URLs without port
    - Add structured error codes [GP-001 to GP-009]
    
    * feat(proxy): add username/password authentication support
    
    - Add separate username and password input fields
    - Implement password visibility toggle with eye icon
    - Add clear button to reset all proxy fields
    - Auto-extract auth info from saved URL and merge on save
    - Update i18n translations (zh/en/ja)
    
    * fix(proxy): fix double encoding issue in proxy auth and add debug logs
    
    - Remove encodeURIComponent in mergeAuth() since URL object's
      username/password setters already do percent-encoding automatically
    - Add GP-010 debug log for database read operations
    - Add GP-011 debug log to track incoming URL info (length, has_auth)
    - Fix username.trim() in fallback branch for consistent behavior
  • Refactor/simplify proxy logs (#585)
    * refactor(proxy): simplify logging for better readability
    
    - Delete 17 verbose debug logs from handlers, streaming, and response_processor
    - Convert excessive INFO logs to DEBUG level for internal processing details
    - Add 2 critical INFO logs in forwarder.rs for failover scenarios:
      - Log when switching to next provider after failure
      - Log when all providers have been exhausted
    - Fix clippy uninlined_format_args warning
    
    This reduces log noise while maintaining visibility into key user-facing decisions.
    
    * fix: replace unsafe unwrap() calls with proper error handling
    
    - database/dao/mcp.rs: Use map_err for serde_json serialization
    - database/dao/providers.rs: Use map_err for settings_config and meta serialization
    - commands/misc.rs: Use expect() for compile-time regex pattern
    - services/prompt.rs: Use unwrap_or_default() for SystemTime
    - deeplink/provider.rs: Replace unwrap() with is_none_or pattern for Option checks
    
    Reduces potential panic points from 26 to 1 (static regex init, safe).
    
    * refactor(proxy): simplify verbose logging output
    
    - Remove response JSON full output logging in response_processor
    - Remove per-request INFO logs in provider_router (failover status, provider selection)
    - Change model mapping log from INFO to DEBUG
    - Change usage logging failure from INFO to WARN
    - Remove redundant debug logs for circuit breaker operations
    
    Reduces log noise significantly while preserving important warnings and errors.
    
    * feat(proxy): add structured log codes for i18n support
    
    Add error code system to proxy module logs for multi-language support:
    
    - CB-001~006: Circuit breaker state transitions and triggers
    - SRV-001~004: Proxy server lifecycle events
    - FWD-001~002: Request forwarding and failover
    - FO-001~005: Failover switch operations
    - USG-001~002: Usage logging errors
    
    Log format: [CODE] Chinese message
    Frontend/log tools can map codes to any language.
    
    New file: src/proxy/log_codes.rs - centralized code definitions
    
    * chore: bump version to 3.9.1
    
    * style: format code with prettier and rustfmt
    
    * fix(ui): allow number inputs to be fully cleared before saving
    
    - Convert numeric state to string type for controlled inputs
    - Use isNaN() check instead of || fallback to allow 0 values
    - Apply fix to ProxyPanel, CircuitBreakerConfigPanel,
      AutoFailoverConfigPanel, and ModelTestConfigPanel
    
    * feat(pricing): support @ separator in model name matching
    
    - Refactor model name cleaning into chained method calls
    - Add @ to - replacement (e.g., gpt-5.2-codex@low → gpt-5.2-codex-low)
    - Add test case for @ separator matching
    
    * fix(proxy): improve validation and error handling in proxy config panels
    
    - Add StopTimeout/StopFailed error types for proper stop() error reporting
    - Replace silent clamp with validation-and-block in config panels
    - Add listenAddress format validation in ProxyPanel
    - Use log_codes constants instead of hardcoded strings
    - Use once_cell::Lazy for regex precompilation
    
    * fix(proxy): harden error handling and input validation
    
    - Handle RwLock poisoning in settings.rs with unwrap_or_else
    - Add fallback for dirs::home_dir() in config modules
    - Normalize localhost to 127.0.0.1 in ProxyPanel
    - Format IPv6 addresses with brackets for valid URLs
    - Strict port validation with pure digit regex
    - Treat NaN as validation failure in config panels
    - Log warning on cost_multiplier parse failure
    - Align timeoutSeconds range to [0, 300] across all panels
  • Feat/proxy header improvements (#538)
    * fix(proxy): improve header handling for Claude API compatibility
    
    - Streamline header blacklist by removing overly aggressive filtering
      (browser-specific headers like sec-fetch-*, accept-language)
    - Ensure anthropic-beta header always includes 'claude-code-20250219'
      marker required by upstream services for request validation
    - Centralize anthropic-version header handling in forwarder to prevent
      duplicate headers across different auth strategies
    - Add ?beta=true query parameter to /v1/messages endpoint for
      compatibility with certain upstream services (e.g., DuckCoding)
    - Remove redundant anthropic-version from ClaudeAdapter auth headers
      as it's now managed exclusively by the forwarder
    
    This improves proxy reliability with various Claude API endpoints
    and third-party services that have specific header requirements.
    
    * style(services): use inline format arguments in format strings
    
    Apply Rust 1.58+ format string syntax across provider and skill
    services. This replaces format!("msg {}", var) with format!("msg {var}")
    for improved readability and consistency with modern Rust idioms.
    
    Changed files:
    - services/provider/mod.rs: 1 format string
    - services/skill.rs: 10 format strings (error messages, log statements)
    
    No functional changes, purely stylistic improvement.
    
    * fix(proxy): restrict Anthropic headers to Claude adapter only
    
    - Move anthropic-beta and anthropic-version header handling inside
      Claude-specific condition to avoid sending unnecessary headers
      to Codex and Gemini APIs
    - Update test cases to reflect ?beta=true query parameter behavior
    - Add edge case tests for non-messages endpoints and existing queries
  • fix(skills): skip hidden directories when scanning for skills
    Filter out directories starting with '.' (e.g., .system) during skill
    scanning to avoid exposing internal system directories from Codex.
  • feat(skills): unified management architecture with SSOT and React Query
    - Introduce SSOT (Single Source of Truth) at ~/.cc-switch/skills/
    - Add three-app toggle support (Claude/Codex/Gemini) for each skill
    - Refactor frontend to use TanStack Query hooks instead of manual state
    - Add UnifiedSkillsPanel for managing installed skills with app toggles
    - Add useSkills.ts with declarative data fetching hooks
    - Extend skills.ts API with unified install/uninstall/toggle methods
    - Support importing unmanaged skills from app directories
    - Add v2→v3 database migration for new skills table structure
  • Feat/skill multi app migration (#378)
    * feat(skill): add database migration and Gemini support for multi-app skills
    
    - Refactor skills table from single key to (directory, app_type) composite primary key
    - Add migration logic to convert existing skill records
    - Support skill installation/uninstallation for Claude/Codex/Gemini independently
    - Add new Tauri commands: get_skills_for_app, install_skill_for_app, uninstall_skill_for_app
    - Update frontend API and components to support app-specific skill operations
    
    * fix(usage): correct cache token column order in request log table
    
    - Swap cache read and cache creation columns to match data binding
    - Add whitespace-nowrap to all table headers for better display
  • Feat/auto failover (#367)
    * feat(db): add circuit breaker config table and provider proxy target APIs
    
    Add database support for auto-failover feature:
    
    - Add circuit_breaker_config table for storing failover thresholds
    - Add get/update_circuit_breaker_config methods in proxy DAO
    - Add reset_provider_health method for manual recovery
    - Add set_proxy_target and get_proxy_targets methods in providers DAO
      for managing multi-provider failover configuration
    
    * feat(proxy): implement circuit breaker and provider router for auto-failover
    
    Add core failover logic:
    
    - CircuitBreaker: Tracks provider health with three states:
      - Closed: Normal operation, requests pass through
      - Open: Circuit broken after consecutive failures, skip provider
      - HalfOpen: Testing recovery with limited requests
    - ProviderRouter: Routes requests across multiple providers with:
      - Health tracking and automatic failover
      - Configurable failure/success thresholds
      - Auto-disable proxy target after reaching failure threshold
      - Support for manual circuit breaker reset
    - Export new types in proxy module
    
    * feat(proxy): add failover Tauri commands and integrate with forwarder
    
    Expose failover functionality to frontend:
    
    - Add Tauri commands: get_proxy_targets, set_proxy_target,
      get_provider_health, reset_circuit_breaker,
      get/update_circuit_breaker_config, get_circuit_breaker_stats
    - Register all new commands in lib.rs invoke handler
    - Update forwarder with improved error handling and logging
    - Integrate ProviderRouter with proxy server startup
    - Add provider health tracking in request handlers
    
    * feat(frontend): add failover API layer and TanStack Query hooks
    
    Add frontend data layer for failover management:
    
    - Add failover.ts API: Tauri invoke wrappers for all failover commands
    - Add failover.ts query hooks: TanStack Query mutations and queries
      - useProxyTargets, useProviderHealth queries
      - useSetProxyTarget, useResetCircuitBreaker mutations
      - useCircuitBreakerConfig query and mutation
    - Update queries.ts with provider health query key
    - Update mutations.ts to invalidate health on provider changes
    - Add CircuitBreakerConfig and ProviderHealth types
    
    * feat(ui): add auto-failover configuration UI and provider health display
    
    Add comprehensive UI for failover management:
    
    Components:
    - ProviderHealthBadge: Display provider health status with color coding
    - CircuitBreakerConfigPanel: Configure failure/success thresholds,
      timeout duration, and error rate limits
    - AutoFailoverConfigPanel: Manage proxy targets with drag-and-drop
      priority ordering and individual enable/disable controls
    - ProxyPanel: Integrate failover tabs for unified proxy management
    
    Provider enhancements:
    - ProviderCard: Show health badge and proxy target indicator
    - ProviderActions: Add "Set as Proxy Target" action
    - EditProviderDialog: Add is_proxy_target toggle
    - ProviderList: Support proxy target filtering mode
    
    Other:
    - Update App.tsx routing for settings integration
    - Update useProviderActions hook with proxy target mutation
    - Fix ProviderList tests for updated component API
    
    * fix(usage): stabilize date range to prevent infinite re-renders
    
    * feat(backend): add tool version check command
    
    Add get_tool_versions command to check local and latest versions of
    Claude, Codex, and Gemini CLI tools:
    
    - Detect local installed versions via command line execution
    - Fetch latest versions from npm registry (Claude, Gemini)
      and GitHub releases API (Codex)
    - Return comprehensive version info including error details
      for uninstalled tools
    - Register command in Tauri invoke handler
    
    * style(ui): format accordion component code style
    
    Apply consistent code formatting to accordion component:
    - Convert double quotes to semicolons at line endings
    - Adjust indentation to 2-space standard
    - Align with project code style conventions
    
    * refactor(providers): update provider card styling to use theme tokens
    
    Replace hardcoded color classes with semantic design tokens:
    - Use bg-card, border-border, text-card-foreground instead of glass-card
    - Replace gray/white color literals with muted/foreground tokens
    - Change proxy target indicator color from purple to green
    - Improve hover states with border-border-active
    - Ensure consistent dark mode support via CSS variables
    
    * refactor(proxy): simplify auto-failover config panel structure
    
    Restructure AutoFailoverConfigPanel for better integration:
    - Remove internal Card wrapper and expansion toggle (now handled by parent)
    - Extract enabled state to props for external control
    - Simplify loading state display
    - Clean up redundant CardHeader/CardContent wrappers
    - ProxyPanel: reduce complexity by delegating to parent components
    
    * feat(settings): enhance settings page with accordion layout and tool versions
    
    Major settings page improvements:
    
    AboutSection:
    - Add local tool version detection (Claude, Codex, Gemini)
    - Display installed vs latest version comparison with visual indicators
    - Show update availability badges and environment check cards
    
    SettingsPage:
    - Reorganize advanced settings into collapsible accordion sections
    - Add proxy control panel with inline status toggle
    - Integrate auto-failover configuration with accordion UI
    - Add database and cost calculation config sections
    
    DirectorySettings & WindowSettings:
    - Minor styling adjustments for consistency
    
    settings.ts API:
    - Add getToolVersions() wrapper for new backend command
    
    * refactor(usage): restructure usage dashboard components
    
    Comprehensive usage statistics panel refactoring:
    
    UsageDashboard:
    - Reorganize layout with improved section headers
    - Add better loading states and empty state handling
    
    ModelStatsTable & ProviderStatsTable:
    - Minor styling updates for consistency
    
    ModelTestConfigPanel & PricingConfigPanel:
    - Simplify component structure
    - Remove redundant Card wrappers
    - Improve form field organization
    
    RequestLogTable:
    - Enhance table layout with better column sizing
    - Improve pagination controls
    
    UsageSummaryCards:
    - Update card styling with semantic tokens
    - Better responsive grid layout
    
    UsageTrendChart:
    - Refine chart container styling
    - Improve legend and tooltip display
    
    * chore(deps): add accordion and animation dependencies
    
    Package updates:
    - Add @radix-ui/react-accordion for collapsible sections
    - Add cmdk for command palette support
    - Add framer-motion for enhanced animations
    
    Tailwind config:
    - Add accordion-up/accordion-down animations
    - Update darkMode config to support both selector and class
    - Reorganize color and keyframe definitions for clarity
    
    * style(app): update header and app switcher styling
    
    App.tsx:
    - Replace glass-header with explicit bg-background/80 backdrop-blur
    - Update navigation button container to use bg-muted
    
    AppSwitcher:
    - Replace hardcoded gray colors with semantic muted/foreground tokens
    - Ensure consistent dark mode support via CSS variables
    - Add group class for better hover state transitions
  • feat(skill): add multi-app skill support for Claude/Codex (#365)
    * feat(skill): add multi-app skill support for Claude/Codex/Gemini
    
    - Add app-specific skill management with AppType prefix in skill keys
    - Implement per-app skill tracking in database schema
    - Add get_skills_for_app command to retrieve skills by application
    - Update SkillsPage to support app-specific skill loading with initialApp prop
    - Parse app parameter and validate against supported app types
    - Maintain backward compatibility with default claude app
    
    * fix(usage): reorder cache columns and prevent header text wrapping
    
    - Swap cache read and cache write columns order
    - Add whitespace-nowrap to all table headers to prevent text wrapping
    - Improves table readability and layout consistency
  • fix(skill): use directory basename for skill installation path (#358)
    Extract last segment from skill directory path to prevent nested directory
    issues during install/uninstall operations. For example, "skills/codex" now
    correctly installs to "codex" instead of creating nested "skills/codex" path.
  • refactor(skill): remove skillsPath configuration (#310)
    Remove the skillsPath field from SkillRepo and Skill structs since
    recursive scanning now automatically discovers skills in all directories.
    Simplify the UI by removing the path input field.
  • feat(skill): implement recursive scanning for skill repositories (#309)
    Add recursive directory scanning to discover SKILL.md files in nested
    directories. When a SKILL.md is found, treat sibling directories as
    functional folders rather than separate skills.
  • Refactor/storage (#277)
    * feat(components): add reusable full-screen panel components
    
    Add new full-screen panel components to support the UI refactoring:
    
    - FullScreenPanel: Reusable full-screen layout component with header,
      content area, and optional footer. Provides consistent layout for
      settings, prompts, and other full-screen views.
    
    - PromptFormPanel: Dedicated panel for creating and editing prompts
      with markdown preview support. Features real-time validation and
      integrated save/cancel actions.
    
    - AgentsPanel: Panel component for managing agent configurations.
      Provides a consistent interface for agent CRUD operations.
    
    - RepoManagerPanel: Full-featured repository manager panel for Skills.
      Supports repository listing, addition, deletion, and configuration
      management with integrated validation.
    
    These components establish the foundation for the upcoming settings
    page migration from dialog-based to full-screen layout.
    
    * refactor(settings): migrate from dialog to full-screen page layout
    
    Complete migration of settings from modal dialog to dedicated full-screen
    page, improving UX and providing more space for configuration options.
    
    Changes:
    - Remove SettingsDialog component (legacy modal-based interface)
    - Add SettingsPage component with full-screen layout using FullScreenPanel
    - Refactor App.tsx routing to support dedicated settings page
      * Add settings route handler
      * Update navigation logic from dialog-based to page-based
      * Integrate with existing app switcher and provider management
    - Update ImportExportSection to work with new page layout
      * Improve spacing and layout for better readability
      * Enhanced error handling and user feedback
      * Better integration with page-level actions
    - Enhance useSettings hook to support page-based workflow
      * Add navigation state management
      * Improve settings persistence logic
      * Better error boundary handling
    
    Benefits:
    - More intuitive navigation with dedicated settings page
    - Better use of screen space for complex configurations
    - Improved accessibility with clearer visual hierarchy
    - Consistent with modern desktop application patterns
    - Easier to extend with new settings sections
    
    This change is part of the larger UI refactoring initiative to modernize
    the application interface and improve user experience.
    
    * refactor(forms): simplify and modernize form components
    
    Comprehensive refactoring of form components to reduce complexity,
    improve maintainability, and enhance user experience.
    
    Provider Forms:
    - CodexCommonConfigModal & CodexConfigSections
      * Simplified state management with reduced boilerplate
      * Improved field validation and error handling
      * Better layout with consistent spacing
      * Enhanced model selection with visual indicators
    - GeminiCommonConfigModal & GeminiConfigSections
      * Streamlined authentication flow (OAuth vs API Key)
      * Cleaner form layout with better grouping
      * Improved validation feedback
      * Better integration with parent components
    - CommonConfigEditor
      * Reduced from 178 to 68 lines (-62% complexity)
      * Extracted reusable form patterns
      * Improved JSON editing with syntax validation
      * Better error messages and recovery options
    - EndpointSpeedTest
      * Complete rewrite for better UX
      * Real-time testing progress indicators
      * Enhanced error handling with retry logic
      * Visual feedback for test results (color-coded latency)
    
    MCP & Prompts:
    - McpFormModal
      * Simplified from 581 to ~360 lines
      * Better stdio/http server type handling
      * Improved form validation
      * Enhanced multi-app selection (Claude/Codex/Gemini)
    - PromptPanel
      * Cleaner integration with PromptFormPanel
      * Improved list/grid view switching
      * Better state management for editing workflows
      * Enhanced delete confirmation with safety checks
    
    Code Quality Improvements:
    - Reduced total lines by ~251 lines (-24% code reduction)
    - Eliminated duplicate validation logic
    - Improved TypeScript type safety
    - Better component composition and separation of concerns
    - Enhanced accessibility with proper ARIA labels
    
    These changes make forms more intuitive, responsive, and easier to
    maintain while reducing bundle size and improving runtime performance.
    
    * style(ui): modernize component layouts and visual design
    
    Update UI components with improved layouts, visual hierarchy, and
    modern design patterns for better user experience.
    
    Navigation & Brand Components:
    - AppSwitcher
      * Enhanced visual design with better spacing
      * Improved active state indicators
      * Smoother transitions and hover effects
      * Better mobile responsiveness
    - BrandIcons
      * Optimized icon rendering performance
      * Added support for more provider icons
      * Improved SVG handling and fallbacks
      * Better scaling across different screen sizes
    
    Editor Components:
    - JsonEditor
      * Enhanced syntax highlighting
      * Better error visualization
      * Improved code formatting options
      * Added line numbers and code folding support
    - UsageScriptModal
      * Complete layout overhaul (1239 lines refactored)
      * Better script editor integration
      * Improved template selection UI
      * Enhanced preview and testing panels
      * Better error feedback and validation
    
    Provider Components:
    - ProviderCard
      * Redesigned card layout with modern aesthetics
      * Better information density and readability
      * Improved action buttons placement
      * Enhanced status indicators (active/inactive)
    - ProviderList
      * Better grid/list view layouts
      * Improved drag-and-drop visual feedback
      * Enhanced sorting indicators
    - ProviderActions
      * Streamlined action menu
      * Better icon consistency
      * Improved tooltips and accessibility
    
    Usage & Footer:
    - UsageFooter
      * Redesigned footer layout
      * Better quota visualization
      * Improved refresh controls
      * Enhanced error states
    
    Design System Updates:
    - dialog.tsx (shadcn/ui component)
      * Updated to latest design tokens
      * Better overlay animations
      * Improved focus management
    - index.css
      * Added 65 lines of global utility classes
      * New animation keyframes
      * Enhanced color variables for dark mode
      * Improved typography scale
    - tailwind.config.js
      * Extended theme with new design tokens
      * Added custom animations and transitions
      * New spacing and sizing utilities
      * Enhanced color palette
    
    Visual Improvements:
    - Consistent border radius across components
    - Unified shadow system for depth perception
    - Better color contrast for accessibility (WCAG AA)
    - Smoother animations and transitions
    - Improved dark mode support
    
    These changes create a more polished, modern interface while
    maintaining consistency with the application's design language.
    
    * chore: update dialogs, i18n and improve component integration
    
    Various functional updates and improvements across provider dialogs,
    MCP panel, skills page, and internationalization.
    
    Provider Dialogs:
    - AddProviderDialog
      * Simplified form state management
      * Improved preset selection workflow
      * Better validation error messages
      * Enhanced template variable handling
    - EditProviderDialog
      * Streamlined edit flow with better state synchronization
      * Improved handling of live config backfilling
      * Better error recovery for failed updates
      * Enhanced integration with parent components
    
    MCP & Skills:
    - UnifiedMcpPanel
      * Reduced complexity from 140+ to ~95 lines
      * Improved multi-app server management
      * Better server type detection (stdio/http)
      * Enhanced server status indicators
      * Cleaner integration with MCP form modal
    - SkillsPage
      * Simplified navigation and state management
      * Better integration with RepoManagerPanel
      * Improved error handling for repository operations
      * Enhanced loading states
    - SkillCard
      * Minor layout adjustments
      * Better action button placement
    
    Environment & Configuration:
    - EnvWarningBanner
      * Improved conflict detection messages
      * Better visual hierarchy for warnings
      * Enhanced dismissal behavior
    - tauri.conf.json
      * Updated build configuration
      * Added new window management options
    
    Internationalization:
    - en.json & zh.json
      * Added 17 new translation keys for new features
      * Updated existing keys for better clarity
      * Added translations for new settings page
      * Improved consistency across UI text
    
    Code Cleanup:
    - mutations.ts
      * Removed 14 lines of unused mutation definitions
      * Cleaned up deprecated query invalidation logic
      * Better type safety for mutation parameters
    
    Overall Impact:
    - Reduced total lines by 51 (-10% in affected files)
    - Improved component integration and data flow
    - Better error handling and user feedback
    - Enhanced i18n coverage for new features
    
    These changes improve the overall polish and integration of various
    components while removing technical debt and unused code.
    
    * feat(backend): add auto-launch functionality
    
    Implement system auto-launch feature to allow CC-Switch to start
    automatically on system boot, improving user convenience.
    
    Backend Implementation:
    - auto_launch.rs: New module for auto-launch management
      * Cross-platform support using auto-launch crate
      * Enable/disable auto-launch with system integration
      * Proper error handling for permission issues
      * Platform-specific implementations (macOS/Windows/Linux)
    
    Command Layer:
    - Add get_auto_launch command to check current status
    - Add set_auto_launch command to toggle auto-start
    - Integrate commands with settings API
    
    Settings Integration:
    - Extend Settings struct with auto_launch field
    - Persist auto-launch preference in settings store
    - Automatic state synchronization on app startup
    
    Dependencies:
    - Add auto-launch ^0.5.0 to Cargo.toml
    - Update Cargo.lock with new dependency tree
    
    Technical Details:
    - Uses platform-specific auto-launch mechanisms:
      * macOS: Login Items via LaunchServices
      * Windows: Registry Run key
      * Linux: XDG autostart desktop files
    - Handles edge cases like permission denials gracefully
    - Maintains settings consistency across app restarts
    
    This feature enables users to have CC-Switch readily available
    after system boot without manual intervention, particularly useful
    for users who frequently switch between API providers.
    
    * refactor(settings): enhance settings page with auto-launch integration
    
    Complete refactoring of settings page architecture to integrate auto-launch
    feature and improve overall settings management workflow.
    
    SettingsPage Component:
    - Integrate auto-launch toggle with WindowSettings section
    - Improve layout and spacing for better visual hierarchy
    - Enhanced error handling for settings operations
    - Better loading states during settings updates
    - Improved accessibility with proper ARIA labels
    
    WindowSettings Component:
    - Add auto-launch switch with real-time status
    - Integrate with backend auto-launch commands
    - Proper error feedback for permission issues
    - Visual indicators for current auto-launch state
    - Tooltip guidance for auto-launch functionality
    
    useSettings Hook (Major Refactoring):
    - Complete rewrite reducing complexity by ~30%
    - Better separation of concerns with dedicated handlers
    - Improved state management using React Query
    - Enhanced auto-launch state synchronization
      * Fetch auto-launch status on mount
      * Real-time updates on toggle
      * Proper error recovery
    - Optimized re-renders with better memoization
    - Cleaner API for component integration
    - Better TypeScript type safety
    
    Settings API:
    - Add getAutoLaunch() method
    - Add setAutoLaunch(enabled: boolean) method
    - Type-safe Tauri command invocations
    - Proper error propagation to UI layer
    
    Architecture Improvements:
    - Reduced hook complexity from 197 to ~140 effective lines
    - Eliminated redundant state management logic
    - Better error boundaries and fallback handling
    - Improved testability with clearer separation
    
    User Experience Enhancements:
    - Instant visual feedback on auto-launch toggle
    - Clear error messages for permission issues
    - Loading indicators during async operations
    - Consistent behavior across all platforms
    
    This refactoring provides a solid foundation for future settings
    additions while maintaining code quality and user experience.
    
    * refactor(ui): optimize FullScreenPanel, Dialog and App routing
    
    Comprehensive refactoring of core UI components to improve code quality,
    maintainability, and user experience.
    
    FullScreenPanel Component:
    - Enhanced props interface with better TypeScript types
    - Improved layout flexibility with customizable padding
    - Better header/footer composition patterns
    - Enhanced scroll behavior for long content
    - Added support for custom actions in header
    - Improved responsive design for different screen sizes
    - Better integration with parent components
    - Cleaner prop drilling with context where appropriate
    
    Dialog Component (shadcn/ui):
    - Updated to latest component patterns
    - Improved animation timing and easing
    - Better focus trap management
    - Enhanced overlay styling with backdrop blur
    - Improved accessibility (ARIA labels, keyboard navigation)
    - Better close button positioning and styling
    - Enhanced mobile responsiveness
    - Cleaner composition with DialogHeader/Footer
    
    App Component Routing:
    - Refactored routing logic for better clarity
    - Improved state management for navigation
    - Better integration with settings page
    - Enhanced error boundary handling
    - Cleaner separation of layout concerns
    - Improved provider context propagation
    - Better handling of deep links
    - Optimized re-renders with React.memo where appropriate
    
    Code Quality Improvements:
    - Reduced prop drilling with better component composition
    - Improved TypeScript type safety
    - Better separation of concerns
    - Enhanced code readability with clearer naming
    - Eliminated redundant logic
    
    Performance Optimizations:
    - Reduced unnecessary re-renders
    - Better memoization of callbacks
    - Optimized component tree structure
    - Improved event handler efficiency
    
    User Experience:
    - Smoother transitions and animations
    - Better visual feedback for interactions
    - Improved loading states
    - More consistent behavior across features
    
    These changes create a more maintainable and performant foundation
    for the application's UI layer while improving the overall user
    experience with smoother interactions and better visual polish.
    
    * refactor(features): modernize Skills, Prompts and Agents components
    
    Major refactoring of feature components to improve code quality,
    user experience, and maintainability.
    
    SkillsPage Component (299 lines refactored):
    - Complete rewrite of layout and state management
    - Better integration with RepoManagerPanel
    - Improved navigation between list and detail views
    - Enhanced error handling with user-friendly messages
    - Better loading states with skeleton screens
    - Optimized re-renders with proper memoization
    - Cleaner separation between list and form views
    - Improved skill card interactions
    - Better responsive design for different screen sizes
    
    RepoManagerPanel Component (370 lines refactored):
    - Streamlined repository management workflow
    - Enhanced form validation with real-time feedback
    - Improved repository list with better visual hierarchy
    - Better handling of git operations (clone, pull, delete)
    - Enhanced error recovery for network issues
    - Cleaner state management reducing complexity
    - Improved TypeScript type safety
    - Better integration with Skills backend API
    - Enhanced loading indicators for async operations
    
    PromptPanel Component (249 lines refactored):
    - Modernized layout with FullScreenPanel integration
    - Better separation between list and edit modes
    - Improved prompt card design with better readability
    - Enhanced search and filter functionality
    - Cleaner state management for editing workflow
    - Better integration with PromptFormPanel
    - Improved delete confirmation with safety checks
    - Enhanced keyboard navigation support
    
    PromptFormPanel Component (238 lines refactored):
    - Streamlined form layout and validation
    - Better markdown editor integration
    - Real-time preview with syntax highlighting
    - Improved validation error display
    - Enhanced save/cancel workflow
    - Better handling of large prompt content
    - Cleaner form state management
    - Improved accessibility features
    
    AgentsPanel Component (33 lines modified):
    - Minor layout adjustments for consistency
    - Better integration with FullScreenPanel
    - Improved placeholder states
    - Enhanced error boundaries
    
    Type Definitions (types.ts):
    - Added 10 new type definitions
    - Better type safety for Skills/Prompts/Agents
    - Enhanced interfaces for repository management
    - Improved typing for form validations
    
    Architecture Improvements:
    - Reduced component coupling
    - Better prop interfaces with explicit types
    - Improved error boundaries
    - Enhanced code reusability
    - Better testing surface
    
    User Experience Enhancements:
    - Smoother transitions between views
    - Better visual feedback for actions
    - Improved error messages
    - Enhanced loading states
    - More intuitive navigation flows
    - Better responsive layouts
    
    Code Quality:
    - Net reduction of 29 lines while adding features
    - Improved code organization
    - Better naming conventions
    - Enhanced documentation
    - Cleaner control flow
    
    These changes significantly improve the maintainability and user
    experience of core feature components while establishing consistent
    patterns for future development.
    
    * style(ui): refine component layouts and improve visual consistency
    
    Comprehensive UI polish across multiple components to enhance visual
    design, improve user experience, and maintain consistency.
    
    UsageScriptModal Component (1302 lines refactored):
    - Complete layout overhaul for better usability
    - Improved script editor with syntax highlighting
    - Better template selection interface
    - Enhanced test/preview panels with clearer separation
    - Improved error feedback and validation messages
    - Better modal sizing and responsiveness
    - Cleaner tab navigation between sections
    - Enhanced code formatting and readability
    - Improved loading states for async operations
    - Better integration with parent components
    
    MCP Components:
    - McpFormModal (42 lines):
      * Streamlined form layout
      * Better server type selection (stdio/http)
      * Improved field grouping and labels
      * Enhanced validation feedback
    - UnifiedMcpPanel (14 lines):
      * Minor layout adjustments
      * Better list item spacing
      * Improved server status indicators
      * Enhanced action button placement
    
    Provider Components:
    - ProviderCard (11 lines):
      * Refined card layout and spacing
      * Better visual hierarchy
      * Improved badge placement
      * Enhanced hover effects
    - ProviderList (5 lines):
      * Minor grid layout adjustments
      * Better drag-and-drop visual feedback
    - GeminiConfigSections (4 lines):
      * Field label alignment
      * Improved spacing consistency
    
    Editor & Footer Components:
    - JsonEditor (13 lines):
      * Better editor height management
      * Improved error display
      * Enhanced syntax highlighting
    - UsageFooter (10 lines):
      * Refined footer layout
      * Better quota display
      * Improved refresh button placement
    
    Settings & Environment:
    - ImportExportSection (24 lines):
      * Better button layout
      * Improved action grouping
      * Enhanced visual feedback
    - EnvWarningBanner (4 lines):
      * Refined alert styling
      * Better dismiss button placement
    
    Global Styles (index.css):
    - Added 11 lines of utility classes
    - Improved transition timing
    - Better focus indicators
    - Enhanced scrollbar styling
    - Refined spacing utilities
    
    Design Improvements:
    - Consistent spacing using design tokens
    - Unified color palette application
    - Better typography hierarchy
    - Improved shadow system for depth
    - Enhanced interactive states (hover, active, focus)
    - Better border radius consistency
    - Refined animation timings
    
    Accessibility:
    - Improved focus indicators
    - Better keyboard navigation
    - Enhanced screen reader support
    - Improved color contrast ratios
    
    Code Quality:
    - Net increase of 68 lines due to UsageScriptModal improvements
    - Better component organization
    - Cleaner style application
    - Reduced style duplication
    
    These visual refinements create a more polished and professional
    interface while maintaining excellent usability and accessibility
    standards across all components.
    
    * chore(i18n): add auto-launch translation keys
    
    Add translation keys for new auto-launch feature to support
    multi-language interface.
    
    Translation Keys Added:
    - autoLaunch: Label for auto-launch toggle
    - autoLaunchDescription: Explanation of auto-launch functionality
    - autoLaunchEnabled: Status message when enabled
    
    Languages Updated:
    - Chinese (zh.json): 简体中文翻译
    - English (en.json): English translations
    
    The translations maintain consistency with existing terminology
    and provide clear, user-friendly descriptions of the auto-launch
    feature across both supported languages.
    
    * test: update test suites to match component refactoring
    
    Comprehensive test updates to align with recent component refactoring
    and new auto-launch functionality.
    
    Component Tests:
    - AddProviderDialog.test.tsx (10 lines):
      * Updated test cases for new dialog behavior
      * Enhanced mock data for preset selection
      * Improved assertions for validation
    
    - ImportExportSection.test.tsx (16 lines):
      * Updated for new settings page integration
      * Enhanced test coverage for error scenarios
      * Better mock state management
    
    - McpFormModal.test.tsx (60 lines):
      * Extensive updates for form refactoring
      * New test cases for multi-app selection
      * Enhanced validation testing
      * Better coverage of stdio/http server types
    
    - ProviderList.test.tsx (11 lines):
      * Updated for new card layout
      * Enhanced drag-and-drop testing
    
    - SettingsDialog.test.tsx (96 lines):
      * Major updates for SettingsPage migration
      * New test cases for auto-launch functionality
      * Enhanced integration test coverage
      * Better async operation testing
    
    Hook Tests:
    - useDirectorySettings.test.tsx (32 lines):
      * Updated for refactored hook logic
      * Enhanced test coverage for edge cases
    
    - useDragSort.test.tsx (36 lines):
      * Simplified test cases
      * Better mock implementation
      * Improved assertions
    
    - useImportExport tests (16 lines total):
      * Updated for new error handling
      * Enhanced test coverage
    
    - useMcpValidation.test.tsx (23 lines):
      * Updated validation test cases
      * Better coverage of error scenarios
    
    - useProviderActions.test.tsx (48 lines):
      * Extensive updates for hook refactoring
      * New test cases for provider operations
      * Enhanced mock data
    
    - useSettings.test.tsx (12 lines):
      * New test cases for auto-launch
      * Enhanced settings state testing
      * Better async operation coverage
    
    Integration Tests:
    - App.test.tsx (41 lines):
      * Updated for new routing logic
      * Enhanced navigation testing
      * Better component integration coverage
    
    - SettingsDialog.test.tsx (88 lines):
      * Complete rewrite for SettingsPage
      * New integration test scenarios
      * Enhanced user workflow testing
    
    Mock Infrastructure:
    - handlers.ts (117 lines):
      * Major updates for MSW handlers
      * New handlers for auto-launch commands
      * Enhanced error simulation
      * Better request/response mocking
    
    - state.ts (37 lines):
      * Updated mock state structure
      * New state for auto-launch
      * Enhanced state reset functionality
    
    - tauriMocks.ts (10 lines):
      * Updated mock implementations
      * Better type safety
    
    - server.ts & testQueryClient.ts:
      * Minor cleanup (2 lines removed)
    
    Test Infrastructure Improvements:
    - Better test isolation
    - Enhanced mock data consistency
    - Improved async operation testing
    - Better error scenario coverage
    - Enhanced integration test patterns
    
    Coverage Improvements:
    - Net increase of 195 lines of test code
    - Better coverage of edge cases
    - Enhanced error path testing
    - Improved integration test scenarios
    - Better mock infrastructure
    
    All tests now pass with the refactored components while maintaining
    comprehensive coverage of functionality and edge cases.
    
    * style(ui): improve window dragging and provider card styles
    
    * fix(skills): resolve third-party skills installation failure
    
    - Add skills_path field to Skill struct
    - Use skills_path to construct correct source path during installation
    - Fix installation for repos with custom skill subdirectories
    
    * feat(icon): add icon type system and intelligent inference logic
    
    Introduce a new icon system for provider customization:
    
    - Add IconMetadata and IconPreset interfaces in src/types/icon.ts
      - Define structure for icon name, display name, category, keywords
      - Support default color configuration per icon
    
    - Implement smart icon inference in src/config/iconInference.ts
      - Create iconMappings for 25+ AI providers and cloud platforms
      - Include Claude, DeepSeek, Qwen, Kimi, Google, AWS, Azure, etc.
      - inferIconForPreset(): match provider name to icon config
      - addIconsToPresets(): batch apply icons to preset arrays
      - Support fuzzy matching for flexible name recognition
    
    This foundation enables automatic icon assignment when users add
    providers, improving visual identification in the provider list.
    
    * feat(ui): add icon picker, color picker and provider icon components
    
    Implement comprehensive icon selection system for provider customization:
    
    ## New Components
    
    ### ProviderIcon (src/components/ProviderIcon.tsx)
    - Render SVG icons by name with automatic fallback
    - Display provider initials when icon not found
    - Support custom sizing via size prop
    - Use dangerouslySetInnerHTML for inline SVG rendering
    
    ### IconPicker (src/components/IconPicker.tsx)
    - Grid-based icon selection with visual preview
    - Real-time search filtering by name and keywords
    - Integration with icon metadata for display names
    - Responsive grid layout (6-10 columns based on screen)
    
    ### ColorPicker (src/components/ColorPicker.tsx)
    - 12 preset colors for quick selection
    - Native color input for custom color picking
    - Hex input field for precise color entry
    - Visual feedback for selected color state
    
    ## Icon Assets (src/icons/extracted/)
    - 38 high-quality SVG icons for AI providers and platforms
    - Includes: OpenAI, Claude, DeepSeek, Qwen, Kimi, Gemini, etc.
    - Cloud platforms: AWS, Azure, Google Cloud, Cloudflare
    - Auto-generated index.ts with getIcon/hasIcon helpers
    - Metadata system with searchable keywords per icon
    
    ## Build Scripts
    - scripts/extract-icons.js: Extract icons from simple-icons
    - scripts/generate-icon-index.js: Generate TypeScript index file
    
    * feat(provider): integrate icon system into provider UI components
    
    Add icon customization support to provider management interface:
    
    ## Type System Updates
    
    ### Provider Interface (src/types.ts)
    - Add optional `icon` field for icon name (e.g., "openai", "anthropic")
    - Add optional `iconColor` field for hex color (e.g., "#00A67E")
    
    ### Form Schema (src/lib/schemas/provider.ts)
    - Extend providerSchema with icon and iconColor optional fields
    - Maintain backward compatibility with existing providers
    
    ## UI Components
    
    ### ProviderCard (src/components/providers/ProviderCard.tsx)
    - Display ProviderIcon alongside provider name
    - Add icon container with hover animation effect
    - Adjust layout spacing for icon placement
    - Update translate offsets for action buttons
    
    ### BasicFormFields (src/components/providers/forms/BasicFormFields.tsx)
    - Add icon preview section showing current selection
    - Implement fullscreen icon picker dialog
    - Auto-apply default color from icon metadata on selection
    - Display provider name and icon status in preview
    
    ### AddProviderDialog & EditProviderDialog
    - Pass icon fields through form submission
    - Preserve icon data during provider updates
    
    This enables users to visually distinguish providers in the list
    with custom icons, improving UX for multi-provider setups.
    
    * feat(backend): add icon fields to Provider model and default mappings
    
    Extend Rust backend to support provider icon customization:
    
    ## Provider Model (src-tauri/src/provider.rs)
    - Add `icon: Option<String>` field for icon name
    - Add `icon_color: Option<String>` field for hex color
    - Use serde rename `iconColor` for frontend compatibility
    - Apply skip_serializing_if for clean JSON output
    - Update Provider::new() to initialize icon fields as None
    
    ## Provider Defaults (src-tauri/src/provider_defaults.rs) [NEW]
    - Define ProviderIcon struct with name and color fields
    - Create DEFAULT_PROVIDER_ICONS static HashMap with 23 providers:
      - AI providers: OpenAI, Anthropic, Claude, Google, Gemini,
        DeepSeek, Kimi, Moonshot, Zhipu, MiniMax, Baidu, Alibaba,
        Tencent, Meta, Microsoft, Cohere, Perplexity, Mistral, HuggingFace
      - Cloud platforms: AWS, Azure, Huawei, Cloudflare
    - Implement infer_provider_icon() with exact and fuzzy matching
    - Add unit tests for matching logic (exact, fuzzy, case-insensitive)
    
    ## Deep Link Support (src-tauri/src/deeplink.rs)
    - Initialize icon fields when creating Provider from deep link import
    
    ## Module Registration (src-tauri/src/lib.rs)
    - Register provider_defaults module
    
    ## Dependencies (Cargo.toml)
    - Add once_cell for lazy static initialization
    
    This backend support enables icon persistence and future features
    like auto-icon inference during provider creation.
    
    * chore(i18n): add translations for icon picker and provider icon
    
    Add Chinese and English translations for icon customization feature:
    
    ## Icon Picker (iconPicker)
    - search: "Search Icons" / "搜索图标"
    - searchPlaceholder: "Enter icon name..." / "输入图标名称..."
    - noResults: "No matching icons found" / "未找到匹配的图标"
    - category.aiProvider: "AI Providers" / "AI 服务商"
    - category.cloud: "Cloud Platforms" / "云平台"
    - category.tool: "Dev Tools" / "开发工具"
    - category.other: "Other" / "其他"
    
    ## Provider Icon (providerIcon)
    - label: "Icon" / "图标"
    - colorLabel: "Icon Color" / "图标颜色"
    - selectIcon: "Select Icon" / "选择图标"
    - preview: "Preview" / "预览"
    
    These translations support the new icon picker UI components
    and provider form icon selection interface.
    
    * style(ui): refine header layout and AppSwitcher color scheme
    
    Improve application header and component styling:
    
    ## App.tsx Header Layout
    - Wrap title and settings button in flex container with gap
    - Add vertical divider between title and settings icon
    - Apply responsive padding (pl-1 sm:pl-2)
    - Reformat JSX for better readability (prettier)
    - Fix string template formatting in className
    
    ## AppSwitcher Color Update
    - Change Claude tab gradient from orange/amber to teal/emerald/green
    - Update shadow color to match new teal theme
    - Change hover color from orange-500 to teal-500
    - Align visual style with emerald/teal brand colors
    
    ## Dialog Component Cleanup
    - Remove default close button (X icon) from DialogContent
    - Allow parent components to control close button placement
    - Remove unused lucide-react X import
    
    ## index.css Header Border
    - Add top border (2px solid) to glass-header
    - Apply to both light and dark mode variants
    - Improve visual separation of header area
    
    These changes enhance visual consistency and modernize the UI
    appearance with a cohesive teal color scheme.
    
    * chore(deps): add icon library and update preset configurations
    
    Add dependencies and utility scripts for icon system:
    
    ## Dependencies (package.json)
    - Add @lobehub/icons-static-svg@1.73.0
      - High-quality SVG icon library for AI providers
      - Source for extracted icons in src/icons/extracted/
    - Update pnpm-lock.yaml accordingly
    
    ## Provider Preset Updates (src/config/claudeProviderPresets.ts)
    - Add optional `icon` and `iconColor` fields to ProviderPreset interface
    - Apply to Anthropic Official preset as example:
      - icon: "anthropic"
      - iconColor: "#D4915D"
    - Future presets can include default icon configurations
    
    ## Utility Script (scripts/filter-icons.js) [NEW]
    - Helper script for filtering and managing icon assets
    - Supports icon discovery and validation workflow
    - Complements extract-icons.js and generate-icon-index.js
    
    This completes the icon system infrastructure, providing all
    necessary tools and dependencies for icon customization.
    
    * refactor(ui): simplify AppSwitcher styles and migrate to local SVG icons
    
    - Replace complex gradient animations with clean, minimal tab design
    - Migrate from @lobehub/icons CDN to local SVG assets for better reliability
    - Fix clippy warning in error.rs (use inline format args)
    - Improve code formatting in skill service and commands
    - Reduce CSS complexity in AppSwitcher component (removed blur effects and gradients)
    - Update BrandIcons to use imported local SVG files instead of dynamic image loading
    
    This improves performance, reduces external dependencies, and provides a cleaner UI experience.
    
    * style(ui): hide scrollbars across all browsers and optimize form layout
    
    - Hide scrollbars globally with cross-browser support:
      * WebKit browsers (Chrome, Safari, Edge): ::-webkit-scrollbar { display: none }
      * Firefox: scrollbar-width: none
      * IE 10+: -ms-overflow-style: none
    - Remove custom scrollbar styling (width, colors, hover states)
    - Reorganize BasicFormFields layout:
      * Move icon picker to top center as a clickable preview (80x80)
      * Change name and notes fields to horizontal grid layout (md:grid-cols-2)
      * Remove icon preview section from bottom
      * Improve visual hierarchy and space efficiency
    
    This provides a cleaner, more modern UI with hidden scrollbars while maintaining full scroll functionality.
    
    * refactor(layout): standardize max-width to 60rem and optimize padding structure
    
    - Unify container max-width across components:
      * Replace max-w-4xl with max-w-[60rem] in App.tsx provider list
      * Replace max-w-5xl with max-w-[60rem] in PromptPanel
      * Move padding from header element to inner container for consistent spacing
    - Optimize padding hierarchy:
      * Remove px-6 from header element, add to inner header container
      * Remove px-6 from main element, keep it only in provider list container
      * Consolidate PromptPanel padding: move px-6 from nested divs to outer container
      * Remove redundant pl-1 sm:pl-2 from logo/title area
    - Benefits:
      * Consistent 60rem max-width provides better readability on wide screens
      * Simplified padding structure reduces CSS complexity
      * Cleaner responsive behavior with unified spacing rules
    
    This creates a more maintainable and visually consistent layout system.
    
    * refactor(ui): unify layout system with 60rem max-width and consistent spacing
    
    - Standardize container max-width across all panels:
      * Replace max-w-4xl and max-w-5xl with unified max-w-[60rem]
      * Apply to SettingsPage, UnifiedMcpPanel, SkillsPage, and FullScreenPanel
      * Ensures consistent reading width and visual balance on wide screens
    
    - Optimize padding hierarchy and structure:
      * Move px-6 from parent elements to content containers
      * FullScreenPanel: Add max-w-[60rem] wrapper to header, content, and footer
      * Add border separators (border-t/border-b) to header and footer sections
      * Consolidate nested padding in MCP, Skills, and Prompts panels
      * Remove redundant padding layers for cleaner CSS
    
    - Simplify component styling:
      * MCP list items: Replace card-based layout with modern group-based design
      * Remove unnecessary wrapper divs and flatten DOM structure
      * Update card hover effects with smooth transitions
      * Simplify icon selection dialog (remove description text in BasicFormFields)
    
    - Benefits:
      * Consistent 60rem max-width provides optimal readability
      * Unified spacing rules reduce maintenance complexity
      * Cleaner component hierarchy improves performance
      * Better responsive behavior across different screen sizes
      * More cohesive visual design language throughout the app
    
    This creates a maintainable, scalable design system foundation.
    
    * feat(deeplink): add Claude model fields support and enhance import dialog
    
    - Add Claude-specific model field support in deeplink import:
      * Support model (ANTHROPIC_MODEL) - general default model
      * Support haikuModel (ANTHROPIC_DEFAULT_HAIKU_MODEL)
      * Support sonnetModel (ANTHROPIC_DEFAULT_SONNET_MODEL)
      * Support opusModel (ANTHROPIC_DEFAULT_OPUS_MODEL)
      * Backend: Update DeepLinkImportRequest struct to include optional model fields
      * Frontend: Add TypeScript type definitions for new model parameters
    
    - Enhance deeplink demo page (deplink.html):
      * Add 5 new Claude configuration examples showcasing different model setups
      * Add parameter documentation with required/optional tags
      * Include basic config (no models), single model, complete 4-model, partial models, and third-party provider examples
      * Improve visual design with param-list component and color-coded badges
      * Add detailed descriptions for each configuration scenario
    
    - Redesign DeepLinkImportDialog layout:
      * Switch from 3-column to compact 2-column grid layout
      * Reduce dialog width from 500px to 650px for better content display
      * Add dedicated section for Claude model configurations with blue highlight box
      * Use uppercase labels and smaller text for more information density
      * Add truncation and tooltips for long URLs
      * Improve visual hierarchy with spacing and grouping
      * Increase z-index to 9999 to ensure dialog appears on top
    
    - Minor UI refinements:
      * Update App.tsx layout adjustments
      * Optimize McpFormModal styling
      * Refine ProviderCard and BasicFormFields components
    
    This enables users to import Claude providers with precise model configurations via deeplink.
    
    * feat(deeplink): add config file support for deeplink import
    
    Support importing provider configuration from embedded or remote config files.
    - Add base64 dependency for config content encoding
    - Support config, configFormat, and configUrl parameters
    - Make homepage/endpoint/apiKey optional when config is provided
    - Add config parsing and merging logic
    
    * feat(deeplink): enhance dialog with config file preview
    
    Add config file parsing and preview in deep link import dialog.
    - Support Base64 encoded config display
    - Add config file source indicator (embedded/remote)
    - Parse and display config fields by app type (Claude/Codex/Gemini)
    - Mask sensitive values in config preview
    - Improve dialog layout and content organization
    
    * refactor(ui): unify dialog styles and improve layout consistency
    
    Standardize dialog and panel components across the application.
    - Update dialog background to use semantic color tokens
    - Adjust FullScreenPanel max-width to 56rem for better alignment
    - Add drag region and prevent body scroll in full-screen panels
    - Optimize button sizes and spacing in panel headers
    - Apply consistent styling to all dialog-based components
    
    * i18n: add deeplink config preview translations
    
    Add missing translation keys for config file preview feature.
    - Add configSource, configEmbedded, configRemote labels
    - Add configDetails and configUrl display strings
    - Support both Chinese and English versions
    
    * feat(deeplink): enhance test page with v3.8 config file examples
    
    Improve deeplink test page with comprehensive config file import examples.
    - Add version badge for v3.8 features
    - Add copy-to-clipboard functionality for all deep links
    - Add Claude config file import examples (embedded/remote)
    - Add Codex config file import examples (auth.json + config.toml)
    - Add Gemini config file import examples (.env format)
    - Add config generator tool for easy testing
    - Update UI with better styling and layout
    
    * feat(settings): add autoSaveSettings for lightweight auto-save
    
    Add optimized auto-save function for General tab settings.
    - Add autoSaveSettings method for non-destructive auto-save
    - Only trigger system APIs when values actually change
    - Avoid unnecessary auto-launch and plugin config updates
    - Update tests to cover new functionality
    
    * refactor(settings): simplify settings page layout and auto-save
    
    Reorganize settings page structure and integrate autoSaveSettings.
    - Move save button inline within Advanced tab content
    - Remove sticky footer for cleaner layout
    - Use autoSaveSettings for General tab settings
    - Simplify dialog close behavior
    - Refactor ImportExportSection layout
    
    * style(providers): optimize card layout and action button sizes
    
    Improve provider card visual density and action buttons.
    - Reduce icon button sizes for compact layout
    - Adjust drag handle and icon sizes
    - Tighten spacing between action buttons
    - Update hover translate values for better alignment
    
    * refactor(mcp): improve form modal layout with adaptive height editor
    
    Restructure MCP form modal for better space utilization.
    - Split form into upper form fields and lower JSON editor sections
    - Add full-height mode support for JsonEditor component
    - Use flex layout for editor to fill available space
    - Update PromptFormPanel to use full-height editor
    - Fix locale text formatting
    
    * style: unify list item styles with semantic colors
    
    Apply consistent styling to list items across components.
    - Replace hardcoded colors with semantic tokens in MCP and Prompt list items
    - Add glass effect container to EndpointSpeedTest panel
    - Format code for better readability
    
    * style: format template literals for better readability
    
    Improve code formatting for conditional className expressions.
    - Break long template literals across multiple lines
    - Maintain consistent formatting in MCP form and endpoint test components
    
    * feat(deeplink): add config merge command for preview
    
    Expose config merging functionality to frontend for preview.
    - Add merge_deeplink_config Tauri command
    - Make parse_and_merge_config public for reuse
    - Enable frontend to display complete config before import
    
    * feat(deeplink): merge and display config in import dialog
    
    Enhance import dialog to fetch and display complete config.
    - Call mergeDeeplinkConfig API when config is present
    - Add UTF-8 base64 decoding support for config content
    - Add scrollable content area with custom scrollbar styling
    - Show complete configuration before user confirms import
    
    * i18n: add config merge error message
    
    Add translation for config file merge error handling.
    
    * style(deeplink): format test page HTML for better readability
    
    Improve HTML formatting in deeplink test page.
    - Format multiline attributes for better readability
    - Add consistent indentation to nested elements
    - Break long lines in buttons and links
    
    * refactor(usage): improve footer layout with two-row design
    
    Reorganize usage footer for better readability and space efficiency.
    - Split into two rows: update time + refresh button (row 1), usage stats (row 2)
    - Move refresh button to top row next to update time
    - Remove card background for cleaner look
    - Add fallback text when never updated
    - Improve spacing and alignment
    - Format template literals for consistency
    
    * feat(database): add SQLite database infrastructure
    
    - Add rusqlite dependency (v0.32.1) and r2d2 connection pooling
    - Implement Database module with CRUD operations for providers, MCP servers, prompts, and skills
    - Add schema initialization with proper indexes
    - Include data migration utilities from JSON config to SQLite
    - Support timestamp tracking (created_at, updated_at)
    
    * refactor(core): integrate SQLite database into application core
    
    - Initialize database on app startup with migration from JSON config
    - Update AppState to include Database instance alongside MultiAppConfig
    - Simplify store module by removing unused session management code
    - Add database initialization to app setup flow
    - Support both database and legacy config during transition
    
    * refactor(services): migrate service layer to use SQLite database
    
    - Refactor ProviderService to use database queries instead of in-memory config
    - Update McpService to fetch and store MCP servers in database
    - Migrate PromptService to database-backed storage
    - Simplify ConfigService by removing complex transaction logic
    - Remove 648 lines of redundant code through database abstraction
    
    * refactor(commands): update command layer to use database API
    
    - Update config commands to query database for providers and settings
    - Modify provider commands to pass database handle to services
    - Update MCP commands to use database-backed operations
    - Refactor prompt and skill commands to leverage database storage
    - Simplify import/export commands with database integration
    
    * refactor(backend): update supporting modules for database compatibility
    
    - Add DatabaseError variant to AppError enum
    - Update provider module to support database-backed operations
    - Modify codex_config to work with new database structure
    - Ensure error handling covers database operations
    
    * refactor(frontend): update UI components for database migration
    
    - Update UsageFooter component to handle new data structure
    - Modify SkillsPage to work with database-backed skills management
    - Ensure frontend compatibility with refactored backend
    
    * feat(skills): add search functionality to Skills page
    
    - Add search input with Search icon in SkillsPage component
    - Implement useMemo-based filtering by skill name, description, and directory
    - Display search results count when filtering is active
    - Show "no results" message when no skills match the search query
    - Add i18n translations for search UI (zh/en)
    - Maintain responsive layout and consistent styling with existing UI
    
    * refactor(backend): replace unsafe unwrap calls with proper error handling
    
    - Add to_json_string helper for safe JSON serialization
    - Add lock_conn macro for safe Mutex locking
    - Replace 41 unwrap() calls with proper error handling:
      - database.rs: JSON serialization and Mutex operations (31 fixes)
      - lib.rs: macOS NSWindow and tray icon handling (3 fixes)
      - services/provider.rs: Claude model normalization (1 fix)
      - services/prompt.rs: timestamp generation (3 fixes)
      - services/skill.rs: directory name extraction (2 fixes)
      - mcp.rs: HashMap initialization and type conversions (5 fixes)
      - app_config.rs: timestamp fallback (1 fix)
    
    This improves application stability and prevents potential panics.
    
    * feat(init): implement automatic data import on first launch
    
    Add comprehensive first-launch data import system:
    
    Database layer:
    - Add is_empty_for_first_import() to detect empty database
    - Add init_default_skill_repos() to initialize 3 default skill repositories
    
    Services layer:
    - Implement McpService::import_from_claude/codex/gemini()
      to import MCP servers from existing config files
    - Implement PromptService::import_from_file_on_first_launch()
      to import prompt files (CLAUDE.md, AGENTS.md, GEMINI.md)
    
    Startup flow (lib.rs):
    - Check if database is empty on startup
    - Import existing configurations if detected:
      1. Initialize default skill repositories
      2. Import provider configurations from live settings
      3. Import MCP servers from config files
      4. Import prompt files
    - All imports are fault-tolerant and logged
    
    This ensures seamless migration from file-based configs to database.
    
    * fix(skills): auto-sync locally installed skills to database
    
    Add automatic synchronization in get_skills command:
    - Detect locally installed skills in ~/.claude/skills/
    - Auto-add to database if not already tracked
    - Ensures existing skills are recognized on first launch
    
    This fixes the issue where user's existing skills were not
    imported into the database on initial application run.
    
    * docs(frontend): add code comments and improve formatting
    
    - Add explanatory comment in EditProviderDialog about config assembly
    - Improve import formatting in SkillsPage for better readability
    
    * feat(deeplink): display all four Claude model fields in import dialog
    
    - Show haiku/sonnet/opus/multiModel fields conditionally for Claude
    - Maintain single model field display for Codex and Gemini
    - Add i18n translations for new model field labels (zh/en)
    
    * feat(backend): add database SQL export/import with backup
    
    - Enable rusqlite backup feature for SQL dump support
    - Implement export_sql to generate SQLite-compatible SQL dumps
    - Implement import_sql with automatic backup before import
    - Add snapshot_to_memory to avoid long-held database locks
    - Add backup rotation to retain latest 10 backups
    - Support atomic import with rollback on failure
    
    * refactor(backend): migrate import/export to use SQL backup
    
    - Reimplement export_config_to_file to use database.export_sql
    - Reimplement import_config_from_file to use database.import_sql
    - Add sync_current_from_db to sync live configs after import
    - Add settings database binding on app initialization
    - Remove deprecated JSON-based config import logic
    
    * refactor(backend): migrate settings storage to database
    
    - Add bind_db function to initialize database-backed settings
    - Implement load_initial_settings with database fallback
    - Replace direct file save with settings store management
    - Add SETTINGS_DB static for database binding
    - Maintain backward compatibility with file-based settings
    - Keep settings.json for legacy migration support
    
    * feat(frontend): update import/export UI for SQL backup
    
    - Change default export filename from .json to .sql
    - Update file format to timestamp format (YYYYMMDD_HHMMSS)
    - Update error messages to reference SQL files
    - Align with backend SQL export/import implementation
    
    * feat(i18n): update translations for SQL backup feature
    
    - Update Chinese translations for SQL import/export
    - Update English translations for SQL import/export
    - Change terminology from 'config file' to 'SQL backup'
    - Update error messages and UI hints
    
    * fix(backend): remove unnecessary dereference in backup operation
    
    - Simplify Backup::new call by removing redundant dereference
    - MutexGuard already implements DerefMut
  • Refactor/UI (#273)
    * feat(components): add reusable full-screen panel components
    
    Add new full-screen panel components to support the UI refactoring:
    
    - FullScreenPanel: Reusable full-screen layout component with header,
      content area, and optional footer. Provides consistent layout for
      settings, prompts, and other full-screen views.
    
    - PromptFormPanel: Dedicated panel for creating and editing prompts
      with markdown preview support. Features real-time validation and
      integrated save/cancel actions.
    
    - AgentsPanel: Panel component for managing agent configurations.
      Provides a consistent interface for agent CRUD operations.
    
    - RepoManagerPanel: Full-featured repository manager panel for Skills.
      Supports repository listing, addition, deletion, and configuration
      management with integrated validation.
    
    These components establish the foundation for the upcoming settings
    page migration from dialog-based to full-screen layout.
    
    * refactor(settings): migrate from dialog to full-screen page layout
    
    Complete migration of settings from modal dialog to dedicated full-screen
    page, improving UX and providing more space for configuration options.
    
    Changes:
    - Remove SettingsDialog component (legacy modal-based interface)
    - Add SettingsPage component with full-screen layout using FullScreenPanel
    - Refactor App.tsx routing to support dedicated settings page
      * Add settings route handler
      * Update navigation logic from dialog-based to page-based
      * Integrate with existing app switcher and provider management
    - Update ImportExportSection to work with new page layout
      * Improve spacing and layout for better readability
      * Enhanced error handling and user feedback
      * Better integration with page-level actions
    - Enhance useSettings hook to support page-based workflow
      * Add navigation state management
      * Improve settings persistence logic
      * Better error boundary handling
    
    Benefits:
    - More intuitive navigation with dedicated settings page
    - Better use of screen space for complex configurations
    - Improved accessibility with clearer visual hierarchy
    - Consistent with modern desktop application patterns
    - Easier to extend with new settings sections
    
    This change is part of the larger UI refactoring initiative to modernize
    the application interface and improve user experience.
    
    * refactor(forms): simplify and modernize form components
    
    Comprehensive refactoring of form components to reduce complexity,
    improve maintainability, and enhance user experience.
    
    Provider Forms:
    - CodexCommonConfigModal & CodexConfigSections
      * Simplified state management with reduced boilerplate
      * Improved field validation and error handling
      * Better layout with consistent spacing
      * Enhanced model selection with visual indicators
    - GeminiCommonConfigModal & GeminiConfigSections
      * Streamlined authentication flow (OAuth vs API Key)
      * Cleaner form layout with better grouping
      * Improved validation feedback
      * Better integration with parent components
    - CommonConfigEditor
      * Reduced from 178 to 68 lines (-62% complexity)
      * Extracted reusable form patterns
      * Improved JSON editing with syntax validation
      * Better error messages and recovery options
    - EndpointSpeedTest
      * Complete rewrite for better UX
      * Real-time testing progress indicators
      * Enhanced error handling with retry logic
      * Visual feedback for test results (color-coded latency)
    
    MCP & Prompts:
    - McpFormModal
      * Simplified from 581 to ~360 lines
      * Better stdio/http server type handling
      * Improved form validation
      * Enhanced multi-app selection (Claude/Codex/Gemini)
    - PromptPanel
      * Cleaner integration with PromptFormPanel
      * Improved list/grid view switching
      * Better state management for editing workflows
      * Enhanced delete confirmation with safety checks
    
    Code Quality Improvements:
    - Reduced total lines by ~251 lines (-24% code reduction)
    - Eliminated duplicate validation logic
    - Improved TypeScript type safety
    - Better component composition and separation of concerns
    - Enhanced accessibility with proper ARIA labels
    
    These changes make forms more intuitive, responsive, and easier to
    maintain while reducing bundle size and improving runtime performance.
    
    * style(ui): modernize component layouts and visual design
    
    Update UI components with improved layouts, visual hierarchy, and
    modern design patterns for better user experience.
    
    Navigation & Brand Components:
    - AppSwitcher
      * Enhanced visual design with better spacing
      * Improved active state indicators
      * Smoother transitions and hover effects
      * Better mobile responsiveness
    - BrandIcons
      * Optimized icon rendering performance
      * Added support for more provider icons
      * Improved SVG handling and fallbacks
      * Better scaling across different screen sizes
    
    Editor Components:
    - JsonEditor
      * Enhanced syntax highlighting
      * Better error visualization
      * Improved code formatting options
      * Added line numbers and code folding support
    - UsageScriptModal
      * Complete layout overhaul (1239 lines refactored)
      * Better script editor integration
      * Improved template selection UI
      * Enhanced preview and testing panels
      * Better error feedback and validation
    
    Provider Components:
    - ProviderCard
      * Redesigned card layout with modern aesthetics
      * Better information density and readability
      * Improved action buttons placement
      * Enhanced status indicators (active/inactive)
    - ProviderList
      * Better grid/list view layouts
      * Improved drag-and-drop visual feedback
      * Enhanced sorting indicators
    - ProviderActions
      * Streamlined action menu
      * Better icon consistency
      * Improved tooltips and accessibility
    
    Usage & Footer:
    - UsageFooter
      * Redesigned footer layout
      * Better quota visualization
      * Improved refresh controls
      * Enhanced error states
    
    Design System Updates:
    - dialog.tsx (shadcn/ui component)
      * Updated to latest design tokens
      * Better overlay animations
      * Improved focus management
    - index.css
      * Added 65 lines of global utility classes
      * New animation keyframes
      * Enhanced color variables for dark mode
      * Improved typography scale
    - tailwind.config.js
      * Extended theme with new design tokens
      * Added custom animations and transitions
      * New spacing and sizing utilities
      * Enhanced color palette
    
    Visual Improvements:
    - Consistent border radius across components
    - Unified shadow system for depth perception
    - Better color contrast for accessibility (WCAG AA)
    - Smoother animations and transitions
    - Improved dark mode support
    
    These changes create a more polished, modern interface while
    maintaining consistency with the application's design language.
    
    * chore: update dialogs, i18n and improve component integration
    
    Various functional updates and improvements across provider dialogs,
    MCP panel, skills page, and internationalization.
    
    Provider Dialogs:
    - AddProviderDialog
      * Simplified form state management
      * Improved preset selection workflow
      * Better validation error messages
      * Enhanced template variable handling
    - EditProviderDialog
      * Streamlined edit flow with better state synchronization
      * Improved handling of live config backfilling
      * Better error recovery for failed updates
      * Enhanced integration with parent components
    
    MCP & Skills:
    - UnifiedMcpPanel
      * Reduced complexity from 140+ to ~95 lines
      * Improved multi-app server management
      * Better server type detection (stdio/http)
      * Enhanced server status indicators
      * Cleaner integration with MCP form modal
    - SkillsPage
      * Simplified navigation and state management
      * Better integration with RepoManagerPanel
      * Improved error handling for repository operations
      * Enhanced loading states
    - SkillCard
      * Minor layout adjustments
      * Better action button placement
    
    Environment & Configuration:
    - EnvWarningBanner
      * Improved conflict detection messages
      * Better visual hierarchy for warnings
      * Enhanced dismissal behavior
    - tauri.conf.json
      * Updated build configuration
      * Added new window management options
    
    Internationalization:
    - en.json & zh.json
      * Added 17 new translation keys for new features
      * Updated existing keys for better clarity
      * Added translations for new settings page
      * Improved consistency across UI text
    
    Code Cleanup:
    - mutations.ts
      * Removed 14 lines of unused mutation definitions
      * Cleaned up deprecated query invalidation logic
      * Better type safety for mutation parameters
    
    Overall Impact:
    - Reduced total lines by 51 (-10% in affected files)
    - Improved component integration and data flow
    - Better error handling and user feedback
    - Enhanced i18n coverage for new features
    
    These changes improve the overall polish and integration of various
    components while removing technical debt and unused code.
    
    * feat(backend): add auto-launch functionality
    
    Implement system auto-launch feature to allow CC-Switch to start
    automatically on system boot, improving user convenience.
    
    Backend Implementation:
    - auto_launch.rs: New module for auto-launch management
      * Cross-platform support using auto-launch crate
      * Enable/disable auto-launch with system integration
      * Proper error handling for permission issues
      * Platform-specific implementations (macOS/Windows/Linux)
    
    Command Layer:
    - Add get_auto_launch command to check current status
    - Add set_auto_launch command to toggle auto-start
    - Integrate commands with settings API
    
    Settings Integration:
    - Extend Settings struct with auto_launch field
    - Persist auto-launch preference in settings store
    - Automatic state synchronization on app startup
    
    Dependencies:
    - Add auto-launch ^0.5.0 to Cargo.toml
    - Update Cargo.lock with new dependency tree
    
    Technical Details:
    - Uses platform-specific auto-launch mechanisms:
      * macOS: Login Items via LaunchServices
      * Windows: Registry Run key
      * Linux: XDG autostart desktop files
    - Handles edge cases like permission denials gracefully
    - Maintains settings consistency across app restarts
    
    This feature enables users to have CC-Switch readily available
    after system boot without manual intervention, particularly useful
    for users who frequently switch between API providers.
    
    * refactor(settings): enhance settings page with auto-launch integration
    
    Complete refactoring of settings page architecture to integrate auto-launch
    feature and improve overall settings management workflow.
    
    SettingsPage Component:
    - Integrate auto-launch toggle with WindowSettings section
    - Improve layout and spacing for better visual hierarchy
    - Enhanced error handling for settings operations
    - Better loading states during settings updates
    - Improved accessibility with proper ARIA labels
    
    WindowSettings Component:
    - Add auto-launch switch with real-time status
    - Integrate with backend auto-launch commands
    - Proper error feedback for permission issues
    - Visual indicators for current auto-launch state
    - Tooltip guidance for auto-launch functionality
    
    useSettings Hook (Major Refactoring):
    - Complete rewrite reducing complexity by ~30%
    - Better separation of concerns with dedicated handlers
    - Improved state management using React Query
    - Enhanced auto-launch state synchronization
      * Fetch auto-launch status on mount
      * Real-time updates on toggle
      * Proper error recovery
    - Optimized re-renders with better memoization
    - Cleaner API for component integration
    - Better TypeScript type safety
    
    Settings API:
    - Add getAutoLaunch() method
    - Add setAutoLaunch(enabled: boolean) method
    - Type-safe Tauri command invocations
    - Proper error propagation to UI layer
    
    Architecture Improvements:
    - Reduced hook complexity from 197 to ~140 effective lines
    - Eliminated redundant state management logic
    - Better error boundaries and fallback handling
    - Improved testability with clearer separation
    
    User Experience Enhancements:
    - Instant visual feedback on auto-launch toggle
    - Clear error messages for permission issues
    - Loading indicators during async operations
    - Consistent behavior across all platforms
    
    This refactoring provides a solid foundation for future settings
    additions while maintaining code quality and user experience.
    
    * refactor(ui): optimize FullScreenPanel, Dialog and App routing
    
    Comprehensive refactoring of core UI components to improve code quality,
    maintainability, and user experience.
    
    FullScreenPanel Component:
    - Enhanced props interface with better TypeScript types
    - Improved layout flexibility with customizable padding
    - Better header/footer composition patterns
    - Enhanced scroll behavior for long content
    - Added support for custom actions in header
    - Improved responsive design for different screen sizes
    - Better integration with parent components
    - Cleaner prop drilling with context where appropriate
    
    Dialog Component (shadcn/ui):
    - Updated to latest component patterns
    - Improved animation timing and easing
    - Better focus trap management
    - Enhanced overlay styling with backdrop blur
    - Improved accessibility (ARIA labels, keyboard navigation)
    - Better close button positioning and styling
    - Enhanced mobile responsiveness
    - Cleaner composition with DialogHeader/Footer
    
    App Component Routing:
    - Refactored routing logic for better clarity
    - Improved state management for navigation
    - Better integration with settings page
    - Enhanced error boundary handling
    - Cleaner separation of layout concerns
    - Improved provider context propagation
    - Better handling of deep links
    - Optimized re-renders with React.memo where appropriate
    
    Code Quality Improvements:
    - Reduced prop drilling with better component composition
    - Improved TypeScript type safety
    - Better separation of concerns
    - Enhanced code readability with clearer naming
    - Eliminated redundant logic
    
    Performance Optimizations:
    - Reduced unnecessary re-renders
    - Better memoization of callbacks
    - Optimized component tree structure
    - Improved event handler efficiency
    
    User Experience:
    - Smoother transitions and animations
    - Better visual feedback for interactions
    - Improved loading states
    - More consistent behavior across features
    
    These changes create a more maintainable and performant foundation
    for the application's UI layer while improving the overall user
    experience with smoother interactions and better visual polish.
    
    * refactor(features): modernize Skills, Prompts and Agents components
    
    Major refactoring of feature components to improve code quality,
    user experience, and maintainability.
    
    SkillsPage Component (299 lines refactored):
    - Complete rewrite of layout and state management
    - Better integration with RepoManagerPanel
    - Improved navigation between list and detail views
    - Enhanced error handling with user-friendly messages
    - Better loading states with skeleton screens
    - Optimized re-renders with proper memoization
    - Cleaner separation between list and form views
    - Improved skill card interactions
    - Better responsive design for different screen sizes
    
    RepoManagerPanel Component (370 lines refactored):
    - Streamlined repository management workflow
    - Enhanced form validation with real-time feedback
    - Improved repository list with better visual hierarchy
    - Better handling of git operations (clone, pull, delete)
    - Enhanced error recovery for network issues
    - Cleaner state management reducing complexity
    - Improved TypeScript type safety
    - Better integration with Skills backend API
    - Enhanced loading indicators for async operations
    
    PromptPanel Component (249 lines refactored):
    - Modernized layout with FullScreenPanel integration
    - Better separation between list and edit modes
    - Improved prompt card design with better readability
    - Enhanced search and filter functionality
    - Cleaner state management for editing workflow
    - Better integration with PromptFormPanel
    - Improved delete confirmation with safety checks
    - Enhanced keyboard navigation support
    
    PromptFormPanel Component (238 lines refactored):
    - Streamlined form layout and validation
    - Better markdown editor integration
    - Real-time preview with syntax highlighting
    - Improved validation error display
    - Enhanced save/cancel workflow
    - Better handling of large prompt content
    - Cleaner form state management
    - Improved accessibility features
    
    AgentsPanel Component (33 lines modified):
    - Minor layout adjustments for consistency
    - Better integration with FullScreenPanel
    - Improved placeholder states
    - Enhanced error boundaries
    
    Type Definitions (types.ts):
    - Added 10 new type definitions
    - Better type safety for Skills/Prompts/Agents
    - Enhanced interfaces for repository management
    - Improved typing for form validations
    
    Architecture Improvements:
    - Reduced component coupling
    - Better prop interfaces with explicit types
    - Improved error boundaries
    - Enhanced code reusability
    - Better testing surface
    
    User Experience Enhancements:
    - Smoother transitions between views
    - Better visual feedback for actions
    - Improved error messages
    - Enhanced loading states
    - More intuitive navigation flows
    - Better responsive layouts
    
    Code Quality:
    - Net reduction of 29 lines while adding features
    - Improved code organization
    - Better naming conventions
    - Enhanced documentation
    - Cleaner control flow
    
    These changes significantly improve the maintainability and user
    experience of core feature components while establishing consistent
    patterns for future development.
    
    * style(ui): refine component layouts and improve visual consistency
    
    Comprehensive UI polish across multiple components to enhance visual
    design, improve user experience, and maintain consistency.
    
    UsageScriptModal Component (1302 lines refactored):
    - Complete layout overhaul for better usability
    - Improved script editor with syntax highlighting
    - Better template selection interface
    - Enhanced test/preview panels with clearer separation
    - Improved error feedback and validation messages
    - Better modal sizing and responsiveness
    - Cleaner tab navigation between sections
    - Enhanced code formatting and readability
    - Improved loading states for async operations
    - Better integration with parent components
    
    MCP Components:
    - McpFormModal (42 lines):
      * Streamlined form layout
      * Better server type selection (stdio/http)
      * Improved field grouping and labels
      * Enhanced validation feedback
    - UnifiedMcpPanel (14 lines):
      * Minor layout adjustments
      * Better list item spacing
      * Improved server status indicators
      * Enhanced action button placement
    
    Provider Components:
    - ProviderCard (11 lines):
      * Refined card layout and spacing
      * Better visual hierarchy
      * Improved badge placement
      * Enhanced hover effects
    - ProviderList (5 lines):
      * Minor grid layout adjustments
      * Better drag-and-drop visual feedback
    - GeminiConfigSections (4 lines):
      * Field label alignment
      * Improved spacing consistency
    
    Editor & Footer Components:
    - JsonEditor (13 lines):
      * Better editor height management
      * Improved error display
      * Enhanced syntax highlighting
    - UsageFooter (10 lines):
      * Refined footer layout
      * Better quota display
      * Improved refresh button placement
    
    Settings & Environment:
    - ImportExportSection (24 lines):
      * Better button layout
      * Improved action grouping
      * Enhanced visual feedback
    - EnvWarningBanner (4 lines):
      * Refined alert styling
      * Better dismiss button placement
    
    Global Styles (index.css):
    - Added 11 lines of utility classes
    - Improved transition timing
    - Better focus indicators
    - Enhanced scrollbar styling
    - Refined spacing utilities
    
    Design Improvements:
    - Consistent spacing using design tokens
    - Unified color palette application
    - Better typography hierarchy
    - Improved shadow system for depth
    - Enhanced interactive states (hover, active, focus)
    - Better border radius consistency
    - Refined animation timings
    
    Accessibility:
    - Improved focus indicators
    - Better keyboard navigation
    - Enhanced screen reader support
    - Improved color contrast ratios
    
    Code Quality:
    - Net increase of 68 lines due to UsageScriptModal improvements
    - Better component organization
    - Cleaner style application
    - Reduced style duplication
    
    These visual refinements create a more polished and professional
    interface while maintaining excellent usability and accessibility
    standards across all components.
    
    * chore(i18n): add auto-launch translation keys
    
    Add translation keys for new auto-launch feature to support
    multi-language interface.
    
    Translation Keys Added:
    - autoLaunch: Label for auto-launch toggle
    - autoLaunchDescription: Explanation of auto-launch functionality
    - autoLaunchEnabled: Status message when enabled
    
    Languages Updated:
    - Chinese (zh.json): 简体中文翻译
    - English (en.json): English translations
    
    The translations maintain consistency with existing terminology
    and provide clear, user-friendly descriptions of the auto-launch
    feature across both supported languages.
    
    * test: update test suites to match component refactoring
    
    Comprehensive test updates to align with recent component refactoring
    and new auto-launch functionality.
    
    Component Tests:
    - AddProviderDialog.test.tsx (10 lines):
      * Updated test cases for new dialog behavior
      * Enhanced mock data for preset selection
      * Improved assertions for validation
    
    - ImportExportSection.test.tsx (16 lines):
      * Updated for new settings page integration
      * Enhanced test coverage for error scenarios
      * Better mock state management
    
    - McpFormModal.test.tsx (60 lines):
      * Extensive updates for form refactoring
      * New test cases for multi-app selection
      * Enhanced validation testing
      * Better coverage of stdio/http server types
    
    - ProviderList.test.tsx (11 lines):
      * Updated for new card layout
      * Enhanced drag-and-drop testing
    
    - SettingsDialog.test.tsx (96 lines):
      * Major updates for SettingsPage migration
      * New test cases for auto-launch functionality
      * Enhanced integration test coverage
      * Better async operation testing
    
    Hook Tests:
    - useDirectorySettings.test.tsx (32 lines):
      * Updated for refactored hook logic
      * Enhanced test coverage for edge cases
    
    - useDragSort.test.tsx (36 lines):
      * Simplified test cases
      * Better mock implementation
      * Improved assertions
    
    - useImportExport tests (16 lines total):
      * Updated for new error handling
      * Enhanced test coverage
    
    - useMcpValidation.test.tsx (23 lines):
      * Updated validation test cases
      * Better coverage of error scenarios
    
    - useProviderActions.test.tsx (48 lines):
      * Extensive updates for hook refactoring
      * New test cases for provider operations
      * Enhanced mock data
    
    - useSettings.test.tsx (12 lines):
      * New test cases for auto-launch
      * Enhanced settings state testing
      * Better async operation coverage
    
    Integration Tests:
    - App.test.tsx (41 lines):
      * Updated for new routing logic
      * Enhanced navigation testing
      * Better component integration coverage
    
    - SettingsDialog.test.tsx (88 lines):
      * Complete rewrite for SettingsPage
      * New integration test scenarios
      * Enhanced user workflow testing
    
    Mock Infrastructure:
    - handlers.ts (117 lines):
      * Major updates for MSW handlers
      * New handlers for auto-launch commands
      * Enhanced error simulation
      * Better request/response mocking
    
    - state.ts (37 lines):
      * Updated mock state structure
      * New state for auto-launch
      * Enhanced state reset functionality
    
    - tauriMocks.ts (10 lines):
      * Updated mock implementations
      * Better type safety
    
    - server.ts & testQueryClient.ts:
      * Minor cleanup (2 lines removed)
    
    Test Infrastructure Improvements:
    - Better test isolation
    - Enhanced mock data consistency
    - Improved async operation testing
    - Better error scenario coverage
    - Enhanced integration test patterns
    
    Coverage Improvements:
    - Net increase of 195 lines of test code
    - Better coverage of edge cases
    - Enhanced error path testing
    - Improved integration test scenarios
    - Better mock infrastructure
    
    All tests now pass with the refactored components while maintaining
    comprehensive coverage of functionality and edge cases.
    
    * style(ui): improve window dragging and provider card styles
    
    * fix(skills): resolve third-party skills installation failure
    
    - Add skills_path field to Skill struct
    - Use skills_path to construct correct source path during installation
    - Fix installation for repos with custom skill subdirectories
    
    * feat(icon): add icon type system and intelligent inference logic
    
    Introduce a new icon system for provider customization:
    
    - Add IconMetadata and IconPreset interfaces in src/types/icon.ts
      - Define structure for icon name, display name, category, keywords
      - Support default color configuration per icon
    
    - Implement smart icon inference in src/config/iconInference.ts
      - Create iconMappings for 25+ AI providers and cloud platforms
      - Include Claude, DeepSeek, Qwen, Kimi, Google, AWS, Azure, etc.
      - inferIconForPreset(): match provider name to icon config
      - addIconsToPresets(): batch apply icons to preset arrays
      - Support fuzzy matching for flexible name recognition
    
    This foundation enables automatic icon assignment when users add
    providers, improving visual identification in the provider list.
    
    * feat(ui): add icon picker, color picker and provider icon components
    
    Implement comprehensive icon selection system for provider customization:
    
    ## New Components
    
    ### ProviderIcon (src/components/ProviderIcon.tsx)
    - Render SVG icons by name with automatic fallback
    - Display provider initials when icon not found
    - Support custom sizing via size prop
    - Use dangerouslySetInnerHTML for inline SVG rendering
    
    ### IconPicker (src/components/IconPicker.tsx)
    - Grid-based icon selection with visual preview
    - Real-time search filtering by name and keywords
    - Integration with icon metadata for display names
    - Responsive grid layout (6-10 columns based on screen)
    
    ### ColorPicker (src/components/ColorPicker.tsx)
    - 12 preset colors for quick selection
    - Native color input for custom color picking
    - Hex input field for precise color entry
    - Visual feedback for selected color state
    
    ## Icon Assets (src/icons/extracted/)
    - 38 high-quality SVG icons for AI providers and platforms
    - Includes: OpenAI, Claude, DeepSeek, Qwen, Kimi, Gemini, etc.
    - Cloud platforms: AWS, Azure, Google Cloud, Cloudflare
    - Auto-generated index.ts with getIcon/hasIcon helpers
    - Metadata system with searchable keywords per icon
    
    ## Build Scripts
    - scripts/extract-icons.js: Extract icons from simple-icons
    - scripts/generate-icon-index.js: Generate TypeScript index file
    
    * feat(provider): integrate icon system into provider UI components
    
    Add icon customization support to provider management interface:
    
    ## Type System Updates
    
    ### Provider Interface (src/types.ts)
    - Add optional `icon` field for icon name (e.g., "openai", "anthropic")
    - Add optional `iconColor` field for hex color (e.g., "#00A67E")
    
    ### Form Schema (src/lib/schemas/provider.ts)
    - Extend providerSchema with icon and iconColor optional fields
    - Maintain backward compatibility with existing providers
    
    ## UI Components
    
    ### ProviderCard (src/components/providers/ProviderCard.tsx)
    - Display ProviderIcon alongside provider name
    - Add icon container with hover animation effect
    - Adjust layout spacing for icon placement
    - Update translate offsets for action buttons
    
    ### BasicFormFields (src/components/providers/forms/BasicFormFields.tsx)
    - Add icon preview section showing current selection
    - Implement fullscreen icon picker dialog
    - Auto-apply default color from icon metadata on selection
    - Display provider name and icon status in preview
    
    ### AddProviderDialog & EditProviderDialog
    - Pass icon fields through form submission
    - Preserve icon data during provider updates
    
    This enables users to visually distinguish providers in the list
    with custom icons, improving UX for multi-provider setups.
    
    * feat(backend): add icon fields to Provider model and default mappings
    
    Extend Rust backend to support provider icon customization:
    
    ## Provider Model (src-tauri/src/provider.rs)
    - Add `icon: Option<String>` field for icon name
    - Add `icon_color: Option<String>` field for hex color
    - Use serde rename `iconColor` for frontend compatibility
    - Apply skip_serializing_if for clean JSON output
    - Update Provider::new() to initialize icon fields as None
    
    ## Provider Defaults (src-tauri/src/provider_defaults.rs) [NEW]
    - Define ProviderIcon struct with name and color fields
    - Create DEFAULT_PROVIDER_ICONS static HashMap with 23 providers:
      - AI providers: OpenAI, Anthropic, Claude, Google, Gemini,
        DeepSeek, Kimi, Moonshot, Zhipu, MiniMax, Baidu, Alibaba,
        Tencent, Meta, Microsoft, Cohere, Perplexity, Mistral, HuggingFace
      - Cloud platforms: AWS, Azure, Huawei, Cloudflare
    - Implement infer_provider_icon() with exact and fuzzy matching
    - Add unit tests for matching logic (exact, fuzzy, case-insensitive)
    
    ## Deep Link Support (src-tauri/src/deeplink.rs)
    - Initialize icon fields when creating Provider from deep link import
    
    ## Module Registration (src-tauri/src/lib.rs)
    - Register provider_defaults module
    
    ## Dependencies (Cargo.toml)
    - Add once_cell for lazy static initialization
    
    This backend support enables icon persistence and future features
    like auto-icon inference during provider creation.
    
    * chore(i18n): add translations for icon picker and provider icon
    
    Add Chinese and English translations for icon customization feature:
    
    ## Icon Picker (iconPicker)
    - search: "Search Icons" / "搜索图标"
    - searchPlaceholder: "Enter icon name..." / "输入图标名称..."
    - noResults: "No matching icons found" / "未找到匹配的图标"
    - category.aiProvider: "AI Providers" / "AI 服务商"
    - category.cloud: "Cloud Platforms" / "云平台"
    - category.tool: "Dev Tools" / "开发工具"
    - category.other: "Other" / "其他"
    
    ## Provider Icon (providerIcon)
    - label: "Icon" / "图标"
    - colorLabel: "Icon Color" / "图标颜色"
    - selectIcon: "Select Icon" / "选择图标"
    - preview: "Preview" / "预览"
    
    These translations support the new icon picker UI components
    and provider form icon selection interface.
    
    * style(ui): refine header layout and AppSwitcher color scheme
    
    Improve application header and component styling:
    
    ## App.tsx Header Layout
    - Wrap title and settings button in flex container with gap
    - Add vertical divider between title and settings icon
    - Apply responsive padding (pl-1 sm:pl-2)
    - Reformat JSX for better readability (prettier)
    - Fix string template formatting in className
    
    ## AppSwitcher Color Update
    - Change Claude tab gradient from orange/amber to teal/emerald/green
    - Update shadow color to match new teal theme
    - Change hover color from orange-500 to teal-500
    - Align visual style with emerald/teal brand colors
    
    ## Dialog Component Cleanup
    - Remove default close button (X icon) from DialogContent
    - Allow parent components to control close button placement
    - Remove unused lucide-react X import
    
    ## index.css Header Border
    - Add top border (2px solid) to glass-header
    - Apply to both light and dark mode variants
    - Improve visual separation of header area
    
    These changes enhance visual consistency and modernize the UI
    appearance with a cohesive teal color scheme.
    
    * chore(deps): add icon library and update preset configurations
    
    Add dependencies and utility scripts for icon system:
    
    ## Dependencies (package.json)
    - Add @lobehub/icons-static-svg@1.73.0
      - High-quality SVG icon library for AI providers
      - Source for extracted icons in src/icons/extracted/
    - Update pnpm-lock.yaml accordingly
    
    ## Provider Preset Updates (src/config/claudeProviderPresets.ts)
    - Add optional `icon` and `iconColor` fields to ProviderPreset interface
    - Apply to Anthropic Official preset as example:
      - icon: "anthropic"
      - iconColor: "#D4915D"
    - Future presets can include default icon configurations
    
    ## Utility Script (scripts/filter-icons.js) [NEW]
    - Helper script for filtering and managing icon assets
    - Supports icon discovery and validation workflow
    - Complements extract-icons.js and generate-icon-index.js
    
    This completes the icon system infrastructure, providing all
    necessary tools and dependencies for icon customization.
    
    * refactor(ui): simplify AppSwitcher styles and migrate to local SVG icons
    
    - Replace complex gradient animations with clean, minimal tab design
    - Migrate from @lobehub/icons CDN to local SVG assets for better reliability
    - Fix clippy warning in error.rs (use inline format args)
    - Improve code formatting in skill service and commands
    - Reduce CSS complexity in AppSwitcher component (removed blur effects and gradients)
    - Update BrandIcons to use imported local SVG files instead of dynamic image loading
    
    This improves performance, reduces external dependencies, and provides a cleaner UI experience.
    
    * style(ui): hide scrollbars across all browsers and optimize form layout
    
    - Hide scrollbars globally with cross-browser support:
      * WebKit browsers (Chrome, Safari, Edge): ::-webkit-scrollbar { display: none }
      * Firefox: scrollbar-width: none
      * IE 10+: -ms-overflow-style: none
    - Remove custom scrollbar styling (width, colors, hover states)
    - Reorganize BasicFormFields layout:
      * Move icon picker to top center as a clickable preview (80x80)
      * Change name and notes fields to horizontal grid layout (md:grid-cols-2)
      * Remove icon preview section from bottom
      * Improve visual hierarchy and space efficiency
    
    This provides a cleaner, more modern UI with hidden scrollbars while maintaining full scroll functionality.
    
    * refactor(layout): standardize max-width to 60rem and optimize padding structure
    
    - Unify container max-width across components:
      * Replace max-w-4xl with max-w-[60rem] in App.tsx provider list
      * Replace max-w-5xl with max-w-[60rem] in PromptPanel
      * Move padding from header element to inner container for consistent spacing
    - Optimize padding hierarchy:
      * Remove px-6 from header element, add to inner header container
      * Remove px-6 from main element, keep it only in provider list container
      * Consolidate PromptPanel padding: move px-6 from nested divs to outer container
      * Remove redundant pl-1 sm:pl-2 from logo/title area
    - Benefits:
      * Consistent 60rem max-width provides better readability on wide screens
      * Simplified padding structure reduces CSS complexity
      * Cleaner responsive behavior with unified spacing rules
    
    This creates a more maintainable and visually consistent layout system.
    
    * refactor(ui): unify layout system with 60rem max-width and consistent spacing
    
    - Standardize container max-width across all panels:
      * Replace max-w-4xl and max-w-5xl with unified max-w-[60rem]
      * Apply to SettingsPage, UnifiedMcpPanel, SkillsPage, and FullScreenPanel
      * Ensures consistent reading width and visual balance on wide screens
    
    - Optimize padding hierarchy and structure:
      * Move px-6 from parent elements to content containers
      * FullScreenPanel: Add max-w-[60rem] wrapper to header, content, and footer
      * Add border separators (border-t/border-b) to header and footer sections
      * Consolidate nested padding in MCP, Skills, and Prompts panels
      * Remove redundant padding layers for cleaner CSS
    
    - Simplify component styling:
      * MCP list items: Replace card-based layout with modern group-based design
      * Remove unnecessary wrapper divs and flatten DOM structure
      * Update card hover effects with smooth transitions
      * Simplify icon selection dialog (remove description text in BasicFormFields)
    
    - Benefits:
      * Consistent 60rem max-width provides optimal readability
      * Unified spacing rules reduce maintenance complexity
      * Cleaner component hierarchy improves performance
      * Better responsive behavior across different screen sizes
      * More cohesive visual design language throughout the app
    
    This creates a maintainable, scalable design system foundation.
    
    * feat(deeplink): add Claude model fields support and enhance import dialog
    
    - Add Claude-specific model field support in deeplink import:
      * Support model (ANTHROPIC_MODEL) - general default model
      * Support haikuModel (ANTHROPIC_DEFAULT_HAIKU_MODEL)
      * Support sonnetModel (ANTHROPIC_DEFAULT_SONNET_MODEL)
      * Support opusModel (ANTHROPIC_DEFAULT_OPUS_MODEL)
      * Backend: Update DeepLinkImportRequest struct to include optional model fields
      * Frontend: Add TypeScript type definitions for new model parameters
    
    - Enhance deeplink demo page (deplink.html):
      * Add 5 new Claude configuration examples showcasing different model setups
      * Add parameter documentation with required/optional tags
      * Include basic config (no models), single model, complete 4-model, partial models, and third-party provider examples
      * Improve visual design with param-list component and color-coded badges
      * Add detailed descriptions for each configuration scenario
    
    - Redesign DeepLinkImportDialog layout:
      * Switch from 3-column to compact 2-column grid layout
      * Reduce dialog width from 500px to 650px for better content display
      * Add dedicated section for Claude model configurations with blue highlight box
      * Use uppercase labels and smaller text for more information density
      * Add truncation and tooltips for long URLs
      * Improve visual hierarchy with spacing and grouping
      * Increase z-index to 9999 to ensure dialog appears on top
    
    - Minor UI refinements:
      * Update App.tsx layout adjustments
      * Optimize McpFormModal styling
      * Refine ProviderCard and BasicFormFields components
    
    This enables users to import Claude providers with precise model configurations via deeplink.
    
    * feat(deeplink): add config file support for deeplink import
    
    Support importing provider configuration from embedded or remote config files.
    - Add base64 dependency for config content encoding
    - Support config, configFormat, and configUrl parameters
    - Make homepage/endpoint/apiKey optional when config is provided
    - Add config parsing and merging logic
    
    * feat(deeplink): enhance dialog with config file preview
    
    Add config file parsing and preview in deep link import dialog.
    - Support Base64 encoded config display
    - Add config file source indicator (embedded/remote)
    - Parse and display config fields by app type (Claude/Codex/Gemini)
    - Mask sensitive values in config preview
    - Improve dialog layout and content organization
    
    * refactor(ui): unify dialog styles and improve layout consistency
    
    Standardize dialog and panel components across the application.
    - Update dialog background to use semantic color tokens
    - Adjust FullScreenPanel max-width to 56rem for better alignment
    - Add drag region and prevent body scroll in full-screen panels
    - Optimize button sizes and spacing in panel headers
    - Apply consistent styling to all dialog-based components
    
    * i18n: add deeplink config preview translations
    
    Add missing translation keys for config file preview feature.
    - Add configSource, configEmbedded, configRemote labels
    - Add configDetails and configUrl display strings
    - Support both Chinese and English versions
    
    * feat(deeplink): enhance test page with v3.8 config file examples
    
    Improve deeplink test page with comprehensive config file import examples.
    - Add version badge for v3.8 features
    - Add copy-to-clipboard functionality for all deep links
    - Add Claude config file import examples (embedded/remote)
    - Add Codex config file import examples (auth.json + config.toml)
    - Add Gemini config file import examples (.env format)
    - Add config generator tool for easy testing
    - Update UI with better styling and layout
    
    * feat(settings): add autoSaveSettings for lightweight auto-save
    
    Add optimized auto-save function for General tab settings.
    - Add autoSaveSettings method for non-destructive auto-save
    - Only trigger system APIs when values actually change
    - Avoid unnecessary auto-launch and plugin config updates
    - Update tests to cover new functionality
    
    * refactor(settings): simplify settings page layout and auto-save
    
    Reorganize settings page structure and integrate autoSaveSettings.
    - Move save button inline within Advanced tab content
    - Remove sticky footer for cleaner layout
    - Use autoSaveSettings for General tab settings
    - Simplify dialog close behavior
    - Refactor ImportExportSection layout
    
    * style(providers): optimize card layout and action button sizes
    
    Improve provider card visual density and action buttons.
    - Reduce icon button sizes for compact layout
    - Adjust drag handle and icon sizes
    - Tighten spacing between action buttons
    - Update hover translate values for better alignment
    
    * refactor(mcp): improve form modal layout with adaptive height editor
    
    Restructure MCP form modal for better space utilization.
    - Split form into upper form fields and lower JSON editor sections
    - Add full-height mode support for JsonEditor component
    - Use flex layout for editor to fill available space
    - Update PromptFormPanel to use full-height editor
    - Fix locale text formatting
    
    * style: unify list item styles with semantic colors
    
    Apply consistent styling to list items across components.
    - Replace hardcoded colors with semantic tokens in MCP and Prompt list items
    - Add glass effect container to EndpointSpeedTest panel
    - Format code for better readability
    
    * style: format template literals for better readability
    
    Improve code formatting for conditional className expressions.
    - Break long template literals across multiple lines
    - Maintain consistent formatting in MCP form and endpoint test components
    
    * feat(deeplink): add config merge command for preview
    
    Expose config merging functionality to frontend for preview.
    - Add merge_deeplink_config Tauri command
    - Make parse_and_merge_config public for reuse
    - Enable frontend to display complete config before import
    
    * feat(deeplink): merge and display config in import dialog
    
    Enhance import dialog to fetch and display complete config.
    - Call mergeDeeplinkConfig API when config is present
    - Add UTF-8 base64 decoding support for config content
    - Add scrollable content area with custom scrollbar styling
    - Show complete configuration before user confirms import
    
    * i18n: add config merge error message
    
    Add translation for config file merge error handling.
    
    * style(deeplink): format test page HTML for better readability
    
    Improve HTML formatting in deeplink test page.
    - Format multiline attributes for better readability
    - Add consistent indentation to nested elements
    - Break long lines in buttons and links
    
    * refactor(usage): improve footer layout with two-row design
    
    Reorganize usage footer for better readability and space efficiency.
    - Split into two rows: update time + refresh button (row 1), usage stats (row 2)
    - Move refresh button to top row next to update time
    - Remove card background for cleaner look
    - Add fallback text when never updated
    - Improve spacing and alignment
    - Format template literals for consistency
  • feat(skills): enhance error messages with i18n support
    - Add structured error format with error codes and context
    - Create skillErrorParser to format errors for user-friendly display
    - Add comprehensive i18n keys for all skill-related errors (zh/en)
    - Extend download timeout from 15s to 60s to reduce false positives
    - Fix: Pass correct error title based on operation context (load/install/uninstall)
    
    Error improvements:
    - SKILL_NOT_FOUND: Show skill directory name
    - DOWNLOAD_TIMEOUT: Display repo info and timeout duration with network suggestion
    - DOWNLOAD_FAILED: Show HTTP status code with specific suggestions (403/404/429)
    - SKILL_DIR_NOT_FOUND: Show full path with URL check suggestion
    - EMPTY_ARCHIVE: Suggest checking repository URL
    
    Users will now see detailed error messages instead of generic "Error".
  • fix(skills): resolve third-party skills installation failure (#268)
    - Add skills_path field to Skill struct
    - Use skills_path to construct correct source path during installation
    - Fix installation for repos with custom skill subdirectories
  • Feat/claude skills management (#237)
    * feat(skills): add Claude Skills management feature
    
    Implement complete Skills management system with repository discovery,
    installation, and lifecycle management capabilities.
    
    Backend:
    - Add SkillService with GitHub integration and installation logic
    - Implement skill commands (list, install, uninstall, check updates)
    - Support multiple skill repositories with caching
    
    Frontend:
    - Add Skills management page with repository browser
    - Create SkillCard and RepoManager components
    - Add badge, card, table UI components
    - Integrate Skills API with Tauri commands
    
    Files: 10 files changed, 1488 insertions(+)
    
    * feat(skills): integrate Skills feature into application
    
    Integrate Skills management feature with complete dependency updates,
    configuration structure extensions, and internationalization support.
    
    Dependencies:
    - Add @radix-ui/react-visually-hidden for accessibility
    - Add anyhow, zip, serde_yaml, tempfile for Skills backend
    - Enable chrono serde feature for timestamp serialization
    
    Backend Integration:
    - Extend MultiAppConfig with SkillStore field
    - Implement skills.json migration from legacy location
    - Register SkillService and skill commands in main app
    - Export skill module in commands and services
    
    Frontend Integration:
    - Add Skills page route and dialog in App
    - Integrate Skills UI with main navigation
    
    Internationalization:
    - Add complete Chinese translations for Skills UI
    - Add complete English translations for Skills UI
    
    Code Quality:
    - Remove redundant blank lines in gemini_mcp.rs
    - Format log statements in mcp.rs
    
    Tests:
    - Update import_export_sync tests for SkillStore
    - Update mcp_commands tests for new structure
    
    Files: 16 files changed, 540 insertions(+), 39 deletions(-)
    
    * style(skills): improve SkillsPage typography and spacing
    
    Optimize visual hierarchy and readability of Skills page:
    - Reduce title size from 2xl to lg with tighter tracking
    - Improve description spacing and color contrast
    - Enhance empty state with better text hierarchy
    - Use explicit gray colors for better dark mode support
    
    * feat(skills): support custom subdirectory path for skill scanning
    
    Add optional skillsPath field to SkillRepo to enable scanning skills
    from subdirectories (e.g., "skills/") instead of repository root.
    
    Changes:
    - Backend: Add skillsPath field with subdirectory scanning logic
    - Frontend: Add skillsPath input field and display in repo list
    - Presets: Add cexll/myclaude repo with skills/ subdirectory
    - Code quality: Fix clippy warnings (dedup logic, string formatting)
    
    Backward compatible: skillsPath is optional, defaults to root scanning.
    
    * refactor(skills): improve repo manager dialog layout
    
    Optimize dialog structure with fixed header and scrollable content:
    - Add flexbox layout with fixed header and scrollable body
    - Remove outer border wrapper for cleaner appearance
    - Match SkillsPage design pattern for consistency
    - Improve UX with better content hierarchy