ep: Remove old experimental provider (#55011)

Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

Closes #ISSUE

Release Notes:

- N/A or Added/Fixed/Improved ...
This commit is contained in:
Ben Kunkle authored and GitHub committed 2026-04-28 07:41:38 +00:00
1 parent 28b48811dd
commit 7ef033e53b
7 files changed
+32 -69

No files matched your search

+1 -2
View File
@@ -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());
@@ -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
@@ -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;
@@ -41,7 +41,14 @@ fn migrate_provider_field(obj: &mut serde_json::Map<String, Value>, 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()),
);
}
+10 -1
View File
@@ -3199,7 +3199,16 @@ mod tests {
}
"#
.unindent(),
None,
Some(
&r#"
{
"edit_predictions": {
"provider": "zed"
}
}
"#
.unindent(),
),
);
// Platform key: settings nested inside "linux" should be migrated
+6 -49
View File
@@ -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<D>(deserializer: D) -> Result<Self, D::Error>
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"),
}
@@ -147,7 +147,6 @@ fn edit_prediction_provider_config_for_settings(cx: &App) -> Option<EditPredicti
EditPredictionProvider::Mercury => Some(EditPredictionProviderConfig::Zed(
EditPredictionModel::Mercury,
)),
EditPredictionProvider::Experimental(_) => None,
}
}