fix: remove experimental toggle

This commit is contained in:
Louis 2025-08-21 11:54:34 +07:00
parent 6b55812739
commit cfbc6b9150
No known key found for this signature in database
GPG Key ID: 44FA9F4D33C37DE2
5 changed files with 12 additions and 78 deletions

View File

@ -57,7 +57,7 @@ const ChatInput = ({ model, className, initialMessage }: ChatInputProps) => {
const { prompt, setPrompt } = usePrompt() const { prompt, setPrompt } = usePrompt()
const { currentThreadId } = useThreads() const { currentThreadId } = useThreads()
const { t } = useTranslation() const { t } = useTranslation()
const { spellCheckChatInput, experimentalFeatures } = useGeneralSetting() const { spellCheckChatInput } = useGeneralSetting()
const maxRows = 10 const maxRows = 10
@ -586,8 +586,7 @@ const ChatInput = ({ model, className, initialMessage }: ChatInputProps) => {
</TooltipProvider> </TooltipProvider>
)} )}
{experimentalFeatures && {selectedModel?.capabilities?.includes('tools') &&
selectedModel?.capabilities?.includes('tools') &&
hasActiveMCPServers && ( hasActiveMCPServers && (
<TooltipProvider> <TooltipProvider>
<Tooltip <Tooltip

View File

@ -11,7 +11,6 @@ import {
import { useMatches, useNavigate } from '@tanstack/react-router' import { useMatches, useNavigate } from '@tanstack/react-router'
import { cn } from '@/lib/utils' import { cn } from '@/lib/utils'
import { useGeneralSetting } from '@/hooks/useGeneralSetting'
import { useModelProvider } from '@/hooks/useModelProvider' import { useModelProvider } from '@/hooks/useModelProvider'
import { getProviderTitle } from '@/lib/utils' import { getProviderTitle } from '@/lib/utils'
import ProvidersAvatar from '@/containers/ProvidersAvatar' import ProvidersAvatar from '@/containers/ProvidersAvatar'
@ -23,7 +22,6 @@ const SettingsMenu = () => {
const matches = useMatches() const matches = useMatches()
const navigate = useNavigate() const navigate = useNavigate()
const { experimentalFeatures } = useGeneralSetting()
const { providers } = useModelProvider() const { providers } = useModelProvider()
// Filter providers that have active API keys (or are llama.cpp which doesn't need one) // Filter providers that have active API keys (or are llama.cpp which doesn't need one)
@ -79,15 +77,10 @@ const SettingsMenu = () => {
title: 'common:hardware', title: 'common:hardware',
route: route.settings.hardware, route: route.settings.hardware,
}, },
// Only show MCP Servers when experimental features are enabled
...(experimentalFeatures
? [
{ {
title: 'common:mcp-servers', title: 'common:mcp-servers',
route: route.settings.mcp_servers, route: route.settings.mcp_servers,
}, },
]
: []),
{ {
title: 'common:local_api_server', title: 'common:local_api_server',
route: route.settings.local_api_server, route: route.settings.local_api_server,

View File

@ -29,7 +29,6 @@ import { OUT_OF_CONTEXT_SIZE } from '@/utils/error'
import { updateSettings } from '@/services/providers' import { updateSettings } from '@/services/providers'
import { useContextSizeApproval } from './useModelContextApproval' import { useContextSizeApproval } from './useModelContextApproval'
import { useModelLoad } from './useModelLoad' import { useModelLoad } from './useModelLoad'
import { useGeneralSetting } from './useGeneralSetting'
import { import {
ReasoningProcessor, ReasoningProcessor,
extractReasoningFromMessage, extractReasoningFromMessage,
@ -37,7 +36,6 @@ import {
export const useChat = () => { export const useChat = () => {
const { prompt, setPrompt } = usePrompt() const { prompt, setPrompt } = usePrompt()
const { experimentalFeatures } = useGeneralSetting()
const { const {
tools, tools,
updateTokenSpeed, updateTokenSpeed,
@ -247,8 +245,7 @@ export const useChat = () => {
let isCompleted = false let isCompleted = false
// Filter tools based on model capabilities and available tools for this thread // Filter tools based on model capabilities and available tools for this thread
let availableTools = let availableTools = selectedModel?.capabilities?.includes('tools')
experimentalFeatures && selectedModel?.capabilities?.includes('tools')
? tools.filter((tool) => { ? tools.filter((tool) => {
const disabledTools = getDisabledToolsForThread(activeThread.id) const disabledTools = getDisabledToolsForThread(activeThread.id)
return !disabledTools.includes(tool.name) return !disabledTools.includes(tool.name)
@ -543,7 +540,6 @@ export const useChat = () => {
setPrompt, setPrompt,
selectedModel, selectedModel,
currentAssistant, currentAssistant,
experimentalFeatures,
tools, tools,
updateLoadingModel, updateLoadingModel,
getDisabledToolsForThread, getDisabledToolsForThread,

View File

@ -6,10 +6,8 @@ import { ExtensionManager } from '@/lib/extension'
type LeftPanelStoreState = { type LeftPanelStoreState = {
currentLanguage: Language currentLanguage: Language
spellCheckChatInput: boolean spellCheckChatInput: boolean
experimentalFeatures: boolean
huggingfaceToken?: string huggingfaceToken?: string
setHuggingfaceToken: (token: string) => void setHuggingfaceToken: (token: string) => void
setExperimentalFeatures: (value: boolean) => void
setSpellCheckChatInput: (value: boolean) => void setSpellCheckChatInput: (value: boolean) => void
setCurrentLanguage: (value: Language) => void setCurrentLanguage: (value: Language) => void
} }
@ -19,9 +17,7 @@ export const useGeneralSetting = create<LeftPanelStoreState>()(
(set) => ({ (set) => ({
currentLanguage: 'en', currentLanguage: 'en',
spellCheckChatInput: true, spellCheckChatInput: true,
experimentalFeatures: false,
huggingfaceToken: undefined, huggingfaceToken: undefined,
setExperimentalFeatures: (value) => set({ experimentalFeatures: value }),
setSpellCheckChatInput: (value) => set({ spellCheckChatInput: value }), setSpellCheckChatInput: (value) => set({ spellCheckChatInput: value }),
setCurrentLanguage: (value) => set({ currentLanguage: value }), setCurrentLanguage: (value) => set({ currentLanguage: value }),
setHuggingfaceToken: (token) => { setHuggingfaceToken: (token) => {

View File

@ -46,9 +46,6 @@ import { stopAllModels } from '@/services/models'
import { SystemEvent } from '@/types/events' import { SystemEvent } from '@/types/events'
import { Input } from '@/components/ui/input' import { Input } from '@/components/ui/input'
import { useHardware } from '@/hooks/useHardware' import { useHardware } from '@/hooks/useHardware'
import { getConnectedServers } from '@/services/mcp'
import { invoke } from '@tauri-apps/api/core'
import { useMCPServers } from '@/hooks/useMCPServers'
// eslint-disable-next-line @typescript-eslint/no-explicit-any // eslint-disable-next-line @typescript-eslint/no-explicit-any
export const Route = createFileRoute(route.settings.general as any)({ export const Route = createFileRoute(route.settings.general as any)({
@ -60,8 +57,6 @@ function General() {
const { const {
spellCheckChatInput, spellCheckChatInput,
setSpellCheckChatInput, setSpellCheckChatInput,
experimentalFeatures,
setExperimentalFeatures,
huggingfaceToken, huggingfaceToken,
setHuggingfaceToken, setHuggingfaceToken,
} = useGeneralSetting() } = useGeneralSetting()
@ -209,38 +204,6 @@ function General() {
} }
}, [t, checkForUpdate]) }, [t, checkForUpdate])
const handleStopAllMCPServers = async () => {
try {
const connectedServers = await getConnectedServers()
// Stop each connected server
const stopPromises = connectedServers.map((serverName) =>
invoke('deactivate_mcp_server', { name: serverName }).catch((error) => {
console.error(`Error stopping MCP server ${serverName}:`, error)
return Promise.resolve() // Continue with other servers even if one fails
})
)
await Promise.all(stopPromises)
// Update server configs to set active: false for stopped servers
const { mcpServers, editServer } = useMCPServers.getState()
connectedServers.forEach((serverName) => {
const serverConfig = mcpServers[serverName]
if (serverConfig) {
editServer(serverName, { ...serverConfig, active: false })
}
})
if (connectedServers.length > 0) {
toast.success(`Stopped ${connectedServers.length} MCP server(s)`)
}
} catch (error) {
console.error('Error stopping MCP servers:', error)
toast.error('Failed to stop MCP servers')
}
}
return ( return (
<div className="flex flex-col h-full"> <div className="flex flex-col h-full">
<HeaderPage> <HeaderPage>
@ -430,19 +393,6 @@ function General() {
</Card> </Card>
{/* Advanced */} {/* Advanced */}
<Card title="Advanced"> <Card title="Advanced">
<CardItem
title="Experimental Features"
description="Enable experimental features. They may be unstable or change at any time."
actions={
<Switch
checked={experimentalFeatures}
onCheckedChange={async (e) => {
await handleStopAllMCPServers()
setExperimentalFeatures(e)
}}
/>
}
/>
<CardItem <CardItem
title={t('settings:others.resetFactory', { title={t('settings:others.resetFactory', {
ns: 'settings', ns: 'settings',