From 063ffc2b7057b66b03b2d2d60232b235b123f3e4 Mon Sep 17 00:00:00 2001 From: Ogulcan Celik Date: Wed, 1 Apr 2026 02:26:03 +0300 Subject: feat: show release notes after updates --- src/update.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/update.rs') diff --git a/src/update.rs b/src/update.rs index 4250a007..d616ace8 100644 --- a/src/update.rs +++ b/src/update.rs @@ -58,6 +58,8 @@ impl std::fmt::Display for Version { #[derive(Deserialize)] struct GitHubRelease { tag_name: String, + #[serde(default)] + body: String, assets: Vec, } @@ -75,6 +77,7 @@ struct GitHubAsset { struct ReleaseInfo { version: Version, download_url: String, + notes_body: String, } /// Check GitHub for the latest release. Returns release info if newer. @@ -124,6 +127,7 @@ fn check_latest() -> Result, String> { Ok(Some(ReleaseInfo { version: latest, download_url, + notes_body: release.body.trim().to_string(), })) } @@ -205,6 +209,11 @@ pub fn self_update() -> Result { }; eprintln!("downloading v{}...", release.version); + if let Err(e) = + crate::release_notes::save_pending(&release.version.to_string(), &release.notes_body) + { + tracing::warn!("failed to save pending release notes: {e}"); + } download_and_install(&release)?; eprintln!("updated to v{}", release.version); @@ -240,6 +249,12 @@ pub fn auto_update(events: tokio::sync::mpsc::Sender) { release.download_url ); + if let Err(e) = + crate::release_notes::save_pending(&release.version.to_string(), &release.notes_body) + { + tracing::warn!("failed to save pending release notes: {e}"); + } + if let Err(e) = download_and_install(&release) { tracing::warn!("auto-update failed: {e}"); return; -- cgit v1.2.3