aboutsummaryrefslogtreecommitdiff
path: root/src/release_notes.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-04-16 21:47:09 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-04-16 21:47:09 +0300
commitfc99070a22aca3403828fc72907d5b05798fb4ff (patch)
tree73d64f7a6718f9ec3b2827640c1dd2acfb4257d5 /src/release_notes.rs
parent7de982f71c3065d531dbe3adc22ae7f5240e797b (diff)
fix: only preview newer saved release notes
Diffstat (limited to 'src/release_notes.rs')
-rw-r--r--src/release_notes.rs28
1 files changed, 27 insertions, 1 deletions
diff --git a/src/release_notes.rs b/src/release_notes.rs
index 7d83dd15..dd09aaf8 100644
--- a/src/release_notes.rs
+++ b/src/release_notes.rs
@@ -100,8 +100,16 @@ fn release_notes_from_stored(
return None;
}
+ let preview = match (
+ crate::update::Version::parse(&stored.version),
+ crate::update::Version::parse(current_version),
+ ) {
+ (Some(stored_version), Some(current_version)) => stored_version > current_version,
+ _ => false,
+ };
+
Some(ReleaseNotes {
- preview: stored.version != current_version,
+ preview,
version: stored.version,
body,
})
@@ -214,6 +222,24 @@ mod tests {
}
#[test]
+ fn load_latest_does_not_mark_older_saved_version_as_preview() {
+ let path = std::env::temp_dir().join(format!(
+ "herdr-release-notes-{}-{}.json",
+ std::process::id(),
+ "stale"
+ ));
+ let _ = clear_pending_at(&path);
+ save_pending_to_path(&path, "0.3.0", "### Changed\n- One").unwrap();
+
+ let notes = load_latest_from_path(&path, "0.3.1").expect("latest notes");
+ assert_eq!(notes.version, "0.3.0");
+ assert_eq!(notes.body, "### Changed\n- One");
+ assert!(!notes.preview);
+
+ clear_pending_at(&path).unwrap();
+ }
+
+ #[test]
fn marking_current_version_seen_preserves_latest_notes_without_startup_modal() {
let path = std::env::temp_dir().join(format!(
"herdr-release-notes-{}-{}.json",