Fix keep-server-running on macOS: ignore SIGHUP, watchdog grace period, build script fixes

This commit is contained in:
James Pine
2026-03-15 08:22:35 -07:00
parent fc450e5024
commit a5269d23db
8 changed files with 46 additions and 20 deletions
+1 -1
View File
@@ -5041,7 +5041,7 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
[[package]]
name = "voicebox"
version = "0.2.0"
version = "0.2.1"
dependencies = [
"base64 0.22.1",
"core-foundation-sys",
Binary file not shown.
+9 -2
View File
@@ -572,6 +572,7 @@ async fn restart_server(
#[command]
fn set_keep_server_running(state: State<'_, ServerState>, keep_running: bool) {
println!("set_keep_server_running called with: {}", keep_running);
*state.keep_running_on_close.lock().unwrap() = keep_running;
}
@@ -762,6 +763,8 @@ pub fn run() {
RunEvent::Exit => {
let state = app.state::<ServerState>();
let keep_running = *state.keep_running_on_close.lock().unwrap();
let has_pid = state.server_pid.lock().unwrap().is_some();
println!("RunEvent::Exit — keep_running={}, has_pid={}", keep_running, has_pid);
if keep_running {
// Tell the server to disable its watchdog so it survives
@@ -771,9 +774,13 @@ pub fn run() {
.timeout(std::time::Duration::from_secs(2))
.build()
.unwrap();
let _ = client
match client
.post(&format!("http://127.0.0.1:{}/watchdog/disable", SERVER_PORT))
.send();
.send()
{
Ok(resp) => println!("Watchdog disable response: {}", resp.status()),
Err(e) => eprintln!("Failed to disable watchdog: {}", e),
}
} else {
// Server will self-terminate via parent-pid watchdog when
// this process exits. On Unix, also send SIGTERM for
+6
View File
@@ -64,6 +64,12 @@ class TauriLifecycle implements PlatformLifecycle {
// @ts-expect-error - accessing module-level variable from another module
const serverStartedByApp = window.__voiceboxServerStartedByApp ?? false;
console.log(
'[lifecycle] window-close-requested: keepRunning=%s, serverStartedByApp=%s',
keepRunning,
serverStartedByApp,
);
if (!keepRunning && serverStartedByApp) {
// Stop server before closing (only if we started it)
try {