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
+2 -2
View File
@@ -3,7 +3,7 @@ use async_recursion::async_recursion;
use async_trait::async_trait;
use galaxy_core::ui::{
color::hex_color::coloru_from_hex_string,
theme::{AnsiColor, AnsiColors, TerminalColors, WarpTheme},
theme::{AnsiColor, AnsiColors, TerminalColors, GalaxyTheme},
};
use galaxyui::fonts::FontInfo;
use serde::Deserialize;
@@ -289,7 +289,7 @@ impl AlacrittyTheme {
} else {
let bright = terminal_colors.bright;
let accent = calculate_accent_color(background, foreground, cursor_color, bright);
Ok(ThemeType::Single(WarpTheme::new(
Ok(ThemeType::Single(GalaxyTheme::new(
background.into(),
foreground.into(),
accent.into(),
+3 -3
View File
@@ -2,7 +2,7 @@ use std::{path::PathBuf, sync::Arc};
use galaxy_core::ui::{
color::hex_color::HexColorError as UiHexColorError,
theme::{AnsiColors, WarpTheme},
theme::{AnsiColors, GalaxyTheme},
};
use pathfinder_color::ColorU;
use serde::Serialize;
@@ -29,8 +29,8 @@ use super::iterm_parser::ITermProfile;
#[derive(Debug)]
pub enum ThemeType {
LightAndDark { light: WarpTheme, dark: WarpTheme },
Single(WarpTheme),
LightAndDark { light: GalaxyTheme, dark: GalaxyTheme },
Single(GalaxyTheme),
}
#[derive(Clone, Debug)]
+3 -3
View File
@@ -2,7 +2,7 @@ use std::path::PathBuf;
use async_trait::async_trait;
use bitflags::bitflags;
use galaxy_core::ui::theme::{AnsiColors, TerminalColors, WarpTheme};
use galaxy_core::ui::theme::{AnsiColors, TerminalColors, GalaxyTheme};
use galaxyui::{
fonts::FontInfo, keymap::Keystroke, platform::mac::utils::unicode_char_to_key, DisplayIdx,
};
@@ -126,7 +126,7 @@ impl ITermTheme {
mut self,
suffix: &'static str,
default_theme: &ITermTheme,
) -> Result<WarpTheme, ThemeError> {
) -> Result<GalaxyTheme, ThemeError> {
if self.foreground == default_theme.foreground
|| self.background == default_theme.background
{
@@ -149,7 +149,7 @@ impl ITermTheme {
let accent = calculate_accent_color(background, foreground, cursor, bright);
Ok(WarpTheme::new(
Ok(GalaxyTheme::new(
background.into(),
foreground,
accent.into(),
@@ -1,5 +1,5 @@
use async_io::block_on;
use galaxy_core::ui::theme::{Fill, WarpTheme};
use galaxy_core::ui::theme::{Fill, GalaxyTheme};
use galaxyui::{fonts::FontInfo, keymap::Keystroke};
use pathfinder_color::ColorU;
use plist::{Dictionary, Value};
@@ -106,9 +106,9 @@ fn test_color_dictionary_to_coloru() {
#[test]
fn test_into_warp_theme_valid() {
let theme: WarpTheme = solarized_dark_theme()
let theme: GalaxyTheme = solarized_dark_theme()
.into_warp_theme("", &default_dark_theme())
.expect("Should be able to convert into WarpTheme");
.expect("Should be able to convert into GalaxyTheme");
assert_eq!(
theme.accent(),
Fill::Solid(ColorU {
+4 -4
View File
@@ -35,7 +35,7 @@ use crate::{
},
themes::theme::{CustomTheme, SelectedSystemThemes, ThemeKind},
ui_components::blended_colors,
user_config::{self, WarpConfig},
user_config::{self, GalaxyConfig},
window_settings::WindowSettings,
GlobalResourceHandlesProvider, TelemetryEvent,
};
@@ -775,10 +775,10 @@ impl SettingsImportView {
));
report_if_error!(theme_settings.use_system_theme.set_value(true, ctx));
});
WarpConfig::handle(ctx).update(ctx, |config, ctx| {
GalaxyConfig::handle(ctx).update(ctx, |config, ctx| {
config.add_new_theme_to_config(dark_kind, dark, ctx)
});
WarpConfig::handle(ctx).update(ctx, |config, ctx| {
GalaxyConfig::handle(ctx).update(ctx, |config, ctx| {
config.add_new_theme_to_config(light_kind, light, ctx)
});
}
@@ -795,7 +795,7 @@ impl SettingsImportView {
.set_value(theme_kind.clone(), ctx,));
report_if_error!(theme_settings.use_system_theme.set_value(false, ctx));
});
WarpConfig::handle(ctx).update(ctx, |config, ctx| {
GalaxyConfig::handle(ctx).update(ctx, |config, ctx| {
config.add_new_theme_to_config(theme_kind, theme, ctx)
});
}