Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ Flowpilot sits directly in the editor. Describe a system, paste source code, upl
| Provider | Default model | Why use it |
| ------------------- | ------------------------------------------ | ----------------------------------------------- |
| 🦙 **Ollama (local)** | `llama3.2` | **Fully offline.** No key, no network, no cost. |
| Google Gemini | `gemini-2.5-flash-lite` | Free tier available, fast, browser-safe |
| Google Gemini | `gemini-3.5-flash-lite` | Free tier available, fast, browser-safe |
| OpenAI | `gpt-5-mini` | Best reasoning for complex architectures |
| Anthropic Claude | `claude-sonnet-4-6` | Excellent code and system understanding |
| Groq | `meta-llama/llama-4-scout-17b-16e-instruct`| Fastest open-source inference available |
Expand Down
19 changes: 17 additions & 2 deletions public/locales/de/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -952,12 +952,27 @@
"category": "Legacy",
"badge": "New"
},
"gemini-2.5-flash-lite": {
"label": "2.5 Flash Lite",
"gemini-3.5-flash-lite": {
"label": "3.5 Flash Lite",
"hint": "Fastest · Free tier default",
"category": "Speed",
"badge": "Default"
},
"gemini-3.5-flash": {
"label": "3.5 Flash",
"hint": "Best price/performance balance",
"category": "Speed"
},
"gemini-3.5-pro": {
"label": "3.5 Pro",
"hint": "Most powerful · Multimodal",
"category": "Reasoning"
},
"gemini-2.5-flash-lite": {
"label": "2.5 Flash Lite",
"hint": "Legacy · unavailable to new API keys",
"category": "Legacy"
},
"gemini-2.5-flash": {
"label": "2.5 Flash",
"hint": "Best price/performance balance",
Expand Down
19 changes: 17 additions & 2 deletions public/locales/en/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -1019,12 +1019,27 @@
},
"models": {
"gemini": {
"gemini-2.5-flash-lite": {
"label": "2.5 Flash Lite",
"gemini-3.5-flash-lite": {
"label": "3.5 Flash Lite",
"hint": "Fastest · Free tier default",
"category": "Speed",
"badge": "Default"
},
"gemini-3.5-flash": {
"label": "3.5 Flash",
"hint": "Best price/performance balance",
"category": "Speed"
},
"gemini-3.5-pro": {
"label": "3.5 Pro",
"hint": "Most powerful · Multimodal",
"category": "Reasoning"
},
"gemini-2.5-flash-lite": {
"label": "2.5 Flash Lite",
"hint": "Legacy · unavailable to new API keys",
"category": "Legacy"
},
"gemini-2.5-flash": {
"label": "2.5 Flash",
"hint": "Best price/performance balance",
Expand Down
19 changes: 17 additions & 2 deletions public/locales/es/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -952,12 +952,27 @@
"category": "Legacy",
"badge": "New"
},
"gemini-2.5-flash-lite": {
"label": "2.5 Flash Lite",
"gemini-3.5-flash-lite": {
"label": "3.5 Flash Lite",
"hint": "Fastest · Free tier default",
"category": "Speed",
"badge": "Default"
},
"gemini-3.5-flash": {
"label": "3.5 Flash",
"hint": "Best price/performance balance",
"category": "Speed"
},
"gemini-3.5-pro": {
"label": "3.5 Pro",
"hint": "Most powerful · Multimodal",
"category": "Reasoning"
},
"gemini-2.5-flash-lite": {
"label": "2.5 Flash Lite",
"hint": "Legacy · unavailable to new API keys",
"category": "Legacy"
},
"gemini-2.5-flash": {
"label": "2.5 Flash",
"hint": "Best price/performance balance",
Expand Down
19 changes: 17 additions & 2 deletions public/locales/fr/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -952,12 +952,27 @@
"category": "Legacy",
"badge": "New"
},
"gemini-2.5-flash-lite": {
"label": "2.5 Flash Lite",
"gemini-3.5-flash-lite": {
"label": "3.5 Flash Lite",
"hint": "Fastest · Free tier default",
"category": "Speed",
"badge": "Default"
},
"gemini-3.5-flash": {
"label": "3.5 Flash",
"hint": "Best price/performance balance",
"category": "Speed"
},
"gemini-3.5-pro": {
"label": "3.5 Pro",
"hint": "Most powerful · Multimodal",
"category": "Reasoning"
},
"gemini-2.5-flash-lite": {
"label": "2.5 Flash Lite",
"hint": "Legacy · unavailable to new API keys",
"category": "Legacy"
},
"gemini-2.5-flash": {
"label": "2.5 Flash",
"hint": "Best price/performance balance",
Expand Down
19 changes: 17 additions & 2 deletions public/locales/ja/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -952,12 +952,27 @@
"category": "Legacy",
"badge": "New"
},
"gemini-2.5-flash-lite": {
"label": "2.5 Flash Lite",
"gemini-3.5-flash-lite": {
"label": "3.5 Flash Lite",
"hint": "Fastest · Free tier default",
"category": "Speed",
"badge": "Default"
},
"gemini-3.5-flash": {
"label": "3.5 Flash",
"hint": "Best price/performance balance",
"category": "Speed"
},
"gemini-3.5-pro": {
"label": "3.5 Pro",
"hint": "Most powerful · Multimodal",
"category": "Reasoning"
},
"gemini-2.5-flash-lite": {
"label": "2.5 Flash Lite",
"hint": "Legacy · unavailable to new API keys",
"category": "Legacy"
},
"gemini-2.5-flash": {
"label": "2.5 Flash",
"hint": "Best price/performance balance",
Expand Down
19 changes: 17 additions & 2 deletions public/locales/tr/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -939,12 +939,27 @@
},
"models": {
"gemini": {
"gemini-2.5-flash-lite": {
"label": "2.5 Flash Lite",
"gemini-3.5-flash-lite": {
"label": "3.5 Flash Lite",
"hint": "En hızlı · Ücretsiz katman varsayılanı",
"category": "Hız",
"badge": "Varsayılan"
},
"gemini-3.5-flash": {
"label": "3.5 Flash",
"hint": "En iyi fiyat/performans dengesi",
"category": "Hız"
},
"gemini-3.5-pro": {
"label": "3.5 Pro",
"hint": "En güçlü · Çok modlu",
"category": "Akıl Yürütme"
},
"gemini-2.5-flash-lite": {
"label": "2.5 Flash Lite",
"hint": "Eski · yeni API anahtarlarında kullanılamaz",
"category": "Eski"
},
"gemini-2.5-flash": {
"label": "2.5 Flash",
"hint": "En iyi fiyat/performans dengesi",
Expand Down
19 changes: 17 additions & 2 deletions public/locales/zh/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -952,12 +952,27 @@
"category": "Legacy",
"badge": "New"
},
"gemini-2.5-flash-lite": {
"label": "2.5 Flash Lite",
"gemini-3.5-flash-lite": {
"label": "3.5 Flash Lite",
"hint": "Fastest · Free tier default",
"category": "Speed",
"badge": "Default"
},
"gemini-3.5-flash": {
"label": "3.5 Flash",
"hint": "Best price/performance balance",
"category": "Speed"
},
"gemini-3.5-pro": {
"label": "3.5 Pro",
"hint": "Most powerful · Multimodal",
"category": "Reasoning"
},
"gemini-2.5-flash-lite": {
"label": "2.5 Flash Lite",
"hint": "Legacy · unavailable to new API keys",
"category": "Legacy"
},
"gemini-2.5-flash": {
"label": "2.5 Flash",
"hint": "Best price/performance balance",
Expand Down
8 changes: 8 additions & 0 deletions src/config/aiProviders.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,14 @@ describe('aiProviders config consistency', () => {
expect(riskIds).toEqual(providerIds);
});

it('defaults the Gemini dropdown to the current flash-lite model', () => {
// Google retired gemini-2.5-flash-lite for new API keys, so the default
// that the model dropdown falls back to has to be the 3.5 replacement.
expect(DEFAULT_MODELS.gemini).toBe('gemini-3.5-flash-lite');
expect(PROVIDERS.find((provider) => provider.id === 'gemini')?.defaultModel).toBe('gemini-3.5-flash-lite');
expect(PROVIDER_MODELS.gemini[0].id).toBe('gemini-3.5-flash-lite');
});

it('provides default base urls for all non-gemini and non-claude providers', () => {
const required = PROVIDERS
.map((provider) => provider.id)
Expand Down
5 changes: 4 additions & 1 deletion src/config/aiProviders.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ export const PROVIDER_BASE_URLS: Record<Exclude<AIProvider, 'gemini' | 'claude'
};

export const DEFAULT_MODELS: Record<AIProvider, string> = {
gemini: 'gemini-2.5-flash-lite',
gemini: 'gemini-3.5-flash-lite',
openai: 'gpt-5-mini',
claude: 'claude-sonnet-4-6',
groq: 'meta-llama/llama-4-scout-17b-16e-instruct',
Expand Down Expand Up @@ -159,6 +159,9 @@ export const PROVIDERS: ProviderMeta[] = [

export const PROVIDER_MODELS: Record<AIProvider, { id: string; translateKey: string }[]> = {
gemini: [
{ id: 'gemini-3.5-flash-lite', translateKey: 'gemini-3.5-flash-lite' },
{ id: 'gemini-3.5-flash', translateKey: 'gemini-3.5-flash' },
{ id: 'gemini-3.5-pro', translateKey: 'gemini-3.5-pro' },
{ id: 'gemini-2.5-flash-lite', translateKey: 'gemini-2.5-flash-lite' },
{ id: 'gemini-2.5-flash', translateKey: 'gemini-2.5-flash' },
{ id: 'gemini-2.5-pro', translateKey: 'gemini-2.5-pro' },
Expand Down
19 changes: 17 additions & 2 deletions src/i18n/locales/de/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -952,12 +952,27 @@
"category": "Legacy",
"badge": "New"
},
"gemini-2.5-flash-lite": {
"label": "2.5 Flash Lite",
"gemini-3.5-flash-lite": {
"label": "3.5 Flash Lite",
"hint": "Fastest · Free tier default",
"category": "Speed",
"badge": "Default"
},
"gemini-3.5-flash": {
"label": "3.5 Flash",
"hint": "Best price/performance balance",
"category": "Speed"
},
"gemini-3.5-pro": {
"label": "3.5 Pro",
"hint": "Most powerful · Multimodal",
"category": "Reasoning"
},
"gemini-2.5-flash-lite": {
"label": "2.5 Flash Lite",
"hint": "Legacy · unavailable to new API keys",
"category": "Legacy"
},
"gemini-2.5-flash": {
"label": "2.5 Flash",
"hint": "Best price/performance balance",
Expand Down
19 changes: 17 additions & 2 deletions src/i18n/locales/en/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -1019,12 +1019,27 @@
},
"models": {
"gemini": {
"gemini-2.5-flash-lite": {
"label": "2.5 Flash Lite",
"gemini-3.5-flash-lite": {
"label": "3.5 Flash Lite",
"hint": "Fastest · Free tier default",
"category": "Speed",
"badge": "Default"
},
"gemini-3.5-flash": {
"label": "3.5 Flash",
"hint": "Best price/performance balance",
"category": "Speed"
},
"gemini-3.5-pro": {
"label": "3.5 Pro",
"hint": "Most powerful · Multimodal",
"category": "Reasoning"
},
"gemini-2.5-flash-lite": {
"label": "2.5 Flash Lite",
"hint": "Legacy · unavailable to new API keys",
"category": "Legacy"
},
"gemini-2.5-flash": {
"label": "2.5 Flash",
"hint": "Best price/performance balance",
Expand Down
19 changes: 17 additions & 2 deletions src/i18n/locales/es/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -952,12 +952,27 @@
"category": "Legacy",
"badge": "New"
},
"gemini-2.5-flash-lite": {
"label": "2.5 Flash Lite",
"gemini-3.5-flash-lite": {
"label": "3.5 Flash Lite",
"hint": "Fastest · Free tier default",
"category": "Speed",
"badge": "Default"
},
"gemini-3.5-flash": {
"label": "3.5 Flash",
"hint": "Best price/performance balance",
"category": "Speed"
},
"gemini-3.5-pro": {
"label": "3.5 Pro",
"hint": "Most powerful · Multimodal",
"category": "Reasoning"
},
"gemini-2.5-flash-lite": {
"label": "2.5 Flash Lite",
"hint": "Legacy · unavailable to new API keys",
"category": "Legacy"
},
"gemini-2.5-flash": {
"label": "2.5 Flash",
"hint": "Best price/performance balance",
Expand Down
19 changes: 17 additions & 2 deletions src/i18n/locales/fr/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -952,12 +952,27 @@
"category": "Legacy",
"badge": "New"
},
"gemini-2.5-flash-lite": {
"label": "2.5 Flash Lite",
"gemini-3.5-flash-lite": {
"label": "3.5 Flash Lite",
"hint": "Fastest · Free tier default",
"category": "Speed",
"badge": "Default"
},
"gemini-3.5-flash": {
"label": "3.5 Flash",
"hint": "Best price/performance balance",
"category": "Speed"
},
"gemini-3.5-pro": {
"label": "3.5 Pro",
"hint": "Most powerful · Multimodal",
"category": "Reasoning"
},
"gemini-2.5-flash-lite": {
"label": "2.5 Flash Lite",
"hint": "Legacy · unavailable to new API keys",
"category": "Legacy"
},
"gemini-2.5-flash": {
"label": "2.5 Flash",
"hint": "Best price/performance balance",
Expand Down
Loading