Implements ProcessManager::kill_all(&self) which drops all ChildStdin pipes, signals all active termination channels, and gives background tasks a moment to reap processes cleanly.
Hooks Tauri lifecycle events (RunEvent::Exit, RunEvent::ExitRequested, and WindowEvent::CloseRequested) in lib.rs to invoke pm.kill_all(), ensuring no ArgyllCMS subprocess (especially interactive chartread holding USB/serial device handles) remains running after ICCery exits.
### Summary
- Implements `ProcessManager::kill_all(&self)` which drops all `ChildStdin` pipes, signals all active termination channels, and gives background tasks a moment to reap processes cleanly.
- Hooks Tauri lifecycle events (`RunEvent::Exit`, `RunEvent::ExitRequested`, and `WindowEvent::CloseRequested`) in `lib.rs` to invoke `pm.kill_all()`, ensuring no ArgyllCMS subprocess (especially interactive `chartread` holding USB/serial device handles) remains running after ICCery exits.
- Registers `commands::kill_all_processes` invoke handler.
- Adds unit tests verifying `kill_all` signals all killer channels and empties `stdins` and `killers` maps.
- Bumps version to `0.5.1` across `package.json`, `Cargo.toml`, and `tauri.conf.json`.
Resolves #147.
Resolves #149.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
ProcessManager::kill_all(&self)which drops allChildStdinpipes, signals all active termination channels, and gives background tasks a moment to reap processes cleanly.RunEvent::Exit,RunEvent::ExitRequested, andWindowEvent::CloseRequested) inlib.rsto invokepm.kill_all(), ensuring no ArgyllCMS subprocess (especially interactivechartreadholding USB/serial device handles) remains running after ICCery exits.commands::kill_all_processesinvoke handler.kill_allsignals all killer channels and emptiesstdinsandkillersmaps.0.5.1acrosspackage.json,Cargo.toml, andtauri.conf.json.Resolves #147.
Resolves #149.