diff --git a/crates/feedback/src/system_specs.rs b/crates/feedback/src/system_specs.rs index e1cbdcbad64cd1d45f19e8b1d5769513d8b307c3..bf7554cb64b1bf434b421deaae9853e05e91c1e9 100644 --- a/crates/feedback/src/system_specs.rs +++ b/crates/feedback/src/system_specs.rs @@ -1,6 +1,6 @@ use gpui::AppContext; use human_bytes::human_bytes; -use release_channel::{AppVersion, ReleaseChannel}; +use release_channel::{AppCommitSha, AppVersion, ReleaseChannel}; use serde::Serialize; use std::{env, fmt::Display}; use sysinfo::{MemoryRefreshKind, RefreshKind, System}; @@ -13,12 +13,13 @@ pub struct SystemSpecs { os_version: Option, memory: u64, architecture: &'static str, + commit_sha: Option, } impl SystemSpecs { pub fn new(cx: &AppContext) -> Self { let app_version = AppVersion::global(cx).to_string(); - let release_channel = ReleaseChannel::global(cx).display_name(); + let release_channel = ReleaseChannel::global(cx); let os_name = cx.app_metadata().os_name; let system = System::new_with_specifics( RefreshKind::new().with_memory(MemoryRefreshKind::everything()), @@ -29,14 +30,21 @@ impl SystemSpecs { .app_metadata() .os_version .map(|os_version| os_version.to_string()); + let commit_sha = match release_channel { + ReleaseChannel::Dev | ReleaseChannel::Nightly => { + AppCommitSha::try_global(cx).map(|sha| sha.0.clone()) + } + _ => None, + }; SystemSpecs { app_version, - release_channel, + release_channel: release_channel.display_name(), os_name, os_version, memory, architecture, + commit_sha, } } } @@ -47,8 +55,14 @@ impl Display for SystemSpecs { Some(os_version) => format!("OS: {} {}", self.os_name, os_version), None => format!("OS: {}", self.os_name), }; - let app_version_information = - format!("Zed: v{} ({})", self.app_version, self.release_channel); + let app_version_information = format!( + "Zed: v{} ({})", + self.app_version, + match &self.commit_sha { + Some(commit_sha) => format!("{} {}", self.release_channel, commit_sha), + None => self.release_channel.to_string(), + } + ); let system_specs = [ app_version_information, os_information,