diff --git a/crates/wzp-proto/src/packet.rs b/crates/wzp-proto/src/packet.rs index 7e106b0..bf4bd14 100644 --- a/crates/wzp-proto/src/packet.rs +++ b/crates/wzp-proto/src/packet.rs @@ -716,6 +716,9 @@ pub enum SignalMessage { success: bool, #[serde(skip_serializing_if = "Option::is_none")] error: Option, + /// Relay's build version (git short hash). + #[serde(default, skip_serializing_if = "Option::is_none")] + relay_build: Option, }, /// Direct call offer routed through the relay to a specific peer. diff --git a/crates/wzp-relay/src/main.rs b/crates/wzp-relay/src/main.rs index 32abc52..121d350 100644 --- a/crates/wzp-relay/src/main.rs +++ b/crates/wzp-relay/src/main.rs @@ -1006,6 +1006,7 @@ async fn main() -> anyhow::Result<()> { let _ = transport.send_signal(&SignalMessage::RegisterPresenceAck { success: true, error: None, + relay_build: Some(BUILD_GIT_HASH.to_string()), }).await; info!(%addr, fingerprint = %client_fp, alias = ?client_alias, "signal client registered"); diff --git a/crates/wzp-relay/tests/multi_reflect.rs b/crates/wzp-relay/tests/multi_reflect.rs index 49f0691..1d92102 100644 --- a/crates/wzp-relay/tests/multi_reflect.rs +++ b/crates/wzp-relay/tests/multi_reflect.rs @@ -65,6 +65,7 @@ async fn spawn_mock_relay() -> (SocketAddr, tokio::task::JoinHandle<()>) { .send_signal(&SignalMessage::RegisterPresenceAck { success: true, error: None, + relay_build: None, }) .await; } diff --git a/desktop/src-tauri/src/lib.rs b/desktop/src-tauri/src/lib.rs index 911f793..4b2c86d 100644 --- a/desktop/src-tauri/src/lib.rs +++ b/desktop/src-tauri/src/lib.rs @@ -966,8 +966,10 @@ fn do_register_signal( emit_call_debug(&app, "register_signal:register_presence_sent", serde_json::json!({})); match transport.recv_signal().await.map_err(|e| format!("{e}"))? { - Some(SignalMessage::RegisterPresenceAck { success: true, .. }) => { - emit_call_debug(&app, "register_signal:ack_received", serde_json::json!({})); + Some(SignalMessage::RegisterPresenceAck { success: true, relay_build, .. }) => { + emit_call_debug(&app, "register_signal:ack_received", serde_json::json!({ + "relay_build": relay_build, + })); } _ => { emit_call_debug(&app, "register_signal:ack_failed", serde_json::json!({}));