diff --git a/crates/agent_ui/src/agent_ui.rs b/crates/agent_ui/src/agent_ui.rs index 4e37911f29..449194a738 100644 --- a/crates/agent_ui/src/agent_ui.rs +++ b/crates/agent_ui/src/agent_ui.rs @@ -585,8 +585,7 @@ fn update_command_palette_filter(cx: &mut App) { | EditPredictionProvider::Codestral | EditPredictionProvider::Ollama | EditPredictionProvider::OpenAiCompatibleApi - | EditPredictionProvider::Mercury - | EditPredictionProvider::Experimental(_) => { + | EditPredictionProvider::Mercury => { filter.show_namespace("edit_prediction"); filter.hide_namespace("copilot"); filter.show_action_types(edit_prediction_actions.iter()); diff --git a/crates/edit_prediction/src/edit_prediction.rs b/crates/edit_prediction/src/edit_prediction.rs index f43b94212c..824c45036b 100644 --- a/crates/edit_prediction/src/edit_prediction.rs +++ b/crates/edit_prediction/src/edit_prediction.rs @@ -2109,8 +2109,7 @@ fn is_ep_store_provider(provider: EditPredictionProvider) -> bool { EditPredictionProvider::Zed | EditPredictionProvider::Mercury | EditPredictionProvider::Ollama - | EditPredictionProvider::OpenAiCompatibleApi - | EditPredictionProvider::Experimental(_) => true, + | EditPredictionProvider::OpenAiCompatibleApi => true, EditPredictionProvider::None | EditPredictionProvider::Copilot | EditPredictionProvider::Codestral => false, @@ -2145,9 +2144,7 @@ impl EditPredictionStore { let (needs_acceptance_tracking, max_pending_predictions) = match all_language_settings(None, cx).edit_predictions.provider { - EditPredictionProvider::Zed - | EditPredictionProvider::Mercury - | EditPredictionProvider::Experimental(_) => (true, 2), + EditPredictionProvider::Zed | EditPredictionProvider::Mercury => (true, 2), EditPredictionProvider::Ollama => (false, 1), EditPredictionProvider::OpenAiCompatibleApi => (false, 2), EditPredictionProvider::None diff --git a/crates/edit_prediction_ui/src/edit_prediction_button.rs b/crates/edit_prediction_ui/src/edit_prediction_button.rs index f80680d4e5..d8e52fe8a7 100644 --- a/crates/edit_prediction_ui/src/edit_prediction_button.rs +++ b/crates/edit_prediction_ui/src/edit_prediction_button.rs @@ -323,15 +323,12 @@ impl Render for EditPredictionButton { .with_handle(self.popover_menu_handle.clone()), ) } - provider @ (EditPredictionProvider::Experimental(_) - | EditPredictionProvider::Zed - | EditPredictionProvider::Mercury) => { + provider @ (EditPredictionProvider::Zed | EditPredictionProvider::Mercury) => { let enabled = self.editor_enabled.unwrap_or(true); let file = self.file.clone(); let language = self.language.clone(); let project = self.project.clone(); let provider_name: &'static str = match provider { - EditPredictionProvider::Experimental(name) => name, EditPredictionProvider::Zed => "zed", _ => "unknown", }; @@ -428,10 +425,8 @@ impl Render for EditPredictionButton { None }; - let zed_cloud_needs_sign_in = matches!( - provider, - EditPredictionProvider::Zed | EditPredictionProvider::Experimental(_) - ) && user.is_none(); + let zed_cloud_needs_sign_in = + matches!(provider, EditPredictionProvider::Zed) && user.is_none(); let provider_unavailable = missing_token || mercury_has_error || zed_cloud_needs_sign_in; diff --git a/crates/migrator/src/migrations/m_2026_02_03/settings.rs b/crates/migrator/src/migrations/m_2026_02_03/settings.rs index 6280d9370d..b3de3031be 100644 --- a/crates/migrator/src/migrations/m_2026_02_03/settings.rs +++ b/crates/migrator/src/migrations/m_2026_02_03/settings.rs @@ -41,7 +41,14 @@ fn migrate_provider_field(obj: &mut serde_json::Map, field_name: return; }; - if name == "sweep" || name == "mercury" { - obj.insert(field_name.to_string(), Value::String(name.to_string())); - } + let provider_name = match name { + "sweep" | "mercury" => name, + "zeta2" => "zed", + _ => return, + }; + + obj.insert( + field_name.to_string(), + Value::String(provider_name.to_string()), + ); } diff --git a/crates/migrator/src/migrator.rs b/crates/migrator/src/migrator.rs index 72cd7723ce..ac7e4e337e 100644 --- a/crates/migrator/src/migrator.rs +++ b/crates/migrator/src/migrator.rs @@ -3199,7 +3199,16 @@ mod tests { } "# .unindent(), - None, + Some( + &r#" + { + "edit_predictions": { + "provider": "zed" + } + } + "# + .unindent(), + ), ); // Platform key: settings nested inside "linux" should be migrated diff --git a/crates/settings_content/src/language.rs b/crates/settings_content/src/language.rs index b9accd6b83..d3f0e6a419 100644 --- a/crates/settings_content/src/language.rs +++ b/crates/settings_content/src/language.rs @@ -2,7 +2,7 @@ use std::{num::NonZeroU32, path::Path}; use collections::{HashMap, HashSet}; use schemars::JsonSchema; -use serde::{Deserialize, Serialize, de::Error as _}; +use serde::{Deserialize, Serialize}; use settings_macros::{MergeFrom, with_fallible_options}; use std::sync::Arc; @@ -75,7 +75,9 @@ impl merge_from::MergeFrom for AllLanguageSettingsContent { } /// The provider that supplies edit predictions. -#[derive(Copy, Clone, Debug, Default, Eq, PartialEq, Serialize, JsonSchema, MergeFrom)] +#[derive( + Copy, Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, JsonSchema, MergeFrom, +)] #[serde(rename_all = "snake_case")] pub enum EditPredictionProvider { None, @@ -86,50 +88,6 @@ pub enum EditPredictionProvider { Ollama, OpenAiCompatibleApi, Mercury, - Experimental(&'static str), -} - -const EXPERIMENTAL_ZETA2_EDIT_PREDICTION_PROVIDER_NAME: &str = "zeta2"; - -impl<'de> Deserialize<'de> for EditPredictionProvider { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - #[derive(Deserialize)] - #[serde(rename_all = "snake_case")] - pub enum Content { - None, - Copilot, - Zed, - Codestral, - Ollama, - OpenAiCompatibleApi, - Mercury, - Experimental(String), - } - - Ok(match Content::deserialize(deserializer)? { - Content::None => EditPredictionProvider::None, - Content::Copilot => EditPredictionProvider::Copilot, - Content::Zed => EditPredictionProvider::Zed, - Content::Codestral => EditPredictionProvider::Codestral, - Content::Ollama => EditPredictionProvider::Ollama, - Content::OpenAiCompatibleApi => EditPredictionProvider::OpenAiCompatibleApi, - Content::Mercury => EditPredictionProvider::Mercury, - Content::Experimental(name) - if name == EXPERIMENTAL_ZETA2_EDIT_PREDICTION_PROVIDER_NAME => - { - EditPredictionProvider::Zed - } - Content::Experimental(name) => { - return Err(D::Error::custom(format!( - "Unknown experimental edit prediction provider: {}", - name - ))); - } - }) - } } impl EditPredictionProvider { @@ -141,8 +99,7 @@ impl EditPredictionProvider { | EditPredictionProvider::Codestral | EditPredictionProvider::Ollama | EditPredictionProvider::OpenAiCompatibleApi - | EditPredictionProvider::Mercury - | EditPredictionProvider::Experimental(_) => false, + | EditPredictionProvider::Mercury => false, } } @@ -152,7 +109,7 @@ impl EditPredictionProvider { EditPredictionProvider::Copilot => Some("GitHub Copilot"), EditPredictionProvider::Codestral => Some("Codestral"), EditPredictionProvider::Mercury => Some("Mercury"), - EditPredictionProvider::Experimental(_) | EditPredictionProvider::None => None, + EditPredictionProvider::None => None, EditPredictionProvider::Ollama => Some("Ollama"), EditPredictionProvider::OpenAiCompatibleApi => Some("OpenAI-Compatible API"), } diff --git a/crates/zed/src/zed/edit_prediction_registry.rs b/crates/zed/src/zed/edit_prediction_registry.rs index ad394cc5e7..5e41024589 100644 --- a/crates/zed/src/zed/edit_prediction_registry.rs +++ b/crates/zed/src/zed/edit_prediction_registry.rs @@ -147,7 +147,6 @@ fn edit_prediction_provider_config_for_settings(cx: &App) -> Option Some(EditPredictionProviderConfig::Zed( EditPredictionModel::Mercury, )), - EditPredictionProvider::Experimental(_) => None, } }