mirror of
https://github.com/Wx-2025/ST-Amily2-Chat-Optimisation.git
synced 2026-06-14 14:25:50 +00:00
release: v2.2.7 [2026-06-14 17:27:47]
### 修复 - **分步填表 · 保留楼层场景下 swipe 最新楼会回退掉已填内容**:开启「保留楼层(bufferSize)」后,分步填表处理的是较早楼层、状态本应绑定到「被填楼层里最后一条」(E)。但 `updateTableFromText` / `updateTableFromOps` 在应用完操作后会**统一把表格状态写到聊天最新楼 L**,覆盖了随后 `markTargetsProcessed` 写到 E 的快照(`loadTables` 从尾部回溯先命中 L)。结果状态实际落在 L 上,**滑动/重新生成最新楼时 `rollbackState` 回退到上一轮快照,把本轮填入的内容一起丢掉、且因较早楼层的 hash 仍在而不再重填**。 - 修复:给 `updateTableFromText` / `updateTableFromOps` 增加 `skipPersist` 选项;分步填表(文本 / Function Call / 手动应用三条 commit 路径)统一传入,跳过"写最新楼",改由 `markTargetsProcessed` 把状态保存到 E。 - `bufferSize=0`(默认)时 E 即最新楼,行为与旧版一致;仅 `bufferSize>0` 的保留楼层场景受影响并被修复。 ---
This commit is contained in:
@@ -414,6 +414,13 @@ export async function updateTableFromText(textContent, options = {}) {
|
||||
const affectedTables = [...new Set(changes.map(c => c.tableIndex))];
|
||||
affectedTables.forEach(tableIndex => dispatchTableUpdate(tableIndex));
|
||||
|
||||
// 【skipPersist】分步填表(保留楼层场景)下,状态应由调用方保存到“被填楼层的最后一条”(E),
|
||||
// 不能在此处统一写到最新楼 L——否则 L 上的快照会盖住 E 的,swipe 最新楼时回退掉本轮已填内容。
|
||||
if (options.skipPersist) {
|
||||
document.dispatchEvent(new CustomEvent('amily2-force-ui-reload'));
|
||||
return;
|
||||
}
|
||||
|
||||
const context = getContext();
|
||||
if (context.chat && context.chat.length > 0) {
|
||||
const lastMessage = context.chat[context.chat.length - 1];
|
||||
@@ -473,6 +480,12 @@ export async function updateTableFromOps(ops, options = {}) {
|
||||
const affectedTables = [...new Set(changes.map(c => c.tableIndex))];
|
||||
affectedTables.forEach(tableIndex => dispatchTableUpdate(tableIndex));
|
||||
|
||||
// 【skipPersist】见 updateTableFromText 同名说明:分步填表由调用方存到 E,不在此写最新楼。
|
||||
if (options.skipPersist) {
|
||||
document.dispatchEvent(new CustomEvent('amily2-force-ui-reload'));
|
||||
return;
|
||||
}
|
||||
|
||||
const context = getContext();
|
||||
if (context.chat && context.chat.length > 0) {
|
||||
const lastMessage = context.chat[context.chat.length - 1];
|
||||
|
||||
Reference in New Issue
Block a user