Show notification in screen reader mode (#10900)

This commit is contained in:
christine betts
2025-10-10 15:34:44 -04:00
committed by GitHub
parent a5e47c62e4
commit 0a7ee67707
3 changed files with 25 additions and 4 deletions

View File

@@ -160,6 +160,11 @@ their corresponding top-level category object in your `settings.json` file.
- **Description:** Disable loading phrases for accessibility.
- **Default:** `false`
- **`ui.accessibility.screenReader`** (boolean):
- **Description:** Show plaintext interactive view that is more screen reader
friendly.
- **Default:** `false`
- **`ui.customWittyPhrases`** (array of strings):
- **Description:** A list of custom phrases to display during loading states.
When provided, the CLI will cycle through these phrases instead of the

View File

@@ -452,7 +452,7 @@ const SETTINGS_SCHEMA = {
label: 'Screen Reader Mode',
category: 'UI',
requiresRestart: true,
default: undefined as boolean | undefined,
default: false,
description:
'Render output in plain-text to be more screen reader accessible',
showInDialog: true,

View File

@@ -4,27 +4,43 @@
* SPDX-License-Identifier: Apache-2.0
*/
import { Box, Text } from 'ink';
import { Box, Text, useIsScreenReaderEnabled } from 'ink';
import { useAppContext } from '../contexts/AppContext.js';
import { useUIState } from '../contexts/UIStateContext.js';
import { theme } from '../semantic-colors.js';
import { StreamingState } from '../types.js';
import { UpdateNotification } from './UpdateNotification.js';
import { homedir } from 'node:os';
import path from 'node:path';
const settingsPath = path.join(homedir(), '.gemini', 'settings.json');
export const Notifications = () => {
const { startupWarnings } = useAppContext();
const { initError, streamingState, updateInfo } = useUIState();
const isScreenReaderEnabled = useIsScreenReaderEnabled();
const showStartupWarnings = startupWarnings.length > 0;
const showInitError =
initError && streamingState !== StreamingState.Responding;
if (!showStartupWarnings && !showInitError && !updateInfo) {
if (
!showStartupWarnings &&
!showInitError &&
!updateInfo &&
!isScreenReaderEnabled
) {
return null;
}
return (
<>
{isScreenReaderEnabled && (
<Text>
You are currently in screen reader-friendly view. To switch out, open{' '}
{settingsPath} and remove the entry for {'"screenReader"'}.
</Text>
)}
{updateInfo && <UpdateNotification message={updateInfo.message} />}
{showStartupWarnings && (
<Box