diff options
| author | akbash <akbash@herdr.dev> | 2026-09-08 17:51:59 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-09-08 17:51:59 +0300 |
| commit | 68c7b78ec237034cbb0e21c8666842ed7991641d (patch) | |
| tree | 3d5a63866fa785a3307959301f3022fa21bff5ed /src/client/shell/preferences.rs | |
| parent | ffa0892ef87d927eef78fe8068de4d90201fb20b (diff) | |
fix: collapse worktree groups with saved machines (#3781)
* fix: collapse worktree groups with saved machines
refs #3778
* fix: scope worktree collapse by machine
refs #3778
* fix: collapse machines without switching focus
refs #3778
---------
Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
Diffstat (limited to 'src/client/shell/preferences.rs')
| -rw-r--r-- | src/client/shell/preferences.rs | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/client/shell/preferences.rs b/src/client/shell/preferences.rs index f657dfbf..fcfe1440 100644 --- a/src/client/shell/preferences.rs +++ b/src/client/shell/preferences.rs @@ -7,6 +7,13 @@ static NEXT_TEMP_FILE: AtomicU64 = AtomicU64::new(1); use serde::{Deserialize, Serialize}; +#[derive(Clone, Debug, Deserialize, Serialize)] +pub(super) struct ClientRemoteCollapsedGroups { + pub(super) profile_id: String, + #[serde(default, skip_serializing_if = "Vec::is_empty")] + pub(super) collapsed_groups: Vec<String>, +} + #[derive(Clone, Debug, Default, Deserialize, Serialize)] pub(super) struct ClientChromePreferences { #[serde(default, skip_serializing_if = "Option::is_none")] @@ -19,6 +26,8 @@ pub(super) struct ClientChromePreferences { pub(super) agent_panel_sort: Option<crate::config::AgentPanelSortConfig>, #[serde(default, skip_serializing_if = "Vec::is_empty")] pub(super) collapsed_groups: Vec<String>, + #[serde(default, skip_serializing_if = "Vec::is_empty")] + pub(super) remote_collapsed_groups: Vec<ClientRemoteCollapsedGroups>, } pub(super) fn path_for_local_endpoint(socket_path: &Path) -> PathBuf { @@ -74,6 +83,16 @@ mod tests { } #[test] + fn legacy_preferences_default_remote_collapses() { + let preferences: ClientChromePreferences = + serde_json::from_str(r#"{"collapsed_groups":["/repo"]}"#) + .expect("legacy client chrome preferences"); + + assert_eq!(preferences.collapsed_groups, ["/repo"]); + assert!(preferences.remote_collapsed_groups.is_empty()); + } + + #[test] fn concurrent_stores_leave_complete_preferences() { let path = std::env::temp_dir().join(format!( "herdr-shell-concurrent-preferences-{}.json", |
