aboutsummaryrefslogtreecommitdiff
path: root/src/app
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-07-16 03:28:57 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-07-16 03:28:57 +0300
commit9c9490d764d306b6cc093b5b3de1ccd4e6467c94 (patch)
treee4c7091b5418acb62067dc05b3972769cfdeb8ed /src/app
parentb16465afbbf8e4e959076fceb7e84377f2ecc379 (diff)
feat: configure collapsed sidebar startup state
refs #1463
Diffstat (limited to 'src/app')
-rw-r--r--src/app/mod.rs32
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");