fix(process): terminate all managed subprocesses on app/window exit (fixes #147, fixes #149) #153

Merged
gronod merged 1 commits from fix/process-kill-on-exit-147-149 into development 2026-08-30 17:40:40 +01:00
Owner

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.

### 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.
gronod added 1 commit 2026-08-30 17:40:36 +01:00
gronod merged commit 5d696d3fe9 into development 2026-08-30 17:40:40 +01:00
gronod deleted branch fix/process-kill-on-exit-147-149 2026-08-30 17:40:40 +01:00
Sign in to join this conversation.