diff --git a/crates/agent_ui/src/agent_ui.rs b/crates/agent_ui/src/agent_ui.rs index 8cd512c0e4358ea46e5de9145c014b66d9ebf7ce..112e94567f3c3c974d43374d1392b510ed3e0e46 100644 --- a/crates/agent_ui/src/agent_ui.rs +++ b/crates/agent_ui/src/agent_ui.rs @@ -32,7 +32,7 @@ use client::Client; use command_palette_hooks::CommandPaletteFilter; use feature_flags::{AgentV2FeatureFlag, FeatureFlagAppExt as _}; use fs::Fs; -use gpui::{Action, App, Context, Entity, SharedString, Window, actions}; +use gpui::{Action, App, Context, Entity, SharedString, UpdateGlobal, Window, actions}; use language::{ LanguageRegistry, language_settings::{AllLanguageSettings, EditPredictionProvider}, @@ -44,7 +44,7 @@ use project::DisableAiSettings; use prompt_store::PromptBuilder; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; -use settings::{LanguageModelSelection, Settings as _, SettingsStore}; +use settings::{DockPosition, LanguageModelSelection, Settings as _, SettingsStore}; use std::any::TypeId; use workspace::Workspace; @@ -336,6 +336,19 @@ pub fn init( update_command_palette_filter(cx); }) .detach(); + + cx.observe_flag::(|is_enabled, cx| { + SettingsStore::update_global(cx, |store, cx| { + store.update_default_settings(cx, |defaults| { + defaults.agent.get_or_insert_default().dock = Some(if is_enabled { + DockPosition::Left + } else { + DockPosition::Right + }); + }); + }); + }) + .detach(); } fn update_command_palette_filter(cx: &mut App) { diff --git a/crates/settings/src/settings_store.rs b/crates/settings/src/settings_store.rs index 657d67fb64f33834c03125b67ea527997aaa5510..d540f4ec9d28fb3253b4d9c6a61044e1879df85b 100644 --- a/crates/settings/src/settings_store.rs +++ b/crates/settings/src/settings_store.rs @@ -794,6 +794,17 @@ impl SettingsStore { edits } + /// Mutates the default settings in place and recomputes all setting values. + pub fn update_default_settings( + &mut self, + cx: &mut App, + update: impl FnOnce(&mut SettingsContent), + ) { + let default_settings = Rc::make_mut(&mut self.default_settings); + update(default_settings); + self.recompute_values(None, cx); + } + /// Sets the default settings via a JSON string. /// /// The string should contain a JSON object with a default value for every setting.