From 1777e9bba32b953ed1ad203b4a16d01105539000 Mon Sep 17 00:00:00 2001 From: Can Celik Date: Sun, 9 Aug 2026 02:04:39 +0300 Subject: feat(graphics): add direct pane frame streaming (#2523) * feat(graphics): add direct pane frame streaming * feat(graphics): expose pane visibility * test(graphics): preserve legacy terminal image output * fix(graphics): harden streaming lifecycle * fix(input): preserve mouse releases outside panes --- src/api/schema/response.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/api/schema/response.rs') diff --git a/src/api/schema/response.rs b/src/api/schema/response.rs index db8cfc7b..ae5a32e0 100644 --- a/src/api/schema/response.rs +++ b/src/api/schema/response.rs @@ -162,9 +162,30 @@ pub enum ResponseResult { PaneRead { read: PaneReadResult, }, + PaneGraphicsFrameAck { + sequence: u64, + revision: u64, + }, PaneGraphicsInfo { cell_width_px: u32, cell_height_px: u32, + /// True only when this pane is on the currently rendered terminal surface. + pane_visible: bool, + #[serde(default, skip_serializing_if = "Option::is_none")] + file_frame_directory: Option, + #[serde(default, skip_serializing_if = "Vec::is_empty")] + file_frame_formats: Vec, + #[serde(default, skip_serializing_if = "Option::is_none")] + file_frame_max_bytes: Option, + /// Accepts damage metadata while still consuming a complete canonical file. + #[serde(default)] + file_frame_damage: bool, + #[serde(default)] + max_layers_per_pane: usize, + #[serde(default)] + pixel_mouse: bool, + #[serde(default, skip_serializing_if = "Option::is_none")] + file_frame_transport: Option, }, AgentExplain { explain: serde_json::Value, -- cgit v1.2.3