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
@@ -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(),
|
||||
|
||||
Reference in New Issue
Block a user