Commit Graph

54 Commits

Author SHA1 Message Date
Tunglies
15a1770ee9 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

---------
2025-07-24 00:49:55 +08:00
Tunglies
a574ced428 Refactor logging statements to use the new formatting syntax for improved readability and consistency across the codebase. This includes updating error, warning, and info logs in various modules such as system commands, configuration, core functionalities, and utilities. Additionally, minor adjustments were made to string formatting in backup and proxy features to enhance clarity. 2025-06-27 23:30:59 +08:00
wonfen
8cae9d4e0a refactor: use async approach to restructure UI startup logic and resolve various freeze issues during launch 2025-05-10 01:26:03 +08:00
Tunglies
b092f74c88 fix(dir): wrong logs dir path 2025-03-30 13:12:42 +08:00
Tunglies
ce5c86c3b0 fix: load custom tray icon failed due to #2886 2025-03-27 11:12:08 +08:00
Tunglies
b57c6e408a chore: git hooks for linter and formatter 2025-03-13 12:51:20 +08:00
Tunglies
805b54d81e Update dependencies and refactor encryption logic
Updates multiple dependencies to their latest versions in Cargo.lock and Cargo.toml.
Refactors encryption logic to use updated getrandom API.
Improves tray speed rate display by using ab_glyph for font rendering.
2025-03-06 18:56:31 +08:00
huzibaca
15bd7324fe feat: encryption configuration properties 2024-11-20 07:27:42 +08:00
huzibaca
c22e4e5e2c chore: update 2024-11-08 21:46:15 +08:00
huzibaca
f6c7a611a3 chore: update 2024-10-21 02:17:41 +08:00
huzibaca
8389826e30 chore: try to fix service not started on linux 2024-10-20 04:48:42 +08:00
huzibaca
57f1c005e6 fix: code lint 2024-09-24 20:06:25 +08:00
huzibaca
45b48ede44 refactor: unify and simplify the call of app_handle(2) 2024-09-23 23:15:51 +08:00
huzibaca
dffd663d7a Fix: Custom tray icon not working
1. Contains potential deadlock
2024-09-20 16:26:23 +08:00
huzibaca
95fb4f2e50 fix: the shortcut key to exit cannot be used 2024-09-18 01:41:46 +08:00
huzibaca
4a76997044 feat: Optimize kernel startup logic
1. tun mode startup logic
2. Remove invalid creation process PID logic
2024-09-12 15:35:08 +08:00
huzibaca
6cc81fe6b8 chore: update 2024-09-02 19:33:17 +08:00
MystiPanda
6fa0f92ceb refactor: kill core by process name 2024-06-18 12:36:58 +08:00
MystiPanda
e95808e6be feat: Try support service mode for MacOS 2024-03-31 23:16:47 +08:00
HZ is not Chatty
b0f1ce1fa0 feat: Service Mode for Linux (#804) 2024-03-31 16:16:23 +08:00
MystiPanda
5106d77c77 build: Try restart windows service after install (#395) 2024-02-18 10:19:54 +08:00
MystiPanda
3a883b9e41 refactor: cargo clippy 2024-01-10 17:36:35 +08:00
MystiPanda
4a3a9bf62c fix: linux build error 2024-01-10 15:22:08 +08:00
MystiPanda
7e66f89260 feat: Support URL Scheme for Linux 2024-01-10 13:03:34 +08:00
MystiPanda
965f10698b feat: Support URL Scheme for Windows
#165
2024-01-09 21:57:06 +08:00
MystiPanda
981f9d0b01 fix: portable flag 2023-12-15 21:39:34 +08:00
MystiPanda
4964382966 chore: Optimize service path 2023-12-14 13:03:52 +08:00
MystiPanda
eadd1042fb chore: Change service path 2023-12-13 10:59:07 +08:00
MystiPanda
d4ab1df870 Revert "fix: Change PID file path"
This reverts commit c5855119d8.
2023-12-12 15:59:00 +08:00
MystiPanda
c5855119d8 fix: Change PID file path
#99
2023-12-08 11:59:40 +08:00
MystiPanda
2292b107dc ci: Fix Linux CI Script 2023-12-07 15:57:53 +08:00
MystiPanda
4aaedbb0e6 chore: fix appid 2023-12-05 15:41:13 +08:00
MystiPanda
ee1f14d4eb refactor: Change app_home to standard locations of app_data 2023-12-05 15:39:44 +08:00
GyDi
1cb43fe110 chore: allow unused 2023-01-13 23:11:48 +08:00
GyDi
8879a0ce8a fix: change default app version 2022-12-14 16:15:53 +08:00
GyDi
38546e557f fix: windows issue 2022-11-18 20:15:34 +08:00
GyDi
bedd3abf8a refactor: done 2022-11-18 18:18:41 +08:00
GyDi
ce2d4498e1 refactor: adjust all path methods and reduce unwrap 2022-11-18 10:26:39 +08:00
GyDi
d733d9fd4c refactor: rm code 2022-11-17 23:21:13 +08:00
GyDi
4f3751b7ce refactor: for windows 2022-11-17 20:19:40 +08:00
GyDi
837422fbb8 refactor: wip 2022-11-14 01:26:33 +08:00
GyDi
a45c61f19e chore: format rust code 2022-11-12 11:37:23 +08:00
GyDi
191cd3f25c fix: app version to string 2022-10-16 14:38:57 +08:00
GyDi
375b146690 feat: default user agent same with app version 2022-10-12 11:28:47 +08:00
GyDi
000d6ebcd0 feat: kill clash by pid 2022-09-05 16:30:29 +08:00
GyDi
9f2534af3d feat: windows service mode 2022-04-24 21:00:17 +08:00
GyDi
c9b0f22a2e wip: windows service mode 2022-04-23 17:26:32 +08:00
GyDi
7b114f961a fix: adjust code 2022-04-14 01:29:02 +08:00
GyDi
4a7246ec6e feat: supports change config dir 2022-04-12 23:09:32 +08:00
GyDi
cbe7c69154 chore: add debug feature 2022-04-01 23:43:35 +08:00