Add orderly shutdown on window close

This commit is contained in:
2026-06-16 17:37:00 -04:00
parent 44bad7b70b
commit 33e3998e7c
4 changed files with 92 additions and 3 deletions
+10
View File
@@ -61,8 +61,18 @@ Reason for not implementing: the current `run_playback` / `run_capture` code doe
Unverified: the same-identity peer restart has not been exercised in a live 2-machine call; the WAV fix is counter/size-field tested, not a real >12h recording.
## Backlog A14 - orderly window-close shutdown
- Added `CoreCommand::Shutdown` and `UiEvent::ShutdownComplete`.
- Window close now saves config, marks the GUI as closing, asynchronously queues `Shutdown`, and exits only after the core acknowledges completion or after a 5-second fallback timeout.
- Core shutdown finalizes active mixed/multitrack recordings before session teardown, stops the standalone mic monitor, runs `ActiveSession::shutdown()` for active calls, clears room presence/routing, closes the persistent network stack, sends `ShutdownComplete`, and ends the core loop.
- The shutdown command is queued with an awaited `mpsc::Sender::send` task instead of the best-effort `try_send`, so a full command queue does not immediately drop the close command.
Unverified: actual GUI window-close behavior during a live call/recording still needs a manual run; tests/builds only prove the path compiles and existing unit coverage still passes.
## Verification
- `cargo check` passed.
- `cargo test --lib` passed: 288 passed, 0 failed, 2 ignored.
- `cargo clippy --all-targets` passed.
- `cargo build --release` passed.