feat: persist extract action mode selection across panel sessions

- Add extractActionMode setting (default: pending) to settings-defaults.js
- Panel refresh restores dropdown from settings.extractActionMode
- Dropdown change event persists selection via _patchSettings
- Extract button reads settings as fallback when DOM value missing
- Add default value assertion in tests/default-settings.mjs
This commit is contained in:
Youzini-afk
2026-04-12 12:52:54 +08:00
parent 46bd0bf6c5
commit 3f7dd0d727
3 changed files with 24 additions and 1 deletions

View File

@@ -29,6 +29,7 @@ export const defaultSettings = {
extractWorldbookMode: "active",
extractIncludeStoryTime: true,
extractIncludeSummaries: true,
extractActionMode: "pending",
// 召回设置
recallEnabled: true,

View File

@@ -6,6 +6,7 @@ import {
} from "../runtime/settings-defaults.js";
assert.equal(defaultSettings.extractContextTurns, 2);
assert.equal(defaultSettings.extractActionMode, "pending");
assert.equal(defaultSettings.extractAutoDelayLatestAssistant, false);
assert.equal(defaultSettings.recallTopK, 20);
assert.equal(defaultSettings.recallMaxNodes, 8);

View File

@@ -4036,7 +4036,11 @@ function _bindActions() {
const btn = document.getElementById("bme-act-extract");
if (btn?.disabled) return;
const mode =
String(document.getElementById("bme-extract-mode")?.value || "pending")
String(
document.getElementById("bme-extract-mode")?.value ||
(_getSettings?.() || {}).extractActionMode ||
"pending",
)
.trim()
.toLowerCase() === "rerun"
? "rerun"
@@ -4534,6 +4538,10 @@ function _refreshConfigTab() {
"bme-setting-wi-filter-keywords",
settings.worldInfoFilterCustomKeywords || "",
);
_setInputValue(
"bme-extract-mode",
settings.extractActionMode || "pending",
);
const wiFilterCustomSection = panelEl?.querySelector(
"#bme-wi-filter-custom-section",
);
@@ -4954,6 +4962,19 @@ function _bindConfigControls() {
});
noticeDisplayModeEl.dataset.bmeBound = "true";
}
const extractModeEl = document.getElementById("bme-extract-mode");
if (extractModeEl && extractModeEl.dataset.bmeBound !== "true") {
extractModeEl.addEventListener("change", () => {
_patchSettings({
extractActionMode:
String(extractModeEl.value || "pending").trim().toLowerCase() ===
"rerun"
? "rerun"
: "pending",
});
});
extractModeEl.dataset.bmeBound = "true";
}
const cloudStorageModeEl = document.getElementById(
"bme-setting-cloud-storage-mode",
);