From cc88b3b8e5bb9f7d9f23ed6ae85a52fd7b5b9ed6 Mon Sep 17 00:00:00 2001 From: Can Celik Date: Wed, 2 Sep 2026 02:45:20 +0300 Subject: feat: add stable client endpoint compatibility (#3509) * feat: add stable client endpoint compatibility * fix: keep portable-pty patch checks composable * ci: run maintenance checks in pull requests * fix: reject endpoint errors from terminal clients * feat: keep compatible servers running across updates --- src/server/headless/render.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src/server/headless/render.rs') diff --git a/src/server/headless/render.rs b/src/server/headless/render.rs index cab79de2..19581abc 100644 --- a/src/server/headless/render.rs +++ b/src/server/headless/render.rs @@ -387,11 +387,18 @@ impl HeadlessServer { client.shell_projection_revision = client.shell_projection_revision.saturating_add(1); candidate.revision = client.shell_projection_revision; - let message = ServerMessage::ClientShellSnapshot(Box::new(candidate.clone())); + let message = match crate::protocol::endpoint::snapshot_message(&candidate) { + Ok(message) => message, + Err(err) => { + warn!(client_id, err = %err, "failed to encode endpoint snapshot"); + broken_clients.push(client_id); + continue; + } + }; let framed = match Self::frame_server_message(&message) { Ok(framed) => framed, Err(err) => { - warn!(client_id, err = %err, "failed to frame client shell replacement"); + warn!(client_id, err = %err, "failed to frame endpoint snapshot"); broken_clients.push(client_id); continue; } -- cgit v1.2.3