Fix cursor focus and selection in input box, add AWS env var warning box, and remove AWS Bedrock login banner
This commit is contained in:
@@ -113,6 +113,7 @@ impl CanonicalRunState {
|
||||
/// The canonical [`AgentIconFields`] for this state. `None` means no agent icon renders.
|
||||
/// Editing an arm here is the deliberate way to evolve the cross-surface contract.
|
||||
fn expected(&self) -> Option<AgentIconFields> {
|
||||
use CanonicalRunState::*;
|
||||
match self {
|
||||
PlainTerminal => None,
|
||||
LocalOzInProgress => Some(AgentIconFields {
|
||||
@@ -170,6 +171,7 @@ impl CanonicalRunState {
|
||||
|
||||
/// Terminal-view inputs for this state. Every state has a terminal representation.
|
||||
fn terminal_inputs(&self) -> TerminalIconInputs {
|
||||
use CanonicalRunState::*;
|
||||
match self {
|
||||
PlainTerminal => TerminalIconInputs {
|
||||
is_ambient: false,
|
||||
@@ -259,6 +261,7 @@ impl CanonicalRunState {
|
||||
/// Run-card inputs for this state, if it can surface as a run card.
|
||||
/// Cards only exist for cloud/ambient runs; local states return `None`.
|
||||
fn run_inputs(&self) -> Option<(Harness, ConversationStatus, bool)> {
|
||||
use CanonicalRunState::*;
|
||||
match self {
|
||||
CloudOzInProgress => Some((Harness::Oz, ConversationStatus::InProgress, true)),
|
||||
CloudClaudePreDispatch | CloudClaudeInProgress => {
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
use pathfinder_geometry::vector::vec2f;
|
||||
use galaxy_core::ui::external_product_icon::ExternalProductIcon;
|
||||
use galaxy_core::ui::icons::Icon;
|
||||
use galaxyui::elements::{
|
||||
self, Align, Border, CacheOption, ChildAnchor, ConstrainedBox, Container, Element, Image,
|
||||
OffsetPositioning, ParentAnchor, ParentElement, ParentOffsetBounds, Stack, Text,
|
||||
};
|
||||
use pathfinder_geometry::vector::vec2f;
|
||||
use warpui::ui_components::components::{UiComponent, UiComponentStyles};
|
||||
|
||||
use super::red_notification_dot::RedNotificationDot;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
use std::fmt::Debug;
|
||||
|
||||
use itertools::{Itertools, Position};
|
||||
use galaxyui::elements::{
|
||||
CrossAxisAlignment, Flex, Hoverable, MainAxisSize, MouseStateHandle, ParentElement, Shrinkable,
|
||||
};
|
||||
use galaxyui::ui_components::components::{UiComponent, UiComponentStyles};
|
||||
use galaxyui::{AppContext, Element, EventContext};
|
||||
use itertools::{Itertools, Position};
|
||||
|
||||
use crate::appearance::Appearance;
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ use warpui::ui_components::components::{Coords, UiComponent, UiComponentStyles};
|
||||
use super::icons::{Icon, ICON_DIMENSIONS};
|
||||
use super::{blended_colors, BORDER_RADIUS};
|
||||
use crate::appearance::Appearance;
|
||||
use crate::themes::theme::{Fill, WarpTheme};
|
||||
use crate::themes::theme::{Fill, GalaxyTheme};
|
||||
|
||||
const ICON_BUTTON_PADDING: f32 = 4.;
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@ use pathfinder_geometry::vector::vec2f;
|
||||
use crate::ai::agent::conversation::{ConversationStatus, StatusColorStyle};
|
||||
use crate::terminal::CLIAgent;
|
||||
use crate::themes::theme::Fill as ThemeFill;
|
||||
use crate::ui_components::icons::Icon as WarpIcon;
|
||||
|
||||
/// Background color used for the Oz agent's circle when it is running in an ambient (cloud)
|
||||
/// run. Matches the Oz brand purple used in the cloud-mode design spec.
|
||||
@@ -164,8 +165,8 @@ pub(crate) fn render_icon_with_status(
|
||||
variant: IconWithStatusVariant,
|
||||
total_size: f32,
|
||||
overlay_extra_overhang_ratio: f32,
|
||||
theme: &WarpTheme,
|
||||
status_container_background: WarpThemeFill,
|
||||
theme: &GalaxyTheme,
|
||||
status_container_background: GalaxyThemeFill,
|
||||
) -> Box<dyn Element> {
|
||||
render_icon_with_status_with_badge_style(
|
||||
variant,
|
||||
@@ -184,8 +185,8 @@ pub(crate) fn render_icon_with_status_with_badge_style(
|
||||
total_size: f32,
|
||||
overlay_extra_overhang_ratio: f32,
|
||||
badge_style: StatusBadgeStyle,
|
||||
theme: &WarpTheme,
|
||||
status_container_background: WarpThemeFill,
|
||||
theme: &GalaxyTheme,
|
||||
status_container_background: GalaxyThemeFill,
|
||||
) -> Box<dyn Element> {
|
||||
let sub_text = theme.sub_text_color(theme.background());
|
||||
|
||||
@@ -217,7 +218,7 @@ pub(crate) fn render_icon_with_status_with_badge_style(
|
||||
// Cloud (ambient) runs use a black glyph on the light-purple background
|
||||
// for consistency with the web app; local runs keep the theme text color.
|
||||
let glyph_color = if is_ambient {
|
||||
WarpThemeFill::Solid(ColorU::black())
|
||||
ThemeFill::Solid(ColorU::black())
|
||||
} else {
|
||||
theme.main_text_color(theme.background())
|
||||
};
|
||||
@@ -289,7 +290,7 @@ pub(crate) fn render_icon_with_status_with_badge_style(
|
||||
/// `attach_status_overlay` to occupy the full `total_size` footprint.
|
||||
fn render_circle(
|
||||
icon_element: Box<dyn Element>,
|
||||
background: WarpThemeFill,
|
||||
background: ThemeFill,
|
||||
total_size: f32,
|
||||
) -> Box<dyn Element> {
|
||||
let icon = icon_size(total_size);
|
||||
@@ -313,7 +314,7 @@ fn render_circle(
|
||||
/// requested bounding box rather than shrinking to `circle_size(total)`.
|
||||
fn render_neutral_circle(
|
||||
icon_element: Box<dyn Element>,
|
||||
background: WarpThemeFill,
|
||||
background: ThemeFill,
|
||||
total_size: f32,
|
||||
) -> Box<dyn Element> {
|
||||
let glyph = total_size * NEUTRAL_GLYPH_RATIO;
|
||||
@@ -339,8 +340,8 @@ fn attach_status_overlay(
|
||||
total_size: f32,
|
||||
overlay_extra_overhang_ratio: f32,
|
||||
badge_style: StatusBadgeStyle,
|
||||
theme: &WarpTheme,
|
||||
status_container_background: WarpThemeFill,
|
||||
theme: &GalaxyTheme,
|
||||
status_container_background: GalaxyThemeFill,
|
||||
) -> Box<dyn Element> {
|
||||
if is_ambient {
|
||||
render_with_cloud_status_badge(
|
||||
@@ -370,12 +371,12 @@ fn render_with_cloud_status_badge(
|
||||
status: Option<&ConversationStatus>,
|
||||
total_size: f32,
|
||||
overlay_extra_overhang_ratio: f32,
|
||||
theme: &WarpTheme,
|
||||
theme: &GalaxyTheme,
|
||||
) -> Box<dyn Element> {
|
||||
let cloud_diameter = cloud_icon_size(total_size);
|
||||
let cloud = ConstrainedBox::new(
|
||||
WarpIcon::CloudFilled
|
||||
.to_warpui_icon(theme.foreground())
|
||||
.to_galaxyui_icon(theme.foreground())
|
||||
.finish(),
|
||||
)
|
||||
.with_width(cloud_diameter)
|
||||
@@ -387,7 +388,7 @@ fn render_with_cloud_status_badge(
|
||||
let (icon, color) = status.status_icon_and_color(theme, StatusColorStyle::Cloud);
|
||||
let inner = status_in_cloud_size(total_size);
|
||||
let status_icon =
|
||||
ConstrainedBox::new(icon.to_warpui_icon(WarpThemeFill::Solid(color)).finish())
|
||||
ConstrainedBox::new(icon.to_galaxyui_icon(ThemeFill::Solid(color)).finish())
|
||||
.with_width(inner)
|
||||
.with_height(inner)
|
||||
.finish();
|
||||
@@ -439,8 +440,8 @@ fn render_with_optional_status_badge(
|
||||
total_size: f32,
|
||||
overlay_extra_overhang_ratio: f32,
|
||||
badge_style: StatusBadgeStyle,
|
||||
theme: &WarpTheme,
|
||||
status_container_background: WarpThemeFill,
|
||||
theme: &GalaxyTheme,
|
||||
status_container_background: GalaxyThemeFill,
|
||||
) -> Box<dyn Element> {
|
||||
let Some(status) = status else {
|
||||
// No status badge: still occupy the full `total_size` footprint so the agent
|
||||
@@ -454,7 +455,7 @@ fn render_with_optional_status_badge(
|
||||
let (icon, color) = status.status_icon_and_color(theme, StatusColorStyle::Standard);
|
||||
let badge_icon_diameter = badge_icon_size(total_size, badge_style);
|
||||
let pad = badge_padding(total_size, badge_style);
|
||||
let badge_icon = ConstrainedBox::new(icon.to_galaxyui_icon(WarpThemeFill::Solid(color)).finish())
|
||||
let badge_icon = ConstrainedBox::new(icon.to_galaxyui_icon(ThemeFill::Solid(color)).finish())
|
||||
.with_width(badge_icon_diameter)
|
||||
.with_height(badge_icon_diameter)
|
||||
.finish();
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
use galaxy_core::ui::theme::color::internal_colors;
|
||||
use galaxyui::elements::{CornerRadius, MouseState, Radius};
|
||||
use galaxyui::Element;
|
||||
use pathfinder_color::ColorU;
|
||||
|
||||
use crate::appearance::Appearance;
|
||||
use crate::themes::theme::Fill;
|
||||
use crate::ui_components::blended_colors;
|
||||
use crate::ui_components::icons::Icon;
|
||||
|
||||
|
||||
@@ -7,10 +7,10 @@
|
||||
use std::collections::HashMap;
|
||||
use std::sync::Arc;
|
||||
|
||||
use pathfinder_color::ColorU;
|
||||
use galaxy_core::ui::icons::Icon;
|
||||
use galaxy_core::ui::theme::color::internal_colors;
|
||||
use galaxy_core::ui::theme::WarpTheme;
|
||||
use pathfinder_color::ColorU;
|
||||
use warpui::elements::{
|
||||
ConstrainedBox, CrossAxisAlignment, Empty, Flex, Hoverable, MainAxisSize, MouseStateHandle,
|
||||
ParentElement, Shrinkable, Text,
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
//! formatting, long-string detection, state management, and value rendering.
|
||||
//! They do not exercise the element-construction layer (which requires a
|
||||
//! running UI framework).
|
||||
use crate::ai::agent::CallMCPToolResult;
|
||||
use crate::ui_components::json_tree::{
|
||||
format_array_annotation, format_number, format_object_annotation, is_long_string,
|
||||
JsonTreeState, PathSegment, LONG_STRING_THRESHOLD,
|
||||
@@ -306,7 +307,6 @@ fn multi_key_object_all_entries_preserved() {
|
||||
|
||||
#[test]
|
||||
fn mcp_result_success_with_structured_content_returns_tree() {
|
||||
use crate::ai::agent::CallMCPToolResult;
|
||||
use crate::ai::blocklist::inline_action::requested_command::{
|
||||
mcp_result_to_renderable, McpRenderable,
|
||||
};
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
use pathfinder_geometry::vector::{vec2f, Vector2F};
|
||||
use galaxyui::elements::{
|
||||
ChildAnchor, ChildView, MouseStateHandle, OffsetPositioning, ParentAnchor, ParentElement,
|
||||
ParentOffsetBounds, Stack,
|
||||
@@ -6,6 +5,7 @@ use galaxyui::elements::{
|
||||
use galaxyui::platform::Cursor;
|
||||
use galaxyui::ui_components::components::{UiComponent, UiComponentStyles};
|
||||
use galaxyui::{AppContext, Element, EventContext, View, ViewHandle};
|
||||
use pathfinder_geometry::vector::{vec2f, Vector2F};
|
||||
|
||||
use super::buttons::{highlight, icon_button};
|
||||
use super::icons::Icon;
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
use pathfinder_geometry::vector::vec2f;
|
||||
use galaxy_core::ui::theme::AnsiColorIdentifier;
|
||||
use galaxyui::elements::{
|
||||
ChildAnchor, ConstrainedBox, Container, CornerRadius, Empty, Fill, OffsetPositioning,
|
||||
@@ -6,6 +5,7 @@ use galaxyui::elements::{
|
||||
};
|
||||
use galaxyui::ui_components::components::UiComponentStyles;
|
||||
use galaxyui::Element;
|
||||
use pathfinder_geometry::vector::vec2f;
|
||||
|
||||
use crate::appearance::Appearance;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user