aboutsummaryrefslogtreecommitdiff
path: root/src/app/mod.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-04-16 01:09:25 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-04-16 01:09:25 +0300
commitef1c6b1497fd0ad26e9d32f301ffb801cb96aa40 (patch)
treef80cbb5fc67eb2796c932a9fdd5315ce3d21d18e /src/app/mod.rs
parentd76a5b8cec72b420b340a13ea186ea169b39b69e (diff)
fix: switch updates to manual preview flow
Diffstat (limited to 'src/app/mod.rs')
-rw-r--r--src/app/mod.rs26
1 files changed, 24 insertions, 2 deletions
diff --git a/src/app/mod.rs b/src/app/mod.rs
index 165a6ff3..36b00033 100644
--- a/src/app/mod.rs
+++ b/src/app/mod.rs
@@ -205,7 +205,12 @@ impl App {
"using pane scrollback configuration"
);
- let latest_release_notes_available = crate::release_notes::load_latest().is_some();
+ let latest_release_notes = crate::release_notes::load_latest();
+ let update_available = latest_release_notes
+ .as_ref()
+ .filter(|notes| notes.preview)
+ .map(|notes| notes.version.clone());
+ let latest_release_notes_available = latest_release_notes.is_some();
let mode = if config.should_show_onboarding() {
state::Mode::Onboarding
@@ -261,7 +266,7 @@ impl App {
tab_press: None,
selection: None,
context_menu: None,
- update_available: None,
+ update_available,
latest_release_notes_available,
update_dismissed: false,
config_diagnostic,
@@ -1362,6 +1367,23 @@ mod tests {
}
#[test]
+ fn startup_restores_preview_update_available_from_saved_notes() {
+ let _guard = config_env_lock().lock().unwrap();
+ let path = temp_config_path("startup-preview-update-available");
+ std::env::set_var(crate::config::CONFIG_PATH_ENV_VAR, &path);
+
+ crate::release_notes::save_pending("0.5.0", "### Changed\n- One").unwrap();
+
+ let app = test_app();
+
+ assert_eq!(app.state.update_available.as_deref(), Some("0.5.0"));
+ 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();
let path = temp_config_path("reload-keybinds-success");