diff options
Diffstat (limited to 'src/options')
| -rw-r--r-- | src/options/options.html | 2 | ||||
| -rw-r--r-- | src/options/options.js | 10 |
2 files changed, 7 insertions, 5 deletions
diff --git a/src/options/options.html b/src/options/options.html index b60e66b..7390c71 100644 --- a/src/options/options.html +++ b/src/options/options.html @@ -99,6 +99,6 @@ <p class="dev-link"><a href="../../tests/test.html" target="_blank" rel="noreferrer">開発者向け: テストを実行</a></p> </main> - <script src="options.js"></script> + <script type="module" src="options.js"></script> </body> </html>
\ No newline at end of file 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 { |
