aboutsummaryrefslogtreecommitdiff
path: root/src/config/model.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/config/model.rs')
-rw-r--r--src/config/model.rs30
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)));