Skip to content

Commit deb52aa

Browse files
authored
Default agent panel to left dock when multi-workspace is enabled (zed-industries#49034)
When users have the `multi-workspace` feature flag enabled (agent-v2), the default dock position for the agent panel is changed from right to left. This adds a `update_default_settings` method to `SettingsStore` that allows mutating defaults in place, then observes the `AgentV2FeatureFlag` to update the agent dock default accordingly. Because this modifies the defaults layer, user-configured dock positions still take precedence. Closes AI-15 (No release notes because multi-agent is feature-flagged.) Release Notes: - N/A
1 parent 13ad175 commit deb52aa

2 files changed

Lines changed: 26 additions & 2 deletions

File tree

‎crates/agent_ui/src/agent_ui.rs‎

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ use client::Client;
3232
use command_palette_hooks::CommandPaletteFilter;
3333
use feature_flags::{AgentV2FeatureFlag, FeatureFlagAppExt as _};
3434
use fs::Fs;
35-
use gpui::{Action, App, Context, Entity, SharedString, Window, actions};
35+
use gpui::{Action, App, Context, Entity, SharedString, UpdateGlobal, Window, actions};
3636
use language::{
3737
LanguageRegistry,
3838
language_settings::{AllLanguageSettings, EditPredictionProvider},
@@ -44,7 +44,7 @@ use project::DisableAiSettings;
4444
use prompt_store::PromptBuilder;
4545
use schemars::JsonSchema;
4646
use serde::{Deserialize, Serialize};
47-
use settings::{LanguageModelSelection, Settings as _, SettingsStore};
47+
use settings::{DockPosition, LanguageModelSelection, Settings as _, SettingsStore};
4848
use std::any::TypeId;
4949
use workspace::Workspace;
5050

@@ -336,6 +336,19 @@ pub fn init(
336336
update_command_palette_filter(cx);
337337
})
338338
.detach();
339+
340+
cx.observe_flag::<AgentV2FeatureFlag, _>(|is_enabled, cx| {
341+
SettingsStore::update_global(cx, |store, cx| {
342+
store.update_default_settings(cx, |defaults| {
343+
defaults.agent.get_or_insert_default().dock = Some(if is_enabled {
344+
DockPosition::Left
345+
} else {
346+
DockPosition::Right
347+
});
348+
});
349+
});
350+
})
351+
.detach();
339352
}
340353

341354
fn update_command_palette_filter(cx: &mut App) {

‎crates/settings/src/settings_store.rs‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -794,6 +794,17 @@ impl SettingsStore {
794794
edits
795795
}
796796

797+
/// Mutates the default settings in place and recomputes all setting values.
798+
pub fn update_default_settings(
799+
&mut self,
800+
cx: &mut App,
801+
update: impl FnOnce(&mut SettingsContent),
802+
) {
803+
let default_settings = Rc::make_mut(&mut self.default_settings);
804+
update(default_settings);
805+
self.recompute_values(None, cx);
806+
}
807+
797808
/// Sets the default settings via a JSON string.
798809
///
799810
/// The string should contain a JSON object with a default value for every setting.

0 commit comments

Comments
 (0)