diff --git a/packages/cli/src/ui/components/Composer.tsx b/packages/cli/src/ui/components/Composer.tsx index 3e443e2e6b..327da3c461 100644 --- a/packages/cli/src/ui/components/Composer.tsx +++ b/packages/cli/src/ui/components/Composer.tsx @@ -67,6 +67,8 @@ export const Composer = ({ isFocused = true }: { isFocused?: boolean }) => { uiState.streamingState === StreamingState.Responding; const showLoadingIndicator = (!uiState.embeddedShellFocused || uiState.isBackgroundShellVisible) && + (uiState.streamingState === StreamingState.Responding || + uiState.streamingState === StreamingState.WaitingForConfirmation) && !hasPendingActionRequired; const showApprovalIndicator = !uiState.shellModeActive; const showRawMarkdownIndicator = !uiState.renderMarkdown; diff --git a/packages/cli/src/ui/components/InputPrompt.tsx b/packages/cli/src/ui/components/InputPrompt.tsx index 49c609ec9b..e25a1230f7 100644 --- a/packages/cli/src/ui/components/InputPrompt.tsx +++ b/packages/cli/src/ui/components/InputPrompt.tsx @@ -54,7 +54,10 @@ import { } from '../utils/commandUtils.js'; import * as path from 'node:path'; import { SCREEN_READER_USER_PREFIX } from '../textConstants.js'; -import { DEFAULT_BACKGROUND_OPACITY } from '../constants.js'; +import { + DEFAULT_BACKGROUND_OPACITY, + DEFAULT_INPUT_BACKGROUND_OPACITY, +} from '../constants.js'; import { getSafeLowColorBackground } from '../themes/color-utils.js'; import { isLowColorDepth } from '../utils/terminalUtils.js'; import { useShellFocusState } from '../contexts/ShellFocusContext.js'; @@ -1330,12 +1333,12 @@ export const InputPrompt: React.FC = ({ /> ) : null} = ({ text, width }) => { return ( diff --git a/packages/cli/src/ui/components/messages/UserShellMessage.tsx b/packages/cli/src/ui/components/messages/UserShellMessage.tsx index ca86e29b8c..390977f2fe 100644 --- a/packages/cli/src/ui/components/messages/UserShellMessage.tsx +++ b/packages/cli/src/ui/components/messages/UserShellMessage.tsx @@ -28,7 +28,7 @@ export const UserShellMessage: React.FC = ({ return ( diff --git a/packages/cli/src/ui/constants.ts b/packages/cli/src/ui/constants.ts index c0aed1c8fd..c08741177c 100644 --- a/packages/cli/src/ui/constants.ts +++ b/packages/cli/src/ui/constants.ts @@ -35,6 +35,8 @@ export const SHELL_ACTION_REQUIRED_TITLE_DELAY_MS = 30000; export const SHELL_SILENT_WORKING_TITLE_DELAY_MS = 120000; export const DEFAULT_BACKGROUND_OPACITY = 0.16; +export const DEFAULT_INPUT_BACKGROUND_OPACITY = 0.24; +export const DEFAULT_BORDER_OPACITY = 0.2; export const KEYBOARD_SHORTCUTS_URL = 'https://geminicli.com/docs/cli/keyboard-shortcuts/'; diff --git a/packages/cli/src/ui/themes/theme.ts b/packages/cli/src/ui/themes/theme.ts index e95799b879..2e39b1b6c7 100644 --- a/packages/cli/src/ui/themes/theme.ts +++ b/packages/cli/src/ui/themes/theme.ts @@ -15,6 +15,7 @@ import { } from './color-utils.js'; import type { CustomTheme } from '@google/gemini-cli-core'; +import { DEFAULT_BORDER_OPACITY } from '../constants.js'; export type { CustomTheme }; @@ -136,7 +137,11 @@ export class Theme { }, }, border: { - default: this.colors.Gray, + default: interpolateColor( + this.colors.Background, + this.colors.Gray, + DEFAULT_BORDER_OPACITY, + ), focused: this.colors.AccentBlue, }, ui: { @@ -401,7 +406,13 @@ export function createCustomTheme(customTheme: CustomTheme): Theme { }, }, border: { - default: customTheme.border?.default ?? colors.Gray, + default: + customTheme.border?.default ?? + interpolateColor( + colors.Background, + colors.Gray, + DEFAULT_BORDER_OPACITY, + ), focused: customTheme.border?.focused ?? colors.AccentBlue, }, ui: {