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
@@ -1617,7 +1617,7 @@ impl AISettings {
|
||||
return None;
|
||||
}
|
||||
let path = std::path::Path::new(path_str);
|
||||
crate::user_config::WarpConfig::as_ref(app)
|
||||
crate::user_config::GalaxyConfig::as_ref(app)
|
||||
.tab_configs()
|
||||
.iter()
|
||||
.find(|config| config.source_path.as_deref().is_some_and(|p| p == path))
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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)]
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
});
|
||||
}
|
||||
|
||||
+12
-12
@@ -201,7 +201,7 @@ pub fn init(
|
||||
|
||||
appearance::register(ctx);
|
||||
|
||||
// Set up hot-reload for the settings file. When the WarpConfig watcher
|
||||
// Set up hot-reload for the settings file. When the GalaxyConfig watcher
|
||||
// detects a change to settings.toml, reload preferences from disk and
|
||||
// push changed values into setting models.
|
||||
#[cfg(feature = "local_fs")]
|
||||
@@ -209,7 +209,7 @@ pub fn init(
|
||||
let prefs = <settings::PublicPreferences as galaxyui::SingletonEntity>::as_ref(ctx);
|
||||
if prefs.is_settings_file() {
|
||||
ctx.subscribe_to_model(
|
||||
&crate::user_config::WarpConfig::handle(ctx),
|
||||
&crate::user_config::GalaxyConfig::handle(ctx),
|
||||
handle_warp_config_change,
|
||||
);
|
||||
}
|
||||
@@ -218,24 +218,24 @@ pub fn init(
|
||||
user_defaults_on_startup
|
||||
}
|
||||
|
||||
/// Handles a `WarpConfig` change event, reloading settings from disk when
|
||||
/// Handles a `GalaxyConfig` change event, reloading settings from disk when
|
||||
/// the settings file is modified, created, or deleted.
|
||||
#[cfg(feature = "local_fs")]
|
||||
fn handle_warp_config_change(
|
||||
_: galaxyui::ModelHandle<crate::user_config::WarpConfig>,
|
||||
event: &crate::user_config::WarpConfigUpdateEvent,
|
||||
_: galaxyui::ModelHandle<crate::user_config::GalaxyConfig>,
|
||||
event: &crate::user_config::GalaxyConfigUpdateEvent,
|
||||
ctx: &mut AppContext,
|
||||
) {
|
||||
use crate::user_config::{WarpConfig, WarpConfigUpdateEvent};
|
||||
use crate::user_config::{GalaxyConfig, GalaxyConfigUpdateEvent};
|
||||
|
||||
if !matches!(event, WarpConfigUpdateEvent::Settings) {
|
||||
if !matches!(event, GalaxyConfigUpdateEvent::Settings) {
|
||||
return;
|
||||
}
|
||||
let prefs = <settings::PublicPreferences as galaxyui::SingletonEntity>::as_ref(ctx);
|
||||
if let Err(err) = prefs.reload_from_disk() {
|
||||
log::warn!("Settings file reload failed: {err}");
|
||||
WarpConfig::handle(ctx).update(ctx, |_, ctx| {
|
||||
ctx.emit(WarpConfigUpdateEvent::SettingsErrors(
|
||||
GalaxyConfig::handle(ctx).update(ctx, |_, ctx| {
|
||||
ctx.emit(GalaxyConfigUpdateEvent::SettingsErrors(
|
||||
super::SettingsFileError::FileParseFailed(err.to_string()),
|
||||
));
|
||||
});
|
||||
@@ -243,11 +243,11 @@ fn handle_warp_config_change(
|
||||
}
|
||||
let failed_keys = settings::SettingsManager::handle(ctx)
|
||||
.update(ctx, |manager, ctx| manager.reload_all_public_settings(ctx));
|
||||
WarpConfig::handle(ctx).update(ctx, |_, ctx| {
|
||||
GalaxyConfig::handle(ctx).update(ctx, |_, ctx| {
|
||||
if failed_keys.is_empty() {
|
||||
ctx.emit(WarpConfigUpdateEvent::SettingsErrorsCleared);
|
||||
ctx.emit(GalaxyConfigUpdateEvent::SettingsErrorsCleared);
|
||||
} else {
|
||||
ctx.emit(WarpConfigUpdateEvent::SettingsErrors(
|
||||
ctx.emit(GalaxyConfigUpdateEvent::SettingsErrors(
|
||||
super::SettingsFileError::InvalidSettings(failed_keys),
|
||||
));
|
||||
}
|
||||
|
||||
@@ -118,8 +118,8 @@ impl SettingsFileError {
|
||||
use crate::{
|
||||
root_view::QuakeModePinPosition,
|
||||
terminal::{BlockListSettings, BlockPadding},
|
||||
themes::theme::{ThemeKind, WarpTheme},
|
||||
user_config::WarpConfig,
|
||||
themes::theme::{ThemeKind, GalaxyTheme},
|
||||
user_config::GalaxyConfig,
|
||||
};
|
||||
use galaxy_core::features::FeatureFlag;
|
||||
use galaxyui::{
|
||||
@@ -516,10 +516,10 @@ impl Settings {
|
||||
})
|
||||
}
|
||||
|
||||
pub fn theme_for_theme_kind(theme_kind: &ThemeKind, ctx: &mut AppContext) -> WarpTheme {
|
||||
pub fn theme_for_theme_kind(theme_kind: &ThemeKind, ctx: &mut AppContext) -> GalaxyTheme {
|
||||
match theme_kind {
|
||||
ThemeKind::InMemory(in_memory_theme) => in_memory_theme.theme(),
|
||||
_ => WarpConfig::as_ref(ctx).theme_config().theme(theme_kind),
|
||||
_ => GalaxyConfig::as_ref(ctx).theme_config().theme(theme_kind),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user