diff --git a/CharacterWorldBook/src/cwb_settingsManager.js b/CharacterWorldBook/src/cwb_settingsManager.js index d9cee2f..50fbb37 100644 --- a/CharacterWorldBook/src/cwb_settingsManager.js +++ b/CharacterWorldBook/src/cwb_settingsManager.js @@ -449,6 +449,30 @@ export function bindSettingsEvents($settingsPanel) { $(document).trigger('cwb:master-switch-changed', { isEnabled: isChecked }); }); + + // 处理来自 API 配置面板总开关同步的 change 事件(该面板通过 dispatchEvent 设置 checkbox 状态) + // jQuery 的 .prop('checked') 不触发 change,故与上方 click 处理器不会双重触发 + $panel.on('change', '#cwb_master_enabled-checkbox', function () { + const isChecked = $(this).prop('checked'); + + getSettings().cwb_master_enabled = isChecked; + + const overrides = JSON.parse(localStorage.getItem(CWB_BOOLEAN_SETTINGS_OVERRIDE_KEY) || '{}'); + overrides.cwb_master_enabled = isChecked; + localStorage.setItem(CWB_BOOLEAN_SETTINGS_OVERRIDE_KEY, JSON.stringify(overrides)); + + state.masterEnabled = isChecked; + saveSettingsDebounced(); + updateControlsLockState(); + + const $viewerButton = $(`#${CHAR_CARD_VIEWER_BUTTON_ID}`); + if ($viewerButton.length > 0) { + $viewerButton.toggle(isChecked && state.viewerEnabled); + } + + showToastr('info', `CharacterWorldBook 已 ${isChecked ? '启用' : '禁用'}`); + $(document).trigger('cwb:master-switch-changed', { isEnabled: isChecked }); + }); } function updateApiModeUI(mode) { diff --git a/DEPLOY_NOTE.md b/DEPLOY_NOTE.md new file mode 100644 index 0000000..e91aaa1 --- /dev/null +++ b/DEPLOY_NOTE.md @@ -0,0 +1,28 @@ +# 部署更新日志 + +每个版本块格式:`## v{version}`,Jenkins 构建时自动提取对应块作为 GitHub 提交说明。 + +--- + +## v2.2.2 + +### 新功能 + +- **Function Call 填表模式**:在填表设置中新增独立开关,启用后支持通过 OpenAI 兼容接口(DeepSeek / OpenRouter / 各类中转等)直接返回结构化操作列表,绕过 `` 文本解析路径,填表更稳定 + - 遇到不支持 `tool_choice` 的接口时自动降级重试 + - 对思考模型注入强制调用指令,防止绕过工具直接输出文本 + - 全部走 ST 后端代理,修复 CSP 拦截直连外部 URL 的问题 +- **主界面新增提示词链编辑器入口**,同时调换了记忆管理与角色世界书的按钮位置 +- **规则中心**新增"自动排除用户楼层"选项 + +### 修复 + +- 提示词链按钮点击无响应(改为事件委托方式绑定) +- 拖拽组件微抖误触发(加 5px 移动阈值过滤) +- 填表检查窗若干问题修复;翰林院(批量回填)修复;防抖逻辑落地 +- 角色世界书入口添加使用警告弹窗(强制 10 秒倒计时),提示该功能长期未维护 +- ApiProfile `fakeStream` 字段保存丢失问题 +- 正文优化默认改为关闭状态 +- NGMS / NCCS API 配置槽位标签修正(NGMS→总结,NCCS→填表) +- API Profile 面板选择逻辑统一重构,修复多处旧字段覆盖新配置的问题 +- 世界书控制参数兼容性修复(排除递归、插入位置、扫描深度等,适配 ST 1.17.0+) diff --git a/PresetSettings/draggable.js b/PresetSettings/draggable.js index 0000500..dcb3d73 100644 --- a/PresetSettings/draggable.js +++ b/PresetSettings/draggable.js @@ -60,9 +60,16 @@ export function makeDraggable($element, onClick, storageKey) { }); }; + const DRAG_THRESHOLD = 5; + const dragMove = (e) => { if (!isDragging) return; e.preventDefault(); + if (!hasDragged) { + const coords = getEventCoords(e.originalEvent || e); + const dist = Math.abs(coords.x - startPos.x) + Math.abs(coords.y - startPos.y); + if (dist < DRAG_THRESHOLD) return; + } hasDragged = true; const coords = getEventCoords(e.originalEvent || e); diff --git a/PresetSettings/prese_ui.js b/PresetSettings/prese_ui.js index c0c002b..d8a4242 100644 --- a/PresetSettings/prese_ui.js +++ b/PresetSettings/prese_ui.js @@ -194,7 +194,7 @@ export function toggleSettingsOrb() { } } -async function showPresetSettings() { +export async function showPresetSettings() { const template = $(await renderExtensionTemplateAsync(presetSettingsPath, 'prese-settings')); renderPresetManager(template); diff --git a/TODO.md b/TODO.md index 55dca56..dc6d6b2 100644 --- a/TODO.md +++ b/TODO.md @@ -46,7 +46,7 @@ - 添加记忆管理并发调用 -### 最新更新 (待发布) +### 2.1.1 (2026/04/23) 以下为修复内容: - **自动写卡系统 Diff 视图修复**: @@ -81,6 +81,18 @@ - **Ngms API 强制参数**:在 `core/api/Ngms_api.js` 中,移除了旧版 UI 中的温度和最大 Token 设置,强制将默认温度设为 `1.0`,最大 Token 设为 `30000`,以确保总结任务的稳定性和完整性。 - **总结失败自动重试**:在 `core/historiographer.js` 中为“微言录”和“宏史卷”的生成过程添加了自定义重试逻辑。用户可在 UI 中设置重试次数,当 AI 返回空内容时,系统会自动等待并重试,降低了因 API 波动导致的总结失败率。 - **时间跨度标识优化**:修改了 `utils/settings.js` 中的”微言录”和”宏史卷”提示词,强制要求 AI 在提取时间时加入相对时间跨度标识 `(Xd)`(如 `2023-09-15(2d)-星期五-15:00`),以解决长篇剧情中因缺乏具体日期导致的时间线混乱问题。 +- **翰林院设置回填中断修复(Rerank 等开关无法回显的根因)**:修复了 `ui/hanlinyuan-bindings.js` 的 `loadSettingsToUI` 在处理“标签提取”相关 DOM(`hly-tag-extraction-toggle` / `hly-tag-input` / `hly-tag-input-container`,已在 2.1.0 重构中删除)时对 `null` 赋值抛出 TypeError 的问题。由于该异常发生在 Rerank 设置回填之前,导致 Rerank 等开关虽已正确保存至 `extension_settings['hanlinyuan-rag-core']`,但刷新后 UI 不再回显,表现为“开关无法持久化”。清理相关 DOM 回填与 `bindInternalUIEvents` 中同名元素的事件绑定后,Rerank 等翰林院面板设置可正常持久化显示。 +- **翰林院孤儿引用清理**:移除 `ui/hanlinyuan-bindings.js` → `updateAndSaveSetting` 中对已删除函数 `syncHanlinLinkedRuleProfile` 的四处调用,修复了修改浓缩/查询预处理的标签提取或标签字段时抛出 ReferenceError 的问题(2.1.0 重构遗留)。 +- **超级记忆 RAG 设置路径修复**:修复了 `core/super-memory/bindings.js` 中 `getRagSettings` 使用错误路径 `extension_settings[extensionName]['hanlinyuan-rag-core']` 读写的问题。翰林院核心 (`core/rag-processor.js`) 使用的是顶层 `extension_settings['hanlinyuan-rag-core']`,改为一致路径后,归档开关 / 关联图谱开关 / 归档阈值等设置可正确持久化并与翰林院面板同步。 +- **分步填表防抖延迟参数落地**:之前 `utils/settings.js` 与 `core/table-system/settings.js` 均声明了 `secondary_filler_delay` 默认值,但既没有 UI 入口也没有在代码中被读取。现已: + - 在「分步填表高级控制」面板新增「触发延迟 (毫秒)」数值输入(`assets/amily-data-table/Memorisation-forms.html`); + - 在 `ui/table-bindings.js` 中为该输入框补齐值回填与 `updateAndSaveTableSetting('secondary_filler_delay', ...)` 的 change 绑定; + - 在 `core/table-system/secondary-filler.js` 的 `fillWithSecondaryApi` 入口处实现真正的防抖:自动触发(`forceRun=false`)且延迟 > 0 时,会用模块级定时器调度本次调用,延迟期内再次到来的触发会重置计时器;`forceRun=true` 的手动触发及重新填表仍会立即执行,并清掉待触发的防抖任务。 +- **填表响应检查窗(Amily2Edit 指令块缺失处理)**: + - 新增 `ui/page-window.js` → `showTableFillReviewModal`,参照总结模块 `showSummaryModal` 的交互模式,提供原始响应查看/编辑、继续补全、重新填表、手动应用、取消五种操作。 + - **批量填表 / 楼层填表**:修改 `core/table-system/batch-filler.js` 的 `runBatchAttempt` 与 `startFloorRangeFilling`,当 AI 响应缺少 `` 指令块时不再直接抛错进入自动重试,而是弹出检查窗让用户查看原始报文;批次模式下会先将按钮置为“继续填表”暂停状态,操作结束后自动恢复流程;网络/空响应等其它异常仍走原有的 `MAX_RETRIES` 自动重试。 + - **分步填表**:修改 `core/table-system/secondary-filler.js` 的 `fillWithSecondaryApi`,在缺少指令块时弹出同款检查窗,并将原先分散的“写表 → 存 hash → saveChat”流程抽取为 `commitSecondaryFillResult` 公共函数,供正常路径与手动应用路径复用;顺带补齐该文件缺失的 `log` 导入。 + - **继续补全实现**:新增 `requestContinuation` / `requestSecondaryContinuation` 工具函数,将用户当前编辑的文本作为 `assistant` 消息追加到原始请求之后,并附加专用的“接续”用户提示词再次调用表格模型,将返回文本拼接到原文末尾回填到检查窗文本框中。 ### 2.1.0 (2026/04/18) diff --git a/assets/amily-data-table/Memorisation-forms.html b/assets/amily-data-table/Memorisation-forms.html index efb3275..6dfd747 100644 --- a/assets/amily-data-table/Memorisation-forms.html +++ b/assets/amily-data-table/Memorisation-forms.html @@ -250,6 +250,13 @@ 分步填表失败时的自动重试次数 (0 = 不重试)。 + + +
+ + + 收到新消息后延迟多少毫秒再触发分步填表 (0 = 立即触发);延迟期内若再次收到消息会重置计时,起到防抖作用。 +
@@ -288,7 +295,19 @@
- + + +
+ + +
+

仅支持 openai 直连接口(tableFilling 槽位)。启用后跳过 <Amily2Edit> 文本解析,由模型直接返回操作列表。

+ +
+
Nccs API 系统 diff --git a/assets/amily2-modal.html b/assets/amily2-modal.html index 7f16552..8340ba6 100644 --- a/assets/amily2-modal.html +++ b/assets/amily2-modal.html @@ -212,14 +212,14 @@ - +
- +
附加功能
- + @@ -227,6 +227,7 @@
+
diff --git a/assets/rule-config-panel.html b/assets/rule-config-panel.html index 69ce3c0..70b075d 100644 --- a/assets/rule-config-panel.html +++ b/assets/rule-config-panel.html @@ -16,6 +16,10 @@
+
+ + 勾选后,使用此规则时将自动跳过用户发送的消息楼层,不纳入总结/提取内容。 +