From 55b80ea2b3d23784ed8611b2cd248efc8d146ae2 Mon Sep 17 00:00:00 2001 From: Marco Allegretti Date: Wed, 11 Mar 2026 18:27:56 +0100 Subject: [PATCH] fix(appd): broadcast LaunchAck to all WebSocket clients on app launch Previously LaunchAck was sent only as a direct response to the requesting connection. The servo-shell appd_ws listener thread is a separate WebSocket connection and would never receive LaunchAck for UI-initiated launches, causing those sessions to have no WebView. Now dispatch() broadcasts LaunchAck over the registry broadcast channel immediately after returning the direct response, so all connected WebSocket clients (including the shell listener) learn about every new session regardless of which connection triggered the launch. --- crates/weft-appd/src/main.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/crates/weft-appd/src/main.rs b/crates/weft-appd/src/main.rs index 5452795..99f0cfb 100644 --- a/crates/weft-appd/src/main.rs +++ b/crates/weft-appd/src/main.rs @@ -302,6 +302,10 @@ pub(crate) async fn dispatch(req: Request, registry: &Registry) -> Response { tracing::warn!(session_id, error = %e, "runtime supervisor error"); } }); + let _ = registry.lock().await.broadcast().send(Response::LaunchAck { + session_id, + app_id: app_id.clone(), + }); Response::LaunchAck { session_id, app_id } } Request::TerminateApp { session_id } => {