Moved theme to slashCommand

This commit is contained in:
Seth Troisi 2025-04-30 22:26:28 +00:00
parent 5f5edb4c9b
commit 2616e965a7
3 changed files with 31 additions and 24 deletions

View File

@ -35,16 +35,6 @@ interface AppProps {
export const App = ({ config, cliVersion }: AppProps) => {
const [history, setHistory] = useState<HistoryItem[]>([]);
const [startupWarnings, setStartupWarnings] = useState<string[]>([]);
const {
streamingState,
submitQuery,
initError,
debugMessage,
slashCommands,
} = useGeminiStream(setHistory, config);
const { elapsedTime, currentLoadingPhrase } =
useLoadingIndicator(streamingState);
const {
isThemeDialogOpen,
openThemeDialog,
@ -52,18 +42,26 @@ export const App = ({ config, cliVersion }: AppProps) => {
handleThemeHighlight,
} = useThemeCommand();
const {
streamingState,
submitQuery,
initError,
debugMessage,
slashCommands,
} = useGeminiStream(setHistory, config, openThemeDialog);
const { elapsedTime, currentLoadingPhrase } =
useLoadingIndicator(streamingState);
useStartupWarnings(setStartupWarnings);
const handleFinalSubmit = useCallback(
(submittedValue: string) => {
const trimmedValue = submittedValue.trim();
if (trimmedValue === '/theme') {
openThemeDialog();
} else if (trimmedValue.length > 0) {
if (trimmedValue.length > 0) {
submitQuery(submittedValue);
}
},
[openThemeDialog, submitQuery],
[submitQuery],
);
const userMessages = useMemo(

View File

@ -30,17 +30,9 @@ export const useSlashCommandProcessor = (
setHistory: React.Dispatch<React.SetStateAction<HistoryItem[]>>,
setDebugMessage: React.Dispatch<React.SetStateAction<string>>,
getNextMessageId: (baseTimestamp: number) => number,
openThemeDialog: () => void,
) => {
const slashCommands: SlashCommand[] = [
{
name: 'clear',
description: 'clear the screen',
action: (_value: PartListUnion) => {
// This just clears the *UI* history, not the model history.
setDebugMessage('Clearing terminal.');
setHistory((_) => []);
},
},
{
name: 'help',
description: 'for help on gemini-code',
@ -56,6 +48,22 @@ export const useSlashCommandProcessor = (
addHistoryItem(setHistory, { type: 'info', text: helpText }, timestamp);
},
},
{
name: 'clear',
description: 'clear the screen',
action: (_value: PartListUnion) => {
// This just clears the *UI* history, not the model history.
setDebugMessage('Clearing terminal.');
setHistory((_) => []);
},
},
{
name: 'theme',
description: 'change the theme',
action: (_value: PartListUnion) => {
openThemeDialog();
},
},
{
name: 'exit',
description: '',
@ -85,7 +93,6 @@ export const useSlashCommandProcessor = (
process.exit(0);
},
},
// Removed /theme command, handled in App.tsx
];
// Checks if the query is a slash command and executes the command if it is.

View File

@ -49,6 +49,7 @@ const addHistoryItem = (
export const useGeminiStream = (
setHistory: React.Dispatch<React.SetStateAction<HistoryItem[]>>,
config: Config,
openThemeDialog: () => void,
) => {
const toolRegistry = config.getToolRegistry();
const [streamingState, setStreamingState] = useState<StreamingState>(
@ -74,6 +75,7 @@ export const useGeminiStream = (
setHistory,
setDebugMessage,
getNextMessageId,
openThemeDialog,
);
const { handleShellCommand } = useShellCommandProcessor(