diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-06-30 03:59:52 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-06-30 04:00:33 +0300 |
| commit | f54d8e8c0aee5d3ec9724234d1bcd418bff8ff2f (patch) | |
| tree | 67eb7fd76f668feab4b5a4ef245eea854a04d42d /src/config | |
| parent | 5e2dc40691e30f90c5fe3b1e60d5074ceb358556 (diff) | |
feat: add hidden collapsed sidebar mode
refs #842
Diffstat (limited to 'src/config')
| -rw-r--r-- | src/config/model.rs | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/config/model.rs b/src/config/model.rs index 92192c26..301b58ca 100644 --- a/src/config/model.rs +++ b/src/config/model.rs @@ -106,6 +106,14 @@ impl AgentPanelSortConfig { } } +#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Deserialize, Serialize)] +#[serde(rename_all = "lowercase")] +pub enum SidebarCollapsedModeConfig { + #[default] + Compact, + Hidden, +} + #[derive(Debug, Clone, Copy, PartialEq, Eq, Default)] pub struct RightClickPassthroughModifierConfig(Option<KeyModifiers>); @@ -763,6 +771,8 @@ pub struct UiConfig { pub sidebar_min_width: u16, /// Maximum sidebar width (columns) when expanded. Default: 36. pub sidebar_max_width: u16, + /// Collapsed sidebar presentation. Default: compact. + pub sidebar_collapsed_mode: SidebarCollapsedModeConfig, /// Terminal width at or below which Herdr uses the mobile single-column layout. Default: 64. pub mobile_width_threshold: u16, /// Capture mouse input for Herdr's mouse UI. Default: true. @@ -963,6 +973,7 @@ impl Default for UiConfig { sidebar_width: 26, sidebar_min_width: 18, sidebar_max_width: 36, + sidebar_collapsed_mode: SidebarCollapsedModeConfig::Compact, mobile_width_threshold: DEFAULT_MOBILE_WIDTH_THRESHOLD, mouse_capture: true, right_click_passthrough_modifier: RightClickPassthroughModifierConfig::default(), @@ -1311,6 +1322,25 @@ mobile_width_threshold = 96 } #[test] + fn sidebar_collapsed_mode_defaults_compact_and_parses_hidden() { + let default_config = Config::default(); + assert_eq!( + default_config.ui.sidebar_collapsed_mode, + SidebarCollapsedModeConfig::Compact + ); + + let toml = r#" +[ui] +sidebar_collapsed_mode = "hidden" +"#; + let config: Config = toml::from_str(toml).unwrap(); + assert_eq!( + config.ui.sidebar_collapsed_mode, + SidebarCollapsedModeConfig::Hidden + ); + } + + #[test] fn validated_sidebar_bounds_rejects_inverted() { assert_eq!(validated_sidebar_bounds(18, 36), Some((18, 36))); assert_eq!(validated_sidebar_bounds(20, 20), Some((20, 20))); |
