From cc9fa47540d8525f24fe46a10f759ca40090a6e0 Mon Sep 17 00:00:00 2001 From: Can Celik Date: Tue, 4 Aug 2026 17:26:30 +0300 Subject: feat(ui): add distinct status indicators (#2282) refs #2260 --- src/app/mod.rs | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'src/app/mod.rs') diff --git a/src/app/mod.rs b/src/app/mod.rs index d049c0f2..82ac1a60 100644 --- a/src/app/mod.rs +++ b/src/app/mod.rs @@ -616,6 +616,7 @@ impl App { sidebar_collapsed_mode: config.ui.sidebar_collapsed_mode, sidebar_section_split, agent_panel_sort, + status_indicators: config.ui.status_indicators, agent_view_override: None, sidebar_agents: config.ui.sidebar.agents.clone(), sidebar_spaces: config.ui.sidebar.spaces.clone(), @@ -1446,6 +1447,7 @@ impl App { self.state.tab_bar_position = config.ui.tab_bar_position; self.state.agent_panel_sort = agent_panel_sort_from_config(config.ui.agent_panel_sort); + self.state.status_indicators = config.ui.status_indicators; self.state.sidebar_agents = config.ui.sidebar.agents.clone(); self.state.sidebar_spaces = config.ui.sidebar.spaces.clone(); self.state.agent_panel_scroll = 0; @@ -3442,6 +3444,34 @@ mod tests { let _ = std::fs::remove_dir_all(path.parent().unwrap()); } + #[test] + fn save_status_indicators_persists_then_applies_live_config() { + let _guard = config_env_lock().lock().unwrap(); + let path = temp_config_path("save-status-indicators"); + std::fs::create_dir_all(path.parent().unwrap()).unwrap(); + std::fs::write(&path, "onboarding = false\n").unwrap(); + std::env::set_var(crate::config::CONFIG_PATH_ENV_VAR, &path); + + let mut app = test_app(); + assert_eq!( + app.state.status_indicators, + crate::config::StatusIndicatorStyle::Dots + ); + + app.save_status_indicators(crate::config::StatusIndicatorStyle::Symbols); + + assert_eq!( + app.state.status_indicators, + crate::config::StatusIndicatorStyle::Symbols + ); + let content = std::fs::read_to_string(&path).unwrap(); + assert!(content.contains("status_indicators = \"symbols\"")); + assert!(app.state.config_diagnostic.is_none()); + + std::env::remove_var(crate::config::CONFIG_PATH_ENV_VAR); + let _ = std::fs::remove_dir_all(path.parent().unwrap()); + } + #[test] fn save_agent_panel_sort_persists_then_applies_live_config() { let _guard = config_env_lock().lock().unwrap(); -- cgit v1.2.3