fix: 兼容新版 SillyTavern 的 extensionSettings API 并修复总结世界书渲染崩溃

1. 将 window.extension_settings 替换为 getExtensionSettings()
   - 新版 SillyTavern 已废弃 window.extension_settings 全局变量
   - 改用 SillyTavern.getContext().extensionSettings(通过已有的 getExtensionSettings helper)
   - 影响文件: table-filler.js, mode-manager.js, service-interceptor.js, independent-template-modal.js

2. 修复总结世界书未配置时自动拆分导致的渲染崩溃
   - renderSummaryPartsUI 中 getSummaryConfig() 在未配置时会 throw
   - 导致整个世界书列表渲染失败,自动拆分开关也无法显示
   - 改为安全读取 config?.summaryConfigs?.[book.name],未配置时显示"未配置"状态
This commit is contained in:
Cola-Echo
2026-03-03 23:28:36 +08:00
parent 6078f85d06
commit 621b6bad30
6 changed files with 17 additions and 13 deletions

View File

@@ -4,6 +4,7 @@
*/
import Logger from "@core/logger";
import { getExtensionSettings } from "@core/sillytavern-api";
import {
getTableFillerConfig,
isTableFillerEnabled,
@@ -45,7 +46,7 @@ async function getAmily2TableNames() {
try {
// 方法1直接从 extension_settings 获取预设中的表格定义(最可靠)
const amilyExtName = "ST-Amily2-Chat-Optimisation";
const settings = window.extension_settings?.[amilyExtName];
const settings = getExtensionSettings()?.[amilyExtName];
if (settings) {
log.debug("找到 Amily2 扩展设置,检查表格定义...");
@@ -140,9 +141,9 @@ async function getAmily2TableNames() {
// 方法5遍历所有 extension_settings 找 Amily2 相关
log.debug("遍历所有扩展设置查找 Amily2...");
for (const key in window.extension_settings || {}) {
for (const key in getExtensionSettings() || {}) {
if (key.toLowerCase().includes('amily')) {
const extSettings = window.extension_settings[key];
const extSettings = getExtensionSettings()[key];
log.debug(`检查扩展 ${key}:`, Object.keys(extSettings || {}));
// 深度搜索 tables