diff options
Diffstat (limited to 'src/options/options.js')
| -rw-r--r-- | src/options/options.js | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/options/options.js b/src/options/options.js index 606291b..b4fc349 100644 --- a/src/options/options.js +++ b/src/options/options.js @@ -1,10 +1,9 @@ 'use strict'; -import { LANGUAGES, ERROR_CODES, RUNTIME_MESSAGES } from '../shared/constants.js'; +import { LANGUAGES, ERROR_CODES, RUNTIME_MESSAGES, CONTEXT_PRESETS } from '../shared/constants.js'; import { defaultSettings, sanitizeSettings, - CONTEXT_PRESETS, isValidOllamaHost } from '../shared/settings-schema.js'; @@ -152,7 +151,6 @@ function applySettings(settings) { input.value = value === null || value === undefined ? '' : String(value); } $stop.value = (settings.advanced.stop || []).join('\n'); - fillModels(knownModels, settings.model); } async function loadSettings() { @@ -230,7 +228,11 @@ $form.addEventListener('submit', (event) => { } void (async () => { - await browser.storage.local.set({ settings: validated }); + // Merge over the stored settings so fields not present in this form + // (e.g. saved by the popup meanwhile) are preserved. + const result = await browser.storage.local.get({ settings: null }); + const merged = { ...(result.settings || defaultSettings()), ...validated }; + await browser.storage.local.set({ settings: sanitizeSettings(merged) }); if (warnings.length > 0) { $saveStatus.textContent = `保存しました(修正された項目: ${warnings.join(', ')})`; } else { |
