diff --git a/docs/get-started/configuration.md b/docs/get-started/configuration.md index ca11168acb..9565ed2e06 100644 --- a/docs/get-started/configuration.md +++ b/docs/get-started/configuration.md @@ -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. diff --git a/packages/cli/src/config/settingsSchema.test.ts b/packages/cli/src/config/settingsSchema.test.ts index fe2503029b..090d56bdd5 100644 --- a/packages/cli/src/config/settingsSchema.test.ts +++ b/packages/cli/src/config/settingsSchema.test.ts @@ -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); diff --git a/packages/cli/src/config/settingsSchema.ts b/packages/cli/src/config/settingsSchema.ts index 06998ce21f..260d057203 100644 --- a/packages/cli/src/config/settingsSchema.ts +++ b/packages/cli/src/config/settingsSchema.ts @@ -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, diff --git a/packages/cli/src/ui/components/DialogManager.tsx b/packages/cli/src/ui/components/DialogManager.tsx index f603b4a18f..0c345a8a43 100644 --- a/packages/cli/src/ui/components/DialogManager.tsx +++ b/packages/cli/src/ui/components/DialogManager.tsx @@ -139,6 +139,7 @@ export const DialogManager = ({ onSelect={() => uiActions.closeSettingsDialog()} onRestartRequest={() => process.exit(0)} availableTerminalHeight={terminalHeight - staticExtraHeight} + config={config} /> ); diff --git a/packages/cli/src/ui/components/SettingsDialog.tsx b/packages/cli/src/ui/components/SettingsDialog.tsx index 4f74afd12e..5903756809 100644 --- a/packages/cli/src/ui/components/SettingsDialog.tsx +++ b/packages/cli/src/ui/components/SettingsDialog.tsx @@ -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) => { diff --git a/schemas/settings.schema.json b/schemas/settings.schema.json index 80ba5b04c5..20f2d5d3ff 100644 --- a/schemas/settings.schema.json +++ b/schemas/settings.schema.json @@ -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" },