Skip to content

Commit 3ba47b9

Browse files
committed
v1.2.1 deepseek api, welcome screen, more
Adds deepseek's main api, adds a new welcome screen for first time app use, fixes custom models, and more
1 parent 1bfca33 commit 3ba47b9

22 files changed

+922
-365
lines changed

client/src/App.tsx

+19-13
Original file line numberDiff line numberDiff line change
@@ -16,33 +16,39 @@ function App() {
1616
url: e.url,
1717
provider: 'openai'
1818
}));
19-
19+
20+
// First, ensure we have the existing custom models
21+
const existingCustomModels = settings.customModels || [];
22+
2023
const modelPromises = endpoints.map(e =>
2124
modelService.getAvailableModels(e.url)
2225
);
23-
26+
2427
try {
2528
const modelLists = await Promise.allSettled(modelPromises);
2629
const allModels = modelLists
2730
.filter((result): result is PromiseFulfilledResult<CustomModel[]> =>
2831
result.status === 'fulfilled'
2932
)
3033
.flatMap(result => result.value);
31-
32-
const existingIds = new Set(defaultLocalModels.map(m => m.id));
33-
const newModels = allModels.filter(m => !existingIds.has(m.id));
34-
34+
35+
// Preserve ALL existing custom models that aren't from these endpoints
36+
const userCustomModels = existingCustomModels.filter(m =>
37+
!endpoints.some(e => m.endpoint === e.url)
38+
);
39+
40+
// Then merge with new local models
3541
const updatedModels = [
36-
...settings.customModels.filter(m =>
37-
!endpoints.some(e => m.endpoint === e.url)
38-
),
39-
...defaultLocalModels,
40-
...newModels
42+
...userCustomModels, // Keep ALL existing custom models
43+
...defaultLocalModels, // Add default models
44+
...allModels // Add new local models
4145
];
42-
46+
4347
updateCustomModels(updatedModels);
4448
} catch (error) {
45-
// console.error('Error fetching models:', error);
49+
// If there's an error, preserve existing models
50+
updateCustomModels(existingCustomModels);
51+
console.warn('Error fetching models:', error);
4652
}
4753
};
4854

client/src/assets/anthropic-logo.svg

+4
Loading

client/src/assets/deepseek-logo.svg

+1
Loading

client/src/assets/groq-logo.svg

+6
Loading

client/src/assets/openai-logo.svg

+3
Loading

client/src/assets/openrouter-logo.svg

+8
Loading

client/src/assets/xai-logo.svg

+8
Loading

client/src/components/ChatNode.tsx

+24-1
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,8 @@ export function ChatNode({ id, data: initialData }: NodeProps) {
193193
}
194194

195195
return selectedModel.provider === "openai" ? "https://api.openai.com/v1" :
196+
selectedModel.provider === "deepseek" ? "https://api.deepseek.com/v1" :
197+
selectedModel.provider === "perplexity" ? "https://api.perplexity.ai" :
196198
selectedModel.provider === "xai" ? "https://api.x.ai/v1" :
197199
selectedModel.provider === "groq" ? "https://api.groq.com/openai/v1" :
198200
selectedModel.provider === "openrouter" ? "https://openrouter.ai/api/v1" :
@@ -243,6 +245,25 @@ export function ChatNode({ id, data: initialData }: NodeProps) {
243245
return filteredSettings;
244246
}
245247

248+
function filterPerplexityAISettings(settings: Partial<AISettings>) {
249+
const filteredSettings: Record<string, any> = {};
250+
251+
if (settings.temperature !== DEFAULT_AI_SETTINGS.temperature) {
252+
filteredSettings.temperature = settings.temperature;
253+
}
254+
255+
if (settings.top_p !== DEFAULT_AI_SETTINGS.top_p) {
256+
filteredSettings.top_p = settings.top_p;
257+
}
258+
259+
if (settings.frequency_penalty !== DEFAULT_AI_SETTINGS.frequency_penalty) {
260+
filteredSettings.frequency_penalty = settings.frequency_penalty || 0.1;
261+
}
262+
263+
264+
return filteredSettings;
265+
}
266+
246267
const getApiKeyForModel = (selectedModel: AIModel | CustomModel) => {
247268
if ('endpoint' in selectedModel) {
248269
// For custom models (like Ollama), check if auth is required
@@ -258,6 +279,8 @@ export function ChatNode({ id, data: initialData }: NodeProps) {
258279
}
259280

260281
return selectedModel.provider === "xai" ? settings.xai?.apiKey || "" :
282+
selectedModel.provider === "perplexity" ? settings.perplexity?.apiKey || "" :
283+
selectedModel.provider === "deepseek" ? settings.deepseek?.apiKey || "" :
261284
selectedModel.provider === "groq" ? settings.groq?.apiKey || "" :
262285
selectedModel.provider === "openrouter" ? settings.openrouter?.apiKey || "" :
263286
selectedModel.provider === "anthropic" ? settings.anthropic?.apiKey || "" :
@@ -356,7 +379,7 @@ export function ChatNode({ id, data: initialData }: NodeProps) {
356379

357380
let response;
358381
let result: any;
359-
382+
360383
if (selectedModel.provider === "anthropic") {
361384
const anthropic = new Anthropic({
362385
apiKey: apiKey,

0 commit comments

Comments
 (0)