From d4a5e02e8433db156b9dabe2b81ddd1d2aca9ea6 Mon Sep 17 00:00:00 2001 From: Ogulcan Celik Date: Mon, 25 May 2026 15:36:50 +0300 Subject: feat: hand off ptys during updates --- src/cli/status.rs | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) (limited to 'src/cli/status.rs') diff --git a/src/cli/status.rs b/src/cli/status.rs index 9b8a1648..0062367a 100644 --- a/src/cli/status.rs +++ b/src/cli/status.rs @@ -74,6 +74,7 @@ enum ServerRuntimeStatus { Running { version: Option, protocol: Option, + capabilities: Option, }, NotRunning, } @@ -127,7 +128,9 @@ fn print_client_status(json: bool) -> std::io::Result<()> { fn print_server_status_body(server: &ServerRuntimeStatus, indent: &str) { match server { - ServerRuntimeStatus::Running { version, protocol } => { + ServerRuntimeStatus::Running { + version, protocol, .. + } => { println!("{indent}status: running"); println!("{indent}version: {}", option_label(version.as_deref())); println!("{indent}protocol: {}", protocol_label(*protocol)); @@ -146,6 +149,7 @@ fn read_server_runtime_status() -> std::io::Result { Ok(status) => Ok(ServerRuntimeStatus::Running { version: status.version, protocol: status.protocol, + capabilities: status.capabilities, }), Err(ApiClientError::Io(err)) if server_not_running_error(&err) => { Ok(ServerRuntimeStatus::NotRunning) @@ -218,12 +222,18 @@ struct ServerStatusJson { running: bool, version: Option, protocol: Option, + capabilities: Option, compatible: Option, socket: String, session: Option, restart_needed: Option, } +#[derive(Serialize)] +struct ServerCapabilitiesJson { + live_handoff: bool, +} + #[derive(Serialize)] struct UpdateStatusJson { restart_needed: Option, @@ -240,11 +250,20 @@ fn client_status_json() -> ClientStatusJson { fn server_status_json(server: &ServerRuntimeStatus) -> ServerStatusJson { match server { - ServerRuntimeStatus::Running { version, protocol } => ServerStatusJson { + ServerRuntimeStatus::Running { + version, + protocol, + capabilities, + } => ServerStatusJson { status: "running", running: true, version: version.clone(), protocol: *protocol, + capabilities: capabilities + .as_ref() + .map(|capabilities| ServerCapabilitiesJson { + live_handoff: capabilities.live_handoff, + }), compatible: protocol.map(|value| value == crate::protocol::PROTOCOL_VERSION), socket: api::socket_path().display().to_string(), session: crate::session::active_name(), @@ -255,6 +274,7 @@ fn server_status_json(server: &ServerRuntimeStatus) -> ServerStatusJson { running: false, version: None, protocol: None, + capabilities: None, compatible: None, socket: api::socket_path().display().to_string(), session: crate::session::active_name(), -- cgit v1.2.3