Keep ai model saved when app closes.
This commit is contained in:
@@ -320,6 +320,11 @@ function showSettingsDialog({
|
||||
const ollamaModel = makeInput(settings.ai?.ollama?.model || 'llama3.2:1b');
|
||||
const aiStatus = el('div', { className: 'muted ai-status' }, 'AI stays local through Ollama. Vision-capable models can also inspect the screenshot attached to each step.');
|
||||
const testAiBtn = el('button', { type: 'button' }, 'Test connection');
|
||||
const persistOllamaModel = debounce(() => {
|
||||
const model = ollamaModel.value.trim();
|
||||
// Keep the last model choice even if the dialog is dismissed without a full save.
|
||||
void api.settings.set({ keyPath: 'ai.ollama.model', value: model }).catch(() => {});
|
||||
}, 250);
|
||||
|
||||
const updateAiStatus = (message, { error = false } = {}) => {
|
||||
aiStatus.textContent = message;
|
||||
@@ -353,6 +358,8 @@ function showSettingsDialog({
|
||||
setButtonLoading(testAiBtn, false);
|
||||
}
|
||||
};
|
||||
ollamaModel.addEventListener('input', () => persistOllamaModel());
|
||||
ollamaModel.addEventListener('blur', () => persistOllamaModel.flush());
|
||||
|
||||
const placeholderRows = el('div', { className: 'placeholder-rows' });
|
||||
const rows = [];
|
||||
|
||||
@@ -56,12 +56,14 @@ test('settings persist, deep-merge with defaults, and store global placeholders'
|
||||
assert.equal(s1.get('appearance'), DEFAULT_SETTINGS.appearance);
|
||||
s1.set('appearance', 'dark');
|
||||
s1.set('capture.delayMs', 1500);
|
||||
s1.set('ai.ollama.model', 'qwen3:0.6b');
|
||||
s1.setGlobalPlaceholders({ Company: 'Acme', Author: 'Tyler' });
|
||||
|
||||
// A fresh instance reads back the changed values merged over defaults.
|
||||
const s2 = new Settings(dir);
|
||||
assert.equal(s2.get('appearance'), 'dark');
|
||||
assert.equal(s2.get('capture.delayMs'), 1500);
|
||||
assert.equal(s2.get('ai.ollama.model'), 'qwen3:0.6b');
|
||||
assert.equal(s2.get('capture.clickMarker'), DEFAULT_SETTINGS.capture.clickMarker);
|
||||
assert.deepEqual(s2.getGlobalPlaceholders(), { Company: 'Acme', Author: 'Tyler' });
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user