diff --git a/crates/agent_ui/src/threads_panel.rs b/crates/agent_ui/src/threads_panel.rs index 57ec96419cef5767b5b31ea4f7568e5ce4388626..7aaebb10cd0bf6d4237ca77f22a21bcafe47f374 100644 --- a/crates/agent_ui/src/threads_panel.rs +++ b/crates/agent_ui/src/threads_panel.rs @@ -10,6 +10,7 @@ use chrono::Utc; use db::kvp::KEY_VALUE_STORE; use editor::Editor; use feature_flags::{AgentV2FeatureFlag, FeatureFlagViewExt as _}; + use gpui::{ AnyElement, App, AsyncWindowContext, Context, Entity, EventEmitter, FocusHandle, Focusable, ListState, Pixels, Render, SharedString, Task, WeakEntity, Window, actions, list, prelude::*, @@ -2155,11 +2156,23 @@ impl Panel for ThreadsPanel { fn set_position( &mut self, - _position: DockPosition, + position: DockPosition, _window: &mut Window, - _cx: &mut Context, + cx: &mut Context, ) { - // Position is derived from agent settings and follows the agent panel + let Some(fs) = self + .multi_workspace + .read_with(cx, |mw, cx| { + mw.workspace().read(cx).project().read(cx).fs().clone() + }) + .ok() + else { + return; + }; + + settings::update_settings_file(fs.clone(), cx, move |settings, _| { + settings.agent.get_or_insert_default().dock = Some(position.into()); + }); } fn size(&self, _window: &Window, _cx: &App) -> Pixels {