fix(cli): add missing custom theme properties to settings schema

- Add 'text.response', 'ui.active', and 'ui.focus' to CustomTheme schema.
- Synchronize 'CustomTheme' interface in core with schema by adding 'border.focused'.
- Add validation tests for the new properties.

Fixes https://github.com/google-gemini/gemini-cli/issues/25689
This commit is contained in:
Taylor Mullen
2026-04-20 20:29:57 -07:00
parent a38e2f0048
commit c1901d00b2
3 changed files with 34 additions and 0 deletions
@@ -273,6 +273,36 @@ describe('settings-validation', () => {
});
it('should validate complex nested customThemes configuration', () => {
const validSettings = {
ui: {
customThemes: {
'my-theme': {
type: 'custom' as const,
name: 'My Theme',
text: {
primary: '#ffffff',
secondary: '#cccccc',
link: '#0000ff',
accent: '#ff00ff',
response: '#00ff00',
},
ui: {
comment: '#888888',
symbol: '#ffffff',
active: '#0000ff',
focus: '#00ff00',
gradient: ['#000000', '#ffffff'],
},
},
},
},
};
const result = validateSettings(validSettings);
expect(result.success).toBe(true);
});
it('should reject invalid customThemes configuration', () => {
const invalidSettings = {
ui: {
customThemes: {
@@ -3118,6 +3118,7 @@ export const SETTINGS_SCHEMA_DEFINITIONS: Record<
secondary: { type: 'string' },
link: { type: 'string' },
accent: { type: 'string' },
response: { type: 'string' },
},
},
background: {
@@ -3149,6 +3150,8 @@ export const SETTINGS_SCHEMA_DEFINITIONS: Record<
properties: {
comment: { type: 'string' },
symbol: { type: 'string' },
active: { type: 'string' },
focus: { type: 'string' },
gradient: {
type: 'array',
items: { type: 'string' },
+1
View File
@@ -309,6 +309,7 @@ export interface CustomTheme {
};
border?: {
default?: string;
focused?: string;
};
ui?: {
comment?: string;