Enable switching preview features on/off without restart (#13515)

This commit is contained in:
Adib234
2025-11-20 11:00:16 -08:00
committed by GitHub
parent d1e35f8660
commit ade9dfeebb
6 changed files with 11 additions and 4 deletions

View File

@@ -101,7 +101,6 @@ their corresponding top-level category object in your `settings.json` file.
- **`general.previewFeatures`** (boolean):
- **Description:** Enable preview features (e.g., preview models).
- **Default:** `false`
- **Requires restart:** Yes
- **`general.preferredEditor`** (string):
- **Description:** The preferred editor to open files in.

View File

@@ -337,7 +337,7 @@ describe('SettingsSchema', () => {
).toBe(false);
expect(
getSettingsSchema().general.properties.previewFeatures.requiresRestart,
).toBe(true);
).toBe(false);
expect(
getSettingsSchema().general.properties.previewFeatures.showInDialog,
).toBe(true);

View File

@@ -164,7 +164,7 @@ const SETTINGS_SCHEMA = {
type: 'boolean',
label: 'Preview Features (e.g., models)',
category: 'General',
requiresRestart: true,
requiresRestart: false,
default: false,
description: 'Enable preview features (e.g., preview models).',
showInDialog: true,

View File

@@ -139,6 +139,7 @@ export const DialogManager = ({
onSelect={() => uiActions.closeSettingsDialog()}
onRestartRequest={() => process.exit(0)}
availableTerminalHeight={terminalHeight - staticExtraHeight}
config={config}
/>
</Box>
);

View File

@@ -43,12 +43,14 @@ import {
} from '../../config/settingsSchema.js';
import { debugLogger } from '@google/gemini-cli-core';
import { keyMatchers, Command } from '../keyMatchers.js';
import type { Config } from '@google/gemini-cli-core';
interface SettingsDialogProps {
settings: LoadedSettings;
onSelect: (settingName: string | undefined, scope: SettingScope) => void;
onRestartRequest?: () => void;
availableTerminalHeight?: number;
config?: Config;
}
const maxItemsToShow = 8;
@@ -58,6 +60,7 @@ export function SettingsDialog({
onSelect,
onRestartRequest,
availableTerminalHeight,
config,
}: SettingsDialogProps): React.JSX.Element {
// Get vim mode context to sync vim mode changes
const { vimEnabled, toggleVimEnabled } = useVimMode();
@@ -208,6 +211,10 @@ export function SettingsDialog({
next.delete(key);
return next;
});
if (key === 'general.previewFeatures') {
config?.setPreviewFeatures(newValue as boolean);
}
} else {
// For restart-required settings, track as modified
setModifiedSettings((prev) => {

View File

@@ -26,7 +26,7 @@
"previewFeatures": {
"title": "Preview Features (e.g., models)",
"description": "Enable preview features (e.g., preview models).",
"markdownDescription": "Enable preview features (e.g., preview models).\n\n- Category: `General`\n- Requires restart: `yes`\n- Default: `false`",
"markdownDescription": "Enable preview features (e.g., preview models).\n\n- Category: `General`\n- Requires restart: `no`\n- Default: `false`",
"default": false,
"type": "boolean"
},