v1.4.0: Auto-compact streaming, Bedrock summarization support, subagent orchestration, and Galaxy rebrand continuation
Major features: - Auto-compact: triggers conversation summarization when context window >= 85%, compacts Bedrock message history to a summary pair, and tracks live context tokens - Bedrock summarization: plumbs `is_summarization` flag through translator/client/response pipeline, handles SummarizeConversation input type, and marks `summarized` in metadata - Session restore: rebuilds bedrock_message_history from persisted task messages via newly-public `convert_proto_message`, preventing empty history on reconnect - Subagent orchestration: adds SubagentQuestion/Answer/CompletionSummary event types, parent-child question routing with depth limits, retry counting, and drain methods - Summarization UI: inline SummarizationView in AI blocks with progress/finished states Refactors: - Rename WarpTheme → GalaxyTheme across ~100 files (rebrand continuation) - Rename warp_home_config_dir → galaxy_home_config_dir and related path functions - Predefined rules: replace "System Defined Rule #N" with descriptive names (e.g. "Correctness Over Speed", "Never Guess") and add lookup helpers - Usage view: replace cumulative input/output token display with live context tokens, cache hit rate calculation, and separate cache read/write stats - Telemetry: remove verbose doc comments, simplify trait definitions - Facts view: simplify delete permission check (always allow local deletion) - Remove warp_managed_paths_watcher.rs (dead code) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
eaa2ddc75e
commit
6f54e2cb30
@@ -2059,7 +2059,7 @@ pub enum AISettingsPageAction {
|
||||
RemoveDirectoryFromCodeReadAllowlist(PathBuf),
|
||||
ToggleRules,
|
||||
ToggleRuleSuggestions,
|
||||
ToggleWarpDriveContext,
|
||||
ToggleGalaxyDriveContext,
|
||||
SetApplyCodeDiffs(ActionPermission),
|
||||
SetReadFiles(ActionPermission),
|
||||
SetExecuteCommands(ActionPermission),
|
||||
@@ -2618,7 +2618,7 @@ impl TypedActionView for AISettingsPageView {
|
||||
});
|
||||
ctx.notify();
|
||||
}
|
||||
AISettingsPageAction::ToggleWarpDriveContext => {
|
||||
AISettingsPageAction::ToggleGalaxyDriveContext => {
|
||||
AISettings::handle(ctx).update(ctx, |settings, ctx| {
|
||||
let _ = settings
|
||||
.warp_drive_context_enabled
|
||||
@@ -5094,7 +5094,7 @@ impl AIFactWidget {
|
||||
) -> Box<dyn Element> {
|
||||
let toggle = render_ai_setting_toggle::<WarpDriveContextEnabled>(
|
||||
"Galaxy Drive as agent context",
|
||||
AISettingsPageAction::ToggleWarpDriveContext,
|
||||
AISettingsPageAction::ToggleGalaxyDriveContext,
|
||||
*ai_settings.warp_drive_context_enabled,
|
||||
ai_settings.is_any_ai_enabled(app),
|
||||
self.warp_drive_context_toggle.clone(),
|
||||
|
||||
@@ -45,8 +45,8 @@ use crate::terminal::settings::{
|
||||
};
|
||||
use crate::terminal::{BlockListSettings, ShowBlockDividers};
|
||||
use crate::terminal::{ShowJumpToBottomOfBlockButton, SizeInfo};
|
||||
use crate::themes::theme::{self, RespectSystemTheme, SelectedSystemThemes, ThemeKind, WarpTheme};
|
||||
use crate::user_config::WarpConfig;
|
||||
use crate::themes::theme::{self, RespectSystemTheme, SelectedSystemThemes, ThemeKind, GalaxyTheme};
|
||||
use crate::user_config::GalaxyConfig;
|
||||
use crate::util::bindings;
|
||||
use crate::window_settings::{
|
||||
BackgroundBlurRadius, BackgroundBlurTexture, BackgroundOpacity, LeftPanelVisibilityAcrossTabs,
|
||||
@@ -2734,7 +2734,7 @@ impl ThemeSelectWidget {
|
||||
is_selected: bool,
|
||||
app: &AppContext,
|
||||
) -> Box<dyn Element> {
|
||||
let theme: WarpTheme = WarpConfig::as_ref(app).theme_config().theme(&theme_kind);
|
||||
let theme: GalaxyTheme = GalaxyConfig::as_ref(app).theme_config().theme(&theme_kind);
|
||||
let mode_ui_label = match theme_chooser_mode {
|
||||
ThemeChooserMode::SystemLight => "Light",
|
||||
ThemeChooserMode::SystemDark => "Dark",
|
||||
|
||||
@@ -2016,7 +2016,7 @@ impl CodePageWidget {
|
||||
&self,
|
||||
server_model: Option<&galaxyui::ModelHandle<LspServerModel>>,
|
||||
app: &AppContext,
|
||||
theme: &galaxy_core::ui::theme::WarpTheme,
|
||||
theme: &galaxy_core::ui::theme::GalaxyTheme,
|
||||
) -> (ColorU, &'static str) {
|
||||
match server_model {
|
||||
Some(model) => {
|
||||
|
||||
@@ -77,7 +77,7 @@ use crate::terminal::settings::{
|
||||
};
|
||||
use crate::terminal::{BlockListSettings, SnackbarEnabled};
|
||||
use crate::undo_close::UndoCloseSettings;
|
||||
use crate::user_config::{WarpConfig, WarpConfigUpdateEvent};
|
||||
use crate::user_config::{GalaxyConfig, GalaxyConfigUpdateEvent};
|
||||
use crate::util::bindings::{
|
||||
keybinding_name_to_display_string, reset_keybinding_to_default, set_custom_keybinding,
|
||||
};
|
||||
@@ -2141,8 +2141,8 @@ impl FeaturesPageView {
|
||||
let default_session_mode_dropdown = ctx.add_typed_action_view(FilterableDropdown::new);
|
||||
Self::update_default_session_mode_dropdown(default_session_mode_dropdown.clone(), ctx);
|
||||
|
||||
ctx.subscribe_to_model(&WarpConfig::handle(ctx), |me, _, event, ctx| {
|
||||
if matches!(event, WarpConfigUpdateEvent::TabConfigs) {
|
||||
ctx.subscribe_to_model(&GalaxyConfig::handle(ctx), |me, _, event, ctx| {
|
||||
if matches!(event, GalaxyConfigUpdateEvent::TabConfigs) {
|
||||
Self::update_default_session_mode_dropdown(
|
||||
me.default_session_mode_dropdown.clone(),
|
||||
ctx,
|
||||
@@ -3339,7 +3339,7 @@ impl FeaturesPageView {
|
||||
.collect();
|
||||
|
||||
// Append each loaded tab config
|
||||
let tab_configs = WarpConfig::as_ref(ctx).tab_configs().to_vec();
|
||||
let tab_configs = GalaxyConfig::as_ref(ctx).tab_configs().to_vec();
|
||||
for config in &tab_configs {
|
||||
if let Some(path) = &config.source_path {
|
||||
items.push(DropdownItem::new(
|
||||
|
||||
@@ -160,7 +160,7 @@ impl From<&MainPageAction> for LoginGatedFeature {
|
||||
pub enum MainSettingsPageEvent {
|
||||
CheckForUpdate,
|
||||
#[allow(dead_code)]
|
||||
OpenWarpDrive,
|
||||
OpenGalaxyDrive,
|
||||
SignupAnonymousUser,
|
||||
}
|
||||
|
||||
|
||||
@@ -1555,7 +1555,7 @@ impl MCPServersListPageView {
|
||||
// If the path is the Warp data directory (e.g. ~/.warp or ~/.warp_dev), set the text to
|
||||
// "global". The Warp provider stores its data directory as the root path rather than the
|
||||
// home directory, unlike other providers that store the home directory directly.
|
||||
if root_path == &crate::warp_managed_paths_watcher::warp_data_dir() {
|
||||
if root_path == &crate::galaxy_managed_paths_watcher::galaxy_data_dir() {
|
||||
return Some("global".to_string());
|
||||
}
|
||||
|
||||
|
||||
@@ -159,7 +159,7 @@ pub enum SettingsViewEvent {
|
||||
StartResize,
|
||||
CheckForUpdate,
|
||||
LaunchNetworkLogging,
|
||||
OpenWarpDrive,
|
||||
OpenGalaxyDrive,
|
||||
SignupAnonymousUser,
|
||||
ShowToast {
|
||||
message: String,
|
||||
@@ -989,7 +989,7 @@ pub struct SettingsView {
|
||||
/// Mirrored from `Workspace` via [`set_settings_error_state`].
|
||||
settings_error_banner_dismissed: bool,
|
||||
/// Mouse state handles for the nav-rail footer buttons. Constructed once
|
||||
/// per `SettingsView` per `WARP.md`'s guidance that inline
|
||||
/// per `SettingsView` per `GALAXY.md`'s guidance that inline
|
||||
/// `MouseStateHandle::default()` breaks hover/click tracking.
|
||||
footer_mouse_states: SettingsFooterMouseStates,
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ use galaxy_core::context_flag::ContextFlag;
|
||||
use regex::Regex;
|
||||
use settings::Setting as _;
|
||||
|
||||
use galaxy_core::ui::theme::WarpTheme;
|
||||
use galaxy_core::ui::theme::GalaxyTheme;
|
||||
use galaxyui::elements::{
|
||||
Align, ChildAnchor, ChildView, ConstrainedBox, Container, CornerRadius, CrossAxisAlignment,
|
||||
Empty, Expanded, Flex, Hoverable, MainAxisAlignment, MainAxisSize, MouseStateHandle,
|
||||
@@ -1751,6 +1751,6 @@ mod styles {
|
||||
pub const DESCRIPTION_LINE_MARGIN_BOTTOM: f32 = 6.;
|
||||
}
|
||||
|
||||
fn description_text_color(theme: &WarpTheme) -> galaxy_core::ui::theme::Fill {
|
||||
fn description_text_color(theme: &GalaxyTheme) -> galaxy_core::ui::theme::Fill {
|
||||
theme.sub_text_color(theme.surface_2())
|
||||
}
|
||||
|
||||
@@ -189,7 +189,7 @@ pub enum TeamsPageAction {
|
||||
SendEmailInvites {
|
||||
team_uid: ServerId,
|
||||
},
|
||||
OpenWarpDrive,
|
||||
OpenGalaxyDrive,
|
||||
GenerateUpgradeLink {
|
||||
team_uid: ServerId,
|
||||
},
|
||||
@@ -298,7 +298,7 @@ impl TryFrom<&TeamsPageAction> for TelemetryEvent {
|
||||
#[derive(Clone)]
|
||||
pub enum TeamsPageViewEvent {
|
||||
TeamsChanged,
|
||||
OpenWarpDrive,
|
||||
OpenGalaxyDrive,
|
||||
ShowToast {
|
||||
message: String,
|
||||
flavor: ToastFlavor,
|
||||
@@ -492,7 +492,7 @@ impl TypedActionView for TeamsPageView {
|
||||
self.send_email_invites(*team_uid, ctx);
|
||||
ctx.notify();
|
||||
}
|
||||
TeamsPageAction::OpenWarpDrive => ctx.emit(TeamsPageViewEvent::OpenWarpDrive),
|
||||
TeamsPageAction::OpenGalaxyDrive => ctx.emit(TeamsPageViewEvent::OpenGalaxyDrive),
|
||||
TeamsPageAction::ShowLeaveTeamConfirmationDialog => {
|
||||
self.delete_or_leave_team_confirmation_dialog
|
||||
.update(ctx, |dialog, ctx| {
|
||||
@@ -1365,7 +1365,7 @@ impl TeamsPageView {
|
||||
ctx,
|
||||
);
|
||||
});
|
||||
ctx.dispatch_typed_action(&WorkspaceAction::OpenWarpDrive);
|
||||
ctx.dispatch_typed_action(&WorkspaceAction::OpenGalaxyDrive);
|
||||
}
|
||||
|
||||
fn set_team_member_role(
|
||||
|
||||
Reference in New Issue
Block a user