@wendongfly/myhi 1.3.89 → 1.3.90

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.
package/dist/chat.html CHANGED
@@ -886,10 +886,22 @@
886
886
  scrollToBottom();
887
887
  }
888
888
 
889
+ // 连续重复的同一条状态不再一行行堆,折叠成「— xxx — ×N」。
890
+ // 任何会反复触发的状态(自动重启、上传失败、控制权变更…)都不会再刷屏。
889
891
  function addStatusMessage(text) {
890
892
  endStream(); endToolGroup();
893
+ const last = chatArea.lastElementChild;
894
+ if (last && last.classList.contains('msg-status') && last.dataset.statusText === text) {
895
+ const n = (parseInt(last.dataset.statusCount, 10) || 1) + 1;
896
+ last.dataset.statusCount = String(n);
897
+ last.textContent = '— ' + text + ' — ×' + n;
898
+ scrollToBottom();
899
+ return;
900
+ }
891
901
  const msg = document.createElement('div');
892
902
  msg.className = 'msg msg-status';
903
+ msg.dataset.statusText = text;
904
+ msg.dataset.statusCount = '1';
893
905
  msg.textContent = '— ' + text + ' —';
894
906
  chatArea.appendChild(msg);
895
907
  trimMessages();
@@ -1497,11 +1509,17 @@
1497
1509
  socket.on('error', ({ message }) => { showOverlay('错误: ' + message, true); });
1498
1510
 
1499
1511
  // 控制权事件
1512
+ // 只有「别人抢走了」才值得往聊天区写一行。自己拿到 / 自己释放属于日常动作,
1513
+ // 右上角徽标(控制中 / 获取控制)已经把状态说清楚了,再刷消息就是噪音——
1514
+ // 之前正是这两条把长会话刷成了满屏「你已获取控制权 / 控制权已释放」。
1515
+ let lastControlHolder = null;
1500
1516
  socket.on('control-changed', ({ sessionId, holder, holderName }) => {
1501
1517
  if (sessionId !== SESSION_ID) return;
1502
1518
  updateControlUI(holder === socket.id, holderName);
1503
- if (holder) addStatusMessage(holder === socket.id ? '你已获取控制权' : `${holderName || '其他用户'} 获取了控制权`);
1504
- else addStatusMessage('控制权已释放');
1519
+ if (holder && holder !== socket.id && holder !== lastControlHolder) {
1520
+ addStatusMessage(`${holderName || '其他用户'} 获取了控制权`);
1521
+ }
1522
+ lastControlHolder = holder || null;
1505
1523
  });
1506
1524
  socket.on('control-denied', ({ reason }) => addStatusMessage('无法获取控制: ' + reason));
1507
1525
  socket.on('kicked', ({ reason }) => { addStatusMessage(reason || '你已被管理员踢出'); setTimeout(() => location.href = '/', 2000); });