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)),
+2 -2
View File
@@ -7,9 +7,9 @@ pub mod theme_creator_modal;
pub mod theme_deletion_body;
pub mod theme_deletion_modal;
use galaxy_core::ui::theme::WarpTheme;
use galaxy_core::ui::theme::GalaxyTheme;
pub fn onboarding_theme_picker_themes() -> [WarpTheme; 4] {
pub fn onboarding_theme_picker_themes() -> [GalaxyTheme; 4] {
[
default_themes::phenomenon(),
default_themes::dark_theme(),
+14 -14
View File
@@ -254,7 +254,7 @@ impl InMemoryThemeOptions {
self.path = path;
}
pub fn theme(&self) -> WarpTheme {
pub fn theme(&self) -> GalaxyTheme {
let bg_color = self.chosen_bg_color();
let fg_color = pick_foreground_color(bg_color);
let possible_accent_colors: Vec<ColorU> = self
@@ -273,7 +273,7 @@ impl InMemoryThemeOptions {
(Details::Lighter, light_mode_colors())
};
WarpTheme::new(
GalaxyTheme::new(
bg_color.into(),
fg_color,
accent_color.into(),
@@ -293,14 +293,14 @@ impl InMemoryThemeOptions {
}
#[derive(Debug, Clone)]
pub struct WarpThemeConfig {
theme_map: HashMap<ThemeKind, WarpTheme>,
pub struct GalaxyThemeConfig {
theme_map: HashMap<ThemeKind, GalaxyTheme>,
}
impl WarpThemeConfig {
impl GalaxyThemeConfig {
pub fn new() -> Self {
// preload with built-in themes
let theme_map: HashMap<ThemeKind, WarpTheme> = HashMap::from_iter([
let theme_map: HashMap<ThemeKind, GalaxyTheme> = HashMap::from_iter([
(ThemeKind::SentReferralReward, sent_referral_reward()),
(
ThemeKind::ReceivedReferralReward,
@@ -330,10 +330,10 @@ impl WarpThemeConfig {
(ThemeKind::SamsungDark, samsung_dark()),
(ThemeKind::SamsungLight, samsung_light()),
]);
WarpThemeConfig { theme_map }
GalaxyThemeConfig { theme_map }
}
pub fn add_new_theme(&mut self, theme_name: ThemeKind, theme: WarpTheme) {
pub fn add_new_theme(&mut self, theme_name: ThemeKind, theme: GalaxyTheme) {
self.theme_map.insert(theme_name, theme);
}
@@ -341,16 +341,16 @@ impl WarpThemeConfig {
CustomTheme::new(name, path).into()
}
pub fn theme_items(&self) -> impl Iterator<Item = (&ThemeKind, &WarpTheme)> {
pub fn theme_items(&self) -> impl Iterator<Item = (&ThemeKind, &GalaxyTheme)> {
self.theme_map.iter()
}
pub fn theme(&self, name: &ThemeKind) -> WarpTheme {
pub fn theme(&self, name: &ThemeKind) -> GalaxyTheme {
self.theme_map.get(name).cloned().unwrap_or_else(dark_theme)
}
}
impl Default for WarpThemeConfig {
impl Default for GalaxyThemeConfig {
fn default() -> Self {
Self::new()
}
@@ -419,8 +419,8 @@ pub struct PromptColors {
pub input_prompt_ssh: ColorU,
}
impl From<WarpTheme> for PromptColors {
fn from(theme: WarpTheme) -> Self {
impl From<GalaxyTheme> for PromptColors {
fn from(theme: GalaxyTheme) -> Self {
PromptColors {
input_prompt_conversation_management: theme.terminal_colors().normal.white.into(),
input_prompt_pwd: theme.terminal_colors().normal.magenta.into(),
@@ -443,7 +443,7 @@ impl From<WarpTheme> for PromptColors {
}
pub fn render_preview(
theme: &WarpTheme,
theme: &GalaxyTheme,
font_family: FamilyId,
form_factor: Option<f32>,
) -> Box<dyn Element> {
+14 -14
View File
@@ -1,6 +1,6 @@
use galaxy_editor::editor::NavigationKey;
use galaxyui::{
accessibility::{AccessibilityContent, WarpA11yRole},
accessibility::{AccessibilityContent, GalaxyA11yRole},
elements::{
Align, ChildAnchor, ConstrainedBox, Container, CornerRadius, CrossAxisAlignment,
DispatchEventResult, Element, Empty, EventHandler, Fill, Flex, Hoverable, Icon,
@@ -22,7 +22,7 @@ use pathfinder_color::ColorU;
use settings::Setting as _;
use crate::resource_center::{mark_feature_used_and_write_to_user_defaults, Tip, TipAction};
use crate::themes::theme::{RespectSystemTheme, ThemeKind, WarpTheme};
use crate::themes::theme::{RespectSystemTheme, ThemeKind, GalaxyTheme};
use crate::util::traffic_lights::traffic_light_data;
use crate::workspace::PANEL_HEADER_HEIGHT;
use crate::{
@@ -34,7 +34,7 @@ use crate::{
report_if_error,
settings::{respect_system_theme, ThemeSettings},
themes::theme::SelectedSystemThemes,
user_config::{load_theme_configs, themes_dir, WarpConfig, WarpConfigUpdateEvent},
user_config::{load_theme_configs, themes_dir, GalaxyConfig, GalaxyConfigUpdateEvent},
util::traffic_lights::{TrafficLightData, TrafficLightSide},
window_settings::WindowSettings,
};
@@ -44,7 +44,7 @@ use crate::{
server::telemetry::TelemetryEvent, ui_components::window_focus_dimming::WindowFocusDimming,
};
use crate::{
themes::theme::WarpThemeConfig,
themes::theme::GalaxyThemeConfig,
ui_components::buttons::{close_button, icon_button},
ui_components::icons,
};
@@ -177,7 +177,7 @@ pub fn init(app: &mut AppContext) {
fn theme_chooser_items(
referral_theme_status: &ReferralThemeStatus,
theme_config: &WarpThemeConfig,
theme_config: &GalaxyThemeConfig,
) -> Vec<ThemeChooserItem> {
let sent_referral_theme_active = referral_theme_status.sent_referral_theme_active();
let received_referral_theme_active = referral_theme_status.received_referral_theme_active();
@@ -224,9 +224,9 @@ impl ThemeChooser {
me.update_themes(ctx);
});
let warp_config_handle = WarpConfig::handle(ctx);
let warp_config_handle = GalaxyConfig::handle(ctx);
ctx.subscribe_to_model(&warp_config_handle, |me, _, event, ctx| {
if let WarpConfigUpdateEvent::Themes = event {
if let GalaxyConfigUpdateEvent::Themes = event {
me.update_themes(ctx);
ctx.notify();
}
@@ -247,7 +247,7 @@ impl ThemeChooser {
let themes = theme_chooser_items(
referral_theme_status.as_ref(ctx),
WarpConfig::as_ref(ctx).theme_config(),
GalaxyConfig::as_ref(ctx).theme_config(),
);
Self {
@@ -311,7 +311,7 @@ impl ThemeChooser {
ctx.spawn(
async move { load_theme_configs(&themes_dir()) },
move |theme_chooser, loaded_themes, ctx| {
ctx.update_model(&WarpConfig::handle(ctx), move |warp_config, ctx| {
ctx.update_model(&GalaxyConfig::handle(ctx), move |warp_config, ctx| {
warp_config.update_theme_config(loaded_themes, ctx);
});
theme_chooser.update_themes(ctx);
@@ -324,7 +324,7 @@ impl ThemeChooser {
ctx.spawn(
async move { load_theme_configs(&themes_dir()) },
move |theme_chooser, loaded_themes, ctx| {
ctx.update_model(&WarpConfig::handle(ctx), move |warp_config, ctx| {
ctx.update_model(&GalaxyConfig::handle(ctx), move |warp_config, ctx| {
warp_config.update_theme_config(loaded_themes, ctx);
});
theme_chooser.update_themes(ctx);
@@ -518,7 +518,7 @@ impl ThemeChooser {
fn update_themes(&mut self, ctx: &mut ViewContext<Self>) {
*self.themes = theme_chooser_items(
self.referral_theme_status.as_ref(ctx),
WarpConfig::as_ref(ctx).theme_config(),
GalaxyConfig::as_ref(ctx).theme_config(),
);
}
@@ -848,7 +848,7 @@ impl View for ThemeChooser {
Some(AccessibilityContent::new(
"Theme chooser. Unfortunately, theme chooser window isn't compatible with screen readers yet.",
"Press escape to close.",
WarpA11yRole::WindowRole,
GalaxyA11yRole::WindowRole,
))
}
@@ -878,12 +878,12 @@ impl View for ThemeChooser {
#[derive(Clone)]
struct ThemeChooserItem {
pub kind: ThemeKind,
warp_theme: WarpTheme,
warp_theme: GalaxyTheme,
mouse_state: MouseStateHandle,
}
impl ThemeChooserItem {
pub fn new(kind: ThemeKind, warp_theme: WarpTheme) -> Self {
pub fn new(kind: ThemeKind, warp_theme: GalaxyTheme) -> Self {
Self {
kind,
warp_theme,
+2 -2
View File
@@ -7,7 +7,7 @@ use crate::{
send_telemetry_from_ctx, server::telemetry::TelemetryEvent, themes::theme::CustomTheme,
};
#[cfg(feature = "local_fs")]
use galaxy_core::ui::theme::WarpTheme;
use galaxy_core::ui::theme::GalaxyTheme;
use galaxyui::elements::{
Border, ConstrainedBox, Container, CornerRadius, CrossAxisAlignment, DispatchEventResult,
EventHandler, Fill, Flex, Icon, MainAxisAlignment, MainAxisSize, MouseStateHandle,
@@ -220,7 +220,7 @@ impl ThemeCreatorBody {
/// Note: the image option should be (original_theme_image_path, theme_name, image_extension).
#[cfg(feature = "local_fs")]
pub fn write_theme<T>(
theme: &WarpTheme,
theme: &GalaxyTheme,
dir: PathBuf,
theme_yaml_file_name: String,
image_option: Option<(PathBuf, String, &str)>,
+2 -2
View File
@@ -2,7 +2,7 @@ use crate::appearance::Appearance;
use crate::send_telemetry_from_ctx;
use crate::server::telemetry::TelemetryEvent;
use crate::settings::{active_theme_kind, ThemeSettings};
use crate::themes::theme::{ThemeKind, WarpTheme};
use crate::themes::theme::{ThemeKind, GalaxyTheme};
use crate::user_config;
use crate::user_config::util::from_yaml;
use galaxyui::assets::asset_cache::AssetSource;
@@ -77,7 +77,7 @@ impl ThemeDeletionBody {
// Check if the theme directory exists
if fs::metadata(&dir).is_ok() {
if let Some(ThemeKind::Custom(custom_theme)) = &self.theme_kind {
if let Ok(theme_from_yaml) = from_yaml::<WarpTheme>(custom_theme.path()) {
if let Ok(theme_from_yaml) = from_yaml::<GalaxyTheme>(custom_theme.path()) {
// If theme has an image
if let Some(image) = theme_from_yaml.background_image() {
// Only delete the image if it is in the ./warp/themes directory.
+2 -2
View File
@@ -23,7 +23,7 @@ fn in_memory_theme_generation_test() {
let mountains_bg_path_string = mountains_bg_path.to_str().unwrap_or_default().to_owned();
assert_eq!(
in_memory_theme.theme(),
WarpTheme::new(
GalaxyTheme::new(
// the theme defaults to the 0th bg color
ColorU::new(35, 31, 44, OPAQUE).into(),
// this background color makes it a "dark" theme, so the foreground is white
@@ -47,7 +47,7 @@ fn in_memory_theme_generation_test() {
assert_eq!(
in_memory_theme.theme(),
WarpTheme::new(
GalaxyTheme::new(
// now the background is the 2nd one
ColorU::new(229, 142, 113, OPAQUE).into(),
// changing the background color made this a light theme