From ff8e5a14abe445a61dc200fd30a70870c75d183c Mon Sep 17 00:00:00 2001 From: Ogulcan Celik Date: Wed, 20 May 2026 00:34:04 +0300 Subject: fix: stop auto-opening release notes on startup --- src/app/input/mod.rs | 1 - src/app/input/modal.rs | 45 +++++++++++++++++++++++++++++++++++++++++++++ src/app/input/navigate.rs | 3 --- src/app/input/terminal.rs | 1 - 4 files changed, 45 insertions(+), 5 deletions(-) (limited to 'src/app/input') diff --git a/src/app/input/mod.rs b/src/app/input/mod.rs index ae8fb12b..ad68f9da 100644 --- a/src/app/input/mod.rs +++ b/src/app/input/mod.rs @@ -295,7 +295,6 @@ fn app_for_mouse_test() -> App { &crate::config::Config::default(), true, None, - None, api_rx, crate::api::EventHub::default(), ); diff --git a/src/app/input/modal.rs b/src/app/input/modal.rs index 954f97de..ff5e8582 100644 --- a/src/app/input/modal.rs +++ b/src/app/input/modal.rs @@ -627,6 +627,23 @@ mod tests { use super::super::{capture_snapshot, state_with_workspaces}; use super::*; + fn config_env_lock() -> &'static std::sync::Mutex<()> { + static LOCK: std::sync::OnceLock> = std::sync::OnceLock::new(); + LOCK.get_or_init(|| std::sync::Mutex::new(())) + } + + fn temp_config_path(name: &str) -> std::path::PathBuf { + let unique = format!( + "herdr-modal-{name}-{}-{}", + std::process::id(), + std::time::SystemTime::now() + .duration_since(std::time::UNIX_EPOCH) + .unwrap() + .as_nanos() + ); + std::env::temp_dir().join(unique).join("config.toml") + } + #[test] fn custom_resize_key_exits_resize_mode() { let mut state = state_with_workspaces(&["test"]); @@ -642,6 +659,34 @@ mod tests { assert_eq!(state.mode, Mode::Terminal); } + #[test] + fn global_menu_whats_new_opens_saved_release_notes() { + let _guard = config_env_lock().lock().unwrap(); + let path = temp_config_path("whats-new-saved-release-notes"); + std::env::set_var(crate::config::CONFIG_PATH_ENV_VAR, &path); + crate::release_notes::save_pending(env!("CARGO_PKG_VERSION"), "### Changed\n- Menu") + .unwrap(); + + let mut state = state_with_workspaces(&["test"]); + state.latest_release_notes_available = true; + + assert!(global_menu_actions(&state).contains(&GlobalMenuAction::WhatsNew)); + + apply_global_menu_action(&mut state, GlobalMenuAction::WhatsNew); + + assert_eq!(state.mode, Mode::ReleaseNotes); + assert_eq!( + state + .release_notes + .as_ref() + .map(|notes| notes.body.as_str()), + Some("### Changed\n- Menu") + ); + + std::env::remove_var(crate::config::CONFIG_PATH_ENV_VAR); + let _ = std::fs::remove_dir_all(path.parent().unwrap()); + } + #[test] fn rename_modal_keyboard_and_mouse_share_actions() { let mut state = state_with_workspaces(&["test"]); diff --git a/src/app/input/navigate.rs b/src/app/input/navigate.rs index e2e0993e..34d0a342 100644 --- a/src/app/input/navigate.rs +++ b/src/app/input/navigate.rs @@ -1035,7 +1035,6 @@ mod tests { &Config::default(), true, None, - None, api_rx, crate::api::EventHub::default(), ); @@ -1084,7 +1083,6 @@ mod tests { &Config::default(), true, None, - None, api_rx, crate::api::EventHub::default(), ); @@ -1153,7 +1151,6 @@ mod tests { &Config::default(), true, None, - None, api_rx, crate::api::EventHub::default(), ); diff --git a/src/app/input/terminal.rs b/src/app/input/terminal.rs index b5ceda12..12fb67b2 100644 --- a/src/app/input/terminal.rs +++ b/src/app/input/terminal.rs @@ -461,7 +461,6 @@ mod tests { &Config::default(), true, None, - None, api_rx, crate::api::EventHub::default(), ); -- cgit v1.2.3