diff --git a/assets/icons/sliders-alt.svg b/assets/icons/sliders-alt.svg
new file mode 100644
index 0000000000000000000000000000000000000000..36c3feccfede200b4d8192f58a4e3e14fcadc00a
--- /dev/null
+++ b/assets/icons/sliders-alt.svg
@@ -0,0 +1,6 @@
+
diff --git a/crates/assistant/src/inline_assistant.rs b/crates/assistant/src/inline_assistant.rs
index 55c89f40285da5ccbb5637e954b6424c42d7b3ef..307d2efe2c0993868f036e81e758e3136d167004 100644
--- a/crates/assistant/src/inline_assistant.rs
+++ b/crates/assistant/src/inline_assistant.rs
@@ -1420,27 +1420,34 @@ impl Render for PromptEditor {
.w(gutter_dimensions.full_width() + (gutter_dimensions.margin / 2.0))
.justify_center()
.gap_2()
- .child(ModelSelector::new(
- self.fs.clone(),
- IconButton::new("context", IconName::Settings)
- .shape(IconButtonShape::Square)
- .icon_size(IconSize::Small)
- .icon_color(Color::Muted)
- .tooltip(move |cx| {
- Tooltip::with_meta(
- format!(
- "Using {}",
- LanguageModelCompletionProvider::read_global(cx)
- .active_model()
- .map(|model| model.name().0)
- .unwrap_or_else(|| "No model selected".into()),
- ),
- None,
- "Change Model",
- cx,
- )
- }),
- ))
+ .child(
+ ModelSelector::new(
+ self.fs.clone(),
+ IconButton::new("context", IconName::SlidersAlt)
+ .shape(IconButtonShape::Square)
+ .icon_size(IconSize::Small)
+ .icon_color(Color::Muted)
+ .tooltip(move |cx| {
+ Tooltip::with_meta(
+ format!(
+ "Using {}",
+ LanguageModelCompletionProvider::read_global(cx)
+ .active_model()
+ .map(|model| model.name().0)
+ .unwrap_or_else(|| "No model selected".into()),
+ ),
+ None,
+ "Change Model",
+ cx,
+ )
+ }),
+ )
+ .with_info_text(
+ "Inline edits use context\n\
+ from the currently selected\n\
+ assistant panel tab.",
+ ),
+ )
.children(
if let CodegenStatus::Error(error) = &self.codegen.read(cx).status {
let error_message = SharedString::from(error.to_string());
diff --git a/crates/assistant/src/model_selector.rs b/crates/assistant/src/model_selector.rs
index 3847c7b29f5ed1c9fe3b2cc6c58caf665a6307ee..fbf4eb7bd1995b9fac7b26dad745a672b78ac0f3 100644
--- a/crates/assistant/src/model_selector.rs
+++ b/crates/assistant/src/model_selector.rs
@@ -2,6 +2,7 @@ use std::sync::Arc;
use crate::{assistant_settings::AssistantSettings, LanguageModelCompletionProvider};
use fs::Fs;
+use gpui::SharedString;
use language_model::LanguageModelRegistry;
use settings::update_settings_file;
use ui::{prelude::*, ContextMenu, PopoverMenu, PopoverMenuHandle, PopoverTrigger};
@@ -11,6 +12,7 @@ pub struct ModelSelector {
handle: Option>,
fs: Arc,
trigger: T,
+ info_text: Option,
}
impl ModelSelector {
@@ -19,6 +21,7 @@ impl ModelSelector {
handle: None,
fs,
trigger,
+ info_text: None,
}
}
@@ -26,6 +29,11 @@ impl ModelSelector {
self.handle = Some(handle);
self
}
+
+ pub fn with_info_text(mut self, text: impl Into) -> Self {
+ self.info_text = Some(text.into());
+ self
+ }
}
impl RenderOnce for ModelSelector {
@@ -35,8 +43,20 @@ impl RenderOnce for ModelSelector {
menu = menu.with_handle(handle);
}
+ let info_text = self.info_text.clone();
+
menu.menu(move |cx| {
ContextMenu::build(cx, |mut menu, cx| {
+ if let Some(info_text) = info_text.clone() {
+ menu = menu
+ .custom_row(move |_cx| {
+ Label::new(info_text.clone())
+ .color(Color::Muted)
+ .into_any_element()
+ })
+ .separator();
+ }
+
for (index, provider) in LanguageModelRegistry::global(cx)
.read(cx)
.providers()
diff --git a/crates/ui/src/components/icon.rs b/crates/ui/src/components/icon.rs
index dd3db7e6dbe30ce7e985f57c8af490994e8305ec..c56c0415573589b2470769bfa82de960fbd0a129 100644
--- a/crates/ui/src/components/icon.rs
+++ b/crates/ui/src/components/icon.rs
@@ -228,6 +228,7 @@ pub enum IconName {
Settings,
Shift,
Sliders,
+ SlidersAlt,
Snip,
Space,
Sparkle,
@@ -382,6 +383,7 @@ impl IconName {
IconName::Settings => "icons/file_icons/settings.svg",
IconName::Shift => "icons/shift.svg",
IconName::Sliders => "icons/sliders.svg",
+ IconName::SlidersAlt => "icons/sliders-alt.svg",
IconName::Snip => "icons/snip.svg",
IconName::Space => "icons/space.svg",
IconName::Sparkle => "icons/sparkle.svg",