From dc4f81f44252394373f88cdd958280c8eb96d5f3 Mon Sep 17 00:00:00 2001 From: Finn Evers Date: Sun, 14 Jun 2026 18:42:12 +0200 Subject: [PATCH] extension_ui: Hide agent servers from chips (#59231) This fixes an issue where we would still allow users to toggle for agent servers but would not actually show them any results, since they are all suppressed. Also slightly changes the order in which we present the provides chips: Languages is now first, and debug adapters are now further up. Release Notes: - Removed the agent server chip from the extension UI search filder. --- crates/cloud_api_types/src/extension.rs | 4 +- crates/extensions_ui/src/extensions_ui.rs | 51 ++++++++++++----------- 2 files changed, 29 insertions(+), 26 deletions(-) diff --git a/crates/cloud_api_types/src/extension.rs b/crates/cloud_api_types/src/extension.rs index bb928ddab0d7b0..5bab3249d59a45 100644 --- a/crates/cloud_api_types/src/extension.rs +++ b/crates/cloud_api_types/src/extension.rs @@ -36,11 +36,12 @@ pub struct ExtensionApiManifest { #[serde(rename_all = "kebab-case")] #[strum(serialize_all = "kebab-case")] pub enum ExtensionProvides { + Languages, Themes, IconThemes, - Languages, Grammars, LanguageServers, + DebugAdapters, ContextServers, /// Deprecated AgentServers, @@ -49,7 +50,6 @@ pub enum ExtensionProvides { /// Deprecated IndexedDocsProviders, Snippets, - DebugAdapters, } #[derive(Clone, Serialize, Deserialize, Debug, PartialEq)] diff --git a/crates/extensions_ui/src/extensions_ui.rs b/crates/extensions_ui/src/extensions_ui.rs index 2d6f5fb2d25262..5df1a7d16289f6 100644 --- a/crates/extensions_ui/src/extensions_ui.rs +++ b/crates/extensions_ui/src/extensions_ui.rs @@ -1738,31 +1738,34 @@ impl Render for ExtensionsPage { this.change_provides_filter(None, cx); })), ) - .children(ExtensionProvides::iter().filter_map(|provides| { - match provides { - ExtensionProvides::SlashCommands - | ExtensionProvides::IndexedDocsProviders => return None, - _ => {} - } - - let label = extension_provides_label(provides); - let button_id = SharedString::from(format!("filter-category-{}", label)); - - Some( - Button::new(button_id, label) - .style(if self.provides_filter == Some(provides) { - ButtonStyle::Filled - } else { - ButtonStyle::Subtle - }) - .toggle_state(self.provides_filter == Some(provides)) - .on_click({ - cx.listener(move |this, _event, _, cx| { - this.change_provides_filter(Some(provides), cx); + .children( + ExtensionProvides::iter() + .filter(|provides| match provides { + ExtensionProvides::AgentServers + | ExtensionProvides::Grammars // grammars do not add anything of value to users currently + | ExtensionProvides::IndexedDocsProviders + | ExtensionProvides::SlashCommands => false, + _ => true, + }) + .map(|provides| { + let label = extension_provides_label(provides); + let button_id = + SharedString::from(format!("filter-category-{}", label)); + + Button::new(button_id, label) + .style(if self.provides_filter == Some(provides) { + ButtonStyle::Filled + } else { + ButtonStyle::Subtle }) - }), - ) - })), + .toggle_state(self.provides_filter == Some(provides)) + .on_click({ + cx.listener(move |this, _event, _, cx| { + this.change_provides_filter(Some(provides), cx); + }) + }) + }), + ), ) .child(self.render_feature_upsells(cx)) .child(v_flex().px_4().size_full().overflow_y_hidden().map(|this| {