Commit Graph

2940 Commits

  • feat: migrate logs API from REST to IPC streaming (#4277)
    * feat: migrate logs API from REST to IPC streaming
    
    - Replace REST API `/logs` calls with IPC streaming implementation
    - Add new `src-tauri/src/ipc/logs.rs` with `LogsMonitor` for real-time log streaming
    - Implement duplicate stream prevention with level tracking
    - Add frontend-backend communication via Tauri commands for log management
    - Remove WebSocket compatibility, maintain IPC-only mode
    - Fix duplicate monitoring task startup when toggling log service
    - Add proper task lifecycle management with JoinHandle cleanup
    
    * refactor: remove dead code from logs.rs to fix clippy warnings
    
    - Remove unused `timestamp` field from LogItem struct
    - Remove unused `client` field from LogsMonitor struct
    - Remove unused methods: `is_fresh`, `get_current_monitoring_level`, `get_current_logs`
    - Simplify LogsMonitor initialization by removing client dependency
    - All clippy warnings with -D warnings now resolved
    
    * refactor: extract duplicate fmt_bytes function to utils module
    
    - Create new utils/format.rs module with fmt_bytes function
    - Remove duplicate fmt_bytes implementations from traffic.rs and memory.rs
    - Update imports to use shared utils::format::fmt_bytes
    - Add comprehensive unit tests for fmt_bytes function
    - Ensure DRY principle compliance and code maintainability
  • chore(deps): update cargo dependencies (#4231)
    * chore(deps): update cargo dependencies
    
    * chore(deps): update cargo dependencies
    
    * fix: sysinfo crate use limit features
    
    * chore(deps): update npm dependencies (#4254)
    
    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
    
    * chore: update sysinfo and zip dependency versions in Cargo.toml; add ignored dependencies in renovate.json
    
    ---------
    
    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
    Co-authored-by: Tunglies <77394545+Tunglies@users.noreply.github.com>
  • fix: the issue of home page port being out of sync (#4271)
    * synchronize port 7897
    
    * Update UPDATELOG.md
  • chore(deps): update npm dependencies (#4254)
    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
  • refactor: external-controller-cors to always show (#4243)
    * refactor: external-controller-cors to always show
    
    * i18n: update translation
    
    * Update UPDATELOG.md
  • fix: resolve connection speed display issues after IPC migration #4208 (#4229)
    🐞 Bug Fixes:
    - Fix missing upload/download rate display in connections page after IPC migration
    - Implement real-time connection speed calculation based on data differences
    - Add connection speed data types and calculation logic
    
    🔧 Technical Improvements:
    - Add connection speed calculation function in AppDataProvider
    - Use useRef to store previous connection data for speed difference calculation
    - Add curUpload and curDownload fields to connection data
    - Optimize connection data processing flow for accurate speed calculations
    
    📝 Changelog:
    - Update relevant issue descriptions in UPDATELOG.md
  • fix: resolve speed test functionality issue after IPC migration #4221, #4218 (#4228)
    * chore(deps): update cargo dependencies
    
    * fix: sysinfo crate use limit features
    
    * fix: update headers-core dependency and kode-bridge version; enhance system monitor status validation
    
    * fix: extend overall_status type in ISystemMonitorOverview to include 'healthy'
    
    * refactor: update URL encoding strategy in IpcManager and cmdGetProxyDelay function
    
    * fix: resolve speed test functionality issue after IPC migration
    
    * fix: resolve speed test functionality issue after IPC migration #4221, #4218
    
    ---------
    
    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
  • chore(deps): update dependency cross-env to v10 (#4214)
    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
  • add: home card drag (#4215)
    * add home page control buttons
    
    * Update UPDATELOG.md
    
    * update zh en
    
    * Revert "add home page control buttons"
    
    This reverts commit e184843855.
    
    * Update UPDATELOG.md
    
    * Revert "update zh en"
    
    This reverts commit cbaddf59fb.
    
    * remove unnecessary code
    
    * fix: home.tsx
    
    * add  react-beautiful-dnd script
    
    * add home page drag
    
    * fix: react-beautiful-dndA setup problem was encountered
    
    * Revert "fix: react-beautiful-dndA setup problem was encountered"
    
    This reverts commit 81c34dd472.
    
    * fix: react-beautiful-dndA setup problem was encountered
    
    * Update types.d.ts
    
    * Revert "Update types.d.ts"
    
    This reverts commit 854046cf2f.
    
    * update @types/react-beautiful-dnd
    
    * Update home.tsx
    
    * Update UPDATELOG.md
    
    * remove unnecessary components
    
    * Revert "add  react-beautiful-dnd script"
    
    This reverts commit e84d569225.
    
    * Reapply "add  react-beautiful-dnd script"
    
    This reverts commit 2379fd27c4.
    
    * fix: home page error
  • fix: Windows installer parameter problem (#4213)
    * repair and delete the startup item
    
    * fix: parameter usage issues
    
    * Update UPDATELOG.md
    
    * Update UPDATELOG.md
    
    * fix: install
  • Squashed commit of the following:
    commit 8928e6438277995f7167e400d4d77657a0ab0113
    Author: Tunglies <77394545+Tunglies@users.noreply.github.com>
    Date:   Fri Jul 25 18:25:13 2025 +0800
    
        feat: add release step to development workflow for versioning
    
    commit 14085c4f7c8943669fdacae3bd2b6a07c0c0389a
    Author: Tunglies <77394545+Tunglies@users.noreply.github.com>
    Date:   Fri Jul 25 18:19:36 2025 +0800
    
        feat: add release commands for autobuild and deploytest to package.json and update version script
  • chore(deps): update npm dependencies (#4098)
    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
  • 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: update prerequisites link in CONTRIBUTING.md and update dependencies in Cargo.lock
    - Updated the link for installing Rust and Node.js in CONTRIBUTING.md.
    - Added new dependencies: wayland-backend, wayland-client, wayland-protocols.
    - Updated versions for several dependencies including async-channel, async-io, async-process, and others.
    - Removed deprecated dispatch2 version and added new dlib dependency.
    - Updated various dependencies to their latest versions for improved stability and features.
  • chore(deps): update rust crate zip to 4.3.0 (#4073)
    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
  • chore: update sysinfo dependency to version 0.36.0 (#4082)
    * chore: update sysinfo dependency to version 0.36.0
    
    * fix: update sysinfo dependency to enable specific features
  • fix: log levels will not display their respective logs correctly (#4074)
    * fix-log levels will not display their respective logs correctly
    
    * fix-logs
    
    * Update UPDATELOG.md
    
    * Update UPDATELOG.md
  • chore(deps): update cargo dependencies (#4023)
    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
  • chore(deps): update npm dependencies (#4014)
    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
  • 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
  • chore(deps): update rust crate tokio to 1.46.1 (#3989)
    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
  • chore(deps): update npm dependencies (#3986)
    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
  • Chore (Renovate): Disable Dependency Dashboard (#3999)
    * Chore (Renovate): Disable Dependency Dashboard
    
    - Close #3658
    
    * Fix (Renovate): Prettify JSON format according to "prettier"