feat(accessibility): Add option to disable loading phrases (#745)
This commit is contained in:
parent
d179b3aae4
commit
afc30e314f
|
@ -214,6 +214,7 @@ export async function loadCliConfig(
|
||||||
vertexai: useVertexAI,
|
vertexai: useVertexAI,
|
||||||
showMemoryUsage:
|
showMemoryUsage:
|
||||||
argv.show_memory_usage || settings.showMemoryUsage || false,
|
argv.show_memory_usage || settings.showMemoryUsage || false,
|
||||||
|
accessibility: settings.accessibility,
|
||||||
// Git-aware file filtering settings
|
// Git-aware file filtering settings
|
||||||
fileFilteringRespectGitIgnore: settings.fileFiltering?.respectGitIgnore,
|
fileFilteringRespectGitIgnore: settings.fileFiltering?.respectGitIgnore,
|
||||||
fileFilteringAllowBuildArtifacts:
|
fileFilteringAllowBuildArtifacts:
|
||||||
|
|
|
@ -21,6 +21,10 @@ export enum SettingScope {
|
||||||
Workspace = 'Workspace',
|
Workspace = 'Workspace',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface AccessibilitySettings {
|
||||||
|
disableLoadingPhrases?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
export interface Settings {
|
export interface Settings {
|
||||||
theme?: string;
|
theme?: string;
|
||||||
sandbox?: boolean | string;
|
sandbox?: boolean | string;
|
||||||
|
@ -32,6 +36,7 @@ export interface Settings {
|
||||||
showMemoryUsage?: boolean;
|
showMemoryUsage?: boolean;
|
||||||
contextFileName?: string;
|
contextFileName?: string;
|
||||||
title?: string;
|
title?: string;
|
||||||
|
accessibility?: AccessibilitySettings;
|
||||||
|
|
||||||
// Git-aware file filtering settings
|
// Git-aware file filtering settings
|
||||||
fileFiltering?: {
|
fileFiltering?: {
|
||||||
|
|
|
@ -12,6 +12,7 @@ import {
|
||||||
MCPServerConfig,
|
MCPServerConfig,
|
||||||
ApprovalMode,
|
ApprovalMode,
|
||||||
ToolRegistry,
|
ToolRegistry,
|
||||||
|
AccessibilitySettings,
|
||||||
} from '@gemini-code/core';
|
} from '@gemini-code/core';
|
||||||
import { LoadedSettings, SettingsFile, Settings } from '../config/settings.js';
|
import { LoadedSettings, SettingsFile, Settings } from '../config/settings.js';
|
||||||
|
|
||||||
|
@ -35,6 +36,7 @@ interface MockServerConfig {
|
||||||
approvalMode: ApprovalMode;
|
approvalMode: ApprovalMode;
|
||||||
vertexai?: boolean;
|
vertexai?: boolean;
|
||||||
showMemoryUsage?: boolean;
|
showMemoryUsage?: boolean;
|
||||||
|
accessibility?: AccessibilitySettings;
|
||||||
|
|
||||||
getApiKey: Mock<() => string>;
|
getApiKey: Mock<() => string>;
|
||||||
getModel: Mock<() => string>;
|
getModel: Mock<() => string>;
|
||||||
|
@ -58,6 +60,7 @@ interface MockServerConfig {
|
||||||
setApprovalMode: Mock<(skip: ApprovalMode) => void>;
|
setApprovalMode: Mock<(skip: ApprovalMode) => void>;
|
||||||
getVertexAI: Mock<() => boolean | undefined>;
|
getVertexAI: Mock<() => boolean | undefined>;
|
||||||
getShowMemoryUsage: Mock<() => boolean>;
|
getShowMemoryUsage: Mock<() => boolean>;
|
||||||
|
getAccessibility: Mock<() => AccessibilitySettings>;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mock @gemini-code/core and its Config class
|
// Mock @gemini-code/core and its Config class
|
||||||
|
@ -87,6 +90,7 @@ vi.mock('@gemini-code/core', async (importOriginal) => {
|
||||||
approvalMode: opts.approvalMode ?? ApprovalMode.DEFAULT,
|
approvalMode: opts.approvalMode ?? ApprovalMode.DEFAULT,
|
||||||
vertexai: opts.vertexai,
|
vertexai: opts.vertexai,
|
||||||
showMemoryUsage: opts.showMemoryUsage ?? false,
|
showMemoryUsage: opts.showMemoryUsage ?? false,
|
||||||
|
accessibility: opts.accessibility ?? {},
|
||||||
|
|
||||||
getApiKey: vi.fn(() => opts.apiKey || 'test-key'),
|
getApiKey: vi.fn(() => opts.apiKey || 'test-key'),
|
||||||
getModel: vi.fn(() => opts.model || 'test-model-in-mock-factory'),
|
getModel: vi.fn(() => opts.model || 'test-model-in-mock-factory'),
|
||||||
|
@ -112,6 +116,7 @@ vi.mock('@gemini-code/core', async (importOriginal) => {
|
||||||
setApprovalMode: vi.fn(),
|
setApprovalMode: vi.fn(),
|
||||||
getVertexAI: vi.fn(() => opts.vertexai),
|
getVertexAI: vi.fn(() => opts.vertexai),
|
||||||
getShowMemoryUsage: vi.fn(() => opts.showMemoryUsage ?? false),
|
getShowMemoryUsage: vi.fn(() => opts.showMemoryUsage ?? false),
|
||||||
|
getAccessibility: vi.fn(() => opts.accessibility ?? {}),
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
return {
|
return {
|
||||||
|
|
|
@ -399,7 +399,11 @@ export const App = ({
|
||||||
) : (
|
) : (
|
||||||
<>
|
<>
|
||||||
<LoadingIndicator
|
<LoadingIndicator
|
||||||
currentLoadingPhrase={currentLoadingPhrase}
|
currentLoadingPhrase={
|
||||||
|
config.getAccessibility()?.disableLoadingPhrases
|
||||||
|
? undefined
|
||||||
|
: currentLoadingPhrase
|
||||||
|
}
|
||||||
elapsedTime={elapsedTime}
|
elapsedTime={elapsedTime}
|
||||||
/>
|
/>
|
||||||
<Box
|
<Box
|
||||||
|
|
|
@ -12,7 +12,7 @@ import { StreamingState } from '../types.js';
|
||||||
import { GeminiRespondingSpinner } from './GeminiRespondingSpinner.js';
|
import { GeminiRespondingSpinner } from './GeminiRespondingSpinner.js';
|
||||||
|
|
||||||
interface LoadingIndicatorProps {
|
interface LoadingIndicatorProps {
|
||||||
currentLoadingPhrase: string;
|
currentLoadingPhrase?: string;
|
||||||
elapsedTime: number;
|
elapsedTime: number;
|
||||||
rightContent?: React.ReactNode;
|
rightContent?: React.ReactNode;
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,9 @@ export const LoadingIndicator: React.FC<LoadingIndicatorProps> = ({
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
</Box>
|
</Box>
|
||||||
<Text color={Colors.AccentPurple}>{currentLoadingPhrase}</Text>
|
{currentLoadingPhrase && (
|
||||||
|
<Text color={Colors.AccentPurple}>{currentLoadingPhrase}</Text>
|
||||||
|
)}
|
||||||
<Text color={Colors.SubtleComment}>
|
<Text color={Colors.SubtleComment}>
|
||||||
{streamingState === StreamingState.WaitingForConfirmation
|
{streamingState === StreamingState.WaitingForConfirmation
|
||||||
? ''
|
? ''
|
||||||
|
|
|
@ -31,6 +31,10 @@ export enum ApprovalMode {
|
||||||
YOLO = 'yolo',
|
YOLO = 'yolo',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface AccessibilitySettings {
|
||||||
|
disableLoadingPhrases?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
export class MCPServerConfig {
|
export class MCPServerConfig {
|
||||||
constructor(
|
constructor(
|
||||||
// For stdio transport
|
// For stdio transport
|
||||||
|
@ -66,6 +70,7 @@ export interface ConfigParameters {
|
||||||
vertexai?: boolean;
|
vertexai?: boolean;
|
||||||
showMemoryUsage?: boolean;
|
showMemoryUsage?: boolean;
|
||||||
contextFileName?: string;
|
contextFileName?: string;
|
||||||
|
accessibility?: AccessibilitySettings;
|
||||||
fileFilteringRespectGitIgnore?: boolean;
|
fileFilteringRespectGitIgnore?: boolean;
|
||||||
fileFilteringAllowBuildArtifacts?: boolean;
|
fileFilteringAllowBuildArtifacts?: boolean;
|
||||||
}
|
}
|
||||||
|
@ -90,6 +95,7 @@ export class Config {
|
||||||
private approvalMode: ApprovalMode;
|
private approvalMode: ApprovalMode;
|
||||||
private readonly vertexai: boolean | undefined;
|
private readonly vertexai: boolean | undefined;
|
||||||
private readonly showMemoryUsage: boolean;
|
private readonly showMemoryUsage: boolean;
|
||||||
|
private readonly accessibility: AccessibilitySettings;
|
||||||
private readonly geminiClient: GeminiClient;
|
private readonly geminiClient: GeminiClient;
|
||||||
private readonly fileFilteringRespectGitIgnore: boolean;
|
private readonly fileFilteringRespectGitIgnore: boolean;
|
||||||
private readonly fileFilteringAllowBuildArtifacts: boolean;
|
private readonly fileFilteringAllowBuildArtifacts: boolean;
|
||||||
|
@ -114,6 +120,7 @@ export class Config {
|
||||||
this.approvalMode = params.approvalMode ?? ApprovalMode.DEFAULT;
|
this.approvalMode = params.approvalMode ?? ApprovalMode.DEFAULT;
|
||||||
this.vertexai = params.vertexai;
|
this.vertexai = params.vertexai;
|
||||||
this.showMemoryUsage = params.showMemoryUsage ?? false;
|
this.showMemoryUsage = params.showMemoryUsage ?? false;
|
||||||
|
this.accessibility = params.accessibility ?? {};
|
||||||
this.fileFilteringRespectGitIgnore =
|
this.fileFilteringRespectGitIgnore =
|
||||||
params.fileFilteringRespectGitIgnore ?? true;
|
params.fileFilteringRespectGitIgnore ?? true;
|
||||||
this.fileFilteringAllowBuildArtifacts =
|
this.fileFilteringAllowBuildArtifacts =
|
||||||
|
@ -214,6 +221,10 @@ export class Config {
|
||||||
return this.showMemoryUsage;
|
return this.showMemoryUsage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getAccessibility(): AccessibilitySettings {
|
||||||
|
return this.accessibility;
|
||||||
|
}
|
||||||
|
|
||||||
getGeminiClient(): GeminiClient {
|
getGeminiClient(): GeminiClient {
|
||||||
return this.geminiClient;
|
return this.geminiClient;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue