feat(accessibility): Add option to disable loading phrases (#745)

This commit is contained in:
N. Taylor Mullen 2025-06-04 00:46:57 -07:00 committed by GitHub
parent d179b3aae4
commit afc30e314f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 31 additions and 3 deletions

View File

@ -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:

View File

@ -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?: {

View File

@ -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 {

View File

@ -399,7 +399,11 @@ export const App = ({
) : (
<>
<LoadingIndicator
currentLoadingPhrase={currentLoadingPhrase}
currentLoadingPhrase={
config.getAccessibility()?.disableLoadingPhrases
? undefined
: currentLoadingPhrase
}
elapsedTime={elapsedTime}
/>
<Box

View File

@ -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
? ''

View File

@ -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;
}