fix(ena-planner): persist active template and extend default keep tags

This commit is contained in:
2026-02-25 22:44:51 +08:00
parent b92d3bce28
commit 434e0f48a1
2 changed files with 12 additions and 4 deletions

View File

@@ -258,7 +258,7 @@
<div class="card-title">聊天与历史</div> <div class="card-title">聊天与历史</div>
<div class="form-group"> <div class="form-group">
<label class="form-label">保留的规划输出标签(逗号分隔)</label> <label class="form-label">保留的规划输出标签(逗号分隔)</label>
<input id="ep_keep_tags" type="text" class="input" placeholder="plot, note"> <input id="ep_keep_tags" type="text" class="input" placeholder="plot, note, plot-log, state">
<p class="form-hint">仅支持英文标签(如 plot, note, memory。留空表示不按标签过滤仅去除 think。无效标签会自动忽略。</p> <p class="form-hint">仅支持英文标签(如 plot, note, memory。留空表示不按标签过滤仅去除 think。无效标签会自动忽略。</p>
</div> </div>
<div class="form-group"> <div class="form-group">
@@ -684,7 +684,7 @@
$('ep_wb_pos4').value = String(toBool(cfg.excludeWorldbookPosition4, true)); $('ep_wb_pos4').value = String(toBool(cfg.excludeWorldbookPosition4, true));
$('ep_wb_exclude_names').value = arrToCsv(cfg.worldbookExcludeNames); $('ep_wb_exclude_names').value = arrToCsv(cfg.worldbookExcludeNames);
$('ep_plot_n').value = String(toNum(cfg.plotCount, 2)); $('ep_plot_n').value = String(toNum(cfg.plotCount, 2));
$('ep_keep_tags').value = arrToCsv(cfg.responseKeepTags || ['plot', 'note']); $('ep_keep_tags').value = arrToCsv(cfg.responseKeepTags || ['plot', 'note', 'plot-log', 'state']);
$('ep_exclude_tags').value = arrToCsv(cfg.chatExcludeTags); $('ep_exclude_tags').value = arrToCsv(cfg.chatExcludeTags);
$('ep_logs_persist').value = String(toBool(cfg.logsPersist, true)); $('ep_logs_persist').value = String(toBool(cfg.logsPersist, true));
@@ -692,7 +692,7 @@
setBadge(toBool(cfg.enabled, true)); setBadge(toBool(cfg.enabled, true));
updatePrefixModeUI(); updatePrefixModeUI();
const keepSelectedTemplate = $('ep_tpl_select')?.value || ''; const keepSelectedTemplate = cfg?.activePromptTemplate || $('ep_tpl_select')?.value || '';
renderTemplateSelect(keepSelectedTemplate); renderTemplateSelect(keepSelectedTemplate);
renderPromptList(); renderPromptList();
renderLogs(); renderLogs();
@@ -732,6 +732,7 @@
p.promptBlocks = cfg?.promptBlocks || []; p.promptBlocks = cfg?.promptBlocks || [];
p.promptTemplates = cfg?.promptTemplates || {}; p.promptTemplates = cfg?.promptTemplates || {};
p.activePromptTemplate = $('ep_tpl_select')?.value || '';
return p; return p;
} }
@@ -799,6 +800,7 @@
$('ep_tpl_select').addEventListener('change', () => { $('ep_tpl_select').addEventListener('change', () => {
const name = $('ep_tpl_select').value; const name = $('ep_tpl_select').value;
cfg.activePromptTemplate = name;
if (!name) return; if (!name) return;
const blocks = cfg?.promptTemplates?.[name]; const blocks = cfg?.promptTemplates?.[name];
if (!Array.isArray(blocks)) return; if (!Array.isArray(blocks)) return;
@@ -811,6 +813,7 @@
if (!name) { setSaveIndicator('error', '请先选择或创建模板'); return; } if (!name) { setSaveIndicator('error', '请先选择或创建模板'); return; }
cfg.promptTemplates = cfg.promptTemplates || {}; cfg.promptTemplates = cfg.promptTemplates || {};
cfg.promptTemplates[name] = structuredClone(cfg.promptBlocks || []); cfg.promptTemplates[name] = structuredClone(cfg.promptBlocks || []);
cfg.activePromptTemplate = name;
renderTemplateSelect(name); scheduleSave(); renderTemplateSelect(name); scheduleSave();
}); });
@@ -819,6 +822,7 @@
if (!name) return; if (!name) return;
cfg.promptTemplates = cfg.promptTemplates || {}; cfg.promptTemplates = cfg.promptTemplates || {};
cfg.promptTemplates[name] = structuredClone(cfg.promptBlocks || []); cfg.promptTemplates[name] = structuredClone(cfg.promptBlocks || []);
cfg.activePromptTemplate = name;
renderTemplateSelect(name); scheduleSave(); renderTemplateSelect(name); scheduleSave();
}); });
@@ -827,6 +831,7 @@
if (!name) return; if (!name) return;
const backup = structuredClone(cfg.promptTemplates[name]); const backup = structuredClone(cfg.promptTemplates[name]);
delete cfg.promptTemplates[name]; delete cfg.promptTemplates[name];
cfg.activePromptTemplate = '';
renderTemplateSelect(''); renderTemplateSelect('');
showUndoBar(name, backup); showUndoBar(name, backup);
}); });
@@ -835,6 +840,7 @@
if (!undoState) return; if (!undoState) return;
cfg.promptTemplates = cfg.promptTemplates || {}; cfg.promptTemplates = cfg.promptTemplates || {};
cfg.promptTemplates[undoState.name] = undoState.blocks; cfg.promptTemplates[undoState.name] = undoState.blocks;
cfg.activePromptTemplate = undoState.name;
renderTemplateSelect(undoState.name); renderTemplateSelect(undoState.name);
clearUndo(); scheduleSave(); clearUndo(); scheduleSave();
}); });

View File

@@ -33,12 +33,14 @@ function getDefaultSettings() {
// Plot extraction // Plot extraction
plotCount: 2, plotCount: 2,
// Planner response tags to keep, in source order (empty = keep full response) // Planner response tags to keep, in source order (empty = keep full response)
responseKeepTags: ['plot', 'note'], responseKeepTags: ['plot', 'note', 'plot-log', 'state'],
// Planner prompts (designer) // Planner prompts (designer)
promptBlocks: structuredClone(DEFAULT_PROMPT_BLOCKS), promptBlocks: structuredClone(DEFAULT_PROMPT_BLOCKS),
// Saved prompt templates: { name: promptBlocks[] } // Saved prompt templates: { name: promptBlocks[] }
promptTemplates: structuredClone(BUILTIN_TEMPLATES), promptTemplates: structuredClone(BUILTIN_TEMPLATES),
// Currently selected prompt template name in UI
activePromptTemplate: '',
// Planner API // Planner API
api: { api: {