diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-07-16 03:28:57 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-07-16 03:28:57 +0300 |
| commit | 9c9490d764d306b6cc093b5b3de1ccd4e6467c94 (patch) | |
| tree | e4c7091b5418acb62067dc05b3972769cfdeb8ed /src/app | |
| parent | b16465afbbf8e4e959076fceb7e84377f2ecc379 (diff) | |
feat: configure collapsed sidebar startup state
refs #1463
Diffstat (limited to 'src/app')
| -rw-r--r-- | src/app/mod.rs | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/src/app/mod.rs b/src/app/mod.rs index 6ea84746..8909fb1f 100644 --- a/src/app/mod.rs +++ b/src/app/mod.rs @@ -602,7 +602,7 @@ impl App { mobile_width_threshold: config.ui.mobile_width_threshold, sidebar_width_source, sidebar_width_auto: false, - sidebar_collapsed: false, + sidebar_collapsed: config.ui.sidebar_start_collapsed, sidebar_collapsed_mode: config.ui.sidebar_collapsed_mode, sidebar_section_split, agent_panel_sort, @@ -2374,6 +2374,17 @@ mod tests { } #[test] + fn startup_uses_configured_sidebar_state() { + let mut config = Config::default(); + config.ui.sidebar_start_collapsed = true; + let (_api_tx, api_rx) = tokio::sync::mpsc::unbounded_channel(); + + let app = App::new(&config, true, None, api_rx, crate::api::EventHub::default()); + + assert!(app.state.sidebar_collapsed); + } + + #[test] fn startup_uses_redraw_on_focus_gained_config() { let mut config = Config::default(); config.ui.redraw_on_focus_gained = false; @@ -2775,6 +2786,25 @@ mod tests { } #[test] + fn reload_config_does_not_reset_sidebar_to_startup_state() { + let _guard = config_env_lock().lock().unwrap(); + let path = temp_config_path("reload-config-sidebar-start-collapsed"); + std::fs::create_dir_all(path.parent().unwrap()).unwrap(); + std::env::set_var(crate::config::CONFIG_PATH_ENV_VAR, &path); + + let mut app = test_app(); + assert!(!app.state.sidebar_collapsed); + + std::fs::write(&path, "[ui]\nsidebar_start_collapsed = true\n").unwrap(); + let report = app.reload_config(); + assert_eq!(report.status, crate::config::ConfigReloadStatus::Applied); + assert!(!app.state.sidebar_collapsed); + + std::env::remove_var(crate::config::CONFIG_PATH_ENV_VAR); + let _ = std::fs::remove_dir_all(path.parent().unwrap()); + } + + #[test] fn reload_config_updates_sidebar_collapsed_mode() { let _guard = config_env_lock().lock().unwrap(); let path = temp_config_path("reload-config-sidebar-collapsed-mode"); |
