feat: add support for Gemma 4 model

This commit is contained in:
Akhilesh Kumar
2026-04-16 21:14:05 +00:00
parent 277f0bb361
commit 7c0f3ecef9
6 changed files with 89 additions and 1 deletions
+5
View File
@@ -40,6 +40,7 @@ import {
DEFAULT_GEMINI_MODEL,
DEFAULT_GEMINI_FLASH_MODEL,
DEFAULT_GEMINI_FLASH_LITE_MODEL,
DEFAULT_GEMMA_4_MODEL,
PREVIEW_GEMINI_MODEL,
PREVIEW_GEMINI_3_1_MODEL,
PREVIEW_GEMINI_3_1_CUSTOM_TOOLS_MODEL,
@@ -1654,6 +1655,10 @@ function buildAvailableModels(
value: DEFAULT_GEMINI_FLASH_LITE_MODEL,
title: getDisplayString(DEFAULT_GEMINI_FLASH_LITE_MODEL),
},
{
value: DEFAULT_GEMMA_4_MODEL,
title: getDisplayString(DEFAULT_GEMMA_4_MODEL),
},
];
if (shouldShowPreviewModels) {
@@ -15,6 +15,7 @@ import {
DEFAULT_GEMINI_MODEL_AUTO,
DEFAULT_GEMINI_FLASH_MODEL,
DEFAULT_GEMINI_FLASH_LITE_MODEL,
DEFAULT_GEMMA_4_MODEL,
PREVIEW_GEMINI_MODEL,
PREVIEW_GEMINI_3_1_MODEL,
PREVIEW_GEMINI_3_1_CUSTOM_TOOLS_MODEL,
@@ -212,6 +213,33 @@ describe('<ModelDialog />', () => {
unmount();
});
it('shows Gemma 4 in manual view', async () => {
mockGetDisplayString.mockImplementation((val: string) => {
if (val === DEFAULT_GEMMA_4_MODEL) return 'Gemma 4 (26B)';
return val;
});
const { lastFrame, stdin, waitUntilReady, unmount } =
await renderComponent();
// Select "Manual" (index 1)
await act(async () => {
stdin.write('\u001B[B'); // Arrow Down
});
await waitUntilReady();
await act(async () => {
stdin.write('\r');
});
await waitUntilReady();
// Should now show manual options including Gemma 4
await waitFor(() => {
const output = lastFrame();
expect(output).toContain('Gemma 4 (26B)');
});
unmount();
});
it('sets model and closes when a model is selected in "main" view', async () => {
const { stdin, waitUntilReady, unmount } = await renderComponent();
@@ -17,6 +17,7 @@ import {
DEFAULT_GEMINI_FLASH_MODEL,
DEFAULT_GEMINI_FLASH_LITE_MODEL,
DEFAULT_GEMINI_MODEL_AUTO,
DEFAULT_GEMMA_4_MODEL,
ModelSlashCommandEvent,
logModelSlashCommand,
getDisplayString,
@@ -72,6 +73,7 @@ export function ModelDialog({ onClose }: ModelDialogProps): React.JSX.Element {
DEFAULT_GEMINI_MODEL,
DEFAULT_GEMINI_FLASH_MODEL,
DEFAULT_GEMINI_FLASH_LITE_MODEL,
DEFAULT_GEMMA_4_MODEL,
PREVIEW_GEMINI_MODEL,
PREVIEW_GEMINI_3_1_MODEL,
PREVIEW_GEMINI_3_1_CUSTOM_TOOLS_MODEL,
@@ -152,6 +154,11 @@ export function ModelDialog({ onClose }: ModelDialogProps): React.JSX.Element {
title: getDisplayString(DEFAULT_GEMINI_FLASH_LITE_MODEL),
key: DEFAULT_GEMINI_FLASH_LITE_MODEL,
},
{
value: DEFAULT_GEMMA_4_MODEL,
title: getDisplayString(DEFAULT_GEMMA_4_MODEL),
key: DEFAULT_GEMMA_4_MODEL,
},
];
if (shouldShowPreviewModels) {