From e4d978da7ce5422cd4d2a92d369985df6387ad79 Mon Sep 17 00:00:00 2001 From: Taylor Mullen Date: Sun, 18 May 2025 01:18:32 -0700 Subject: feat(cli): Introduce toggleable shell mode with enhanced UI - Implements a toggleable shell mode, removing the need to prefix every command with `!`. - Users can now enter and exit shell mode by typing `!` as the first character in an empty input prompt. - The input prompt visually indicates active shell mode with a distinct color and `! ` prefix. - Shell command history items (`user_shell`) are now visually differentiated from regular user messages. - This provides a cleaner and more streamlined user experience for frequent shell interactions. Fixes https://b.corp.google.com/issues/418509745 --- .../ui/components/messages/UserShellMessage.tsx | 25 ++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 packages/cli/src/ui/components/messages/UserShellMessage.tsx (limited to 'packages/cli/src/ui/components/messages/UserShellMessage.tsx') diff --git a/packages/cli/src/ui/components/messages/UserShellMessage.tsx b/packages/cli/src/ui/components/messages/UserShellMessage.tsx new file mode 100644 index 00000000..946ca7e7 --- /dev/null +++ b/packages/cli/src/ui/components/messages/UserShellMessage.tsx @@ -0,0 +1,25 @@ +/** + * @license + * Copyright 2025 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +import React from 'react'; +import { Box, Text } from 'ink'; +import { Colors } from '../../colors.js'; + +interface UserShellMessageProps { + text: string; +} + +export const UserShellMessage: React.FC = ({ text }) => { + // Remove leading '!' if present, as App.tsx adds it for the processor. + const commandToDisplay = text.startsWith('!') ? text.substring(1) : text; + + return ( + + $ + {commandToDisplay} + + ); +}; -- cgit v1.2.3