wezard 2.0.6 → 2.1.0
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/CLAUDE.md +2 -2
- package/dist/daemon/chat-log.js +107 -0
- package/dist/daemon/chat-log.js.map +1 -0
- package/dist/daemon/chat-name.js +1 -1
- package/dist/daemon/inbound.js +10 -3
- package/dist/daemon/inbound.js.map +1 -1
- package/dist/daemon/index.js +125 -22
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/mirror-bridge.js +36 -22
- package/dist/daemon/mirror-bridge.js.map +1 -1
- package/dist/daemon/peers.js +172 -67
- package/dist/daemon/peers.js.map +1 -1
- package/dist/daemon/wizard.js +33 -2
- package/dist/daemon/wizard.js.map +1 -1
- package/dist/mcp/server.js +34 -12
- package/dist/mcp/server.js.map +1 -1
- package/dist/shared/chat-http.js +25 -10
- package/dist/shared/chat-http.js.map +1 -1
- package/dist/shared/chat-render.js +17 -7
- package/dist/shared/chat-render.js.map +1 -1
- package/dist/shared/role-view.js +3 -3
- package/dist/shared/role-view.js.map +1 -1
- package/package.json +4 -1
- package/web/chat.js +26 -4
- package/web/highlight.min.js +1262 -0
- package/web/hljs-github.min.css +10 -0
- package/web/markdown-it.min.js +2 -0
package/web/chat.js
CHANGED
|
@@ -302,14 +302,31 @@
|
|
|
302
302
|
'<span class="pv">' + esc(pv) + '</span></span>';
|
|
303
303
|
};
|
|
304
304
|
|
|
305
|
+
// 展开态按会话各记各的: 点开一个不收起别的, 轮询重画也不动它。
|
|
306
|
+
// OPEN_AT = 已经替它自动展开过的那个 CONV —— 选中新会话时展开一次, 之后折不折由人说了算。
|
|
307
|
+
var OPEN = {}, OPEN_AT = '';
|
|
308
|
+
var reveal = function () {
|
|
309
|
+
if (CONV && CONV !== OPEN_AT) { OPEN[CONV] = true; OPEN_AT = CONV; }
|
|
310
|
+
};
|
|
311
|
+
// 点侧栏项: 没选中它 → 选中 (会话顺带展开); 已选中 → 不再选一遍, 右边的正文一个字不动 ——
|
|
312
|
+
// 会话只折叠/展开, 子项什么都不做。
|
|
313
|
+
var clickItem = function (key, withRole) {
|
|
314
|
+
if (key !== CONV || withRole !== WITH || VIEW !== 'msgs') return selectConv(key, withRole);
|
|
315
|
+
// 窄屏退回列表后再点它是要回去读, 不是要折叠。
|
|
316
|
+
if (!app.classList.contains('reading')) return app.classList.add('reading');
|
|
317
|
+
if (withRole) return;
|
|
318
|
+
OPEN[key] = !OPEN[key];
|
|
319
|
+
renderConvs();
|
|
320
|
+
};
|
|
321
|
+
|
|
305
322
|
var convItem = function (c) {
|
|
306
323
|
var on = c.key === CONV;
|
|
307
324
|
var title = c.kind === 'wizard' ? nm(c.peer, c.name, true) : '<span class="nm chat">' + esc(c.name) + '</span>';
|
|
308
325
|
// 只列与我有往来的: 在群里但没和我说过话的人, 点进去也是空的。
|
|
309
|
-
var talked =
|
|
326
|
+
var talked = OPEN[c.key] ? c.subs.filter(function (s) { return s.count; }) : [];
|
|
310
327
|
var subs = talked.length
|
|
311
328
|
? '<div class="subs">' + talked.map(function (s) {
|
|
312
|
-
var sel = s.role === WITH;
|
|
329
|
+
var sel = on && s.role === WITH;
|
|
313
330
|
return '<button class="si' + (sel ? ' on' : '') + '" data-conv="' + esc(c.key) + '" data-with="' + esc(s.role) + '" ' +
|
|
314
331
|
'title="' + esc('我与 ' + nameOf(s.role) + ' 在这里的 ' + s.count + ' 条往来') + '">' +
|
|
315
332
|
goSpan('av', s.role, esc(s.label)) +
|
|
@@ -334,7 +351,8 @@
|
|
|
334
351
|
if (convsEl._html === html) return;
|
|
335
352
|
convsEl._html = html; convsEl.innerHTML = html;
|
|
336
353
|
convsEl.querySelectorAll('[data-conv]').forEach(function (b) {
|
|
337
|
-
|
|
354
|
+
var key = b.getAttribute('data-conv'), w = b.getAttribute('data-with') || '';
|
|
355
|
+
b.onclick = function () { clickItem(key, w); };
|
|
338
356
|
});
|
|
339
357
|
bindGo(convsEl);
|
|
340
358
|
};
|
|
@@ -688,7 +706,10 @@
|
|
|
688
706
|
if (c.peer) learn(c.peer, c.name, c.label);
|
|
689
707
|
c.subs.forEach(function (s) { learn(s.role, s.name, s.label); });
|
|
690
708
|
});
|
|
691
|
-
|
|
709
|
+
// 没带 conv 的链接 (群里点名字进来) 落在服务端挑的窗口上, 连同它挑的「只看我与谁」;
|
|
710
|
+
// 手里的 conv 失效则只退回整个会话。
|
|
711
|
+
if (!CONV || !convOf(CONV)) { WITH = CONV ? '' : d['with'] || ''; CONV = d.conv || ''; }
|
|
712
|
+
reveal();
|
|
692
713
|
renderRole(); renderUsage(); renderConvs(); renderHead();
|
|
693
714
|
};
|
|
694
715
|
|
|
@@ -728,6 +749,7 @@
|
|
|
728
749
|
|
|
729
750
|
var selectConv = function (key, withRole) {
|
|
730
751
|
CONV = key; WITH = withRole || '';
|
|
752
|
+
reveal();
|
|
731
753
|
if (VIEW !== 'msgs') setView('msgs');
|
|
732
754
|
app.classList.add('reading');
|
|
733
755
|
// 上一个窗口的账不属于这个窗口 —— 先收起, 新的随 SSE 的首个 role 事件到。
|