@co0ontty/wand 1.21.14 → 1.21.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -13746,6 +13746,17 @@
|
|
|
13746
13746
|
}
|
|
13747
13747
|
|
|
13748
13748
|
chatMessages.innerHTML = html;
|
|
13749
|
+
// 会话切换 / 首次渲染后,浏览器会把旧的 scrollTop 钳制到新内容
|
|
13750
|
+
// 的最大值——column-reverse 下这意味着视觉上跳到最上面(最旧消息),
|
|
13751
|
+
// 也就是用户反馈的"退出再回来时被重定向到最上面"。这里在
|
|
13752
|
+
// prevMsgCount === 0(resetChatRenderCache 后或刚从空状态进入)
|
|
13753
|
+
// 强制 scrollTop=0(视觉底部 = 最新消息),避免错位。
|
|
13754
|
+
// 注意:仅在"换会话/初次渲染"时强制重置;同一会话内的全量重渲染
|
|
13755
|
+
// (prevMsgCount > 0,比如 forceFullRender 或消息数减少)继续走
|
|
13756
|
+
// smartScrollToBottom,尊重用户的 chatAutoFollow 选择。
|
|
13757
|
+
if (prevMsgCount === 0) {
|
|
13758
|
+
chatMessages.scrollTop = 0;
|
|
13759
|
+
}
|
|
13749
13760
|
attachAllCopyHandlers(chatMessages);
|
|
13750
13761
|
bindChatScrollListener();
|
|
13751
13762
|
applyPersistedExpandState(chatMessages);
|
|
@@ -16468,8 +16479,9 @@
|
|
|
16468
16479
|
var sessionLabel = session.summary || session.command || sessionId;
|
|
16469
16480
|
var sessionStatus = session.status || "running";
|
|
16470
16481
|
|
|
16471
|
-
//
|
|
16472
|
-
|
|
16482
|
+
// 真正消亡的会话才清掉通知;idle / exited 仍然要把"已完成"推上去,
|
|
16483
|
+
// 让流体云 / 锁屏卡片显示与 web 通知条一致的最终状态。
|
|
16484
|
+
if (sessionStatus === "archived") {
|
|
16473
16485
|
clearSessionProgressNative(sessionId);
|
|
16474
16486
|
return;
|
|
16475
16487
|
}
|
|
@@ -16536,9 +16548,37 @@
|
|
|
16536
16548
|
currentTask = state.currentTask.title;
|
|
16537
16549
|
}
|
|
16538
16550
|
|
|
16551
|
+
// ── 与 web 通知条同源的 statusLabel / stepLabel / isRunning ──
|
|
16552
|
+
// 复用 computeRunningSignal & isStructuredSession,确保胶囊文字和顶部
|
|
16553
|
+
// 通知条永远保持一致。
|
|
16554
|
+
var sig = computeRunningSignal(session);
|
|
16555
|
+
var isStructured = isStructuredSession(session);
|
|
16556
|
+
var isRunning = isStructured ? !!sig.inFlight : !!sig.ptyRunning;
|
|
16557
|
+
var statusLabel = isRunning
|
|
16558
|
+
? (isStructured ? "运行中" : "正在运行")
|
|
16559
|
+
: "已完成";
|
|
16560
|
+
|
|
16561
|
+
var stepLabel = "";
|
|
16562
|
+
if (todos && todos.length > 0) {
|
|
16563
|
+
var completedCount = 0;
|
|
16564
|
+
var inProgressCount = 0;
|
|
16565
|
+
for (var sk = 0; sk < todos.length; sk++) {
|
|
16566
|
+
if (todos[sk].status === "completed") completedCount++;
|
|
16567
|
+
if (todos[sk].status === "in_progress") inProgressCount++;
|
|
16568
|
+
}
|
|
16569
|
+
var allTodosDone = completedCount === todos.length;
|
|
16570
|
+
if (isRunning && !allTodosDone) {
|
|
16571
|
+
var stepIdx = Math.max(1, completedCount + (inProgressCount > 0 ? 1 : 0));
|
|
16572
|
+
stepLabel = "第 " + stepIdx + "/" + todos.length + " 步";
|
|
16573
|
+
}
|
|
16574
|
+
}
|
|
16575
|
+
|
|
16539
16576
|
var data = {
|
|
16540
16577
|
sessionLabel: sessionLabel,
|
|
16541
16578
|
status: sessionStatus,
|
|
16579
|
+
isRunning: isRunning,
|
|
16580
|
+
statusLabel: statusLabel,
|
|
16581
|
+
stepLabel: stepLabel,
|
|
16542
16582
|
currentTask: currentTask,
|
|
16543
16583
|
latestUserText: latestUserText,
|
|
16544
16584
|
latestAssistantText: latestAssistantText,
|