diff --git a/Cargo.lock b/Cargo.lock index 49d08d8cab..4b6f74756c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -62,7 +62,6 @@ dependencies = [ "chrono", "client", "collections", - "command_palette_hooks", "component", "context_server", "convert_case 0.8.0", @@ -547,7 +546,6 @@ dependencies = [ "collections", "context_server", "editor", - "feature_flags", "fs", "futures 0.3.31", "fuzzy", @@ -597,7 +595,6 @@ dependencies = [ "anyhow", "collections", "deepseek", - "feature_flags", "fs", "gpui", "indexmap", @@ -15088,7 +15085,6 @@ dependencies = [ "client", "collections", "db", - "feature_flags", "gpui", "http_client", "notifications", diff --git a/crates/agent/Cargo.toml b/crates/agent/Cargo.toml index 2a11519c49..5d11606492 100644 --- a/crates/agent/Cargo.toml +++ b/crates/agent/Cargo.toml @@ -29,7 +29,6 @@ buffer_diff.workspace = true chrono.workspace = true client.workspace = true collections.workspace = true -command_palette_hooks.workspace = true component.workspace = true context_server.workspace = true convert_case.workspace = true diff --git a/crates/agent/src/assistant.rs b/crates/agent/src/assistant.rs index 70304b539f..42458869a7 100644 --- a/crates/agent/src/assistant.rs +++ b/crates/agent/src/assistant.rs @@ -29,8 +29,6 @@ use std::sync::Arc; use assistant_settings::{AgentProfileId, AssistantSettings}; use client::Client; -use command_palette_hooks::CommandPaletteFilter; -use feature_flags::{Assistant2FeatureFlag, FeatureFlagAppExt}; use fs::Fs; use gpui::{App, actions, impl_actions}; use language::LanguageRegistry; @@ -107,8 +105,6 @@ impl ManageProfiles { impl_actions!(agent, [NewThread, ManageProfiles]); -const NAMESPACE: &str = "agent"; - /// Initializes the `agent` crate. pub fn init( fs: Arc, @@ -136,25 +132,4 @@ pub fn init( ); cx.observe_new(AddContextServerModal::register).detach(); cx.observe_new(ManageProfilesModal::register).detach(); - - feature_gate_agent_actions(cx); -} - -fn feature_gate_agent_actions(cx: &mut App) { - CommandPaletteFilter::update_global(cx, |filter, _cx| { - filter.hide_namespace(NAMESPACE); - }); - - cx.observe_flag::(move |is_enabled, cx| { - if is_enabled { - CommandPaletteFilter::update_global(cx, |filter, _cx| { - filter.show_namespace(NAMESPACE); - }); - } else { - CommandPaletteFilter::update_global(cx, |filter, _cx| { - filter.hide_namespace(NAMESPACE); - }); - } - }) - .detach(); } diff --git a/crates/agent/src/inline_assistant.rs b/crates/agent/src/inline_assistant.rs index d98cc59f3c..d1e668f4eb 100644 --- a/crates/agent/src/inline_assistant.rs +++ b/crates/agent/src/inline_assistant.rs @@ -17,7 +17,6 @@ use editor::{ ToDisplayPoint, }, }; -use feature_flags::{Assistant2FeatureFlag, FeatureFlagViewExt as _}; use fs::Fs; use gpui::{ App, Context, Entity, Focusable, Global, HighlightStyle, Subscription, Task, UpdateGlobal, @@ -66,15 +65,6 @@ pub fn init( InlineAssistant::update_global(cx, |inline_assistant, cx| { inline_assistant.register_workspace(&workspace, window, cx) }); - - cx.observe_flag::(window, { - |is_assistant2_enabled, _workspace, _window, cx| { - InlineAssistant::update_global(cx, |inline_assistant, _cx| { - inline_assistant.is_assistant2_enabled = is_assistant2_enabled; - }); - } - }) - .detach(); }) .detach(); } @@ -97,7 +87,6 @@ pub struct InlineAssistant { prompt_builder: Arc, telemetry: Arc, fs: Arc, - is_assistant2_enabled: bool, } impl Global for InlineAssistant {} @@ -119,7 +108,6 @@ impl InlineAssistant { prompt_builder, telemetry, fs, - is_assistant2_enabled: false, } } @@ -188,7 +176,7 @@ impl InlineAssistant { window: &mut Window, cx: &mut App, ) { - let is_assistant2_enabled = self.is_assistant2_enabled; + let is_assistant2_enabled = true; if let Some(editor) = item.act_as::(cx) { editor.update(cx, |editor, cx| { diff --git a/crates/agent/src/message_editor.rs b/crates/agent/src/message_editor.rs index 912824a88f..cb096231eb 100644 --- a/crates/agent/src/message_editor.rs +++ b/crates/agent/src/message_editor.rs @@ -17,7 +17,6 @@ use editor::{ AnchorRangeExt, ContextMenuOptions, ContextMenuPlacement, Editor, EditorElement, EditorEvent, EditorMode, EditorStyle, MultiBuffer, }; -use feature_flags::{FeatureFlagAppExt, NewBillingFeatureFlag}; use file_icons::FileIcons; use fs::Fs; use futures::future::Shared; @@ -464,10 +463,6 @@ impl MessageEditor { } fn render_max_mode_toggle(&self, cx: &mut Context) -> Option { - if !cx.has_flag::() { - return None; - } - let thread = self.thread.read(cx); let model = thread.configured_model(); if !model?.model.supports_max_mode() { @@ -1074,10 +1069,6 @@ impl MessageEditor { } fn render_usage_callout(&self, line_height: Pixels, cx: &mut Context) -> Option
{ - if !cx.has_flag::() { - return None; - } - let is_using_zed_provider = self .thread .read(cx) @@ -1139,10 +1130,6 @@ impl MessageEditor { token_usage_ratio: TokenUsageRatio, cx: &mut Context, ) -> Option
{ - if !cx.has_flag::() { - return None; - } - let title = if token_usage_ratio == TokenUsageRatio::Exceeded { "Thread reached the token limit" } else { diff --git a/crates/assistant/src/inline_assistant.rs b/crates/assistant/src/inline_assistant.rs index ac8d09330d..1daaccb08f 100644 --- a/crates/assistant/src/inline_assistant.rs +++ b/crates/assistant/src/inline_assistant.rs @@ -17,9 +17,7 @@ use editor::{ ToDisplayPoint, }, }; -use feature_flags::{ - Assistant2FeatureFlag, FeatureFlagAppExt as _, FeatureFlagViewExt as _, ZedProFeatureFlag, -}; +use feature_flags::{FeatureFlagAppExt as _, ZedProFeatureFlag}; use fs::Fs; use futures::{ SinkExt, Stream, StreamExt, TryStreamExt as _, @@ -74,25 +72,19 @@ pub fn init( cx: &mut App, ) { cx.set_global(InlineAssistant::new(fs, prompt_builder, telemetry)); - cx.observe_new(|_, window, cx| { - let Some(window) = window else { - return; - }; - let workspace = cx.entity().clone(); - InlineAssistant::update_global(cx, |inline_assistant, cx| { - inline_assistant.register_workspace(&workspace, window, cx) - }); - - cx.observe_flag::(window, { - |is_assistant2_enabled, _workspace, _window, cx| { - InlineAssistant::update_global(cx, |inline_assistant, _cx| { - inline_assistant.is_assistant2_enabled = is_assistant2_enabled; - }); - } + // Don't register now that the Agent is released. + if false { + cx.observe_new(|_, window, cx| { + let Some(window) = window else { + return; + }; + let workspace = cx.entity().clone(); + InlineAssistant::update_global(cx, |inline_assistant, cx| { + inline_assistant.register_workspace(&workspace, window, cx) + }); }) .detach(); - }) - .detach(); + } } const PROMPT_HISTORY_MAX_LEN: usize = 20; @@ -108,7 +100,6 @@ pub struct InlineAssistant { prompt_builder: Arc, telemetry: Arc, fs: Arc, - is_assistant2_enabled: bool, } impl Global for InlineAssistant {} @@ -130,7 +121,6 @@ impl InlineAssistant { prompt_builder, telemetry, fs, - is_assistant2_enabled: false, } } @@ -199,7 +189,7 @@ impl InlineAssistant { window: &mut Window, cx: &mut App, ) { - let is_assistant2_enabled = self.is_assistant2_enabled; + let is_assistant2_enabled = true; if let Some(editor) = item.act_as::(cx) { editor.update(cx, |editor, cx| { diff --git a/crates/assistant_context_editor/Cargo.toml b/crates/assistant_context_editor/Cargo.toml index 9ead468276..ecd5c2deb3 100644 --- a/crates/assistant_context_editor/Cargo.toml +++ b/crates/assistant_context_editor/Cargo.toml @@ -22,7 +22,6 @@ clock.workspace = true collections.workspace = true context_server.workspace = true editor.workspace = true -feature_flags.workspace = true fs.workspace = true futures.workspace = true fuzzy.workspace = true diff --git a/crates/assistant_context_editor/src/context_editor.rs b/crates/assistant_context_editor/src/context_editor.rs index e379231d08..cd768db396 100644 --- a/crates/assistant_context_editor/src/context_editor.rs +++ b/crates/assistant_context_editor/src/context_editor.rs @@ -18,7 +18,6 @@ use editor::{ scroll::Autoscroll, }; use editor::{FoldPlaceholder, display_map::CreaseId}; -use feature_flags::{Assistant2FeatureFlag, FeatureFlagAppExt as _}; use fs::Fs; use futures::FutureExt; use gpui::{ @@ -2395,19 +2394,11 @@ impl ContextEditor { .on_click({ let focus_handle = self.focus_handle(cx).clone(); move |_event, window, cx| { - if cx.has_flag::() { - focus_handle.dispatch_action( - &zed_actions::agent::OpenConfiguration, - window, - cx, - ); - } else { - focus_handle.dispatch_action( - &zed_actions::assistant::ShowConfiguration, - window, - cx, - ); - }; + focus_handle.dispatch_action( + &zed_actions::agent::OpenConfiguration, + window, + cx, + ); } }), ) diff --git a/crates/assistant_settings/Cargo.toml b/crates/assistant_settings/Cargo.toml index 98eb8954df..8a8316fae0 100644 --- a/crates/assistant_settings/Cargo.toml +++ b/crates/assistant_settings/Cargo.toml @@ -15,7 +15,6 @@ path = "src/assistant_settings.rs" anthropic = { workspace = true, features = ["schemars"] } anyhow.workspace = true collections.workspace = true -feature_flags.workspace = true gpui.workspace = true indexmap.workspace = true language_model.workspace = true diff --git a/crates/assistant_settings/src/assistant_settings.rs b/crates/assistant_settings/src/assistant_settings.rs index 00106ed490..63cd689a4f 100644 --- a/crates/assistant_settings/src/assistant_settings.rs +++ b/crates/assistant_settings/src/assistant_settings.rs @@ -7,7 +7,6 @@ use anthropic::Model as AnthropicModel; use anyhow::{Result, bail}; use collections::IndexMap; use deepseek::Model as DeepseekModel; -use feature_flags::{AgentStreamEditsFeatureFlag, Assistant2FeatureFlag, FeatureFlagAppExt}; use gpui::{App, Pixels, SharedString}; use language_model::{CloudModel, LanguageModel}; use lmstudio::Model as LmStudioModel; @@ -107,16 +106,13 @@ impl AssistantSettings { .and_then(|m| m.temperature) } - pub fn stream_edits(&self, cx: &App) -> bool { - cx.has_flag::() || self.stream_edits + pub fn stream_edits(&self, _cx: &App) -> bool { + // TODO: Remove the `stream_edits` setting. + true } - pub fn are_live_diffs_enabled(&self, cx: &App) -> bool { - if cx.has_flag::() { - return false; - } - - cx.is_staff() || self.enable_experimental_live_diffs + pub fn are_live_diffs_enabled(&self, _cx: &App) -> bool { + false } pub fn set_inline_assistant_model(&mut self, provider: String, model: String) { diff --git a/crates/assistant_tools/src/assistant_tools.rs b/crates/assistant_tools/src/assistant_tools.rs index bd6b5528a3..72cc459d96 100644 --- a/crates/assistant_tools/src/assistant_tools.rs +++ b/crates/assistant_tools/src/assistant_tools.rs @@ -27,7 +27,6 @@ use std::sync::Arc; use assistant_settings::AssistantSettings; use assistant_tool::ToolRegistry; use copy_path_tool::CopyPathTool; -use feature_flags::{AgentStreamEditsFeatureFlag, FeatureFlagAppExt}; use gpui::{App, Entity}; use http_client::HttpClientWithUrl; use language_model::LanguageModelRegistry; @@ -77,8 +76,6 @@ pub fn init(http_client: Arc, cx: &mut App) { registry.register_tool(FetchTool::new(http_client)); register_edit_file_tool(cx); - cx.observe_flag::(|_, cx| register_edit_file_tool(cx)) - .detach(); cx.observe_global::(register_edit_file_tool) .detach(); diff --git a/crates/feature_flags/src/feature_flags.rs b/crates/feature_flags/src/feature_flags.rs index 19a7bdf676..5d7ed55e45 100644 --- a/crates/feature_flags/src/feature_flags.rs +++ b/crates/feature_flags/src/feature_flags.rs @@ -56,41 +56,6 @@ pub trait FeatureFlag { } } -/// Controls the values of various feature flags for the Agent launch. -/// -/// Change this to `true` when we're ready to build the release candidate. -const AGENT_LAUNCH: bool = true; - -pub struct Assistant2FeatureFlag; - -impl FeatureFlag for Assistant2FeatureFlag { - const NAME: &'static str = "assistant2"; - - fn enabled_for_all() -> bool { - AGENT_LAUNCH - } -} - -pub struct AgentStreamEditsFeatureFlag; - -impl FeatureFlag for AgentStreamEditsFeatureFlag { - const NAME: &'static str = "agent-stream-edits"; - - fn enabled_for_all() -> bool { - AGENT_LAUNCH - } -} - -pub struct NewBillingFeatureFlag; - -impl FeatureFlag for NewBillingFeatureFlag { - const NAME: &'static str = "new-billing"; - - fn enabled_for_all() -> bool { - AGENT_LAUNCH - } -} - pub struct PredictEditsRateCompletionsFeatureFlag; impl FeatureFlag for PredictEditsRateCompletionsFeatureFlag { const NAME: &'static str = "predict-edits-rate-completions"; diff --git a/crates/language_model_selector/src/language_model_selector.rs b/crates/language_model_selector/src/language_model_selector.rs index 0bc3060e6b..a6a25ae426 100644 --- a/crates/language_model_selector/src/language_model_selector.rs +++ b/crates/language_model_selector/src/language_model_selector.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use collections::{HashSet, IndexMap}; -use feature_flags::{Assistant2FeatureFlag, ZedProFeatureFlag}; +use feature_flags::ZedProFeatureFlag; use gpui::{ Action, AnyElement, AnyView, App, Corner, DismissEvent, Entity, EventEmitter, FocusHandle, Focusable, Subscription, Task, WeakEntity, action_with_deprecated_aliases, @@ -597,13 +597,10 @@ impl PickerDelegate for LanguageModelPickerDelegate { .icon_color(Color::Muted) .icon_position(IconPosition::Start) .on_click(|_, window, cx| { - let configure_action = if cx.has_flag::() { - zed_actions::agent::OpenConfiguration.boxed_clone() - } else { - zed_actions::assistant::ShowConfiguration.boxed_clone() - }; - - window.dispatch_action(configure_action, cx); + window.dispatch_action( + zed_actions::agent::OpenConfiguration.boxed_clone(), + cx, + ); }), ) .into_any(), diff --git a/crates/title_bar/Cargo.toml b/crates/title_bar/Cargo.toml index 7e89a1fb25..5bd5821fa2 100644 --- a/crates/title_bar/Cargo.toml +++ b/crates/title_bar/Cargo.toml @@ -32,7 +32,6 @@ call.workspace = true chrono.workspace = true client.workspace = true db.workspace = true -feature_flags.workspace = true gpui.workspace = true notifications.workspace = true project.workspace = true diff --git a/crates/title_bar/src/title_bar.rs b/crates/title_bar/src/title_bar.rs index 5b68fa4be0..15f24074f1 100644 --- a/crates/title_bar/src/title_bar.rs +++ b/crates/title_bar/src/title_bar.rs @@ -19,7 +19,6 @@ use crate::platforms::{platform_linux, platform_mac, platform_windows}; use auto_update::AutoUpdateStatus; use call::ActiveCall; use client::{Client, UserStore}; -use feature_flags::{FeatureFlagAppExt, NewBillingFeatureFlag}; use gpui::{ Action, AnyElement, App, Context, Corner, Decorations, Element, Entity, InteractiveElement, Interactivity, IntoElement, MouseButton, ParentElement, Render, Stateful, @@ -678,22 +677,20 @@ impl TitleBar { PopoverMenu::new("user-menu") .anchor(Corner::TopRight) .menu(move |window, cx| { - ContextMenu::build(window, cx, |menu, _, cx| { - menu.when(cx.has_flag::(), |menu| { - menu.action( - format!( - "Current Plan: {}", - match plan { - None => "", - Some(proto::Plan::Free) => "Free", - Some(proto::Plan::ZedPro) => "Pro", - Some(proto::Plan::ZedProTrial) => "Pro (Trial)", - } - ), - zed_actions::OpenAccountSettings.boxed_clone(), - ) - .separator() - }) + ContextMenu::build(window, cx, |menu, _, _cx| { + menu.action( + format!( + "Current Plan: {}", + match plan { + None => "", + Some(proto::Plan::Free) => "Free", + Some(proto::Plan::ZedPro) => "Pro", + Some(proto::Plan::ZedProTrial) => "Pro (Trial)", + } + ), + zed_actions::OpenAccountSettings.boxed_clone(), + ) + .separator() .action("Settings", zed_actions::OpenSettings.boxed_clone()) .action("Key Bindings", Box::new(zed_actions::OpenKeymap)) .action( diff --git a/crates/zed/src/zed.rs b/crates/zed/src/zed.rs index fac6890c96..283f814633 100644 --- a/crates/zed/src/zed.rs +++ b/crates/zed/src/zed.rs @@ -19,7 +19,7 @@ use collections::VecDeque; use debugger_ui::debugger_panel::DebugPanel; use editor::ProposedChangesEditorToolbar; use editor::{Editor, MultiBuffer, scroll::Autoscroll}; -use feature_flags::{DebuggerFeatureFlag, FeatureFlagAppExt, FeatureFlagViewExt}; +use feature_flags::{DebuggerFeatureFlag, FeatureFlagViewExt}; use futures::{StreamExt, channel::mpsc, select_biased}; use git_ui::git_panel::GitPanel; use git_ui::project_diff::ProjectDiffToolbar; @@ -53,7 +53,6 @@ use settings::{ }; use std::path::PathBuf; use std::sync::atomic::{self, AtomicBool}; -use std::time::Duration; use std::{borrow::Cow, path::Path, sync::Arc}; use terminal_view::terminal_panel::{self, TerminalPanel}; use theme::{ActiveTheme, ThemeSettings}; @@ -373,9 +372,6 @@ fn initialize_panels( window: &mut Window, cx: &mut Context, ) { - let assistant2_feature_flag = - cx.wait_for_flag_or_timeout::(Duration::from_secs(5)); - let prompt_builder = prompt_builder.clone(); cx.spawn_in(window, async move |workspace_handle, cx| { @@ -436,11 +432,7 @@ fn initialize_panels( workspace.add_panel(git_panel, window, cx); })?; - let is_assistant2_enabled = if cfg!(test) { - false - } else { - assistant2_feature_flag.await - }; + let is_assistant2_enabled = !cfg!(test); let (assistant_panel, assistant2_panel) = if is_assistant2_enabled { let assistant2_panel =