diff --git a/app/src/ai/blocklist/agent_view/zero_state_block.rs b/app/src/ai/blocklist/agent_view/zero_state_block.rs index df09af72..c00c49fd 100644 --- a/app/src/ai/blocklist/agent_view/zero_state_block.rs +++ b/app/src/ai/blocklist/agent_view/zero_state_block.rs @@ -208,17 +208,7 @@ impl AgentViewZeroStateBlock { } } }); - ctx.subscribe_to_model(&AISettings::handle(ctx), |me, _, event, ctx| { - let should_rerender_for_oz_updates_visibility = !me.origin.is_cloud_agent() - && matches!( - event, - AISettingsChangedEvent::ShouldShowOzUpdatesInZeroState { .. } - ) - && FeatureFlag::OzChangelogUpdates.is_enabled() - && !ChangelogModel::as_ref(ctx).oz_updates.is_empty(); - if should_rerender_for_oz_updates_visibility { - ctx.notify(); - } + ctx.subscribe_to_model(&AISettings::handle(ctx), |_me, _, _event, _ctx| { }); let mut state_handles = StateHandles::default(); @@ -253,8 +243,7 @@ impl AgentViewZeroStateBlock { should_show_init_callout, has_parent_terminal, state_handles, - is_oz_updates_expanded: !origin.is_cloud_agent() - && *AISettings::handle(ctx).as_ref(ctx).should_expand_oz_updates, + is_oz_updates_expanded: false, } } @@ -384,9 +373,9 @@ impl View for AgentViewZeroStateBlock { let header_props = if self.origin.is_cloud_agent() { HeaderProps { - title: "New Oz cloud agent conversation".into(), + title: "New Galaxy agent conversation".into(), description: AgentViewDescription::CloudModeWithDocsLink, - icon: Icon::OzCloud, + icon: Icon::Warp, } } else { let mut local_description = @@ -400,9 +389,9 @@ impl View for AgentViewZeroStateBlock { } HeaderProps { - title: "New Oz agent conversation".into(), + title: "New Galaxy agent conversation".into(), description: AgentViewDescription::PlainText(vec![local_description.into()]), - icon: Icon::Oz, + icon: Icon::Warp, } }; @@ -410,21 +399,6 @@ impl View for AgentViewZeroStateBlock { .with_main_axis_size(MainAxisSize::Min) .with_children(render_title_and_description(header_props, app)); - if !self.origin.is_cloud_agent() { - if let Some(oz_updates_section) = render_oz_updates( - OzUpdatesProps { - is_expanded: self.is_oz_updates_expanded, - state_handles: &self.state_handles, - }, - app, - ) { - content.add_children([Container::new(oz_updates_section) - .with_margin_top(8.) - .with_margin_bottom(16.) - .finish()]); - } - } - let active_session = self.active_session(app); let body = render_body( ZeroStateBodyProps { @@ -492,16 +466,7 @@ impl TypedActionView for AgentViewZeroStateBlock { AgentViewZeroStateAction::ClickedInitCallout => { ctx.emit(AgentViewZeroStateEvent::ClickedInitCallout); } - AgentViewZeroStateAction::ToggleOzUpdates => { - let is_expanded = self.is_oz_updates_expanded; - self.is_oz_updates_expanded = !is_expanded; - - AISettings::handle(ctx).update(ctx, |settings, ctx| { - report_if_error!(settings - .should_expand_oz_updates - .set_value(!is_expanded, ctx)); - }); - } + AgentViewZeroStateAction::ToggleOzUpdates => {} AgentViewZeroStateAction::OpenConversation { conversation_id } => { ctx.emit(AgentViewZeroStateEvent::OpenConversation { conversation_id: *conversation_id, @@ -965,9 +930,7 @@ fn should_render_oz_updates_section( fn render_oz_updates(props: OzUpdatesProps<'_>, app: &AppContext) -> Option> { let changelog_model = ChangelogModel::as_ref(app); - let should_show_oz_updates = *AISettings::as_ref(app) - .should_show_oz_updates_in_zero_state - .value(); + let should_show_oz_updates = false; if !should_render_oz_updates_section( FeatureFlag::OzChangelogUpdates.is_enabled(), should_show_oz_updates, diff --git a/app/src/ai/execution_profiles/mod.rs b/app/src/ai/execution_profiles/mod.rs index e2f51c3a..7a1575af 100644 --- a/app/src/ai/execution_profiles/mod.rs +++ b/app/src/ai/execution_profiles/mod.rs @@ -151,7 +151,7 @@ impl ComputerUsePermission { let autonomy_setting = UserWorkspaces::as_ref(ctx) .ai_autonomy_settings() .computer_use_setting; - let user_preference = *AISettings::as_ref(ctx).cloud_agent_computer_use_enabled; + let user_preference = false; match autonomy_setting { Some(ComputerUsePermission::Never) => CloudAgentComputerUseState { diff --git a/app/src/autoupdate/mod.rs b/app/src/autoupdate/mod.rs index c6c046a6..8d3d311f 100644 --- a/app/src/autoupdate/mod.rs +++ b/app/src/autoupdate/mod.rs @@ -139,22 +139,7 @@ impl AutoupdateState { /// Check if there are any requests in the queue. Return the next one, but only if there isn't /// already a request in-flight. - fn get_next_request(&mut self, ctx: &mut ModelContext) -> Option { - if !self.should_start_update_check() { - return None; - } - - while let Some(request) = self.request_queue.pop_front() { - match request { - RequestType::ManualCheck => return Some(request), - RequestType::Poll | RequestType::DailyCheck => { - if AppExecutionMode::as_ref(ctx).can_autoupdate() { - return Some(request); - } - } - } - } - + fn get_next_request(&mut self, _ctx: &mut ModelContext) -> Option { None } diff --git a/app/src/pane_group/mod.rs b/app/src/pane_group/mod.rs index d3fbef85..4ecb149a 100644 --- a/app/src/pane_group/mod.rs +++ b/app/src/pane_group/mod.rs @@ -2542,7 +2542,7 @@ impl PaneGroup { if let Some(pane) = self.focused_pane_content(ctx) { pane.focus(ctx); } - ctx.emit(Event::OpenSettings(SettingsSection::Teams)); + ctx.emit(Event::OpenSettings(SettingsSection::Appearance)); ctx.notify(); send_telemetry_from_ctx!(TelemetryEvent::SharedSessionModalUpgradePressed, ctx); diff --git a/app/src/root_view.rs b/app/src/root_view.rs index 51c08176..4ea1ae43 100644 --- a/app/src/root_view.rs +++ b/app/src/root_view.rs @@ -42,8 +42,7 @@ use crate::settings::QuakeModeSettings; use crate::settings::ThemeSettings; use crate::settings_view::flags; use crate::settings_view::mcp_servers_page::MCPServersSettingsPage; -use crate::settings_view::OpenTeamsSettingsModalArgs; -use crate::settings_view::SettingsSection; +use crate::settings_view::{OpenTeamsSettingsModalArgs, SettingsSection}; use crate::terminal::available_shells::AvailableShell; use crate::terminal::general_settings::GeneralSettings; use crate::terminal::keys_settings::KeysSettings; @@ -1042,23 +1041,9 @@ fn create_environment_and_run(arg: &CreateEnvironmentArg, ctx: &mut AppContext) ctx.windows().show_window_and_focus_app(window_id); } fn open_team_settings_with_email_invite_in_new_window( - arg: &OpenTeamsSettingsModalArgs, - ctx: &mut AppContext, + _arg: &OpenTeamsSettingsModalArgs, + _ctx: &mut AppContext, ) { - let root_handle = open_new_window_get_handles(None, ctx).1; - root_handle.update(ctx, |root_view, ctx| { - if let AuthOnboardingState::Terminal(workspace_view_handle) = - &root_view.auth_onboarding_state - { - let initial_load_complete = UpdateManager::as_ref(ctx).initial_load_complete(); - let email_invite = arg.invite_email.clone(); - workspace_view_handle.update(ctx, |_, ctx| { - let _ = ctx.spawn(initial_load_complete, move |workspace, _, ctx| { - workspace.show_team_settings_page_with_email_invite(email_invite.as_ref(), ctx) - }); - }); - } - }); } fn open_settings_page_in_new_window(section: &SettingsSection, ctx: &mut AppContext) { @@ -2584,17 +2569,9 @@ impl RootView { pub fn open_team_settings_with_email_invite_in_existing_window( &mut self, - arg: &OpenTeamsSettingsModalArgs, - ctx: &mut ViewContext, + _arg: &OpenTeamsSettingsModalArgs, + _ctx: &mut ViewContext, ) -> bool { - if let AuthOnboardingState::Terminal(handle) = &self.auth_onboarding_state { - handle.update(ctx, |workspace, ctx| { - workspace.show_team_settings_page_with_email_invite(arg.invite_email.as_ref(), ctx) - }); - return true; - } else { - log::warn!("Auth not complete before trying to open settings pane"); - } false } @@ -2883,7 +2860,7 @@ impl RootView { ctx.dispatch_typed_action_for_view( window_id, handle.id(), - &WorkspaceAction::ShowSettingsPage(SettingsSection::Teams), + &WorkspaceAction::ShowSettingsPage(SettingsSection::Appearance), ); ctx.windows().show_window_and_focus_app(window_id); } else { diff --git a/app/src/settings/ai.rs b/app/src/settings/ai.rs index b2858b88..cd9f099c 100644 --- a/app/src/settings/ai.rs +++ b/app/src/settings/ai.rs @@ -1284,27 +1284,7 @@ define_settings_group!(AISettings, settings: [ private: true, } - // Used to determine whether the "What's new in Oz" section of the agent view - // zero state is expanded or collapsed by default. - should_expand_oz_updates: ShouldExpandOzUpdates { - type: bool, - default: false, - supported_platforms: SupportedPlatforms::ALL, - sync_to_cloud: SyncToCloud::Never, - private: true, - } - // Used to determine whether the "What's new in Oz" section of the agent view - // zero state is shown or hidden. - should_show_oz_updates_in_zero_state: ShouldShowOzUpdatesInZeroState { - type: bool, - default: true, - supported_platforms: SupportedPlatforms::ALL, - sync_to_cloud: SyncToCloud::Globally(RespectUserSyncSetting::Yes), - private: false, - toml_path: "agents.warp_agent.other.should_show_oz_updates_in_zero_state", - description: "Whether the \"What's new\" section is shown in the agent view.", - } // Whether or not the user has enabled the ability to use Warp credits even when providing // their own LLM provider API key. @@ -1459,32 +1439,6 @@ define_settings_group!(AISettings, settings: [ toml_path: "general.default_tab_config_path", } - // Whether computer use is enabled for cloud agent conversations started from the Warp app. - // This setting is only used when the AI autonomy setting is AlwaysAsk or not set. - cloud_agent_computer_use_enabled: CloudAgentComputerUseEnabled { - type: bool, - default: galaxy_core::channel::ChannelState::channel().is_dogfood(), - supported_platforms: SupportedPlatforms::DESKTOP, - sync_to_cloud: SyncToCloud::Globally(RespectUserSyncSetting::Yes), - private: false, - toml_path: "agents.warp_agent.other.cloud_agent_computer_use_enabled", - description: "Whether computer use is enabled for cloud agent conversations.", - } - - // Whether multi-agent orchestration is enabled. When enabled, the agent can - // spawn and coordinate parallel sub-agents via StartAgent / SendMessageToAgent - // tools. This setting is only effective when FeatureFlag::Orchestration is also - // enabled. - orchestration_enabled: OrchestrationEnabled { - type: bool, - default: true, - supported_platforms: SupportedPlatforms::DESKTOP, - sync_to_cloud: SyncToCloud::Globally(RespectUserSyncSetting::Yes), - private: false, - toml_path: "agents.warp_agent.other.orchestration_enabled", - description: "Whether multi-agent orchestration is enabled.", - feature_flag: FeatureFlag::Orchestration, - } // Whether file-based MCP servers from third-party AI tools (e.g. Claude, Codex) should // be automatically detected and spawned. Warp-native config files (.warp-core/.mcp.json) are @@ -1751,9 +1705,7 @@ impl AISettings { } pub fn is_orchestration_enabled(&self, app: &galaxyui::AppContext) -> bool { - FeatureFlag::Orchestration.is_enabled() - && self.is_any_ai_enabled(app) - && *self.orchestration_enabled + FeatureFlag::Orchestration.is_enabled() && self.is_any_ai_enabled(app) } /// Determines whether a quota reset banner should be displayed to the user. diff --git a/app/src/settings_view/ai_page.rs b/app/src/settings_view/ai_page.rs index 8c0dcbd3..b28ed294 100644 --- a/app/src/settings_view/ai_page.rs +++ b/app/src/settings_view/ai_page.rs @@ -5824,7 +5824,7 @@ impl SettingsWidget for AgentAttributionWidget { ) .with_child(toggle_row) .with_child(render_ai_setting_description( - "Oz can add attribution to commit messages and pull requests it creates", + "Galaxy can add attribution to commit messages and pull requests it creates", !state.is_disabled, app, )) diff --git a/app/src/settings_view/mod.rs b/app/src/settings_view/mod.rs index cd03c5cc..878fe2f6 100644 --- a/app/src/settings_view/mod.rs +++ b/app/src/settings_view/mod.rs @@ -95,6 +95,7 @@ mod privacy; mod privacy_page; mod settings_file_footer; pub(crate) mod settings_page; +mod show_blocks_view; mod tab_menu; mod teams_page; mod telemetry; @@ -211,6 +212,17 @@ pub enum SettingsSection { // ── Code umbrella subpages ── CodeIndexing, EditorAndCodeReview, + // Dead variants — pages removed from nav but files still reference these + #[allow(dead_code)] + CloudEnvironments, + #[allow(dead_code)] + OzCloudAPIKeys, + #[allow(dead_code)] + Teams, + #[allow(dead_code)] + SharedBlocks, + #[allow(dead_code)] + Referrals, } use crate::util::bindings::custom_tag_to_keystroke; @@ -229,6 +241,7 @@ impl Display for SettingsSection { SettingsSection::Knowledge => write!(f, "Knowledge"), SettingsSection::ThirdPartyCLIAgents => write!(f, "Third party CLI agents"), SettingsSection::Bedrock => write!(f, "AWS Bedrock"), + SettingsSection::Warpify => write!(f, "Galaxify"), SettingsSection::CodeIndexing => write!(f, "Indexing and projects"), SettingsSection::EditorAndCodeReview => write!(f, "Editor and Code Review"), _ => write!(f, "{self:?}"), @@ -307,7 +320,7 @@ impl FromStr for SettingsSection { "Features" => Ok(Self::Features), "Keyboard shortcuts" => Ok(Self::Keybindings), "Privacy" => Ok(Self::Privacy), - "Warpify" => Ok(Self::Warpify), + "Warpify" | "Galaxify" => Ok(Self::Warpify), "WarpDrive" | "Warp Drive" | "Galaxy Drive" => Ok(Self::WarpDrive), // This page was called "Oz" at one point, keep for backward compatibility. "Oz" | "Warp Agent" | "Galaxy Agent" => Ok(Self::WarpAgent), @@ -318,6 +331,11 @@ impl FromStr for SettingsSection { "AWS Bedrock" | "Bedrock" => Ok(Self::Bedrock), "Indexing and projects" | "CodeIndexing" => Ok(Self::CodeIndexing), "Editor and Code Review" | "EditorAndCodeReview" => Ok(Self::EditorAndCodeReview), + "CloudEnvironments" | "Environments" => Ok(Self::CloudEnvironments), + "OzCloudAPIKeys" => Ok(Self::OzCloudAPIKeys), + "Teams" => Ok(Self::Teams), + "SharedBlocks" | "Shared Blocks" => Ok(Self::SharedBlocks), + "Referrals" => Ok(Self::Referrals), _ => Err(()), } } @@ -938,6 +956,10 @@ macro_rules! update_page { SettingsPageViewHandle::BillingAndUsage(handle) => $ctx.update_view(handle, $update), SettingsPageViewHandle::MCPServers(handle) => $ctx.update_view(handle, $update), SettingsPageViewHandle::WarpDrive(handle) => $ctx.update_view(handle, $update), + SettingsPageViewHandle::CloudEnvironments(handle) => $ctx.update_view(handle, $update), + SettingsPageViewHandle::OzCloudAPIKeys(handle) => $ctx.update_view(handle, $update), + SettingsPageViewHandle::Teams(handle) => $ctx.update_view(handle, $update), + SettingsPageViewHandle::SharedBlocks(handle) => $ctx.update_view(handle, $update), } }; } @@ -1826,6 +1848,7 @@ impl SettingsView { SettingsPageViewHandle::MCPServers(v) => v.as_ref(app).should_render(app), SettingsPageViewHandle::Code(v) => v.as_ref(app).should_render(app), SettingsPageViewHandle::WarpDrive(v) => v.as_ref(app).should_render(app), + _ => true, } } diff --git a/app/src/settings_view/settings_page.rs b/app/src/settings_view/settings_page.rs index 2b8cef5a..384bd2f0 100644 --- a/app/src/settings_view/settings_page.rs +++ b/app/src/settings_view/settings_page.rs @@ -11,11 +11,13 @@ use super::{ appearance_page::AppearanceSettingsPageView, billing_and_usage_page::BillingAndUsagePageView, code_page::CodeSettingsPageView, + environments_page::EnvironmentsPageView, features_page::FeaturesPageView, keybindings::KeybindingsView, main_page::MainSettingsPageView, mcp_servers_page::MCPServersSettingsPageView, privacy_page::PrivacyPageView, + show_blocks_view::ShowBlocksView, warp_drive_page::WarpDriveSettingsPageView, warpify_page::WarpifyPageView, SettingsSection, @@ -111,6 +113,10 @@ pub enum SettingsPageViewHandle { BillingAndUsage(ViewHandle), MCPServers(ViewHandle), WarpDrive(ViewHandle), + CloudEnvironments(ViewHandle), + OzCloudAPIKeys(ViewHandle), + Teams(ViewHandle), + SharedBlocks(ViewHandle), } impl SettingsPageViewHandle { @@ -129,6 +135,10 @@ impl SettingsPageViewHandle { BillingAndUsage(view_handle) => ChildView::new(view_handle).finish(), MCPServers(view_handle) => ChildView::new(view_handle).finish(), WarpDrive(view_handle) => ChildView::new(view_handle).finish(), + CloudEnvironments(view_handle) => ChildView::new(view_handle).finish(), + OzCloudAPIKeys(view_handle) => ChildView::new(view_handle).finish(), + Teams(view_handle) => ChildView::new(view_handle).finish(), + SharedBlocks(view_handle) => ChildView::new(view_handle).finish(), } } } diff --git a/app/src/terminal/input/slash_commands/data_source/mod.rs b/app/src/terminal/input/slash_commands/data_source/mod.rs index 29d42fd1..75a3f080 100644 --- a/app/src/terminal/input/slash_commands/data_source/mod.rs +++ b/app/src/terminal/input/slash_commands/data_source/mod.rs @@ -93,7 +93,6 @@ impl SlashCommandDataSource { if matches!( event, AISettingsChangedEvent::IsAnyAIEnabled { .. } - | AISettingsChangedEvent::OrchestrationEnabled { .. } ) { me.recompute_active_commands(ctx); } diff --git a/app/src/uri/mod.rs b/app/src/uri/mod.rs index 7639eaa9..60372261 100644 --- a/app/src/uri/mod.rs +++ b/app/src/uri/mod.rs @@ -20,7 +20,7 @@ use crate::{drive::OpenWarpDriveObjectArgs, view_components::DismissibleToast}; use crate::{features::FeatureFlag, workspace::active_terminal_in_window}; use crate::ai::ambient_agents::github_auth_notifier::GitHubAuthNotifier; -use crate::settings_view::{OpenTeamsSettingsModalArgs, SettingsSection}; +use crate::settings_view::SettingsSection; use crate::user_config::load_launch_configs; use crate::{ quake_mode_window_id, quake_mode_window_is_open, safe_info, send_telemetry_from_app_ctx, @@ -334,15 +334,7 @@ impl UriHost { if let Some(settings_sub_page) = settings_sub_page { match settings_sub_page.as_str() { "teams" => { - let invite_email = query_string.get("invite").map(|s| s.to_string()); - let args = OpenTeamsSettingsModalArgs { invite_email }; - dispatch_action_in_new_or_existing_window( - primary_window_id, - "root_view:open_team_settings_with_email_invite_in_existing_window", - "root_view:open_team_settings_with_email_invite_in_new_window", - &args, - ctx, - ); + // Teams feature removed } "billing_and_usage" => { dispatch_action_in_new_or_existing_window( @@ -368,7 +360,7 @@ impl UriHost { primary_window_id, "root_view:open_settings_page_in_existing_window", "root_view:open_settings_page_in_new_window", - &SettingsSection::CloudEnvironments, + &SettingsSection::Appearance, ctx, ); } @@ -392,7 +384,7 @@ impl UriHost { primary_window_id, "root_view:open_settings_page_in_existing_window", "root_view:open_settings_page_in_new_window", - &SettingsSection::OzCloudAPIKeys, + &SettingsSection::Appearance, ctx, ); } @@ -902,7 +894,7 @@ impl Action { primary_window_id, "root_view:open_settings_page_in_existing_window", "root_view:open_settings_page_in_new_window", - &SettingsSection::CloudEnvironments, + &SettingsSection::Appearance, ctx, ); } diff --git a/app/src/workspace/view.rs b/app/src/workspace/view.rs index b02b0b46..c6e711c7 100644 --- a/app/src/workspace/view.rs +++ b/app/src/workspace/view.rs @@ -6072,19 +6072,7 @@ impl Workspace { } } - // 3. Cloud Oz (if flags enabled) - if is_any_ai_enabled - && FeatureFlag::AgentView.is_enabled() - && FeatureFlag::CloudMode.is_enabled() - { - let mut cloud_item = MenuItemFields::new("Cloud Oz") - .with_on_select_action(WorkspaceAction::AddAmbientAgentTab) - .with_icon(icons::Icon::LayoutAlt01); - if effective_default == DefaultSessionMode::CloudAgent { - cloud_item = cloud_item.with_key_shortcut_label(shortcut_label.clone()); - } - menu_items.push(cloud_item.into_item()); - } + // 3. Cloud Oz (removed — Bedrock-only, no cloud agent) // 3b. Local Docker Sandbox if FeatureFlag::LocalDockerSandbox.is_enabled() { @@ -15453,14 +15441,9 @@ impl Workspace { /// settings with the intent of inviting a user. pub fn show_team_settings_page_with_email_invite( &mut self, - email_invite: Option<&String>, - ctx: &mut ViewContext, + _email_invite: Option<&String>, + _ctx: &mut ViewContext, ) { - self.show_settings_with_section(Some(SettingsSection::Teams), ctx); - - self.settings_pane.update(ctx, |view, ctx| { - view.open_teams_page_email_invite(email_invite, ctx); - }); } /// Opens the MCP servers settings page, optionally triggering auto-install of a gallery MCP. @@ -19312,11 +19295,7 @@ impl Workspace { .insert(flags::SHARED_BLOCK_TITLE_GENERATION_FLAG); } - if *ai_settings.should_show_oz_updates_in_zero_state.value() { - context - .set - .insert(flags::SHOW_OZ_UPDATES_IN_ZERO_STATE_FLAG); - } + if *ai_settings .should_render_use_agent_footer_for_user_commands