From 5c26862a221d990eb2b958c7cde3dd887bbaab08 Mon Sep 17 00:00:00 2001 From: Jakub Konka Date: Tue, 3 Mar 2026 13:49:47 +0100 Subject: [PATCH] telemetry: Push OS name and version to sentry in minidump --- crates/client/src/telemetry.rs | 8 ++++++++ crates/zed/src/reliability.rs | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/crates/client/src/telemetry.rs b/crates/client/src/telemetry.rs index 70056f19653b097173f6af9c80dc74f67b3d49f9..1b414bd5c6401a99c63ecc6e52ed3de7de9f2dc3 100644 --- a/crates/client/src/telemetry.rs +++ b/crates/client/src/telemetry.rs @@ -582,6 +582,14 @@ impl Telemetry { self.state.lock().is_staff } + pub fn os_name(self: &Arc) -> String { + self.state.lock().os_name.clone() + } + + pub fn os_version(self: &Arc) -> Option { + self.state.lock().os_version.clone() + } + fn build_request( self: &Arc, // We take in the JSON bytes buffer so we can reuse the existing allocation. diff --git a/crates/zed/src/reliability.rs b/crates/zed/src/reliability.rs index b291b9c8493db75e20282c8c9bc5a3750fb5e705..b94d5064184d75c3029d7ed0909c1bf24dd5143b 100644 --- a/crates/zed/src/reliability.rs +++ b/crates/zed/src/reliability.rs @@ -364,6 +364,13 @@ async fn upload_minidump( ); } + form = form + .text("sentry[contexts][os][type]", "os") + .text("sentry[contexts][os][name]", client.telemetry().os_name()); + if let Some(os_version) = client.telemetry().os_version() { + form = form.text("sentry[contexts][os][version]", os_version); + } + // TODO: feature-flag-context, and more of device-context like screen resolution, available ram, device model, etc let content_type = format!("multipart/form-data; boundary={}", form.boundary());