summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorN. Taylor Mullen <[email protected]>2025-06-04 00:46:57 -0700
committerGitHub <[email protected]>2025-06-04 07:46:57 +0000
commitafc30e314f29e00e462b0f2b11ea63fda31c3c3e (patch)
treef15fbc94bdfc065195f031e925d61a28479ec117
parentd179b3aae41b466a5e75ac4392d5a5ad88ffffb0 (diff)
feat(accessibility): Add option to disable loading phrases (#745)
-rw-r--r--packages/cli/src/config/config.ts1
-rw-r--r--packages/cli/src/config/settings.ts5
-rw-r--r--packages/cli/src/ui/App.test.tsx5
-rw-r--r--packages/cli/src/ui/App.tsx6
-rw-r--r--packages/cli/src/ui/components/LoadingIndicator.tsx6
-rw-r--r--packages/core/src/config/config.ts11
6 files changed, 31 insertions, 3 deletions
diff --git a/packages/cli/src/config/config.ts b/packages/cli/src/config/config.ts
index ad5c270e..67175473 100644
--- a/packages/cli/src/config/config.ts
+++ b/packages/cli/src/config/config.ts
@@ -214,6 +214,7 @@ export async function loadCliConfig(
vertexai: useVertexAI,
showMemoryUsage:
argv.show_memory_usage || settings.showMemoryUsage || false,
+ accessibility: settings.accessibility,
// Git-aware file filtering settings
fileFilteringRespectGitIgnore: settings.fileFiltering?.respectGitIgnore,
fileFilteringAllowBuildArtifacts:
diff --git a/packages/cli/src/config/settings.ts b/packages/cli/src/config/settings.ts
index 8c26ef54..580c284d 100644
--- a/packages/cli/src/config/settings.ts
+++ b/packages/cli/src/config/settings.ts
@@ -21,6 +21,10 @@ export enum SettingScope {
Workspace = 'Workspace',
}
+export interface AccessibilitySettings {
+ disableLoadingPhrases?: boolean;
+}
+
export interface Settings {
theme?: string;
sandbox?: boolean | string;
@@ -32,6 +36,7 @@ export interface Settings {
showMemoryUsage?: boolean;
contextFileName?: string;
title?: string;
+ accessibility?: AccessibilitySettings;
// Git-aware file filtering settings
fileFiltering?: {
diff --git a/packages/cli/src/ui/App.test.tsx b/packages/cli/src/ui/App.test.tsx
index cba00b42..0dc4cb79 100644
--- a/packages/cli/src/ui/App.test.tsx
+++ b/packages/cli/src/ui/App.test.tsx
@@ -12,6 +12,7 @@ import {
MCPServerConfig,
ApprovalMode,
ToolRegistry,
+ AccessibilitySettings,
} from '@gemini-code/core';
import { LoadedSettings, SettingsFile, Settings } from '../config/settings.js';
@@ -35,6 +36,7 @@ interface MockServerConfig {
approvalMode: ApprovalMode;
vertexai?: boolean;
showMemoryUsage?: boolean;
+ accessibility?: AccessibilitySettings;
getApiKey: Mock<() => string>;
getModel: Mock<() => string>;
@@ -58,6 +60,7 @@ interface MockServerConfig {
setApprovalMode: Mock<(skip: ApprovalMode) => void>;
getVertexAI: Mock<() => boolean | undefined>;
getShowMemoryUsage: Mock<() => boolean>;
+ getAccessibility: Mock<() => AccessibilitySettings>;
}
// Mock @gemini-code/core and its Config class
@@ -87,6 +90,7 @@ vi.mock('@gemini-code/core', async (importOriginal) => {
approvalMode: opts.approvalMode ?? ApprovalMode.DEFAULT,
vertexai: opts.vertexai,
showMemoryUsage: opts.showMemoryUsage ?? false,
+ accessibility: opts.accessibility ?? {},
getApiKey: vi.fn(() => opts.apiKey || 'test-key'),
getModel: vi.fn(() => opts.model || 'test-model-in-mock-factory'),
@@ -112,6 +116,7 @@ vi.mock('@gemini-code/core', async (importOriginal) => {
setApprovalMode: vi.fn(),
getVertexAI: vi.fn(() => opts.vertexai),
getShowMemoryUsage: vi.fn(() => opts.showMemoryUsage ?? false),
+ getAccessibility: vi.fn(() => opts.accessibility ?? {}),
};
});
return {
diff --git a/packages/cli/src/ui/App.tsx b/packages/cli/src/ui/App.tsx
index ddaf2f02..c463afdb 100644
--- a/packages/cli/src/ui/App.tsx
+++ b/packages/cli/src/ui/App.tsx
@@ -399,7 +399,11 @@ export const App = ({
) : (
<>
<LoadingIndicator
- currentLoadingPhrase={currentLoadingPhrase}
+ currentLoadingPhrase={
+ config.getAccessibility()?.disableLoadingPhrases
+ ? undefined
+ : currentLoadingPhrase
+ }
elapsedTime={elapsedTime}
/>
<Box
diff --git a/packages/cli/src/ui/components/LoadingIndicator.tsx b/packages/cli/src/ui/components/LoadingIndicator.tsx
index 64059d53..6ff4dac8 100644
--- a/packages/cli/src/ui/components/LoadingIndicator.tsx
+++ b/packages/cli/src/ui/components/LoadingIndicator.tsx
@@ -12,7 +12,7 @@ import { StreamingState } from '../types.js';
import { GeminiRespondingSpinner } from './GeminiRespondingSpinner.js';
interface LoadingIndicatorProps {
- currentLoadingPhrase: string;
+ currentLoadingPhrase?: string;
elapsedTime: number;
rightContent?: React.ReactNode;
}
@@ -37,7 +37,9 @@ export const LoadingIndicator: React.FC<LoadingIndicatorProps> = ({
}
/>
</Box>
- <Text color={Colors.AccentPurple}>{currentLoadingPhrase}</Text>
+ {currentLoadingPhrase && (
+ <Text color={Colors.AccentPurple}>{currentLoadingPhrase}</Text>
+ )}
<Text color={Colors.SubtleComment}>
{streamingState === StreamingState.WaitingForConfirmation
? ''
diff --git a/packages/core/src/config/config.ts b/packages/core/src/config/config.ts
index ea782c4e..deb8b62b 100644
--- a/packages/core/src/config/config.ts
+++ b/packages/core/src/config/config.ts
@@ -31,6 +31,10 @@ export enum ApprovalMode {
YOLO = 'yolo',
}
+export interface AccessibilitySettings {
+ disableLoadingPhrases?: boolean;
+}
+
export class MCPServerConfig {
constructor(
// For stdio transport
@@ -66,6 +70,7 @@ export interface ConfigParameters {
vertexai?: boolean;
showMemoryUsage?: boolean;
contextFileName?: string;
+ accessibility?: AccessibilitySettings;
fileFilteringRespectGitIgnore?: boolean;
fileFilteringAllowBuildArtifacts?: boolean;
}
@@ -90,6 +95,7 @@ export class Config {
private approvalMode: ApprovalMode;
private readonly vertexai: boolean | undefined;
private readonly showMemoryUsage: boolean;
+ private readonly accessibility: AccessibilitySettings;
private readonly geminiClient: GeminiClient;
private readonly fileFilteringRespectGitIgnore: boolean;
private readonly fileFilteringAllowBuildArtifacts: boolean;
@@ -114,6 +120,7 @@ export class Config {
this.approvalMode = params.approvalMode ?? ApprovalMode.DEFAULT;
this.vertexai = params.vertexai;
this.showMemoryUsage = params.showMemoryUsage ?? false;
+ this.accessibility = params.accessibility ?? {};
this.fileFilteringRespectGitIgnore =
params.fileFilteringRespectGitIgnore ?? true;
this.fileFilteringAllowBuildArtifacts =
@@ -214,6 +221,10 @@ export class Config {
return this.showMemoryUsage;
}
+ getAccessibility(): AccessibilitySettings {
+ return this.accessibility;
+ }
+
getGeminiClient(): GeminiClient {
return this.geminiClient;
}