diff --git a/ui/bindings.js b/ui/bindings.js
index 972cd82..cd153d8 100644
--- a/ui/bindings.js
+++ b/ui/bindings.js
@@ -22,7 +22,7 @@ function displayDailyAuthCode() {
displayEl.textContent = todayCode;
if(copyBtn) copyBtn.style.display = 'inline-block';
-
+
copyBtn.onclick = () => {
navigator.clipboard.writeText(todayCode).then(() => {
toastr.success('授权码已复制到剪贴板!');
@@ -1263,6 +1263,7 @@ async function opt_loadTavernApiProfiles(panel) {
const opt_characterSpecificSettings = [
'plotOpt_worldbookSource',
'plotOpt_selectedWorldbooks',
+ 'plotOpt_autoSelectWorldbooks',
'plotOpt_enabledWorldbookEntries'
];
@@ -1357,10 +1358,21 @@ async function opt_loadWorldbooks(panel) {
lorebooks.forEach(name => {
const bookId = `amily2-opt-wb-check-${name.replace(/[^a-zA-Z0-9]/g, '-')}`;
const isChecked = currentSelection.includes(name);
+
+ // Auto Select Logic
+ const autoId = `amily2-opt-wb-auto-${name.replace(/[^a-zA-Z0-9]/g, '-')}`;
+ const isAuto = (settings.plotOpt_autoSelectWorldbooks || []).includes(name);
+
const item = $(`
-
-
-
+
`);
container.append(item);
@@ -1463,12 +1475,16 @@ async function opt_loadWorldbookEntries(panel) {
enabledOnlyEntries.sort((a, b) => (a.comment || '').localeCompare(b.comment || '')).forEach(entry => {
const entryId = `amily2-opt-entry-${entry.bookName.replace(/[^a-zA-Z0-9]/g, '-')}-${entry.uid}`;
- const isEnabled = enabledEntries[entry.bookName]?.includes(entry.uid) ?? true;
+
+ const isAuto = (settings.plotOpt_autoSelectWorldbooks || []).includes(entry.bookName);
+ // If auto is enabled, the entry is forced enabled in logic, so show checked and disabled
+ const isChecked = isAuto || (enabledEntries[entry.bookName]?.includes(entry.uid) ?? true);
+ const isDisabled = isAuto;
const item = $(`
-
-
+
+
`);
container.append(item);
@@ -2048,9 +2064,10 @@ export function initializePlotOptimizationBindings() {
});
- panel.on('change.amily2_opt', '#amily2_opt_worldbook_checkbox_list input[type="checkbox"]', async function() {
+ // Manual Selection Change
+ panel.on('change.amily2_opt', '#amily2_opt_worldbook_checkbox_list input[type="checkbox"]:not(.amily2_opt_wb_auto_check)', async function() {
const selected = [];
- panel.find('#amily2_opt_worldbook_checkbox_list input:checked').each(function() {
+ panel.find('#amily2_opt_worldbook_checkbox_list input[type="checkbox"]:not(.amily2_opt_wb_auto_check):checked').each(function() {
selected.push($(this).val());
});
@@ -2058,6 +2075,17 @@ export function initializePlotOptimizationBindings() {
await opt_loadWorldbookEntries(panel);
});
+ // Auto Selection Change
+ panel.on('change.amily2_opt', '#amily2_opt_worldbook_checkbox_list input.amily2_opt_wb_auto_check', async function() {
+ const autoSelected = [];
+ panel.find('#amily2_opt_worldbook_checkbox_list input.amily2_opt_wb_auto_check:checked').each(function() {
+ autoSelected.push($(this).data('book'));
+ });
+
+ await opt_saveSetting('plotOpt_autoSelectWorldbooks', autoSelected);
+ await opt_loadWorldbookEntries(panel);
+ });
+
panel.on('change.amily2_opt', '#amily2_opt_worldbook_entry_list_container input[type="checkbox"]', () => {
opt_saveEnabledEntries();
});