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
+51 -51
View File
@@ -3,7 +3,7 @@ use galaxy_core::ui::{
color::{blend::Blend, coloru_with_opacity, OPAQUE},
theme::{
color::CustomDetails, AnsiColor, AnsiColors, Details, Fill, HorizontalGradient, Image,
TerminalColors, VerticalGradient, WarpTheme,
TerminalColors, VerticalGradient, GalaxyTheme,
},
};
use pathfinder_color::ColorU;
@@ -308,8 +308,8 @@ pub(super) fn samsung_light_colors() -> TerminalColors {
}
/// Default bundled themes
pub fn dark_theme() -> WarpTheme {
WarpTheme::new(
pub fn dark_theme() -> GalaxyTheme {
GalaxyTheme::new(
Fill::Solid(ColorU::from_u32(0x000000FF)),
ColorU::from_u32(0xffffffff),
Fill::Solid(ColorU::from_u32(0x19AAD8FF)),
@@ -321,8 +321,8 @@ pub fn dark_theme() -> WarpTheme {
)
}
pub fn light_theme() -> WarpTheme {
WarpTheme::new(
pub fn light_theme() -> GalaxyTheme {
GalaxyTheme::new(
Fill::Solid(ColorU::white()),
ColorU::new(17, 17, 17, OPAQUE),
Fill::Solid(ColorU::from_u32(0x00c2ffff)),
@@ -334,8 +334,8 @@ pub fn light_theme() -> WarpTheme {
)
}
pub(super) fn dracula() -> WarpTheme {
WarpTheme::new(
pub(super) fn dracula() -> GalaxyTheme {
GalaxyTheme::new(
Fill::Solid(ColorU::from_u32(0x282A36FF)),
ColorU::from_u32(0xF8F8F2FF),
Fill::Solid(ColorU::from_u32(0xFF79C6FF)),
@@ -347,8 +347,8 @@ pub(super) fn dracula() -> WarpTheme {
)
}
pub(super) fn solarized_light() -> WarpTheme {
WarpTheme::new(
pub(super) fn solarized_light() -> GalaxyTheme {
GalaxyTheme::new(
Fill::Solid(ColorU::from_u32(0xFDF6E3FF)),
ColorU::from_u32(0x586E75FF),
Fill::Solid(ColorU::from_u32(0x66B5A9FF)),
@@ -360,8 +360,8 @@ pub(super) fn solarized_light() -> WarpTheme {
)
}
pub(super) fn solarized_dark() -> WarpTheme {
WarpTheme::new(
pub(super) fn solarized_dark() -> GalaxyTheme {
GalaxyTheme::new(
Fill::Solid(ColorU::from_u32(0x002B36FF)),
ColorU::from_u32(0xF8F8F2FF),
Fill::Solid(ColorU::from_u32(0xCB4B16FF)),
@@ -373,8 +373,8 @@ pub(super) fn solarized_dark() -> WarpTheme {
)
}
pub(super) fn gruvbox_dark() -> WarpTheme {
WarpTheme::new(
pub(super) fn gruvbox_dark() -> GalaxyTheme {
GalaxyTheme::new(
Fill::Solid(ColorU::from_u32(0x282828FF)),
ColorU::from_u32(0xEBDBB2FF),
Fill::Solid(ColorU::from_u32(0xFC802DFF)),
@@ -386,8 +386,8 @@ pub(super) fn gruvbox_dark() -> WarpTheme {
)
}
pub(super) fn gruvbox_light() -> WarpTheme {
WarpTheme::new(
pub(super) fn gruvbox_light() -> GalaxyTheme {
GalaxyTheme::new(
Fill::Solid(ColorU::from_u32(0xFBF1C7FF)),
ColorU::from_u32(0x3C3836FF),
Fill::Solid(ColorU::from_u32(0xAD3B14FF)),
@@ -400,8 +400,8 @@ pub(super) fn gruvbox_light() -> WarpTheme {
}
/// Bundled gradient themes
pub(super) fn cyber_wave() -> WarpTheme {
WarpTheme::new(
pub(super) fn cyber_wave() -> GalaxyTheme {
GalaxyTheme::new(
Fill::VerticalGradient(VerticalGradient::new(
ColorU::black().blend(&coloru_with_opacity(ColorU::from_u32(0x00C2FFFF), 20)),
ColorU::black(),
@@ -419,8 +419,8 @@ pub(super) fn cyber_wave() -> WarpTheme {
)
}
pub(super) fn willow_dream() -> WarpTheme {
WarpTheme::new(
pub(super) fn willow_dream() -> GalaxyTheme {
GalaxyTheme::new(
Fill::VerticalGradient(VerticalGradient::new(
ColorU::from_u32(0x206169FF),
ColorU::from_u32(0x022F27FF),
@@ -438,8 +438,8 @@ pub(super) fn willow_dream() -> WarpTheme {
)
}
pub(super) fn fancy_dracula() -> WarpTheme {
WarpTheme::new(
pub(super) fn fancy_dracula() -> GalaxyTheme {
GalaxyTheme::new(
Fill::VerticalGradient(VerticalGradient::new(
ColorU::from_u32(0x252630FF),
ColorU::from_u32(0x3D3F4FFF),
@@ -457,8 +457,8 @@ pub(super) fn fancy_dracula() -> WarpTheme {
)
}
pub(super) fn phenomenon() -> WarpTheme {
WarpTheme::new(
pub(super) fn phenomenon() -> GalaxyTheme {
GalaxyTheme::new(
Fill::Solid(ColorU::from_u32(0x121212FF)),
ColorU::from_u32(0xFAF9F6FF),
Fill::Solid(ColorU::from_u32(0x2E5D9EFF)),
@@ -474,8 +474,8 @@ pub(super) fn phenomenon() -> WarpTheme {
}
/// Bundled themes with background images
pub(super) fn jellyfish() -> WarpTheme {
WarpTheme::new(
pub(super) fn jellyfish() -> GalaxyTheme {
GalaxyTheme::new(
Fill::Solid(ColorU::from_u32(0x1B1718FF)),
ColorU::white(),
Fill::Solid(ColorU::from_u32(0x538682FF)),
@@ -490,8 +490,8 @@ pub(super) fn jellyfish() -> WarpTheme {
)
}
pub(super) fn koi() -> WarpTheme {
WarpTheme::new(
pub(super) fn koi() -> GalaxyTheme {
GalaxyTheme::new(
Fill::Solid(ColorU::from_u32(0x211719FF)),
ColorU::white(),
Fill::Solid(ColorU::from_u32(0xFF3131FF)),
@@ -506,8 +506,8 @@ pub(super) fn koi() -> WarpTheme {
)
}
pub(super) fn leafy() -> WarpTheme {
WarpTheme::new(
pub(super) fn leafy() -> GalaxyTheme {
GalaxyTheme::new(
Fill::Solid(ColorU::black()),
ColorU::white(),
Fill::Solid(ColorU::from_u32(0x55972DFF)),
@@ -522,8 +522,8 @@ pub(super) fn leafy() -> WarpTheme {
)
}
pub(super) fn marble() -> WarpTheme {
WarpTheme::new(
pub(super) fn marble() -> GalaxyTheme {
GalaxyTheme::new(
Fill::Solid(ColorU::from_u32(0xE3E3E3FF)),
ColorU::black(),
Fill::Solid(ColorU::from_u32(0x585858FF)),
@@ -538,11 +538,11 @@ pub(super) fn marble() -> WarpTheme {
)
}
pub(super) fn pink_city() -> WarpTheme {
pub(super) fn pink_city() -> GalaxyTheme {
let details = CustomDetails {
..CustomDetails::lighter_details()
};
WarpTheme::new(
GalaxyTheme::new(
Fill::Solid(ColorU::from_u32(0xFBEFF6FF)),
ColorU::black(),
Fill::Solid(ColorU::from_u32(0xE10087FF)),
@@ -557,8 +557,8 @@ pub(super) fn pink_city() -> WarpTheme {
)
}
pub(super) fn snowy() -> WarpTheme {
WarpTheme::new(
pub(super) fn snowy() -> GalaxyTheme {
GalaxyTheme::new(
Fill::VerticalGradient(VerticalGradient::new(
ColorU::from_u32(0xFFFFFFFF),
ColorU::from_u32(0xDEE6EBFF),
@@ -576,8 +576,8 @@ pub(super) fn snowy() -> WarpTheme {
)
}
pub(super) fn red_rock() -> WarpTheme {
WarpTheme::new(
pub(super) fn red_rock() -> GalaxyTheme {
GalaxyTheme::new(
Fill::VerticalGradient(VerticalGradient::new(
ColorU::from_u32(0x211719FF)
.blend(&coloru_with_opacity(ColorU::from_u32(0x4C3435FF), 45)),
@@ -597,8 +597,8 @@ pub(super) fn red_rock() -> WarpTheme {
)
}
pub(super) fn dark_city() -> WarpTheme {
WarpTheme::new(
pub(super) fn dark_city() -> GalaxyTheme {
GalaxyTheme::new(
Fill::VerticalGradient(VerticalGradient::new(
ColorU::from_u32(0x01181FFF)
.blend(&coloru_with_opacity(ColorU::from_u32(0x1A363FFF), 45)),
@@ -618,8 +618,8 @@ pub(super) fn dark_city() -> WarpTheme {
)
}
pub(super) fn sent_referral_reward() -> WarpTheme {
WarpTheme::new(
pub(super) fn sent_referral_reward() -> GalaxyTheme {
GalaxyTheme::new(
Fill::Solid(ColorU::from_u32(0x334567FF)),
ColorU::white(),
Fill::Solid(ColorU::from_u32(0xCD51FFFF)),
@@ -634,8 +634,8 @@ pub(super) fn sent_referral_reward() -> WarpTheme {
)
}
pub(super) fn solar_flare() -> WarpTheme {
WarpTheme::new(
pub(super) fn solar_flare() -> GalaxyTheme {
GalaxyTheme::new(
Fill::Solid(ColorU::from_u32(0x1B1C18FF)),
ColorU::from_u32(0xDDE6EEFF),
Fill::Solid(ColorU::from_u32(0x34895CFF)),
@@ -650,8 +650,8 @@ pub(super) fn solar_flare() -> WarpTheme {
)
}
pub(super) fn adeberry() -> WarpTheme {
WarpTheme::new(
pub(super) fn adeberry() -> GalaxyTheme {
GalaxyTheme::new(
Fill::Solid(ColorU::from_u32(0x1D2022FF)),
ColorU::from_u32(0xE4EEF5FF),
Fill::Solid(ColorU::from_u32(0x6C96B4FF)),
@@ -663,8 +663,8 @@ pub(super) fn adeberry() -> WarpTheme {
)
}
pub(super) fn samsung_dark() -> WarpTheme {
WarpTheme::new(
pub(super) fn samsung_dark() -> GalaxyTheme {
GalaxyTheme::new(
Fill::Solid(ColorU::from_u32(0x0C0F16FF)),
ColorU::from_u32(0xEEF2FAFF),
Fill::Solid(ColorU::from_u32(0x1F6FFFFF)),
@@ -676,8 +676,8 @@ pub(super) fn samsung_dark() -> WarpTheme {
)
}
pub(super) fn samsung_light() -> WarpTheme {
WarpTheme::new(
pub(super) fn samsung_light() -> GalaxyTheme {
GalaxyTheme::new(
Fill::Solid(ColorU::from_u32(0xF7F9FCFF)),
ColorU::from_u32(0x10131BFF),
Fill::Solid(ColorU::from_u32(0x034AE5FF)),
@@ -688,8 +688,8 @@ pub(super) fn samsung_light() -> WarpTheme {
Some("Samsung Light".to_string()),
)
}
pub(super) fn received_referral_reward() -> WarpTheme {
WarpTheme::new(
pub(super) fn received_referral_reward() -> GalaxyTheme {
GalaxyTheme::new(
Fill::Solid(ColorU::from_u32(0xFFFFFFFF)),
ColorU::black(),
Fill::Solid(ColorU::from_u32(0xCD51FFFF)),