auto-git:
[change] src/App.jsx [change] src/AssistantMessageContent.jsx [change] src/GeneralSettings.jsx [change] src/InterfaceSettings.jsx [change] src/LibraryManager.jsx [change] src/WebsearchSettings.jsx [change] src/main.jsx [change] src/useChatScroll.js
This commit is contained in:
@@ -687,10 +687,10 @@ export default function App() {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
window.electronAPI.onWindowFocus(handleFocus);
|
desktopApi.onWindowFocus(handleFocus);
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
window.electronAPI.offWindowFocus(handleFocus);
|
desktopApi.offWindowFocus(handleFocus);
|
||||||
};
|
};
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ export default function AssistantMessageContent({ content, streamOutput, sources
|
|||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
try {
|
try {
|
||||||
const parsed = new URL(u)
|
const parsed = new URL(u)
|
||||||
window.electronAPI?.openPath?.(decodeURIComponent(parsed.pathname))
|
desktopApi?.openPath?.(decodeURIComponent(parsed.pathname))
|
||||||
} catch {}
|
} catch {}
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -109,8 +109,8 @@ export default function GeneralSettings({
|
|||||||
let cancelled = false;
|
let cancelled = false;
|
||||||
|
|
||||||
Promise.all([
|
Promise.all([
|
||||||
window.electronAPI.getSettings(),
|
desktopApi.getSettings(),
|
||||||
window.electronAPI.getUpdateStatus(),
|
desktopApi.getUpdateStatus(),
|
||||||
]).then(([settings, status]) => {
|
]).then(([settings, status]) => {
|
||||||
if (cancelled) {
|
if (cancelled) {
|
||||||
return;
|
return;
|
||||||
@@ -202,13 +202,13 @@ export default function GeneralSettings({
|
|||||||
}
|
}
|
||||||
|
|
||||||
setSelectedModel(nextModel);
|
setSelectedModel(nextModel);
|
||||||
window.electronAPI.setSetting(MODEL_KEY, nextModel);
|
desktopApi.setSetting(MODEL_KEY, nextModel);
|
||||||
if (onModelChange) {
|
if (onModelChange) {
|
||||||
onModelChange(nextModel);
|
onModelChange(nextModel);
|
||||||
}
|
}
|
||||||
if (visionModels.includes(nextModel) && nextModel !== visionModel) {
|
if (visionModels.includes(nextModel) && nextModel !== visionModel) {
|
||||||
setVisionModel(nextModel);
|
setVisionModel(nextModel);
|
||||||
window.electronAPI.setSetting(VISION_MODEL_KEY, nextModel);
|
desktopApi.setSetting(VISION_MODEL_KEY, nextModel);
|
||||||
if (onVisionModelChange) {
|
if (onVisionModelChange) {
|
||||||
onVisionModelChange(nextModel);
|
onVisionModelChange(nextModel);
|
||||||
}
|
}
|
||||||
@@ -232,7 +232,7 @@ export default function GeneralSettings({
|
|||||||
}
|
}
|
||||||
|
|
||||||
setVisionModel(nextModel);
|
setVisionModel(nextModel);
|
||||||
window.electronAPI.setSetting(VISION_MODEL_KEY, nextModel);
|
desktopApi.setSetting(VISION_MODEL_KEY, nextModel);
|
||||||
if (onVisionModelChange) {
|
if (onVisionModelChange) {
|
||||||
onVisionModelChange(nextModel);
|
onVisionModelChange(nextModel);
|
||||||
}
|
}
|
||||||
@@ -251,7 +251,7 @@ export default function GeneralSettings({
|
|||||||
|
|
||||||
const nextModel = embeddingModels[0] || DEFAULT_EMBED_MODEL;
|
const nextModel = embeddingModels[0] || DEFAULT_EMBED_MODEL;
|
||||||
setEmbedModel(nextModel);
|
setEmbedModel(nextModel);
|
||||||
window.electronAPI.setSetting(EMBED_MODEL_KEY, nextModel);
|
desktopApi.setSetting(EMBED_MODEL_KEY, nextModel);
|
||||||
}, [embeddingModels, embedModel, panel, settingsHydrated]);
|
}, [embeddingModels, embedModel, panel, settingsHydrated]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -267,7 +267,7 @@ export default function GeneralSettings({
|
|||||||
|
|
||||||
const nextModel = embedModel || rerankingModels[0] || DEFAULT_EMBED_MODEL;
|
const nextModel = embedModel || rerankingModels[0] || DEFAULT_EMBED_MODEL;
|
||||||
setRerankModel(nextModel);
|
setRerankModel(nextModel);
|
||||||
window.electronAPI.setSetting(RERANK_MODEL_KEY, nextModel);
|
desktopApi.setSetting(RERANK_MODEL_KEY, nextModel);
|
||||||
}, [rerankingModels, rerankModel, embedModel, panel, settingsHydrated]);
|
}, [rerankingModels, rerankModel, embedModel, panel, settingsHydrated]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -283,7 +283,7 @@ export default function GeneralSettings({
|
|||||||
|
|
||||||
const nextModel = whisperModels[0] || DEFAULT_TRANSCRIPTION_MODEL;
|
const nextModel = whisperModels[0] || DEFAULT_TRANSCRIPTION_MODEL;
|
||||||
setTranscriptionModel(nextModel);
|
setTranscriptionModel(nextModel);
|
||||||
window.electronAPI.setSetting(TRANSCRIPTION_MODEL_KEY, nextModel);
|
desktopApi.setSetting(TRANSCRIPTION_MODEL_KEY, nextModel);
|
||||||
if (onTranscriptionModelChange) {
|
if (onTranscriptionModelChange) {
|
||||||
onTranscriptionModelChange(nextModel);
|
onTranscriptionModelChange(nextModel);
|
||||||
}
|
}
|
||||||
@@ -353,13 +353,13 @@ export default function GeneralSettings({
|
|||||||
const handleModelChange = (event) => {
|
const handleModelChange = (event) => {
|
||||||
const newModel = event.target.value;
|
const newModel = event.target.value;
|
||||||
setSelectedModel(newModel);
|
setSelectedModel(newModel);
|
||||||
window.electronAPI.setSetting(MODEL_KEY, newModel);
|
desktopApi.setSetting(MODEL_KEY, newModel);
|
||||||
if (onModelChange) {
|
if (onModelChange) {
|
||||||
onModelChange(newModel);
|
onModelChange(newModel);
|
||||||
}
|
}
|
||||||
if (visionModels.includes(newModel) && newModel !== visionModel) {
|
if (visionModels.includes(newModel) && newModel !== visionModel) {
|
||||||
setVisionModel(newModel);
|
setVisionModel(newModel);
|
||||||
window.electronAPI.setSetting(VISION_MODEL_KEY, newModel);
|
desktopApi.setSetting(VISION_MODEL_KEY, newModel);
|
||||||
if (onVisionModelChange) {
|
if (onVisionModelChange) {
|
||||||
onVisionModelChange(newModel);
|
onVisionModelChange(newModel);
|
||||||
}
|
}
|
||||||
@@ -369,7 +369,7 @@ export default function GeneralSettings({
|
|||||||
const handleVisionModelChange = (event) => {
|
const handleVisionModelChange = (event) => {
|
||||||
const newModel = event.target.value;
|
const newModel = event.target.value;
|
||||||
setVisionModel(newModel);
|
setVisionModel(newModel);
|
||||||
window.electronAPI.setSetting(VISION_MODEL_KEY, newModel);
|
desktopApi.setSetting(VISION_MODEL_KEY, newModel);
|
||||||
if (onVisionModelChange) {
|
if (onVisionModelChange) {
|
||||||
onVisionModelChange(newModel);
|
onVisionModelChange(newModel);
|
||||||
}
|
}
|
||||||
@@ -378,19 +378,19 @@ export default function GeneralSettings({
|
|||||||
const handleEmbedModelChange = (event) => {
|
const handleEmbedModelChange = (event) => {
|
||||||
const nextModel = event.target.value;
|
const nextModel = event.target.value;
|
||||||
setEmbedModel(nextModel);
|
setEmbedModel(nextModel);
|
||||||
window.electronAPI.setSetting(EMBED_MODEL_KEY, nextModel);
|
desktopApi.setSetting(EMBED_MODEL_KEY, nextModel);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleRerankModelChange = (event) => {
|
const handleRerankModelChange = (event) => {
|
||||||
const nextModel = event.target.value;
|
const nextModel = event.target.value;
|
||||||
setRerankModel(nextModel);
|
setRerankModel(nextModel);
|
||||||
window.electronAPI.setSetting(RERANK_MODEL_KEY, nextModel);
|
desktopApi.setSetting(RERANK_MODEL_KEY, nextModel);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleTranscriptionModelChange = (event) => {
|
const handleTranscriptionModelChange = (event) => {
|
||||||
const nextModel = event.target.value;
|
const nextModel = event.target.value;
|
||||||
setTranscriptionModel(nextModel);
|
setTranscriptionModel(nextModel);
|
||||||
window.electronAPI.setSetting(TRANSCRIPTION_MODEL_KEY, nextModel);
|
desktopApi.setSetting(TRANSCRIPTION_MODEL_KEY, nextModel);
|
||||||
if (onTranscriptionModelChange) {
|
if (onTranscriptionModelChange) {
|
||||||
onTranscriptionModelChange(nextModel);
|
onTranscriptionModelChange(nextModel);
|
||||||
}
|
}
|
||||||
@@ -434,7 +434,7 @@ export default function GeneralSettings({
|
|||||||
const handleAudioInputDeviceChange = (event) => {
|
const handleAudioInputDeviceChange = (event) => {
|
||||||
const nextDeviceId = event.target.value;
|
const nextDeviceId = event.target.value;
|
||||||
setAudioInputDeviceId(nextDeviceId);
|
setAudioInputDeviceId(nextDeviceId);
|
||||||
window.electronAPI.setSetting(AUDIO_INPUT_DEVICE_ID_KEY, nextDeviceId);
|
desktopApi.setSetting(AUDIO_INPUT_DEVICE_ID_KEY, nextDeviceId);
|
||||||
if (onAudioInputDeviceChange) {
|
if (onAudioInputDeviceChange) {
|
||||||
onAudioInputDeviceChange(nextDeviceId);
|
onAudioInputDeviceChange(nextDeviceId);
|
||||||
}
|
}
|
||||||
@@ -443,7 +443,7 @@ export default function GeneralSettings({
|
|||||||
const handleAudioInputLanguageChange = (event) => {
|
const handleAudioInputLanguageChange = (event) => {
|
||||||
const nextLanguage = event.target.value;
|
const nextLanguage = event.target.value;
|
||||||
setAudioInputLanguage(nextLanguage);
|
setAudioInputLanguage(nextLanguage);
|
||||||
window.electronAPI.setSetting(AUDIO_INPUT_LANGUAGE_KEY, nextLanguage);
|
desktopApi.setSetting(AUDIO_INPUT_LANGUAGE_KEY, nextLanguage);
|
||||||
if (onAudioInputLanguageChange) {
|
if (onAudioInputLanguageChange) {
|
||||||
onAudioInputLanguageChange(nextLanguage);
|
onAudioInputLanguageChange(nextLanguage);
|
||||||
}
|
}
|
||||||
@@ -452,7 +452,7 @@ export default function GeneralSettings({
|
|||||||
const handleCheckForUpdates = async () => {
|
const handleCheckForUpdates = async () => {
|
||||||
setIsCheckingForUpdates(true);
|
setIsCheckingForUpdates(true);
|
||||||
try {
|
try {
|
||||||
const status = await window.electronAPI.checkForUpdates();
|
const status = await desktopApi.checkForUpdates();
|
||||||
setUpdateStatus(status || DEFAULT_UPDATE_STATUS);
|
setUpdateStatus(status || DEFAULT_UPDATE_STATUS);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
setUpdateStatus({
|
setUpdateStatus({
|
||||||
@@ -472,7 +472,7 @@ export default function GeneralSettings({
|
|||||||
setChangelogError('');
|
setChangelogError('');
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const result = await window.electronAPI.getChangelogPage(page);
|
const result = await desktopApi.getChangelogPage(page);
|
||||||
setChangelogEntries(Array.isArray(result?.entries) ? result.entries : []);
|
setChangelogEntries(Array.isArray(result?.entries) ? result.entries : []);
|
||||||
setChangelogPage(Number.isInteger(result?.page) ? result.page : page);
|
setChangelogPage(Number.isInteger(result?.page) ? result.page : page);
|
||||||
setChangelogHasMore(Boolean(result?.hasMore));
|
setChangelogHasMore(Boolean(result?.hasMore));
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ export default function InterfaceSettings({
|
|||||||
const [openDevToolsOnStartup, setOpenDevToolsOnStartup] = useState(false)
|
const [openDevToolsOnStartup, setOpenDevToolsOnStartup] = useState(false)
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
window.electronAPI.getSettings().then(settings => {
|
desktopApi.getSettings().then(settings => {
|
||||||
const schemeName = settings.colorScheme || 'Default'
|
const schemeName = settings.colorScheme || 'Default'
|
||||||
setSelectedColorScheme(schemeName)
|
setSelectedColorScheme(schemeName)
|
||||||
setUiScale(normalizeUiScale(settings.uiScale))
|
setUiScale(normalizeUiScale(settings.uiScale))
|
||||||
@@ -44,13 +44,13 @@ export default function InterfaceSettings({
|
|||||||
const handleColorSchemeChange = (event) => {
|
const handleColorSchemeChange = (event) => {
|
||||||
const newScheme = event.target.value
|
const newScheme = event.target.value
|
||||||
setSelectedColorScheme(newScheme)
|
setSelectedColorScheme(newScheme)
|
||||||
window.electronAPI.setSetting(COLOR_SCHEME_KEY, newScheme)
|
desktopApi.setSetting(COLOR_SCHEME_KEY, newScheme)
|
||||||
}
|
}
|
||||||
|
|
||||||
const persistUiScale = (value) => {
|
const persistUiScale = (value) => {
|
||||||
const nextScale = normalizeUiScale(value)
|
const nextScale = normalizeUiScale(value)
|
||||||
setUiScale(nextScale)
|
setUiScale(nextScale)
|
||||||
window.electronAPI.setSetting(UI_SCALE_KEY, nextScale)
|
desktopApi.setSetting(UI_SCALE_KEY, nextScale)
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleUiScaleChange = (event) => {
|
const handleUiScaleChange = (event) => {
|
||||||
@@ -64,12 +64,12 @@ export default function InterfaceSettings({
|
|||||||
const handleOpenDevToolsOnStartupToggle = () => {
|
const handleOpenDevToolsOnStartupToggle = () => {
|
||||||
const nextValue = !openDevToolsOnStartup
|
const nextValue = !openDevToolsOnStartup
|
||||||
setOpenDevToolsOnStartup(nextValue)
|
setOpenDevToolsOnStartup(nextValue)
|
||||||
window.electronAPI.setSetting(OPEN_DEVTOOLS_ON_STARTUP_KEY, nextValue)
|
desktopApi.setSetting(OPEN_DEVTOOLS_ON_STARTUP_KEY, nextValue)
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleStreamOutputToggle = () => {
|
const handleStreamOutputToggle = () => {
|
||||||
const nextValue = !streamOutput
|
const nextValue = !streamOutput
|
||||||
window.electronAPI.setSetting(STREAM_KEY, nextValue)
|
desktopApi.setSetting(STREAM_KEY, nextValue)
|
||||||
if (onStreamOutputChange) {
|
if (onStreamOutputChange) {
|
||||||
onStreamOutputChange(nextValue)
|
onStreamOutputChange(nextValue)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ export default function LibraryManager({
|
|||||||
|
|
||||||
async function addPaths() {
|
async function addPaths() {
|
||||||
if (!library) return
|
if (!library) return
|
||||||
const paths = await window.electronAPI?.pickPaths?.()
|
const paths = await desktopApi?.pickPaths?.()
|
||||||
if (!Array.isArray(paths) || paths.length === 0) return
|
if (!Array.isArray(paths) || paths.length === 0) return
|
||||||
try {
|
try {
|
||||||
await registerPaths(paths)
|
await registerPaths(paths)
|
||||||
@@ -307,7 +307,7 @@ export default function LibraryManager({
|
|||||||
>
|
>
|
||||||
{file.enrich_enabled ? 'Use Raw Only' : 'Enable Enrich'}
|
{file.enrich_enabled ? 'Use Raw Only' : 'Enable Enrich'}
|
||||||
</button>
|
</button>
|
||||||
<button className="button ghost" onClick={() => window.electronAPI?.openPath?.(file.path)}>Open</button>
|
<button className="button ghost" onClick={() => desktopApi?.openPath?.(file.path)}>Open</button>
|
||||||
<button className="button ghost" disabled={busy || isSyncing} onClick={() => removeFile(file.rel)}>Remove</button>
|
<button className="button ghost" disabled={busy || isSyncing} onClick={() => removeFile(file.rel)}>Remove</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ export default function WebsearchSettings({
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
let cancelled = false
|
let cancelled = false
|
||||||
|
|
||||||
window.electronAPI.getSettings().then(settings => {
|
desktopApi.getSettings().then(settings => {
|
||||||
if (cancelled) {
|
if (cancelled) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -46,7 +46,7 @@ export default function WebsearchSettings({
|
|||||||
const handleBackendUrlChange = (event) => {
|
const handleBackendUrlChange = (event) => {
|
||||||
const newUrl = event.target.value
|
const newUrl = event.target.value
|
||||||
setBackendApiUrl(newUrl)
|
setBackendApiUrl(newUrl)
|
||||||
window.electronAPI.setSetting(BACKEND_API_URL_KEY, newUrl)
|
desktopApi.setSetting(BACKEND_API_URL_KEY, newUrl)
|
||||||
if (onBackendApiUrlChange) {
|
if (onBackendApiUrlChange) {
|
||||||
onBackendApiUrlChange(newUrl)
|
onBackendApiUrlChange(newUrl)
|
||||||
}
|
}
|
||||||
@@ -55,7 +55,7 @@ export default function WebsearchSettings({
|
|||||||
const handleOllamaUrlChange = (event) => {
|
const handleOllamaUrlChange = (event) => {
|
||||||
const newUrl = event.target.value
|
const newUrl = event.target.value
|
||||||
setOllamaApiUrl(newUrl)
|
setOllamaApiUrl(newUrl)
|
||||||
window.electronAPI.setSetting(OLLAMA_API_URL_KEY, newUrl)
|
desktopApi.setSetting(OLLAMA_API_URL_KEY, newUrl)
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import { applyColorScheme } from './colorSchemes'
|
|||||||
|
|
||||||
function Main() {
|
function Main() {
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
window.electronAPI.getSettings().then(settings => {
|
desktopApi.getSettings().then(settings => {
|
||||||
applyColorScheme(settings.colorScheme || 'Default')
|
applyColorScheme(settings.colorScheme || 'Default')
|
||||||
})
|
})
|
||||||
}, [])
|
}, [])
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ export function useChatScroll({
|
|||||||
|
|
||||||
setScrollPositions(prev => {
|
setScrollPositions(prev => {
|
||||||
const updated = { ...prev, [leavingSessionId]: top }
|
const updated = { ...prev, [leavingSessionId]: top }
|
||||||
window.electronAPI.updateSettings({ scrollPositions: updated })
|
desktopApi.updateSettings({ scrollPositions: updated })
|
||||||
return updated
|
return updated
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user