## Summary - Follow-up to #240 to make Windows desktop shutdown reliable this time, even when the tracked CLI wrapper PID exits before its descendants - Attach the spawned CLI process to a Windows Job Object with `KILL_ON_JOB_CLOSE`, so the desktop app owns the whole subtree instead of relying only on `taskkill /PID <wrapper> /T` - Keep the current graceful-then-force shutdown path, but add a robust OS-level fallback that reaps orphaned workspace processes when the wrapper is already gone ## Root Cause The previous Windows shutdown logic still depended on the PID tracked by Tauri. In practice that PID can be a short-lived Node wrapper. Once that wrapper exits, `taskkill` can report success or PID-not-found while descendants remain alive, and the desktop app no longer has a reliable handle to reap them. ## Validation - `cargo check --manifest-path packages/tauri-app/src-tauri/Cargo.toml` - `cargo build --release --manifest-path packages/tauri-app/src-tauri/Cargo.toml` - Manual local test: orphaned processes are cleaned up after desktop shutdown
32 lines
747 B
TOML
32 lines
747 B
TOML
[package]
|
|
name = "codenomad-tauri"
|
|
version = "0.13.3"
|
|
edition = "2021"
|
|
license = "MIT"
|
|
|
|
[build-dependencies]
|
|
tauri-build = { version = "2.5.2", features = [] }
|
|
|
|
[dependencies]
|
|
tauri = { version = "2.5.2", features = [ "devtools"] }
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
serde_yaml = "0.9"
|
|
regex = "1"
|
|
once_cell = "1"
|
|
parking_lot = "0.12"
|
|
thiserror = "1"
|
|
anyhow = "1"
|
|
which = "4"
|
|
libc = "0.2"
|
|
keepawake = "0.6"
|
|
tauri-plugin-dialog = "2"
|
|
dirs = "5"
|
|
tauri-plugin-opener = "2"
|
|
tauri-plugin-global-shortcut = "2"
|
|
url = "2"
|
|
tauri-plugin-notification = "2"
|
|
|
|
[target.'cfg(windows)'.dependencies]
|
|
windows-sys = { version = "0.59", features = ["Win32_Foundation", "Win32_UI_Shell", "Win32_Security", "Win32_System_JobObjects"] }
|