From 26154941ca833475157678b32a4d1b299fef3819 Mon Sep 17 00:00:00 2001 From: Louis Date: Tue, 27 May 2025 19:38:21 +0700 Subject: [PATCH] fix: chore UI issues (#5116) * fix: app log outputs with debug level * fix: reasoning block still show loading indicator when stopped * chore: fix mistral AI base url --- src-tauri/src/lib.rs | 2 +- web-app/src/containers/ThinkingBlock.tsx | 4 +++- web-app/src/mock/data.ts | 6 +++--- web-app/src/services/models.ts | 7 ++++++- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index f04f36004..c34353d22 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -85,7 +85,7 @@ pub fn run() { .setup(|app| { app.handle().plugin( tauri_plugin_log::Builder::default() - .level(log::LevelFilter::Info) + .level(log::LevelFilter::Debug) .targets([ tauri_plugin_log::Target::new(tauri_plugin_log::TargetKind::Stdout), tauri_plugin_log::Target::new(tauri_plugin_log::TargetKind::Webview), diff --git a/web-app/src/containers/ThinkingBlock.tsx b/web-app/src/containers/ThinkingBlock.tsx index c2f119d92..1353474d5 100644 --- a/web-app/src/containers/ThinkingBlock.tsx +++ b/web-app/src/containers/ThinkingBlock.tsx @@ -1,6 +1,7 @@ import { ChevronDown, ChevronUp, Loader } from 'lucide-react' import { create } from 'zustand' import { RenderMarkdown } from './RenderMarkdown' +import { useAppState } from '@/hooks/useAppState' interface Props { text: string @@ -26,7 +27,8 @@ const useThinkingStore = create((set) => ({ const ThinkingBlock = ({ id, text }: Props) => { const { thinkingState, toggleState } = useThinkingStore() - const loading = !text.includes('') + const { streamingContent } = useAppState() + const loading = !text.includes('') && streamingContent const isExpanded = thinkingState[id] ?? false const handleClick = () => toggleState(id) diff --git a/web-app/src/mock/data.ts b/web-app/src/mock/data.ts index 415052984..9ee3fdb2d 100644 --- a/web-app/src/mock/data.ts +++ b/web-app/src/mock/data.ts @@ -306,7 +306,7 @@ export const mockModelProvider = [ { active: true, api_key: '', - base_url: 'https://api.mistral.ai/v1', + base_url: 'https://api.mistral.ai', explore_models_url: 'https://docs.mistral.ai/getting-started/models/models_overview/', provider: 'mistral', @@ -331,8 +331,8 @@ export const mockModelProvider = [ 'The base endpoint to use. See the [Mistral documentation](https://docs.mistral.ai/getting-started/models/models_overview/) for more information.', controller_type: 'input', controller_props: { - placeholder: 'https://api.mistral.ai/v1', - value: 'https://api.mistral.ai/v1', + placeholder: 'https://api.mistral.ai', + value: 'https://api.mistral.ai', }, }, ], diff --git a/web-app/src/services/models.ts b/web-app/src/services/models.ts index fe67f0388..1d9405b9c 100644 --- a/web-app/src/services/models.ts +++ b/web-app/src/services/models.ts @@ -194,7 +194,12 @@ export const importModel = async ( if (!path) throw new Error('No file selected') // Extract filename from path to use as model ID if not provided - const defaultModelId = path.split(/[/\\]/).pop()?.replace(/ /g, '-') || path + const defaultModelId = + path + .split(/[/\\]/) + .pop() + ?.replace(/ /g, '-') + .replace(/\.gguf$/i, '') || path const modelIdToUse = modelId || defaultModelId return await extension.importModel(modelIdToUse, path, provider)