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
@@ -3,7 +3,7 @@ use galaxyui::elements::{Align, Dash};
|
||||
use galaxyui::ui_components::components::UiComponent;
|
||||
use galaxyui::FocusContext;
|
||||
use galaxyui::{
|
||||
accessibility::{AccessibilityContent, WarpA11yRole},
|
||||
accessibility::{AccessibilityContent, GalaxyA11yRole},
|
||||
elements::{
|
||||
Border, ChildAnchor, Clipped, ConstrainedBox, Container, CornerRadius, CrossAxisAlignment,
|
||||
Dismiss, DropShadow, Empty, Flex, Hoverable, MouseStateHandle, OffsetPositioning,
|
||||
@@ -755,7 +755,7 @@ impl View for BlockFilterEditor {
|
||||
Some(AccessibilityContent::new(
|
||||
"Type searched phrase.",
|
||||
"Press escape to quit",
|
||||
WarpA11yRole::TextareaRole,
|
||||
GalaxyA11yRole::TextareaRole,
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ use crate::terminal::model::selection::{SelectAction, SelectionPoint};
|
||||
use crate::terminal::safe_mode_settings::get_secret_obfuscation_mode;
|
||||
use crate::terminal::view::TerminalAction;
|
||||
use crate::terminal::{grid_renderer, SizeInfo};
|
||||
use crate::themes::theme::{Fill, WarpTheme};
|
||||
use crate::themes::theme::{Fill, GalaxyTheme};
|
||||
use crate::ui_components::{self, icons as UIIcon};
|
||||
use crate::util::color::Opacity;
|
||||
use crate::BlocklistAIHistoryModel;
|
||||
@@ -634,7 +634,7 @@ pub struct BlockListElement {
|
||||
font_size: f32,
|
||||
font_weight: Weight,
|
||||
line_height_ratio: f32,
|
||||
warp_theme: WarpTheme,
|
||||
warp_theme: GalaxyTheme,
|
||||
ui_builder: UiBuilder,
|
||||
block_borders_enabled: bool,
|
||||
overflow_offset: f32,
|
||||
@@ -2362,7 +2362,7 @@ impl BlockListElement {
|
||||
block: &Block,
|
||||
is_selected_by_anyone: bool,
|
||||
bounds: RectF,
|
||||
warp_theme: &WarpTheme,
|
||||
warp_theme: &GalaxyTheme,
|
||||
block_borders_enabled: bool,
|
||||
snackbar_header: &Option<SnackbarHeader>,
|
||||
ai_render_context: &BlocklistAIRenderContext,
|
||||
@@ -4761,7 +4761,7 @@ pub fn render_hoverable_block_button<F>(
|
||||
should_ignore_mouse_events: bool,
|
||||
should_allow_action: bool,
|
||||
mouse_state: MouseStateHandle,
|
||||
theme: &WarpTheme,
|
||||
theme: &GalaxyTheme,
|
||||
ui_builder: &UiBuilder,
|
||||
on_click: F,
|
||||
) -> Box<dyn Element>
|
||||
|
||||
@@ -6,7 +6,7 @@ use crate::terminal::model::grid::grid_handler::Link;
|
||||
use crate::terminal::model::index::Point;
|
||||
use crate::terminal::model::ObfuscateSecrets;
|
||||
use crate::terminal::SizeInfo;
|
||||
use crate::themes::theme::WarpTheme;
|
||||
use crate::themes::theme::GalaxyTheme;
|
||||
use galaxyui::fonts::{FamilyId, Properties, Weight};
|
||||
use galaxyui::geometry::rect::RectF;
|
||||
use galaxyui::geometry::vector::{vec2f, Vector2F};
|
||||
@@ -22,7 +22,7 @@ use super::model::image_map::StoredImageMetadata;
|
||||
use super::model::SecretHandle;
|
||||
|
||||
pub struct GridRenderParams {
|
||||
pub warp_theme: WarpTheme,
|
||||
pub warp_theme: GalaxyTheme,
|
||||
pub font_family: FamilyId,
|
||||
pub font_size: f32,
|
||||
pub font_weight: Weight,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
use crate::terminal::model::ansi::color_index;
|
||||
use crate::themes::theme::{AnsiColors, WarpTheme};
|
||||
use crate::themes::theme::{AnsiColors, GalaxyTheme};
|
||||
use galaxyui::color::ColorU;
|
||||
use std::fmt;
|
||||
use std::ops::{Index, IndexMut};
|
||||
@@ -41,8 +41,8 @@ impl Colors {
|
||||
}
|
||||
}
|
||||
|
||||
impl From<WarpTheme> for Colors {
|
||||
fn from(theme: WarpTheme) -> Self {
|
||||
impl From<GalaxyTheme> for Colors {
|
||||
fn from(theme: GalaxyTheme) -> Self {
|
||||
let colors = theme.terminal_colors();
|
||||
Colors::new(
|
||||
PrimaryColors::new(
|
||||
|
||||
@@ -11,7 +11,7 @@ use crate::terminal::model::index::Point;
|
||||
use crate::terminal::model::selection::SelectionPoint;
|
||||
use crate::terminal::model::{ObfuscateSecrets, SecretHandle};
|
||||
|
||||
use crate::themes::theme::WarpTheme;
|
||||
use crate::themes::theme::GalaxyTheme;
|
||||
use crate::util::color::{ContrastingColor, MinimumAllowedContrast};
|
||||
|
||||
use core::mem;
|
||||
@@ -288,7 +288,7 @@ pub fn render_grid<'a>(
|
||||
end_row: usize,
|
||||
colors: &color::List,
|
||||
override_colors: &color::OverrideList,
|
||||
theme: &WarpTheme,
|
||||
theme: &GalaxyTheme,
|
||||
default_font_properties: Properties,
|
||||
font_family: FamilyId,
|
||||
font_size: f32,
|
||||
@@ -463,7 +463,7 @@ fn render_grid_without_ligatures<'a>(
|
||||
visible_rows: impl Iterator<Item = usize>,
|
||||
colors: &color::List,
|
||||
override_colors: &color::OverrideList,
|
||||
theme: &WarpTheme,
|
||||
theme: &GalaxyTheme,
|
||||
default_font_properties: Properties,
|
||||
font_family: FamilyId,
|
||||
font_size: f32,
|
||||
@@ -967,7 +967,7 @@ fn render_grid_with_ligatures<'a>(
|
||||
visible_rows: impl Iterator<Item = usize>,
|
||||
colors: &color::List,
|
||||
override_colors: &color::OverrideList,
|
||||
theme: &WarpTheme,
|
||||
theme: &GalaxyTheme,
|
||||
default_font_properties: Properties,
|
||||
font_family: FamilyId,
|
||||
font_size: f32,
|
||||
|
||||
@@ -192,7 +192,7 @@ use crate::{
|
||||
settings_view::{flags, SettingsSection},
|
||||
terminal::view::inline_banner::{PromptSuggestionsEvent, PromptSuggestionsView},
|
||||
ui_components::{blended_colors, icons::Icon},
|
||||
user_config::WarpConfig,
|
||||
user_config::GalaxyConfig,
|
||||
util::bindings::{self, CustomAction},
|
||||
util::image::MAX_IMAGE_COUNT_FOR_QUERY,
|
||||
view_components::{DismissibleToast, ToastFlavor},
|
||||
@@ -268,7 +268,7 @@ use galaxy_core::{
|
||||
use galaxy_editor::editor::NavigationKey;
|
||||
use galaxy_util::path::ShellFamily;
|
||||
use galaxyui::{
|
||||
accessibility::{AccessibilityContent, ActionAccessibilityContent, WarpA11yRole},
|
||||
accessibility::{AccessibilityContent, ActionAccessibilityContent, GalaxyA11yRole},
|
||||
clipboard::{ClipboardContent, ImageData},
|
||||
clipboard_utils::CLIPBOARD_IMAGE_MIME_TYPES,
|
||||
color::ColorU,
|
||||
@@ -2652,7 +2652,7 @@ impl Input {
|
||||
.app_workflows()
|
||||
.cloned()
|
||||
.collect_vec();
|
||||
let local_user_workflows = WarpConfig::as_ref(ctx).local_user_workflows().clone();
|
||||
let local_user_workflows = GalaxyConfig::as_ref(ctx).local_user_workflows().clone();
|
||||
|
||||
let workflows_search_view = ctx.add_typed_action_view(|ctx| {
|
||||
workflows::CategoriesView::new(local_user_workflows, app_workflows, ctx)
|
||||
@@ -6677,7 +6677,7 @@ impl Input {
|
||||
ctx.emit_a11y_content(AccessibilityContent::new(
|
||||
accessibility_text,
|
||||
"Press shift-tab to select the next workflow argument",
|
||||
WarpA11yRole::UserAction,
|
||||
GalaxyA11yRole::UserAction,
|
||||
));
|
||||
|
||||
// Only highlight an argument and show enum suggestions if history suggestions are not active
|
||||
@@ -7029,7 +7029,7 @@ impl Input {
|
||||
|
||||
ctx.emit_a11y_content(AccessibilityContent::new_without_help(
|
||||
format!("Executed: {command}"),
|
||||
WarpA11yRole::UserAction,
|
||||
GalaxyA11yRole::UserAction,
|
||||
));
|
||||
}
|
||||
InputSuggestionsEvent::CloseSuggestion {
|
||||
@@ -11164,7 +11164,7 @@ impl Input {
|
||||
if let Some(a11y_text) = self.selected_workflow_a11y_text(ctx) {
|
||||
ctx.emit_a11y_content(AccessibilityContent::new_without_help(
|
||||
a11y_text,
|
||||
WarpA11yRole::UserAction,
|
||||
GalaxyA11yRole::UserAction,
|
||||
));
|
||||
}
|
||||
} else {
|
||||
@@ -11246,7 +11246,7 @@ impl Input {
|
||||
if trigger == CommandXRayTrigger::Keystroke {
|
||||
ctx.emit_a11y_content(AccessibilityContent::new_without_help(
|
||||
description.a11y_text(),
|
||||
WarpA11yRole::UserAction,
|
||||
GalaxyA11yRole::UserAction,
|
||||
));
|
||||
}
|
||||
ctx.notify();
|
||||
@@ -13883,7 +13883,7 @@ impl TypedActionView for Input {
|
||||
INPUT_A11Y_LABEL,
|
||||
// TODO (a11y) use bindings from user settings
|
||||
INPUT_A11Y_HELPER,
|
||||
WarpA11yRole::TextareaRole,
|
||||
GalaxyA11yRole::TextareaRole,
|
||||
))
|
||||
}
|
||||
_ => ActionAccessibilityContent::Empty,
|
||||
@@ -14082,7 +14082,7 @@ impl View for Input {
|
||||
INPUT_A11Y_LABEL,
|
||||
// TODO (a11y) use bindings from user settings
|
||||
INPUT_A11Y_HELPER,
|
||||
WarpA11yRole::TextareaRole,
|
||||
GalaxyA11yRole::TextareaRole,
|
||||
))
|
||||
}
|
||||
|
||||
|
||||
@@ -599,12 +599,12 @@ impl Input {
|
||||
}
|
||||
|
||||
pub mod styles {
|
||||
use galaxy_core::ui::theme::WarpTheme;
|
||||
use galaxy_core::ui::theme::GalaxyTheme;
|
||||
use pathfinder_color::ColorU;
|
||||
|
||||
use crate::ui_components::blended_colors;
|
||||
|
||||
pub fn default_border_color(theme: &WarpTheme) -> ColorU {
|
||||
pub fn default_border_color(theme: &GalaxyTheme) -> ColorU {
|
||||
blended_colors::neutral_2(theme)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
//! visual design matching the Figma specifications.
|
||||
use galaxy_core::ui::appearance::Appearance;
|
||||
use galaxy_core::ui::color::blend::Blend;
|
||||
use galaxy_core::ui::theme::{Fill, WarpTheme};
|
||||
use galaxy_core::ui::theme::{Fill, GalaxyTheme};
|
||||
use galaxyui::color::ColorU;
|
||||
use galaxyui::{AppContext, SingletonEntity};
|
||||
|
||||
@@ -46,15 +46,15 @@ pub fn item_background(
|
||||
}
|
||||
}
|
||||
|
||||
pub fn primary_text_color(theme: &WarpTheme, background: Fill) -> Fill {
|
||||
pub fn primary_text_color(theme: &GalaxyTheme, background: Fill) -> Fill {
|
||||
theme.main_text_color(background)
|
||||
}
|
||||
|
||||
pub fn secondary_text_color(theme: &WarpTheme, background: Fill) -> Fill {
|
||||
pub fn secondary_text_color(theme: &GalaxyTheme, background: Fill) -> Fill {
|
||||
theme.sub_text_color(background)
|
||||
}
|
||||
|
||||
pub fn disabled_text_color(theme: &WarpTheme, background: Fill) -> Fill {
|
||||
pub fn disabled_text_color(theme: &GalaxyTheme, background: Fill) -> Fill {
|
||||
theme.disabled_text_color(background)
|
||||
}
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ use crate::terminal::cli_agent_sessions::{
|
||||
CLIAgentInputState, CLIAgentSessionsModel, CLIAgentSessionsModelEvent,
|
||||
};
|
||||
use crate::terminal::model::session::SessionType;
|
||||
use galaxy_core::ui::Icon as WarpIcon;
|
||||
use galaxy_core::ui::Icon as GalaxyIcon;
|
||||
|
||||
use super::AcceptSlashCommandOrSavedPrompt;
|
||||
use crate::{
|
||||
@@ -440,13 +440,13 @@ impl InlineItem {
|
||||
override_icon
|
||||
} else {
|
||||
match skill.provider {
|
||||
SkillProvider::Warp => WarpIcon::Warp,
|
||||
SkillProvider::Claude => WarpIcon::ClaudeLogo,
|
||||
SkillProvider::Codex => WarpIcon::OpenAILogo,
|
||||
SkillProvider::Gemini => WarpIcon::GeminiLogo,
|
||||
SkillProvider::Droid => WarpIcon::DroidLogo,
|
||||
SkillProvider::OpenCode => WarpIcon::OpenCodeLogo,
|
||||
_ => WarpIcon::Warp,
|
||||
SkillProvider::Warp => GalaxyIcon::Warp,
|
||||
SkillProvider::Claude => GalaxyIcon::ClaudeLogo,
|
||||
SkillProvider::Codex => GalaxyIcon::OpenAILogo,
|
||||
SkillProvider::Gemini => GalaxyIcon::GeminiLogo,
|
||||
SkillProvider::Droid => GalaxyIcon::DroidLogo,
|
||||
SkillProvider::OpenCode => GalaxyIcon::OpenCodeLogo,
|
||||
_ => GalaxyIcon::Warp,
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ use crate::input_suggestions::{
|
||||
DETAILS_PANEL_MARGIN, DETAILS_PANEL_PADDING, HISTORY_DETAILS_PANEL_WIDTH,
|
||||
LABEL_PADDING as InputSuggestionsLabelPadding,
|
||||
};
|
||||
use crate::themes::theme::WarpTheme;
|
||||
use crate::themes::theme::GalaxyTheme;
|
||||
use galaxyui::elements::{
|
||||
Align, Border, ConstrainedBox, Container, CornerRadius, CrossAxisAlignment, DragBarSide,
|
||||
DropShadow, Element, Empty, Flex, ParentElement, Radius, Resizable, Shrinkable,
|
||||
@@ -187,7 +187,7 @@ impl Input {
|
||||
&self,
|
||||
margin: f32,
|
||||
corner_radius: CornerRadius,
|
||||
theme: &WarpTheme,
|
||||
theme: &GalaxyTheme,
|
||||
resize_config: SuggestionsResizeConfig,
|
||||
menu_positioning: MenuPositioning,
|
||||
content: Box<dyn Element>,
|
||||
|
||||
@@ -298,10 +298,10 @@ impl Input {
|
||||
}
|
||||
|
||||
pub mod styles {
|
||||
use galaxy_core::ui::theme::WarpTheme;
|
||||
use galaxy_core::ui::theme::GalaxyTheme;
|
||||
use pathfinder_color::ColorU;
|
||||
|
||||
pub fn default_border_color(theme: &WarpTheme) -> ColorU {
|
||||
pub fn default_border_color(theme: &GalaxyTheme) -> ColorU {
|
||||
theme.outline().into()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use galaxy_core::ui::theme::WarpTheme;
|
||||
use galaxy_core::ui::theme::GalaxyTheme;
|
||||
use galaxyui::elements::{Container, Element};
|
||||
use galaxyui::keymap::Keystroke;
|
||||
use galaxyui::{AppContext, Entity, ModelHandle, SingletonEntity, View, ViewContext};
|
||||
@@ -460,7 +460,7 @@ impl MessageTransformer<TerminalMessageArgs<'_>> for AttachedTextSelectionMessag
|
||||
}
|
||||
}
|
||||
|
||||
fn message_magenta(theme: &WarpTheme) -> ColorU {
|
||||
fn message_magenta(theme: &GalaxyTheme) -> ColorU {
|
||||
let mut color = theme.ansi_fg_magenta();
|
||||
color.a = (255. * 0.65) as u8;
|
||||
color
|
||||
|
||||
@@ -22,7 +22,7 @@ use crate::search::files::model::FileSearchModel;
|
||||
use crate::terminal::cli_agent_sessions::CLIAgentSessionsModel;
|
||||
use crate::terminal::input::slash_command_model::SlashCommandEntryState;
|
||||
use crate::terminal::input::slash_commands::SlashCommandsEvent;
|
||||
use crate::warp_managed_paths_watcher::WarpManagedPathsWatcher;
|
||||
use crate::galaxy_managed_paths_watcher::GalaxyManagedPathsWatcher;
|
||||
use repo_metadata::repositories::DetectedRepositories;
|
||||
use repo_metadata::watcher::DirectoryWatcher;
|
||||
use repo_metadata::RepoMetadataModel;
|
||||
@@ -161,7 +161,7 @@ pub fn initialize_app(app: &mut App) {
|
||||
crate::ai::document::ai_document_model::AIDocumentModel::new_for_test()
|
||||
});
|
||||
app.add_singleton_model(HomeDirectoryWatcher::new_for_test);
|
||||
app.add_singleton_model(WarpManagedPathsWatcher::new_for_testing);
|
||||
app.add_singleton_model(GalaxyManagedPathsWatcher::new_for_testing);
|
||||
app.add_singleton_model(SkillManager::new);
|
||||
|
||||
// Add GlobalResourceHandlesProvider for persistence
|
||||
|
||||
@@ -16,7 +16,7 @@ use crate::{
|
||||
safe_mode_settings::get_secret_obfuscation_mode,
|
||||
TerminalModel,
|
||||
},
|
||||
themes::theme::WarpTheme,
|
||||
themes::theme::GalaxyTheme,
|
||||
ui_components::icons::Icon,
|
||||
util::bindings::CustomAction,
|
||||
view_components::ToastFlavor,
|
||||
@@ -1164,7 +1164,7 @@ fn should_send_title_gen_request(ctx: &ViewContext<ShareBlockModal>) -> bool {
|
||||
|
||||
struct SingleBlock {
|
||||
terminal_model: Arc<FairMutex<TerminalModel>>,
|
||||
theme: WarpTheme,
|
||||
theme: GalaxyTheme,
|
||||
font_family: FamilyId,
|
||||
font_size: f32,
|
||||
line_height_ratio: f32,
|
||||
@@ -1188,7 +1188,7 @@ impl SingleBlock {
|
||||
#[allow(clippy::too_many_arguments)]
|
||||
fn new(
|
||||
terminal_model: Arc<FairMutex<TerminalModel>>,
|
||||
theme: WarpTheme,
|
||||
theme: GalaxyTheme,
|
||||
font_family: FamilyId,
|
||||
font_size: f32,
|
||||
line_height_ratio: f32,
|
||||
|
||||
@@ -669,7 +669,7 @@ impl TerminalManager {
|
||||
});
|
||||
|
||||
#[cfg(target_family = "wasm")]
|
||||
crate::platform::wasm::emit_event(crate::platform::wasm::WarpEvent::SessionJoined);
|
||||
crate::platform::wasm::emit_event(crate::platform::wasm::GalaxyEvent::SessionJoined);
|
||||
}
|
||||
NetworkEvent::SessionEnded { reason } => {
|
||||
let Some(view) = weak_view_handle.upgrade(ctx) else {
|
||||
|
||||
@@ -6,7 +6,7 @@ use crate::terminal::warpify::render::build_description_row;
|
||||
use crate::terminal::warpify::settings::WarpifySettings;
|
||||
use crate::ui_components::icons::Icon as UiIcon;
|
||||
use galaxy_core::channel::ChannelState;
|
||||
use galaxy_core::ui::theme::WarpTheme;
|
||||
use galaxy_core::ui::theme::GalaxyTheme;
|
||||
use galaxyui::elements::HighlightedHyperlink;
|
||||
use galaxyui::elements::Hoverable;
|
||||
use galaxyui::elements::Icon;
|
||||
@@ -170,7 +170,7 @@ impl SshErrorBlock {
|
||||
fn render_title_ui(
|
||||
&self,
|
||||
app: &AppContext,
|
||||
theme: &WarpTheme,
|
||||
theme: &GalaxyTheme,
|
||||
appearance: &Appearance,
|
||||
) -> Box<dyn Element> {
|
||||
let header_contents = warpify::render::build_header_row(
|
||||
|
||||
@@ -10,7 +10,7 @@ use crate::terminal::warpify::render;
|
||||
use crate::terminal::warpify::settings::WarpifySettings;
|
||||
use crate::ui_components::blended_colors;
|
||||
use crate::ui_components::icons::Icon as UiIcon;
|
||||
use galaxy_core::ui::theme::WarpTheme;
|
||||
use galaxy_core::ui::theme::GalaxyTheme;
|
||||
use galaxyui::elements::{
|
||||
FormattedTextElement, HighlightedHyperlink, Hoverable, Icon, MainAxisAlignment, MainAxisSize,
|
||||
MouseStateHandle,
|
||||
@@ -315,7 +315,7 @@ impl SshInstallTmuxBlock {
|
||||
fn render_title_ui(
|
||||
&self,
|
||||
app: &AppContext,
|
||||
theme: &WarpTheme,
|
||||
theme: &GalaxyTheme,
|
||||
appearance: &Appearance,
|
||||
) -> Box<dyn Element> {
|
||||
let header_contents = render::build_header_row(
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
use asset_macro::bundled_asset;
|
||||
use galaxy_core::ui::theme::WarpTheme;
|
||||
use galaxy_core::ui::theme::GalaxyTheme;
|
||||
use galaxyui::assets::asset_cache::{AssetCache, AssetState};
|
||||
use markdown_parser::{FormattedText, FormattedTextFragment, FormattedTextLine};
|
||||
|
||||
@@ -65,7 +65,7 @@ impl Entity for SshWarpifyBlock {
|
||||
}
|
||||
|
||||
impl SshWarpifyBlock {
|
||||
fn render_title_ui(&self, theme: &WarpTheme, appearance: &Appearance) -> Box<dyn Element> {
|
||||
fn render_title_ui(&self, theme: &GalaxyTheme, appearance: &Appearance) -> Box<dyn Element> {
|
||||
let icon = Icon::new(UiIcon::Warp.into(), theme.active_ui_detail());
|
||||
warpify::render::header_row("Wormholing SSH Session...", icon, theme, appearance)
|
||||
}
|
||||
|
||||
+41
-44
@@ -321,7 +321,7 @@ use crate::terminal::{height_in_range_approx, heights_approx_gt, SizeUpdate};
|
||||
use crate::terminal::{heights_approx_eq, CellSizeAndWindowPadding};
|
||||
use crate::terminal::{AudibleBell, SizeUpdateReason};
|
||||
use crate::terminal::{BlockListSettings, BlockListSettingsChangedEvent};
|
||||
use crate::themes::theme::WarpTheme;
|
||||
use crate::themes::theme::GalaxyTheme;
|
||||
use crate::ui_components::icons::{self};
|
||||
use crate::util::bindings::{
|
||||
custom_tag_to_keystroke, keybinding_name_to_display_string, keybinding_name_to_keystroke,
|
||||
@@ -407,7 +407,7 @@ use galaxyui::assets::asset_cache::{AssetCache, AssetCacheEvent};
|
||||
use galaxyui::image_cache::ImageType;
|
||||
use galaxyui::units::{IntoLines, IntoPixels, Lines, Pixels};
|
||||
use galaxyui::{
|
||||
accessibility::{AccessibilityContent, ActionAccessibilityContent, WarpA11yRole},
|
||||
accessibility::{AccessibilityContent, ActionAccessibilityContent, GalaxyA11yRole},
|
||||
elements::SavePosition,
|
||||
elements::{
|
||||
Align, Clipped, ConstrainedBox, CornerRadius, Fill, Hoverable, Icon, MouseStateHandle,
|
||||
@@ -721,7 +721,7 @@ const DEFAULT_AI_BLOCK_HEIGHT: f32 = 96.;
|
||||
|
||||
pub const DEFAULT_ASK_AI_AUTOSUGGESTION_TEXT: &str = "What happened here?";
|
||||
|
||||
const WARP_MD_PATH: &str = "WARP.md";
|
||||
const GALAXY_MD_PATH: &str = "GALAXY.md";
|
||||
|
||||
pub const LONG_RUNNING_AGENT_REQUESTED_COMMAND_CONTEXT_KEY: &str = "LongRunningRequestedCommand";
|
||||
pub const LONG_RUNNING_AGENT_REQUESTED_COMMAND_USER_TOOK_OVER_CONTEXT_KEY: &str =
|
||||
@@ -1678,7 +1678,7 @@ pub enum Event {
|
||||
OpenWorkflowModalWithCloudWorkflow(SyncId),
|
||||
// Tell the pane group to open the workflow modal with an unsaved workflow.
|
||||
OpenWorkflowModalWithTemporary(Box<Workflow>),
|
||||
OpenWarpDriveObjectInPane(ObjectUid),
|
||||
OpenGalaxyDriveObjectInPane(ObjectUid),
|
||||
OpenSuggestedAgentModeWorkflowModal {
|
||||
workflow_and_id: SuggestedAgentModeWorkflowAndId,
|
||||
},
|
||||
@@ -2218,7 +2218,7 @@ impl BlocklistAIRenderContext {
|
||||
}
|
||||
|
||||
/// Returns the AI context stripe color to use for a block, if any.
|
||||
pub fn context_color_for_block(&self, block: &Block, theme: &WarpTheme) -> Option<ColorU> {
|
||||
pub fn context_color_for_block(&self, block: &Block, theme: &GalaxyTheme) -> Option<ColorU> {
|
||||
match self.context_inclusion_state_for_block(block) {
|
||||
Some(AIContextInclusionState::Active) => self.context_color(theme),
|
||||
_ => None,
|
||||
@@ -2229,7 +2229,7 @@ impl BlocklistAIRenderContext {
|
||||
pub fn context_color_for_rich_content(
|
||||
&self,
|
||||
rich_content: &RichContentMetadata,
|
||||
theme: &WarpTheme,
|
||||
theme: &GalaxyTheme,
|
||||
) -> Option<ColorU> {
|
||||
match rich_content {
|
||||
RichContentMetadata::AIBlock(ai_metadata)
|
||||
@@ -2248,7 +2248,7 @@ impl BlocklistAIRenderContext {
|
||||
|
||||
/// The context color to use for a block, given its conversation phase.
|
||||
/// This assumes the block is part of the active conversation.
|
||||
fn context_color(&self, theme: &WarpTheme) -> Option<ColorU> {
|
||||
fn context_color(&self, theme: &GalaxyTheme) -> Option<ColorU> {
|
||||
(self.is_ai_input_enabled && self.should_highlight_context).then(|| ai_brand_color(theme))
|
||||
}
|
||||
}
|
||||
@@ -4012,7 +4012,7 @@ impl TerminalView {
|
||||
ConversationDetailsPanelEvent::OpenPlanNotebook { notebook_uid } => {
|
||||
// Convert NotebookId -> SyncId -> ObjectUid (String)
|
||||
let object_uid = SyncId::from(*notebook_uid).uid();
|
||||
ctx.emit(Event::OpenWarpDriveObjectInPane(object_uid));
|
||||
ctx.emit(Event::OpenGalaxyDriveObjectInPane(object_uid));
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -5628,8 +5628,6 @@ impl TerminalView {
|
||||
conversation.wall_to_wall_response_time_since_last_query();
|
||||
|
||||
let token_usage_list = conversation.total_token_usage();
|
||||
let total_input_tokens: u32 = token_usage_list.iter().map(|u| u.total_input).sum();
|
||||
let total_output_tokens: u32 = token_usage_list.iter().map(|u| u.output).sum();
|
||||
let total_cache_read_tokens: u32 = token_usage_list.iter().map(|u| u.input_cache_read).sum();
|
||||
let total_cache_write_tokens: u32 =
|
||||
token_usage_list.iter().map(|u| u.input_cache_write).sum();
|
||||
@@ -5643,11 +5641,10 @@ impl TerminalView {
|
||||
lines_added: tool_usage.apply_file_diff_stats.lines_added,
|
||||
lines_removed: tool_usage.apply_file_diff_stats.lines_removed,
|
||||
commands_executed: tool_usage.run_command_stats.commands_executed,
|
||||
total_input_tokens,
|
||||
total_output_tokens,
|
||||
current_context_tokens: conversation.current_context_tokens(),
|
||||
estimated_cost_cents,
|
||||
total_cache_read_tokens,
|
||||
total_cache_write_tokens,
|
||||
estimated_cost_cents,
|
||||
};
|
||||
|
||||
let timing_info = TimingInfo {
|
||||
@@ -8568,7 +8565,7 @@ impl TerminalView {
|
||||
let a11y_content = AccessibilityContent::new(
|
||||
format!("{title} recognized."),
|
||||
a11y_message,
|
||||
WarpA11yRole::TextRole,
|
||||
GalaxyA11yRole::TextRole,
|
||||
);
|
||||
ctx.emit_a11y_content(a11y_content);
|
||||
|
||||
@@ -8681,7 +8678,7 @@ impl TerminalView {
|
||||
let a11y_content = AccessibilityContent::new(
|
||||
trigger.discovery_banner_copy(),
|
||||
"You can enable notifications through the command palette.",
|
||||
WarpA11yRole::TextRole,
|
||||
GalaxyA11yRole::TextRole,
|
||||
);
|
||||
ctx.emit_a11y_content(a11y_content);
|
||||
|
||||
@@ -8720,7 +8717,7 @@ impl TerminalView {
|
||||
let a11y_content = AccessibilityContent::new(
|
||||
banner_title,
|
||||
"Make sure you have enabled access for Galaxy notifications in System Preferences.",
|
||||
WarpA11yRole::TextRole,
|
||||
GalaxyA11yRole::TextRole,
|
||||
);
|
||||
ctx.emit_a11y_content(a11y_content);
|
||||
|
||||
@@ -13495,7 +13492,7 @@ impl TerminalView {
|
||||
let a11y_content = AccessibilityContent::new(
|
||||
format!("Suggested corrected command: {}", correction.command),
|
||||
"Press right arrow to insert or keep editing to ignore",
|
||||
WarpA11yRole::HelpRole,
|
||||
GalaxyA11yRole::HelpRole,
|
||||
);
|
||||
ctx.emit_a11y_content(a11y_content);
|
||||
|
||||
@@ -18807,7 +18804,7 @@ impl TerminalView {
|
||||
}
|
||||
AIBlockEvent::OpenCitation(citation) => match citation {
|
||||
AIAgentCitation::WarpDriveObject { uid } => {
|
||||
ctx.emit(Event::OpenWarpDriveObjectInPane(uid.clone()));
|
||||
ctx.emit(Event::OpenGalaxyDriveObjectInPane(uid.clone()));
|
||||
}
|
||||
AIAgentCitation::WarpDocumentation { path } => {
|
||||
ctx.open_url(&format!("https://docs.warp.dev/{path}"));
|
||||
@@ -18821,7 +18818,7 @@ impl TerminalView {
|
||||
}
|
||||
AIBlockEvent::OpenWorkflow { sync_id } => {
|
||||
if let Some(object) = CloudModel::as_ref(ctx).get_workflow(sync_id) {
|
||||
ctx.emit(Event::OpenWarpDriveObjectInPane(object.uid()));
|
||||
ctx.emit(Event::OpenGalaxyDriveObjectInPane(object.uid()));
|
||||
}
|
||||
}
|
||||
AIBlockEvent::OpenSuggestedAgentModeWorkflowModal { workflow_and_id } => {
|
||||
@@ -23098,7 +23095,7 @@ impl TerminalView {
|
||||
// TODO (a11y) Keybindings should be taken from the actual user's
|
||||
// configuration
|
||||
"Press cmd-C to read and copy both command and output, and cmd-option-shift-C to read and copy output only. Press cmd-B to bookmark the block: you could navigate between bookmarked blocks quickly using option-up and option-down.",
|
||||
WarpA11yRole::TextRole,
|
||||
GalaxyA11yRole::TextRole,
|
||||
)
|
||||
})
|
||||
}
|
||||
@@ -24097,7 +24094,7 @@ impl TypedActionView for TerminalView {
|
||||
.map_or(Empty, |selected| {
|
||||
Custom(AccessibilityContent::new_without_help(
|
||||
selected,
|
||||
WarpA11yRole::TextRole,
|
||||
GalaxyA11yRole::TextRole,
|
||||
))
|
||||
})
|
||||
}
|
||||
@@ -24123,7 +24120,7 @@ impl TypedActionView for TerminalView {
|
||||
BookmarkBlock(_) | BookmarkSelectedBlock => {
|
||||
Custom(AccessibilityContent::new_without_help(
|
||||
"Toggle Bookmark block",
|
||||
WarpA11yRole::TextRole,
|
||||
GalaxyA11yRole::TextRole,
|
||||
))
|
||||
}
|
||||
ExpandBlockSelectionAbove | ExpandBlockSelectionBelow => {
|
||||
@@ -24145,19 +24142,19 @@ impl TypedActionView for TerminalView {
|
||||
"Selected all {} blocks.",
|
||||
self.num_non_hidden_selected_blocks()
|
||||
),
|
||||
WarpA11yRole::TextRole,
|
||||
GalaxyA11yRole::TextRole,
|
||||
)),
|
||||
ScrollToBottomOfSelectedBlocks => Custom(AccessibilityContent::new_without_help(
|
||||
"Scrolled to bottom of selected block".to_string(),
|
||||
WarpA11yRole::TextRole,
|
||||
GalaxyA11yRole::TextRole,
|
||||
)),
|
||||
ScrollToTopOfSelectedBlocks => Custom(AccessibilityContent::new_without_help(
|
||||
"Scrolled to top of selected block".to_string(),
|
||||
WarpA11yRole::TextRole,
|
||||
GalaxyA11yRole::TextRole,
|
||||
)),
|
||||
ScrollToBottomOfOverhangingBlock(_) => Custom(AccessibilityContent::new_without_help(
|
||||
"Scrolled to bottom of bottommost visible block".to_string(),
|
||||
WarpA11yRole::TextRole,
|
||||
GalaxyA11yRole::TextRole,
|
||||
)),
|
||||
CopyOutputs => {
|
||||
let mut outputs = vec![];
|
||||
@@ -24178,7 +24175,7 @@ impl TypedActionView for TerminalView {
|
||||
);
|
||||
Custom(AccessibilityContent::new_without_help(
|
||||
text,
|
||||
WarpA11yRole::TextRole,
|
||||
GalaxyA11yRole::TextRole,
|
||||
))
|
||||
}
|
||||
Copy => {
|
||||
@@ -24197,7 +24194,7 @@ impl TypedActionView for TerminalView {
|
||||
let text = format!("Copied {} blocks.\n{}", blocks.len(), blocks.join("\n"));
|
||||
Custom(AccessibilityContent::new_without_help(
|
||||
text,
|
||||
WarpA11yRole::TextRole,
|
||||
GalaxyA11yRole::TextRole,
|
||||
))
|
||||
}
|
||||
FocusInputAndClearSelection => {
|
||||
@@ -24205,7 +24202,7 @@ impl TypedActionView for TerminalView {
|
||||
INPUT_A11Y_LABEL,
|
||||
// TODO (a11y) use bindings from user settings
|
||||
INPUT_A11Y_HELPER,
|
||||
WarpA11yRole::TextareaRole,
|
||||
GalaxyA11yRole::TextareaRole,
|
||||
))
|
||||
}
|
||||
KeyDown(key) => {
|
||||
@@ -24216,24 +24213,24 @@ impl TypedActionView for TerminalView {
|
||||
};
|
||||
Custom(AccessibilityContent::new_without_help(
|
||||
label,
|
||||
WarpA11yRole::TextareaRole,
|
||||
GalaxyA11yRole::TextareaRole,
|
||||
))
|
||||
}
|
||||
OpenBlockFilterEditor(block_index) => Custom(AccessibilityContent::new_without_help(
|
||||
format!("Open block filter editor for block {block_index}"),
|
||||
WarpA11yRole::TextRole,
|
||||
GalaxyA11yRole::TextRole,
|
||||
)),
|
||||
ShowInitializationBlock => Custom(AccessibilityContent::new_without_help(
|
||||
"Showed initialization block",
|
||||
WarpA11yRole::TextareaRole,
|
||||
GalaxyA11yRole::TextareaRole,
|
||||
)),
|
||||
ShowWarpifySettings => Custom(AccessibilityContent::new_without_help(
|
||||
"Opened Wormhole Settings",
|
||||
WarpA11yRole::ButtonRole,
|
||||
GalaxyA11yRole::ButtonRole,
|
||||
)),
|
||||
OpenFilesPalette { .. } => Custom(AccessibilityContent::new_without_help(
|
||||
"Opened file search palette",
|
||||
WarpA11yRole::ButtonRole,
|
||||
GalaxyA11yRole::ButtonRole,
|
||||
)),
|
||||
InsertCommandCorrection { .. }
|
||||
| BlockListContextMenu(_)
|
||||
@@ -24302,28 +24299,28 @@ impl TypedActionView for TerminalView {
|
||||
OpenInWarpBanner(action) => self.open_in_warp_banner_accessibility_content(*action),
|
||||
OpenAIBlockAttachedBlocksMenu { .. } => Custom(AccessibilityContent::new_without_help(
|
||||
"Open list of blocks attached as context to this AI query.".to_owned(),
|
||||
WarpA11yRole::PopoverRole,
|
||||
GalaxyA11yRole::PopoverRole,
|
||||
)),
|
||||
OpenAIBlockOverflowMenu { .. } => Custom(AccessibilityContent::new_without_help(
|
||||
"Open overflow menu with copy options for this AI block.".to_owned(),
|
||||
WarpA11yRole::PopoverRole,
|
||||
GalaxyA11yRole::PopoverRole,
|
||||
)),
|
||||
RewindAIConversation { .. } => Custom(AccessibilityContent::new_without_help(
|
||||
"Show confirmation dialog to rewind to before this point in the AI conversation."
|
||||
.to_owned(),
|
||||
WarpA11yRole::ButtonRole,
|
||||
GalaxyA11yRole::ButtonRole,
|
||||
)),
|
||||
ExecuteRewindAIConversation { .. } => Custom(AccessibilityContent::new_without_help(
|
||||
"Execute rewind to before this point in the AI conversation.".to_owned(),
|
||||
WarpA11yRole::ButtonRole,
|
||||
GalaxyA11yRole::ButtonRole,
|
||||
)),
|
||||
SelectAIAttachedBlock(_) => Custom(AccessibilityContent::new_without_help(
|
||||
"Click on a block attached as context to this AI query.".to_owned(),
|
||||
WarpA11yRole::ButtonRole,
|
||||
GalaxyA11yRole::ButtonRole,
|
||||
)),
|
||||
PickRepoToOpen => Custom(AccessibilityContent::new_without_help(
|
||||
"Use file picker to select a git repository".to_owned(),
|
||||
WarpA11yRole::PopoverRole,
|
||||
GalaxyA11yRole::PopoverRole,
|
||||
)),
|
||||
#[cfg(feature = "voice_input")]
|
||||
ToggleCLIAgentVoiceInput(_) => Empty,
|
||||
@@ -25252,11 +25249,11 @@ impl TypedActionView for TerminalView {
|
||||
}
|
||||
OpenProjectRulesPane => {
|
||||
if let Some(current_dir) = self.pwd() {
|
||||
let mut warp_md_path = PathBuf::from(¤t_dir);
|
||||
warp_md_path.push(WARP_MD_PATH);
|
||||
let mut galaxy_md_path = PathBuf::from(¤t_dir);
|
||||
galaxy_md_path.push(GALAXY_MD_PATH);
|
||||
#[cfg(feature = "local_fs")]
|
||||
ctx.emit(Event::OpenCodeInWarp {
|
||||
source: CodeSource::ProjectRules { path: warp_md_path },
|
||||
source: CodeSource::ProjectRules { path: galaxy_md_path },
|
||||
layout: *crate::util::file::external_editor::EditorSettings::as_ref(ctx)
|
||||
.open_file_layout
|
||||
.value(),
|
||||
@@ -26531,7 +26528,7 @@ fn maybe_wrap_terminal_element_in_scrollable(
|
||||
vertical_scroll_handle: ScrollStateHandle,
|
||||
horizontal_scroll_handle: ClippedScrollStateHandle,
|
||||
required_terminal_width: f32,
|
||||
theme: &WarpTheme,
|
||||
theme: &GalaxyTheme,
|
||||
element: impl NewScrollableElement + 'static,
|
||||
) -> Box<dyn Element> {
|
||||
let nonactive_thumb_background = theme.disabled_text_color(theme.background()).into();
|
||||
|
||||
@@ -17,7 +17,7 @@ use galaxyui::{
|
||||
};
|
||||
pub use warpify::*;
|
||||
|
||||
use crate::themes::theme::WarpTheme;
|
||||
use crate::themes::theme::GalaxyTheme;
|
||||
|
||||
const CONSTRAINED_BANNER_HEIGHT: f32 = 48.;
|
||||
const BANNER_TOP_MARGIN: f32 = 16.;
|
||||
@@ -53,7 +53,7 @@ impl WithinBlockBanner {
|
||||
fn render_block_banner(
|
||||
build_child: impl FnOnce(&MouseState) -> Box<dyn Element>,
|
||||
hover_state: MouseStateHandle,
|
||||
theme: &WarpTheme,
|
||||
theme: &GalaxyTheme,
|
||||
) -> Box<dyn Element> {
|
||||
Stack::new()
|
||||
.with_child(
|
||||
|
||||
@@ -39,12 +39,11 @@ use model::{InitStepData, InitStepStatus};
|
||||
use std::path::{Path, PathBuf};
|
||||
|
||||
const ONBOARDING_TEXT: &str = "Great - let's begin setting up this project! Would you like to give me permission to index this codebase? It allows me to quickly understand context and provide more targeted solutions when working in this codebase. No code is stored on Galaxy servers.";
|
||||
const ALREADY_SETUP_TEXT: &str = "It looks like this project has already been initialized. You can re-generate the AGENTS.md for this codebase by clicking the button below.";
|
||||
// Native Warp rules file format.
|
||||
pub const FILES_TO_CHECK: [&str; 2] = ["AGENTS.md", "WARP.md"];
|
||||
// File formats that can be linked to WARP.md.
|
||||
pub const LINKABLE_FILES: [&str; 7] = [
|
||||
"CLAUDE.md",
|
||||
const ALREADY_SETUP_TEXT: &str = "It looks like this project has already been initialized. You can re-generate the GALAXY.md for this codebase by clicking the button below.";
|
||||
// Native Galaxy rules file format.
|
||||
pub const FILES_TO_CHECK: [&str; 4] = ["GALAXY.md", "AGENTS.md", "WARP.md", "CLAUDE.md"];
|
||||
// File formats that can be linked to GALAXY.md.
|
||||
pub const LINKABLE_FILES: [&str; 6] = [
|
||||
".cursorrules",
|
||||
"AGENT.md",
|
||||
"GEMINI.md",
|
||||
|
||||
@@ -54,7 +54,7 @@ pub enum InitStepStatus {
|
||||
Pending,
|
||||
/// Ready for user interaction (contains data for view to render)
|
||||
Ready(InitStepData),
|
||||
/// User initiated action, e.g. AI generating WARP.md
|
||||
/// User initiated action, e.g. AI generating GALAXY.md
|
||||
Running,
|
||||
/// Done (accepted, skipped, or auto-completed)
|
||||
Completed(InitActionResult),
|
||||
@@ -517,17 +517,20 @@ impl InitProjectModel {
|
||||
exists
|
||||
},
|
||||
move |me, existing_files, ctx| {
|
||||
let has_agents_md = existing_files.iter().any(|p| {
|
||||
let has_rules_md = existing_files.iter().any(|p| {
|
||||
p.file_name()
|
||||
.map(|n| {
|
||||
let name = n.to_string_lossy().to_lowercase();
|
||||
name == "agents.md" || name == "warp.md"
|
||||
name == "galaxy.md"
|
||||
|| name == "agents.md"
|
||||
|| name == "warp.md"
|
||||
|| name == "claude.md"
|
||||
})
|
||||
.unwrap_or(false)
|
||||
});
|
||||
|
||||
if has_agents_md {
|
||||
// Already has AGENTS.md or WARP.md, mark as completed
|
||||
if has_rules_md {
|
||||
// Already has a rules file, mark as completed
|
||||
me.set_step(
|
||||
InitStepKind::ProjectScopedRules,
|
||||
Some(InitStep::new_completed(
|
||||
|
||||
@@ -6,7 +6,7 @@ use std::{
|
||||
|
||||
use galaxy_util::path::EscapeChar;
|
||||
use galaxyui::{
|
||||
accessibility::{AccessibilityContent, ActionAccessibilityContent, WarpA11yRole},
|
||||
accessibility::{AccessibilityContent, ActionAccessibilityContent, GalaxyA11yRole},
|
||||
SingletonEntity, ViewContext,
|
||||
};
|
||||
use itertools::Itertools;
|
||||
@@ -238,7 +238,7 @@ impl TerminalView {
|
||||
Some(banner_state) => {
|
||||
ActionAccessibilityContent::Custom(AccessibilityContent::new_without_help(
|
||||
format!("Open {} in Galaxy", banner_state.target.path.display()),
|
||||
WarpA11yRole::UserAction,
|
||||
GalaxyA11yRole::UserAction,
|
||||
))
|
||||
}
|
||||
None => ActionAccessibilityContent::Empty,
|
||||
@@ -247,14 +247,14 @@ impl TerminalView {
|
||||
OpenInWarpBannerAction::Close => {
|
||||
ActionAccessibilityContent::Custom(AccessibilityContent::new_without_help(
|
||||
"Close View in Galaxy banner",
|
||||
WarpA11yRole::UserAction,
|
||||
GalaxyA11yRole::UserAction,
|
||||
))
|
||||
}
|
||||
OpenInWarpBannerAction::LearnMore => {
|
||||
ActionAccessibilityContent::Custom(AccessibilityContent::new(
|
||||
"Learn more",
|
||||
"Learn more about opening Markdown files in Galaxy",
|
||||
WarpA11yRole::UserAction,
|
||||
GalaxyA11yRole::UserAction,
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ use crate::ui_components::buttons::icon_button_with_color;
|
||||
use crate::ui_components::icons;
|
||||
use crate::workspace::tab_settings::TabSettings;
|
||||
use galaxy_core::context_flag::ContextFlag;
|
||||
use galaxy_core::ui::Icon as WarpIcon;
|
||||
use galaxy_core::ui::Icon as GalaxyIcon;
|
||||
use galaxyui::elements::{
|
||||
ChildAnchor, ConstrainedBox, CrossAxisAlignment, Flex, MainAxisAlignment, MainAxisSize,
|
||||
OffsetPositioning, ParentAnchor, ParentElement, ParentOffsetBounds, Shrinkable, Stack,
|
||||
@@ -796,9 +796,9 @@ impl TerminalView {
|
||||
{
|
||||
ConstrainedBox::new(
|
||||
if is_ambient_agent {
|
||||
WarpIcon::OzCloud
|
||||
GalaxyIcon::OzCloud
|
||||
} else {
|
||||
WarpIcon::Oz
|
||||
GalaxyIcon::Oz
|
||||
}
|
||||
.to_galaxyui_icon(blended_colors::text_sub(theme, theme.background()).into())
|
||||
.finish(),
|
||||
|
||||
@@ -3,7 +3,7 @@ use std::{borrow::Cow, cell::RefCell};
|
||||
use galaxy_core::ui::{
|
||||
appearance::Appearance,
|
||||
builder::UiBuilder,
|
||||
theme::{color::internal_colors, WarpTheme},
|
||||
theme::{color::internal_colors, GalaxyTheme},
|
||||
};
|
||||
use galaxyui::{
|
||||
clipboard::ClipboardContent,
|
||||
@@ -276,7 +276,7 @@ impl TerminationType {
|
||||
|
||||
fn inverted_color_ui_builder(appearance: &Appearance) -> UiBuilder {
|
||||
let theme = appearance.theme();
|
||||
let theme = WarpTheme::new(
|
||||
let theme = GalaxyTheme::new(
|
||||
theme.foreground(),
|
||||
theme.background().into_solid(),
|
||||
theme.background(),
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use crate::ai::blocklist::inline_action::inline_action_icons;
|
||||
use crate::ui_components::blended_colors;
|
||||
use galaxy_core::ui::appearance::Appearance;
|
||||
use galaxy_core::ui::theme::{Fill, WarpTheme};
|
||||
use galaxy_core::ui::theme::{Fill, GalaxyTheme};
|
||||
use galaxyui::elements::{
|
||||
Align, ConstrainedBox, Container, CornerRadius, CrossAxisAlignment, Flex, FormattedTextElement,
|
||||
HighlightedHyperlink, Icon, MouseStateHandle, ParentElement, Radius, Rect, Shrinkable, Stack,
|
||||
@@ -41,7 +41,7 @@ pub const LEFT_STRIPE_WIDTH: f32 = 5.;
|
||||
pub fn build_header_row(
|
||||
text: &'static str,
|
||||
icon: Icon,
|
||||
theme: &WarpTheme,
|
||||
theme: &GalaxyTheme,
|
||||
appearance: &Appearance,
|
||||
) -> Container {
|
||||
let mut row = Flex::row();
|
||||
@@ -80,7 +80,7 @@ pub fn apply_spacing_styles(header_row: Container) -> Container {
|
||||
pub fn header_row(
|
||||
text: &'static str,
|
||||
icon: Icon,
|
||||
theme: &WarpTheme,
|
||||
theme: &GalaxyTheme,
|
||||
appearance: &Appearance,
|
||||
) -> Box<dyn Element> {
|
||||
apply_spacing_styles(build_header_row(text, icon, theme, appearance)).finish()
|
||||
@@ -96,7 +96,7 @@ fn green_check_icon(appearance: &Appearance, size: f32) -> Box<dyn Element> {
|
||||
/// UI helper to render the ssh command that caused the warpification prompt.
|
||||
pub fn build_command_row(
|
||||
command: String,
|
||||
theme: &WarpTheme,
|
||||
theme: &GalaxyTheme,
|
||||
appearance: &Appearance,
|
||||
show_green_check: bool,
|
||||
) -> Container {
|
||||
@@ -131,7 +131,7 @@ pub fn build_command_row(
|
||||
/// UI helper to render the description row of an SSH rich content block.
|
||||
pub fn build_description_row(
|
||||
text: FormattedText,
|
||||
theme: &WarpTheme,
|
||||
theme: &GalaxyTheme,
|
||||
appearance: &Appearance,
|
||||
highlight_index: HighlightedHyperlink,
|
||||
) -> FormattedTextElement {
|
||||
@@ -150,7 +150,7 @@ pub fn build_description_row(
|
||||
)
|
||||
}
|
||||
|
||||
pub fn description_row(text: &str, theme: &WarpTheme, appearance: &Appearance) -> Box<dyn Element> {
|
||||
pub fn description_row(text: &str, theme: &GalaxyTheme, appearance: &Appearance) -> Box<dyn Element> {
|
||||
let text = FormattedText::new(vec![FormattedTextLine::Line(vec![
|
||||
FormattedTextFragment::plain_text(text),
|
||||
])]);
|
||||
@@ -202,7 +202,7 @@ pub fn render_never_warpify_ssh_link(
|
||||
Some(Align::new(link).bottom_right().finish())
|
||||
}
|
||||
|
||||
fn get_subshell_flag_info(subshell_source: &SubshellSource, theme: &WarpTheme) -> (String, Fill) {
|
||||
fn get_subshell_flag_info(subshell_source: &SubshellSource, theme: &GalaxyTheme) -> (String, Fill) {
|
||||
match subshell_source {
|
||||
SubshellSource::EnvVarCollection(environment_name) => (
|
||||
environment_name.to_string(),
|
||||
@@ -245,7 +245,7 @@ pub fn render_subshell_flag(
|
||||
subshell_source: SubshellSource,
|
||||
font_family: FamilyId,
|
||||
font_size: f32,
|
||||
theme: &WarpTheme,
|
||||
theme: &GalaxyTheme,
|
||||
) -> Box<dyn Element> {
|
||||
let (flag_name, background_color) = get_subshell_flag_info(&subshell_source, theme);
|
||||
let container = Container::new(
|
||||
|
||||
@@ -11,7 +11,7 @@ use crate::ui_components::icons::Icon as UiIcon;
|
||||
use crate::workspace::WorkspaceAction;
|
||||
use channel_versions::overrides::TargetOS;
|
||||
use galaxy_core::semantic_selection::SemanticSelection;
|
||||
use galaxy_core::ui::theme::WarpTheme;
|
||||
use galaxy_core::ui::theme::GalaxyTheme;
|
||||
use galaxyui::elements::{
|
||||
CrossAxisAlignment, Icon, MainAxisAlignment, MainAxisSize, MouseStateHandle, SelectableArea,
|
||||
SelectionHandle, Text,
|
||||
@@ -145,7 +145,7 @@ impl WarpifySuccessBlock {
|
||||
|
||||
pub fn render_spawning_command(
|
||||
&self,
|
||||
theme: &WarpTheme,
|
||||
theme: &GalaxyTheme,
|
||||
appearance: &Appearance,
|
||||
) -> Box<dyn Element> {
|
||||
let spawning_command = self.spawning_command.clone();
|
||||
@@ -154,7 +154,7 @@ impl WarpifySuccessBlock {
|
||||
.finish()
|
||||
}
|
||||
|
||||
pub fn render_title_ui(&self, theme: &WarpTheme, appearance: &Appearance) -> Box<dyn Element> {
|
||||
pub fn render_title_ui(&self, theme: &GalaxyTheme, appearance: &Appearance) -> Box<dyn Element> {
|
||||
let header_contents = render::build_header_row(
|
||||
"Session Wormholed",
|
||||
Icon::new(UiIcon::Warp.into(), theme.active_ui_detail()),
|
||||
|
||||
@@ -4,7 +4,7 @@ use crate::terminal::event_listener::ChannelEventListener;
|
||||
use crate::terminal::model::block::{BlockSize, SerializedBlock};
|
||||
use crate::terminal::shell::ShellType;
|
||||
use crate::terminal::BlockPadding;
|
||||
use crate::theme::WarpTheme;
|
||||
use crate::theme::GalaxyTheme;
|
||||
|
||||
use super::*;
|
||||
|
||||
@@ -42,7 +42,7 @@ fn terminal_model(background_executor: Arc<Background>) -> Arc<FairMutex<Termina
|
||||
max_block_scroll_limit: 1000,
|
||||
prompt_height: 1.,
|
||||
},
|
||||
List::from(&WarpTheme::default().into()),
|
||||
List::from(&GalaxyTheme::default().into()),
|
||||
ChannelEventListener::new_for_test(),
|
||||
background_executor,
|
||||
false,
|
||||
|
||||
Reference in New Issue
Block a user