Update settings submenu and audio input default state

This commit is contained in:
2026-04-17 08:59:25 +02:00
parent ac427bc99f
commit 088be29a8d

View File

@@ -339,7 +339,7 @@ export default function App() {
const [activeSessionId, setActiveSessionId] = useState(null) const [activeSessionId, setActiveSessionId] = useState(null)
const [activeSidebarMode, setActiveSidebarMode] = useState('chats') // 'chats', 'dbs', 'settings' const [activeSidebarMode, setActiveSidebarMode] = useState('chats') // 'chats', 'dbs', 'settings'
const activeSidebarModeRef = useRef(activeSidebarMode) const activeSidebarModeRef = useRef(activeSidebarMode)
const [activeSettingsSubmenu, setActiveSettingsSubmenu] = useState('General'); // 'General', 'Interface' const [activeSettingsSubmenu, setActiveSettingsSubmenu] = useState('AI Models');
const [editingSessionId, setEditingSessionId] = useState(null); // ID of the session being edited const [editingSessionId, setEditingSessionId] = useState(null); // ID of the session being edited
const [editingLibrarySlug, setEditingLibrarySlug] = useState(null) const [editingLibrarySlug, setEditingLibrarySlug] = useState(null)
const [libraries, setLibraries] = useState([]) const [libraries, setLibraries] = useState([])
@@ -371,7 +371,7 @@ export default function App() {
const dbPickerRef = useRef(null) const dbPickerRef = useRef(null)
const imageInputRef = useRef(null) const imageInputRef = useRef(null)
const imageDragDepthRef = useRef(0) const imageDragDepthRef = useRef(0)
const [audioInputEnabled, setAudioInputEnabled] = useState(false) const [audioInputEnabled, setAudioInputEnabled] = useState(true)
const [audioInputDeviceId, setAudioInputDeviceId] = useState('') const [audioInputDeviceId, setAudioInputDeviceId] = useState('')
const [audioInputLanguage, setAudioInputLanguage] = useState('') const [audioInputLanguage, setAudioInputLanguage] = useState('')
const [audioInputRuntimeReady, setAudioInputRuntimeReady] = useState(true) const [audioInputRuntimeReady, setAudioInputRuntimeReady] = useState(true)
@@ -1289,7 +1289,10 @@ async function regenerateFromIndex(index, overrideUserText = null) {
setVisionModel(settings.visionModel || settings.chatModel || ''); setVisionModel(settings.visionModel || settings.chatModel || '');
setTranscriptionModel(settings.transcriptionModel || 'base'); setTranscriptionModel(settings.transcriptionModel || 'base');
setStreamOutput(settings.streamOutput || false); setStreamOutput(settings.streamOutput || false);
setAudioInputEnabled(settings.audioInputEnabled === true); setAudioInputEnabled(true);
if (settings.audioInputEnabled !== true) {
window.electronAPI.setSetting('audioInputEnabled', true)
}
setAudioInputDeviceId(typeof settings.audioInputDeviceId === 'string' ? settings.audioInputDeviceId : ''); setAudioInputDeviceId(typeof settings.audioInputDeviceId === 'string' ? settings.audioInputDeviceId : '');
setAudioInputLanguage(typeof settings.audioInputLanguage === 'string' ? settings.audioInputLanguage : ''); setAudioInputLanguage(typeof settings.audioInputLanguage === 'string' ? settings.audioInputLanguage : '');
setScrollPositions(settings.scrollPositions || {}); // Load scroll positions setScrollPositions(settings.scrollPositions || {}); // Load scroll positions
@@ -2501,10 +2504,10 @@ async function createNewChat() {
{activeSidebarMode === 'settings' && ( {activeSidebarMode === 'settings' && (
<div className="settings-list"> <div className="settings-list">
<div <div
className={`settings-item ${activeSettingsSubmenu === 'General' ? 'active' : ''}`} className={`settings-item ${activeSettingsSubmenu === 'AI Models' ? 'active' : ''}`}
onClick={() => setActiveSettingsSubmenu('General')} onClick={() => setActiveSettingsSubmenu('AI Models')}
> >
General AI Models
</div> </div>
<div <div
className={`settings-item ${activeSettingsSubmenu === 'Interface' ? 'active' : ''}`} className={`settings-item ${activeSettingsSubmenu === 'Interface' ? 'active' : ''}`}
@@ -2513,10 +2516,28 @@ async function createNewChat() {
Interface Interface
</div> </div>
<div <div
className={`settings-item ${activeSettingsSubmenu === 'Websearch' ? 'active' : ''}`} className={`settings-item ${activeSettingsSubmenu === 'Microphone' ? 'active' : ''}`}
onClick={() => setActiveSettingsSubmenu('Websearch')} onClick={() => setActiveSettingsSubmenu('Microphone')}
> >
Websearch Microphone
</div>
<div
className={`settings-item ${activeSettingsSubmenu === 'Backend' ? 'active' : ''}`}
onClick={() => setActiveSettingsSubmenu('Backend')}
>
Backend
</div>
<div
className={`settings-item ${activeSettingsSubmenu === 'Updates' ? 'active' : ''}`}
onClick={() => setActiveSettingsSubmenu('Updates')}
>
Updates
</div>
<div
className={`settings-item ${activeSettingsSubmenu === 'Advanced' ? 'active' : ''}`}
onClick={() => setActiveSettingsSubmenu('Advanced')}
>
Advanced
</div> </div>
</div> </div>
)} )}
@@ -2948,29 +2969,43 @@ async function createNewChat() {
<div className="header"> <div className="header">
<strong>{activeSettingsSubmenu} Settings</strong> <strong>{activeSettingsSubmenu} Settings</strong>
</div> </div>
{activeSettingsSubmenu === 'General' && ( {activeSettingsSubmenu === 'AI Models' && (
<GeneralSettings <GeneralSettings
panel="AI Models"
onModelChange={setModel} onModelChange={setModel}
onVisionModelChange={setVisionModel} onVisionModelChange={setVisionModel}
onTranscriptionModelChange={setTranscriptionModel} onTranscriptionModelChange={setTranscriptionModel}
onBackendApiUrlChange={setBackendApiUrl}
streamOutput={streamOutput}
onStreamOutputChange={setStreamOutput}
onAudioInputEnabledChange={setAudioInputEnabled}
onAudioInputDeviceChange={setAudioInputDeviceId}
onAudioInputLanguageChange={setAudioInputLanguage}
onLibrariesPurged={handleLibrariesPurged} onLibrariesPurged={handleLibrariesPurged}
/> />
)} )}
{activeSettingsSubmenu === 'Interface' && <InterfaceSettings />} {activeSettingsSubmenu === 'Interface' && (
{activeSettingsSubmenu === 'Websearch' && ( <InterfaceSettings
streamOutput={streamOutput}
onStreamOutputChange={setStreamOutput}
/>
)}
{activeSettingsSubmenu === 'Microphone' && (
<GeneralSettings
panel="Microphone"
onAudioInputDeviceChange={setAudioInputDeviceId}
onAudioInputLanguageChange={setAudioInputLanguage}
/>
)}
{activeSettingsSubmenu === 'Backend' && (
<WebsearchSettings <WebsearchSettings
onBackendApiUrlChange={setBackendApiUrl}
searxUrl={searxUrl} searxUrl={searxUrl}
setSearxUrl={setSearxUrl} setSearxUrl={setSearxUrl}
engines={searxEngines} engines={searxEngines}
setEngines={(next) => setSearxEngines(normalizeWebsearchEngines(next))} setEngines={(next) => setSearxEngines(normalizeWebsearchEngines(next))}
/> />
)} )}
{activeSettingsSubmenu === 'Updates' && (
<GeneralSettings panel="Updates" />
)}
{activeSettingsSubmenu === 'Advanced' && (
<GeneralSettings panel="Advanced" onLibrariesPurged={handleLibrariesPurged} />
)}
</> </>
)} )}
</div> </div>