From 3b478e69dcbe8e416ddd46f0e24156392d4e71da Mon Sep 17 00:00:00 2001 From: akbash Date: Mon, 14 Sep 2026 01:11:07 +0300 Subject: fix: scope agent views to the selected machine (#3784) * fix: scope agent views to the selected machine refs #3732 * fix: preserve stable agent view ordering refs #3732 --------- Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com> Co-authored-by: JJ Liebig --- src/server/headless.rs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/server/headless.rs') diff --git a/src/server/headless.rs b/src/server/headless.rs index 2d652378..beda84b5 100644 --- a/src/server/headless.rs +++ b/src/server/headless.rs @@ -2006,6 +2006,21 @@ impl HeadlessServer { ); let location = crate::server::clients::ClientShellLocation::from_snapshot(&seed_snapshot); + let agent_view = self.app.state.agent_view_override.clone(); + let projection_message = match agent_view.as_ref() { + Some(view) => match crate::protocol::endpoint::agent_view_projection_message( + &seed_snapshot.boot_id, + seed_snapshot.revision, + Some(view), + ) { + Ok(message) => Some(message), + Err(err) => { + warn!(client_id, err = %err, "failed to encode endpoint agent view"); + return false; + } + }, + None => None, + }; let snapshot_message = match crate::protocol::endpoint::snapshot_message(&seed_snapshot) { Ok(message) => message, @@ -2016,10 +2031,14 @@ impl HeadlessServer { }; connection.shell_location = Some(location); connection.shell_snapshot = Some(seed_snapshot); + connection.shell_agent_view = agent_view; self.clients.insert(client_id, connection); if self.app.state.popup_pane.is_some() && self.popup_owner_tab_id.is_none() { self.popup_owner_tab_id = self.shell_tab_id_for_client(client_id); } + if let Some(message) = projection_message { + self.send_to_client(client_id, message); + } self.send_to_client(client_id, snapshot_message); if surface_active { self.foreground_client_id = Some(client_id); -- cgit v1.2.3