fix: only preview newer saved release notes

This commit is contained in:
Ogulcan Celik
2026-04-16 21:47:09 +03:00
parent 7de982f71c
commit fc99070a22
2 changed files with 44 additions and 1 deletions
+17
View File
@@ -1383,6 +1383,23 @@ mod tests {
let _ = std::fs::remove_dir_all(path.parent().unwrap());
}
#[test]
fn startup_does_not_restore_update_available_from_older_saved_notes() {
let _guard = config_env_lock().lock().unwrap();
let path = temp_config_path("startup-stale-update-notes");
std::env::set_var(crate::config::CONFIG_PATH_ENV_VAR, &path);
crate::release_notes::save_pending("0.4.9", "### Changed\n- One").unwrap();
let app = test_app();
assert_eq!(app.state.update_available, None);
assert!(app.state.latest_release_notes_available);
std::env::remove_var(crate::config::CONFIG_PATH_ENV_VAR);
let _ = std::fs::remove_dir_all(path.parent().unwrap());
}
#[test]
fn reload_keybinds_updates_live_state() {
let _guard = config_env_lock().lock().unwrap();
+27 -1
View File
@@ -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,
})
@@ -213,6 +221,24 @@ mod tests {
clear_pending_at(&path).unwrap();
}
#[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!(