// Remove unused imports import React, { memo, useCallback } from 'react'; import { motion } from 'framer-motion'; import { Switch } from '~/components/ui/Switch'; import { useSettings } from '~/lib/hooks/useSettings'; import { classNames } from '~/utils/classNames'; import { toast } from 'react-toastify'; import { PromptLibrary } from '~/lib/common/prompt-library'; interface FeatureToggle { id: string; title: string; description: string; icon: string; enabled: boolean; beta?: boolean; experimental?: boolean; tooltip?: string; } const FeatureCard = memo( ({ feature, index, onToggle, }: { feature: FeatureToggle; index: number; onToggle: (id: string, enabled: boolean) => void; }) => (

{feature.title}

{feature.beta && ( Beta )} {feature.experimental && ( Experimental )}
onToggle(feature.id, checked)} />

{feature.description}

{feature.tooltip &&

{feature.tooltip}

}
), ); const FeatureSection = memo( ({ title, features, icon, description, onToggleFeature, }: { title: string; features: FeatureToggle[]; icon: string; description: string; onToggleFeature: (id: string, enabled: boolean) => void; }) => (

{title}

{description}

{features.map((feature, index) => ( ))}
), ); export default function FeaturesTab() { const { autoSelectTemplate, isLatestBranch, contextOptimizationEnabled, eventLogs, setAutoSelectTemplate, enableLatestBranch, enableContextOptimization, setEventLogs, setPromptId, promptId, } = useSettings(); // Enable features by default on first load React.useEffect(() => { // Only set defaults if values are undefined if (isLatestBranch === undefined) { enableLatestBranch(false); // Default: OFF - Don't auto-update from main branch } if (contextOptimizationEnabled === undefined) { enableContextOptimization(true); // Default: ON - Enable context optimization } if (autoSelectTemplate === undefined) { setAutoSelectTemplate(true); // Default: ON - Enable auto-select templates } if (promptId === undefined) { setPromptId('default'); // Default: 'default' } if (eventLogs === undefined) { setEventLogs(true); // Default: ON - Enable event logging } }, []); // Only run once on component mount const handleToggleFeature = useCallback( (id: string, enabled: boolean) => { switch (id) { case 'latestBranch': { enableLatestBranch(enabled); toast.success(`Main branch updates ${enabled ? 'enabled' : 'disabled'}`); break; } case 'autoSelectTemplate': { setAutoSelectTemplate(enabled); toast.success(`Auto select template ${enabled ? 'enabled' : 'disabled'}`); break; } case 'contextOptimization': { enableContextOptimization(enabled); toast.success(`Context optimization ${enabled ? 'enabled' : 'disabled'}`); break; } case 'eventLogs': { setEventLogs(enabled); toast.success(`Event logging ${enabled ? 'enabled' : 'disabled'}`); break; } default: break; } }, [enableLatestBranch, setAutoSelectTemplate, enableContextOptimization, setEventLogs], ); const features = { stable: [ { id: 'latestBranch', title: 'Main Branch Updates', description: 'Get the latest updates from the main branch', icon: 'i-ph:git-branch', enabled: isLatestBranch, tooltip: 'Enabled by default to receive updates from the main development branch', }, { id: 'autoSelectTemplate', title: 'Auto Select Template', description: 'Automatically select starter template', icon: 'i-ph:selection', enabled: autoSelectTemplate, tooltip: 'Enabled by default to automatically select the most appropriate starter template', }, { id: 'contextOptimization', title: 'Context Optimization', description: 'Optimize context for better responses', icon: 'i-ph:brain', enabled: contextOptimizationEnabled, tooltip: 'Enabled by default for improved AI responses', }, { id: 'eventLogs', title: 'Event Logging', description: 'Enable detailed event logging and history', icon: 'i-ph:list-bullets', enabled: eventLogs, tooltip: 'Enabled by default to record detailed logs of system events and user actions', }, ], beta: [], }; return (
{features.beta.length > 0 && ( )}

Prompt Library

Choose a prompt from the library to use as the system prompt

); }