Commit Graph

430 Commits

  • refactor(tray): comment out enable_tray_icon references for future removal #5161
    Since network speed display in Tray on menu has been removed
  • fix: parse hotkey (#5167)
    * fix: incorrectly parse hotkey
    
    * refactor: parse hotkey
    
    * fix: panic on linux
    
    * chore: update
    
    * chore: update style
    
    * fix: register hotkey error on windows
    
    * chore: update style
    
    ---------
    
    Co-authored-by: Tunglies <tunglies.dev@outlook.com>
  • feat: add configurable hover jump navigator delay (#5178)
    * fix: hover options
    
    * feat: add configurable hover jump navigator delay
    
    - Added `hover_jump_navigator_delay` to Verge config defaults, patch flow, and response payload for persistent app-wide settings.
    - Made proxy navigator respect configurable delay via `DEFAULT_HOVER_DELAY` and new `hoverDelay` prop.
    - Threaded stored delay through proxy list so hover scrolling uses Verge-configured value.
    - Added "Hover Jump Navigator Delay" control in Layout settings with clamped numeric input, tooltip, and toggle-aware disabling.
    - Localized new labels in English, Simplified Chinese, and Traditional Chinese.
    - Extended frontend Verge config type to include delay field for type-safe access.
    
    * docs: UPDATELOG.md
  • refactor: react router (#5073)
    * refactor: react router
    
    * chore: update
    
    * fix: router
    
    * refactor: generate router children by navItems
    
    * chore: set start page when create window
    
    * docs: update UPDATELOG.md
  • fix: update fallback (#5115)
    * fix: update fallback
    
    * test: introduce Vitest and add semver helper tests
    
    * chore: merge vitest config into vite
  • refactor: frontend (#5068)
    * refactor: setting components
    
    * refactor: frontend
    
    * fix: settings router
  • feat: tray enhance (#5058)
    * feat: proxy group sorting for tray
    
    * feat(tray): add inline proxy groups toggle
  • feat: local backup (#5054)
    * feat: local backup
    
    * refactor(backup): make local backup helpers synchronous and clean up redundant checks
    
    - Converted local backup helpers to synchronous functions to remove unused async warnings and align command signatures.
    - Updated list/delete/export commands to call the sync feature functions directly without awaits while preserving behavior.
    - Simplified destination directory creation to always ensure parent folders exist without redundant checks, satisfying Clippy.
  • feat: Implement custom window controls and titlebar management (#4919)
    - Added WindowControls component for managing window actions (minimize, maximize, close) based on the operating system.
    - Integrated window decoration toggle functionality to allow users to prefer system titlebar.
    - Updated layout styles to accommodate new titlebar and window controls.
    - Refactored layout components to utilize new window management hooks.
    - Enhanced layout viewer to include a switch for enabling/disabling window decorations.
    - Improved overall window management by introducing useWindow and useWindowDecorations hooks for better state handling.
  • refactor: invock mihomo api by use tauri-plugin-mihomo (#4926)
    * feat: add tauri-plugin-mihomo
    
    * refactor: invock mihomo api by use tauri-plugin-mihomo
    
    * chore: todo
    
    * chore: update
    
    * chore: update
    
    * chore: update
    
    * chore: update
    
    * fix: incorrect delay status and update pretty config
    
    * chore: update
    
    * chore: remove cache
    
    * chore: update
    
    * chore: update
    
    * fix: app freezed when change group proxy
    
    * chore: update
    
    * chore: update
    
    * chore: add rustfmt.toml to tauri-plugin-mihomo
    
    * chore: happy clippy
    
    * refactor: connect mihomo websocket
    
    * chore: update
    
    * chore: update
    
    * fix: parse bigint to number
    
    * chore: update
    
    * Revert "fix: parse bigint to number"
    
    This reverts commit 74c006522e.
    
    * chore: use number instead of bigint
    
    * chore: cleanup
    
    * fix: rule data not refresh when switch profile
    
    * chore: update
    
    * chore: cleanup
    
    * chore: update
    
    * fix: traffic graph data display
    
    * feat: add ipc connection pool
    
    * chore: update
    
    * chore: clippy
    
    * fix: incorrect delay status
    
    * fix: typo
    
    * fix: empty proxies tray menu
    
    * chore: clippy
    
    * chore: import tauri-plugin-mihomo by using git repo
    
    * chore: cleanup
    
    * fix: mihomo api
    
    * fix: incorrect delay status
    
    * chore: update tauri-plugin-mihomo dep
    
    chore: update
  • chore(deps): update npm dependencies (#4939)
    * chore(deps): update npm dependencies
    
    * Refactor components to use function syntax instead of forwardRef for better type handling and clarity. Updated imports and adjusted prop types accordingly across multiple viewer components including TrafficGraph, ProfileViewer, BackupViewer, ClashCoreViewer, ControllerViewer, DnsViewer, LiteModeViewer, NetworkInterfaceViewer, ThemeViewer, TunViewer, UpdateViewer, and WebUIViewer.
    
    ---------
    
    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
    Co-authored-by: Tunglies <77394545+Tunglies@users.noreply.github.com>
  • Refactor components to remove forwardRef and simplify props handling
    - Updated multiple components to remove the use of forwardRef, simplifying the props structure.
    - Adjusted imports and component definitions accordingly.
    - Ensured consistent handling of refs and props across various viewer components.
    - Improved readability and maintainability of the codebase.
  • Refactor imports across multiple components for consistency and clarity
    - Reorganized import statements in various components to ensure consistent ordering and grouping.
    - Removed unnecessary imports and added missing ones where applicable.
    - Improved readability and maintainability of the codebase by standardizing import styles.
  • Refactor imports and improve code organization across multiple components and hooks
    - Consolidated and reordered imports in various files for better readability and maintainability.
    - Removed unused imports and ensured consistent import styles.
    - Enhanced the structure of components by grouping related imports together.
    - Updated the layout and organization of hooks to streamline functionality.
    - Improved the overall code quality by following best practices in import management.
  • feat: implement i18n lazy loading optimization
    🚀 Performance improvements:
    - Replace static language imports with dynamic imports
    - Load only current language on startup instead of all 13 languages
    - Implement on-demand loading when switching languages
    
    📦 Bundle optimization:
    - Reduce initial bundle size by avoiding preloading all language files
    - Add resource caching to prevent reloading same language
    - Support all 13 languages: en, ru, zh, fa, tt, id, ar, ko, tr, de, es, jp, zhtw
    
    🔧 Technical changes:
    - Convert i18n.ts to use dynamic import() for language resources
    - Add async initializeLanguage() for app startup
    - Create useI18n hook for language management with loading states
    - Update main.tsx for async language initialization
    - Fix language display labels in settings dropdown
    - Maintain backward compatibility with existing language system
    
     Fixed issues:
    - Resolve infinite loop in React components
    - Fix missing language labels in settings UI
    - Prevent circular dependencies in language loading
    - Add proper error handling and fallback mechanisms
  • refactor: proxy control component and system settings UI
    fix: handle tun toggle state after service uninstall
  • feat: comprehensive oxlint cleanup - remove unused code
    🧹 Cleanup Summary:
    - Fixed 83 oxlint warnings across 50+ files
    - Removed unused imports, variables, and functions
    - Maintained all functional code and error handling
    - Improved bundle size and code maintainability
    
    📝 Key Changes:
    - Cleaned unused React hooks (useState, useEffect, useClashInfo)
    - Removed unused Material-UI imports (useTheme, styled components)
    - Deleted unused interfaces and type definitions
    - Fixed spread operator usage and boolean casting
    - Simplified catch parameters where appropriate
    
    🎯 Files Modified:
    - React components: home.tsx, settings, profiles, etc.
    - Custom hooks: use-*.ts files
    - Utility functions and type definitions
    - Configuration files
    
     Result: 0 oxlint warnings (from 83 warnings)
    🔧 All functionality preserved
    📦 Reduced bundle size through dead code elimination
  • fix: resolve system proxy status detection and display inconsistency
    - Fixed getSystemProxyActualState logic to properly check actual system status
    - Unified system proxy state display across all components
    - Replaced systemProxyIndicator with actualState for consistent UI display
    - Updated components: setting-system, ProxyControlSwitches, proxy-tun-card
    - Added entry to v2.4.0 changelog
  • refactor: external-controller-cors to always show (#4243)
    * refactor: external-controller-cors to always show
    
    * i18n: update translation
    
    * Update UPDATELOG.md
  • feat: unify switch component styles and BaseDialog behavior in the UI (#4183)
    * feat: unify switch component styles in the UI
    
    * fix: prettier
    
    * feat: unify Item styles
  • feat: Implement configuration caching mechanism and force-refresh feature**
     **New Features**:
    
    * Added API and frontend support for forcibly refreshing Clash configuration cache
    * Implemented a configuration cache TTL mechanism (60 seconds) to reduce redundant requests
    * Introduced `ProxyRequestCache` system to manage backend data caching
    * Automatically refresh frontend state after core operations to enhance user experience
    
    🚀 **Performance Optimizations**:
    
    * Increased Clash configuration refresh interval from 5 seconds to 60 seconds
    * Force refresh cache after configuration updates to resolve data inconsistency
    * Automatically trigger state refresh after core switch, start, stop, and restart actions
    
    🔧 **Technical Improvements**:
    
    * Removed unused dependencies: `ab_glyph`, `owned_ttf_parser`, `ttf-parser`
    * Simplified WebSocket dependency management, unified `tungstenite` version
    * Refactored configuration save validation process, improved merge file handling
    * Improved error handling and overall user experience
  • feat: migrate mihomo to use kode-bridge IPC on Windows and Unix (#4051)
    * Refactor Mihomo API integration and remove crate_mihomo_api
    
    - Removed the `mihomo_api` crate and its dependencies from the project.
    - Introduced `IpcManager` for handling IPC communication with Mihomo.
    - Implemented IPC methods for managing proxies, connections, and configurations.
    - Updated `MihomoManager` to utilize `IpcManager` instead of the removed crate.
    - Added platform-specific IPC socket path handling for macOS, Linux, and Windows.
    - Cleaned up related tests and configuration files.
    
    * fix: remove duplicate permission entry in desktop capabilities
    
    * refactor: replace MihomoManager with IpcManager and remove Mihomo module
    
    * fix: restore tempfile dependency in dev-dependencies
    
    * fix: update kode-bridge dependency to use git source from the dev branch
    
    * feat: migrate mihomo to use kode-bridge IPC on Windows
    
    This commit implements a comprehensive migration from legacy service IPC to the kode-bridge library for Windows IPC communication. Key changes include:
    
    Replace service_ipc with kode-bridge IpcManager for all mihomo communications
    Simplify proxy commands using new caching mechanism with ProxyRequestCache
    Add Windows named pipe (\.\pipe\mihomo) and Unix socket IPC endpoint configuration
    Update Tauri permissions and dependencies (dashmap, tauri-plugin-notification)
    Add IPC logging support and improve error handling
    Fix Windows IPC path handling in directory utilities
    This migration enables better cross-platform IPC support and improved performance for mihomo proxy core communication.
    
    * doc: add IPC communication with Mihomo kernel, removing Restful API dependency
    
    * fix: standardize logging type naming from IPC to Ipc for consistency
    
    * refactor: clean up and optimize code structure across multiple components and services
    
    - Removed unnecessary comments and whitespace in various files.
    - Improved code readability and maintainability by restructuring functions and components.
    - Updated localization files for consistency and accuracy.
    - Enhanced performance by optimizing hooks and utility functions.
    - General code cleanup in settings, pages, and services to adhere to best practices.
    
    * fix: simplify URL formatting in test_proxy_delay method
    
    * fix: update kode-bridge dependency to version 0.1.3 and change source to crates.io
    
    * fix: update macOS target versions in development workflow
    
    * Revert "fix: update macOS target versions in development workflow"
    
    This reverts commit b9831357e4.
    
    * feat: enhance IPC path handling for Unix systems and improve directory safety checks
    
    * feat: add conditional compilation for Unix-specific IPC path handling
    
    * chore: update cagro.lock
    
    * feat: add external controller configuration and UI support
    
    * Refactor proxy and connection management to use IPC-based commands
    
    - Updated `get_proxies` function in `proxy.rs` to call the new IPC command.
    - Renamed `get_refresh_proxies` to `get_proxies` in `ipc/general.rs` for consistency.
    - Added new IPC commands for managing proxies, connections, and configurations in `cmds.ts`.
    - Refactored API calls in various components to use the new IPC commands instead of HTTP requests.
    - Improved error handling and response management in the new IPC functions.
    - Cleaned up unused API functions in `api.ts` and redirected relevant calls to `cmds.ts`.
    - Enhanced connection management features including health checks and updates for proxy providers.
    
    * chore: update dependencies and improve error handling in IPC manager
    
    * fix: downgrade zip dependency from 4.3.0 to 4.2.0
    
    * feat: Implement traffic and memory data monitoring service
    
    - Added `TrafficService` and `TrafficManager` to manage traffic and memory data collection.
    - Introduced commands to get traffic and memory data, start and stop the traffic service.
    - Integrated IPC calls for traffic and memory data retrieval in the frontend.
    - Updated `AppDataProvider` and `EnhancedTrafficStats` components to utilize new data fetching methods.
    - Removed WebSocket connections for traffic and memory data, replaced with IPC polling.
    - Added logging for better traceability of data fetching and service status.
    
    * refactor: unify external controller handling and improve IPC path resolution
    
    * fix: replace direct IPC path retrieval with guard function for external controller
    
    * fix: convert external controller IPC path to string for proper insertion in config map
    
    * fix: update dependencies and improve IPC response handling
    
    * fix: remove unnecessary unix conditional for ipc path import
    
    * Refactor traffic and memory monitoring to use IPC stream; remove TrafficService and TrafficManager. Introduce new IPC-based data retrieval methods for traffic and memory, including formatted data and system overview. Update frontend components to utilize new APIs for enhanced data display and management.
    
    * chore: bump crate rand version to 0.9.2
    
    * feat: Implement enhanced traffic monitoring system with data compression and sampling
    
    - Introduced `useTrafficMonitorEnhanced` hook for advanced traffic data management.
    - Added `TrafficDataSampler` class for handling raw and compressed traffic data.
    - Implemented reference counting to manage data collection based on component usage.
    - Enhanced data validation with `SystemMonitorValidator` for API responses.
    - Created diagnostic tools for monitoring performance and error tracking.
    - Updated existing hooks to utilize the new enhanced monitoring features.
    - Added utility functions for generating and formatting diagnostic reports.
    
    * feat(ipc): improve URL encoding and error handling for IPC requests
    
    - Add percent-encoding for URL paths to handle special characters properly
    - Enhance error handling in update_proxy with proper logging
    - Remove excessive debug logging to reduce noise
    - Update kode-bridge dependency to v0.1.5
    - Fix JSON parsing error handling in PUT requests
    
    Changes include:
    - Proper URL encoding for connection IDs, proxy names, and test URLs
    - Enhanced error handling with fallback responses in updateProxy
    - Comment out verbose debug logs in traffic monitoring and data validation
    - Update dependency version for improved IPC functionality
    
    * feat: major improvements in architecture, traffic monitoring, and data validation
    
    * Refactor traffic graph components: Replace EnhancedTrafficGraph with EnhancedCanvasTrafficGraph, improve rendering performance, and enhance visual elements. Remove deprecated code and ensure compatibility with global data management.
    
    * chore: update UPDATELOG.md for v2.4.0 release, refine traffic monitoring system details, and enhance IPC functionality
    
    * chore: update UPDATELOG.md to reflect removal of deprecated MihomoManager and unify IPC control
    
    * refactor: remove global traffic service testing method from cmds.ts
    
    * Update src/components/home/enhanced-canvas-traffic-graph.tsx
    
    * Update src/hooks/use-traffic-monitor-enhanced.ts
    
    * Update src/components/layout/layout-traffic.tsx
    
    * refactor: remove debug state management from LayoutTraffic component
    
    ---------
  • fix: the problem that the DNS override nameserver-policy field cannot correctly recognize multiple writing methods (#4011)
    * fix: the problem that the DNS override nameserver-policy field cannot correctly recognize multiple writing methods
    
    * update logs
    
    * fix-dns-viewer.tsx
  • fix:DNS override server support is left blank by default (#3997)
    * fix:DNS server support being left blank by default
    
    * update logs
  • refactor: use React in its intended way (#3963)
    * refactor: replace `useEffect` w/ `useLocalStorage`
    
    * refactor: replace `useEffect` w/ `useSWR`
    
    * refactor: replace `useEffect` and `useSWR`. clean up `useRef`
    
    * refactor: use `requestIdleCallback`
    
    * refactor: replace `useEffect` w/ `useMemo`
    
    * fix: clean up `useEffect`
    
    * refactor: replace `useEffect` w/ `useSWR`
    
    * refactor: remove unused `useCallback`
    
    * refactor: enhance performance and memory management in frontend processes
    
    * refactor: improve pre-push script structure and readability
    
    ---------
    
    Co-authored-by: Tunglies <77394545+Tunglies@users.noreply.github.com>
    Co-authored-by: Tunglies <tunglies.dev@outlook.com>