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:
Ryan Ward
2026-05-21 11:59:37 -05:00
co-authored by Claude Opus 4.6
parent eaa2ddc75e
commit 6f54e2cb30
229 changed files with 2506 additions and 2634 deletions
@@ -5,7 +5,7 @@ use crate::{
AppState, BranchSnapshot, LeafContents, LeafSnapshot, NotebookPaneSnapshot, PaneFlex,
PaneNodeSnapshot, SplitDirection, TabSnapshot, TerminalPaneSnapshot, WindowSnapshot,
},
drive::OpenWarpDriveObjectSettings,
drive::OpenGalaxyDriveObjectSettings,
tab::SelectedTabColor,
};
@@ -81,7 +81,7 @@ fn test_config_from_snapshot_flattens_single_pane() {
custom_vertical_tabs_title: None,
contents: LeafContents::Notebook(NotebookPaneSnapshot::CloudNotebook {
notebook_id: None,
settings: OpenWarpDriveObjectSettings::default(),
settings: OpenGalaxyDriveObjectSettings::default(),
}),
}),
),
@@ -151,7 +151,7 @@ fn test_config_from_snapshot_filters_panes() {
custom_vertical_tabs_title: None,
contents: LeafContents::Notebook(NotebookPaneSnapshot::CloudNotebook {
notebook_id: None,
settings: OpenWarpDriveObjectSettings::default(),
settings: OpenGalaxyDriveObjectSettings::default(),
}),
}),
),
@@ -215,7 +215,7 @@ fn test_config_from_snapshot_filters_tabs() {
custom_vertical_tabs_title: None,
contents: LeafContents::Notebook(NotebookPaneSnapshot::CloudNotebook {
notebook_id: None,
settings: OpenWarpDriveObjectSettings::default(),
settings: OpenGalaxyDriveObjectSettings::default(),
}),
}),
)],
@@ -285,7 +285,7 @@ fn test_config_with_active_tab_index_and_filtered_tabs() {
custom_vertical_tabs_title: None,
contents: LeafContents::Notebook(NotebookPaneSnapshot::CloudNotebook {
notebook_id: None,
settings: OpenWarpDriveObjectSettings::default(),
settings: OpenGalaxyDriveObjectSettings::default(),
}),
}),
)],
@@ -376,7 +376,7 @@ fn test_config_with_active_tab_being_filtered() {
custom_vertical_tabs_title: None,
contents: LeafContents::Notebook(NotebookPaneSnapshot::CloudNotebook {
notebook_id: None,
settings: OpenWarpDriveObjectSettings::default(),
settings: OpenGalaxyDriveObjectSettings::default(),
}),
}),
)],
+5 -5
View File
@@ -8,13 +8,13 @@ use crate::send_telemetry_from_ctx;
use crate::server::telemetry::TelemetryEvent;
use crate::user_config::launch_configs_dir;
#[cfg(feature = "local_fs")]
use crate::user_config::{util::file_name_to_human_readable_name, WarpConfig};
use crate::user_config::{util::file_name_to_human_readable_name, GalaxyConfig};
use crate::util::bindings::keybinding_name_to_display_string;
#[cfg(feature = "local_fs")]
use crate::util::openable_file_type::FileTarget;
use galaxy_core::paths::home_relative_path;
use galaxy_core::ui::theme::Fill;
use galaxyui::accessibility::{AccessibilityContent, WarpA11yRole};
use galaxyui::accessibility::{AccessibilityContent, GalaxyA11yRole};
use galaxyui::elements::{
Align, Border, ChildAnchor, ChildView, Clipped, ConstrainedBox, Container, CornerRadius,
Element, Empty, Flex, FormattedTextElement, MouseStateHandle, OffsetPositioning, ParentAnchor,
@@ -153,7 +153,7 @@ pub enum LaunchConfigModalEvent {
/// It's called when the new config was just saved. Note that when we save the configuration,
/// it take a moment for the file system to register the change, and us to receive it (as there
/// is a delay in our watcher). But because we actually have the LaunchConfig in our hands
/// already, we may as well save it "manually" to the WarpConfig, while waiting for the update
/// already, we may as well save it "manually" to the GalaxyConfig, while waiting for the update
/// from the file system. This event passes a saved config to the handler to let us do that.
SuccessfullySavedConfig(LaunchConfig),
#[cfg(feature = "local_fs")]
@@ -263,7 +263,7 @@ impl LaunchConfigSaveModal {
let launch_config_name = file_name_to_human_readable_name(&file_name_candidate);
if let Some(app_state) = &self.current_app_state {
let launch_config = LaunchConfig::from_snapshot(launch_config_name, app_state);
match WarpConfig::save_new_launch_config(file_name_candidate, launch_config.clone()) {
match GalaxyConfig::save_new_launch_config(file_name_candidate, launch_config.clone()) {
Ok(file_name) => {
self.saved_successfully(file_name, ctx);
ctx.emit(LaunchConfigModalEvent::SuccessfullySavedConfig(
@@ -661,7 +661,7 @@ impl View for LaunchConfigSaveModal {
"Type the name of the file to which you want to save your
current configuration of windows, tabs, and panes. Use enter to save the
launch configuration, esc to quit the save configuration modal.",
WarpA11yRole::PopoverRole,
GalaxyA11yRole::PopoverRole,
))
}
}