fix: failed to receive shutdown signal on windows (#5533)

* fix: receive shutdown signal failed on windows

* docs: update Changelog.md

* chore: update

* fix: use tokio runtime to handle shutdown signal

* docs: update Changelog.md

* fix: move tauri dependency to the correct section in Cargo.toml

* fix: remove unused exit handling code in run function

* fix(clash-verge-signal): use global runtime to avoid tokio runtime panic on unix

* chore: update tauri-plugin-mihomo deps

* fix: handle macOS exit event to ensure proper application termination

---------

Co-authored-by: Tunglies <77394545+Tunglies@users.noreply.github.com>
This commit is contained in:
oomeow
2025-11-22 22:36:00 +08:00
committed by GitHub
co-authored by Tunglies
parent 687530a9cd
commit cbab199f80
11 changed files with 130 additions and 106 deletions
+17 -9
View File
@@ -1,4 +1,5 @@
use anyhow::Result;
use flexi_logger::LoggerHandle;
use crate::{
config::Config,
@@ -23,6 +24,21 @@ pub mod ui;
pub mod window;
pub mod window_script;
pub async fn prioritize_initialization() -> Option<LoggerHandle> {
init_work_config().await;
init_resources().await;
#[cfg(not(feature = "tauri-dev"))]
{
logging!(info, Type::Setup, "Initializing logger");
init::init_logger().await.ok()
}
#[cfg(feature = "tauri-dev")]
{
None
}
}
pub fn resolve_setup_handle() {
init_handle();
}
@@ -31,14 +47,11 @@ pub fn resolve_setup_sync() {
AsyncHandler::spawn(|| async {
AsyncHandler::spawn_blocking(init_scheme);
AsyncHandler::spawn_blocking(init_embed_server);
AsyncHandler::spawn_blocking(init_signal);
});
}
pub fn resolve_setup_async() {
AsyncHandler::spawn(|| async {
#[cfg(not(feature = "tauri-dev"))]
resolve_setup_logger().await;
logging!(
info,
Type::ClashVergeRev,
@@ -96,11 +109,6 @@ pub(super) fn init_scheme() {
logging_error!(Type::Setup, init::init_scheme());
}
#[cfg(not(feature = "tauri-dev"))]
pub(super) async fn resolve_setup_logger() {
logging_error!(Type::Setup, init::init_logger().await);
}
pub async fn resolve_scheme(param: &str) -> Result<()> {
logging_error!(Type::Setup, scheme::resolve_scheme(param).await);
Ok(())
@@ -134,7 +142,7 @@ pub(super) async fn init_auto_backup() {
logging_error!(Type::Setup, AutoBackupManager::global().init().await);
}
pub(super) fn init_signal() {
pub fn init_signal() {
logging!(info, Type::Setup, "Initializing signal handlers...");
clash_verge_signal::register(
#[cfg(windows)]