@wendongfly/myhi 1.3.203 → 1.3.204
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 +12 -0
- package/dist/chat.html.gz +0 -0
- package/dist/index.html +7 -3
- package/dist/index.html.gz +0 -0
- package/dist/index.js +9 -9
- package/dist/index.min.js +160 -154
- package/package.json +1 -1
package/dist/chat.html
CHANGED
|
@@ -4803,6 +4803,18 @@
|
|
|
4803
4803
|
window.goHome = goHome;
|
|
4804
4804
|
window.goBack = function() { goHome(); };
|
|
4805
4805
|
|
|
4806
|
+
// ── 电脑宽屏回工作台 ──────────────────────────────────────────
|
|
4807
|
+
// 工作台窗口拉窄(< 1024px,比如两个窗口并排、拖到半屏)会跳到单独会话页;以前再拉宽也回不去,
|
|
4808
|
+
// 一直停在没有左侧任务栏的页面。现在:电脑(鼠标)上单独打开的会话页,宽度够了就回工作台、仍选中这个任务。
|
|
4809
|
+
// 分屏(embed=1)、工作台右侧(embed=ws)里嵌的会话页不动
|
|
4810
|
+
{
|
|
4811
|
+
const wide = matchMedia('(min-width: 1024px) and (pointer: fine)');
|
|
4812
|
+
const standalone = !new URLSearchParams(location.search).get('embed') && window.top === window;
|
|
4813
|
+
const back = () => { if (standalone && wide.matches) location.replace('/?s=' + encodeURIComponent(SESSION_ID)); };
|
|
4814
|
+
wide.addEventListener('change', back);
|
|
4815
|
+
back();
|
|
4816
|
+
}
|
|
4817
|
+
|
|
4806
4818
|
// ── 手机精简布局:⋯ 更多菜单 / 技能按钮 / 未读标记 / 其他任务提醒 ──────────
|
|
4807
4819
|
const IS_M = document.documentElement.classList.contains('m');
|
|
4808
4820
|
// 技能按钮:手机上快捷栏不平铺技能,点「技能」直接出可运行列表(底部有「管理技能」)
|
package/dist/chat.html.gz
CHANGED
|
Binary file
|
package/dist/index.html
CHANGED
|
@@ -1982,14 +1982,16 @@
|
|
|
1982
1982
|
what.innerHTML = `<b>包里会有</b>
|
|
1983
1983
|
<div class="mig-row"><span>📁</span><div>项目文件 <b>${p.files}</b> 个,共 <b>${fmtSize(p.bytes)}</b><br><small>${esc(p.cwd)}</small>${p.truncated ? '<div class="mig-warn">文件太多,只打包了前 20 万个</div>' : ''}</div></div>
|
|
1984
1984
|
${skipped ? `<div class="mig-row"><span>⏭</span><div>不打包(可重新生成,到新电脑再装):${skipped}</div></div>` : ''}
|
|
1985
|
-
<div class="mig-row"><span>💬</span><label style="cursor:pointer"><input type="checkbox" id="mig-conv" ${p.hasConv ? 'checked' : 'disabled'}> 带上 AI 对话记录${p.hasConv ? `(${fmtSize(p.convBytes)})` : ''}<br><small>${p.hasConv ? '带上后在新电脑上可以<b>接着聊</b>,AI
|
|
1985
|
+
<div class="mig-row"><span>💬</span><label style="cursor:pointer"><input type="checkbox" id="mig-conv" ${p.hasConv ? 'checked' : 'disabled'}> 带上 AI 对话记录${p.hasConv ? `(${fmtSize(p.convBytes)})` : ''}<br><small>${p.hasConv ? '带上后在新电脑上可以<b>接着聊</b>,AI 记得之前做过什么;对话里的项目路径会自动改成新位置。' : '这个任务还没有对话记录。'}</small></label></div>
|
|
1986
|
+
<div class="mig-row"><span>🧠</span><label style="cursor:pointer"><input type="checkbox" id="mig-mem" ${p.memFiles ? 'checked' : 'disabled'}> 带上项目记忆${p.memFiles ? `(${p.memFiles} 个文件)` : ''}<br><small>${p.memFiles ? 'AI 在这个项目里记下的约定、经验(记忆功能),和对话记录分开选:只要记忆、不要冗长聊天记录也行。记忆里写到的旧路径会改成新位置。' : '这个项目还没有 AI 记忆。'}</small></label></div>
|
|
1986
1987
|
${p.guard ? `<div class="mig-row"><span>🛡</span><div>隐私护栏配置(${p.guard.enabled ? '已开启' : '未开启'},主体词典 ${p.guard.entities} 个)和假名映射表一起带走,新电脑上继续脱敏</div></div>` : ''}
|
|
1987
1988
|
${p.secrets.length ? `<div class="mig-row"><span>🔑</span><div><b>密钥不会带走</b>(${p.secrets.map(esc).join('、')})<br><small>为了安全,密钥只留在这台电脑。到新电脑后在任务会话页「🔑 密钥」里重新录入。</small></div></div>` : ''}
|
|
1988
1989
|
${p.busy ? '<div class="mig-row mig-warn"><span>⚠️</span><div>AI 正在执行,建议等这一轮结束再导出,否则最后一轮对话可能不完整。</div></div>' : ''}`;
|
|
1989
1990
|
const btn = box.querySelector('#mig-dl'); btn.disabled = false;
|
|
1990
1991
|
btn.onclick = () => {
|
|
1991
1992
|
const conv = box.querySelector('#mig-conv')?.checked ? '1' : '0';
|
|
1992
|
-
const
|
|
1993
|
+
const mem = box.querySelector('#mig-mem')?.checked ? '1' : '0';
|
|
1994
|
+
const a = document.createElement('a'); a.href = '/api/migrate/' + encodeURIComponent(id) + '/export?conv=' + conv + '&mem=' + mem; a.download = '';
|
|
1993
1995
|
document.body.appendChild(a); a.click(); a.remove();
|
|
1994
1996
|
btn.textContent = '✓ 已开始下载'; btn.disabled = true;
|
|
1995
1997
|
btn.insertAdjacentHTML('afterend', '<div class="mig-dim" style="margin-top:0.4rem">文件大时浏览器会在后台下载,留意下载栏 / 通知。下载完成后按上面第 2、3 步操作。</div>');
|
|
@@ -2032,6 +2034,7 @@
|
|
|
2032
2034
|
<div class="mig-row"><span>📝</span><div>任务:<b>${esc(m.title || '')}</b><br><small>来自「${esc(m.from || '另一台 myhi')}」,${esc(new Date(m.exportedAt).toLocaleString())} 导出</small></div></div>
|
|
2033
2035
|
<div class="mig-row"><span>📁</span><div>项目文件 ${m.files} 个,共 ${fmtSize(m.bytes || 0)}<br><small>原位置:${esc(m.cwd || '')}</small></div></div>
|
|
2034
2036
|
<div class="mig-row"><span>💬</span><div>${m.conv ? 'AI 对话记录:有 —— 导入后可以<b>接着聊</b>' : 'AI 对话记录:没带 —— 导入后是一个新对话(项目文件都在)'}</div></div>
|
|
2037
|
+
<div class="mig-row"><span>🧠</span><div>${m.memory ? `项目记忆:${m.memory.count} 个文件 —— AI 记下的项目约定和经验一起导入;这台电脑上已有同名记忆时保留这台的,记忆索引会合并` : '项目记忆:没带'}</div></div>
|
|
2035
2038
|
${skipped ? `<div class="mig-row"><span>⏭</span><div>原电脑上没打包:${skipped}<br><small>依赖 / 构建产物需要在这台电脑重新安装或生成(例如 npm install);可以导入后直接让 AI 帮你装。</small></div></div>` : ''}
|
|
2036
2039
|
${m.guard ? `<div class="mig-row"><span>🛡</span><div>隐私护栏配置一起导入(主体词典 ${m.guard.entities} 个)</div></div>` : ''}
|
|
2037
2040
|
${(m.secrets || []).length ? `<div class="mig-row mig-warn"><span>🔑</span><div>需要重新录入的密钥:${m.secrets.map(esc).join('、')}<br><small>导入后在任务会话页「🔑 密钥」里填。</small></div></div>` : ''}
|
|
@@ -2050,7 +2053,8 @@
|
|
|
2050
2053
|
catch (e) { d = { ok: false, error: e.message }; }
|
|
2051
2054
|
if (!d.ok) { btn.disabled = false; btn.textContent = '导入为新任务'; res.innerHTML = '<div class="mig-warn" style="margin-top:0.4rem">' + esc(d.error) + '</div>'; return; }
|
|
2052
2055
|
btn.textContent = '✓ 导入完成';
|
|
2053
|
-
|
|
2056
|
+
const mm = d.memory && (d.memory.written || d.memory.kept) ? `项目记忆导入 ${d.memory.written} 个${d.memory.kept ? `(${d.memory.kept} 个这台电脑上已有,保留了这台的)` : ''}。` : '';
|
|
2057
|
+
res.innerHTML = `<div style="margin-top:0.5rem">任务已导入到 <code>${esc(cwd)}</code>。${d.conv ? '打开后直接发消息就能接着聊。' : ''}${mm}${(d.secrets || []).length ? `<div class="mig-warn">别忘了在会话页「🔑 密钥」里重新录入:${d.secrets.map(esc).join('、')}</div>` : ''}</div>
|
|
2054
2058
|
<button class="mig-btn" id="mig-open">打开这个任务</button>`;
|
|
2055
2059
|
res.querySelector('#mig-open').onclick = () => { document.getElementById('mig-ov')?.remove(); openSession(d.id); };
|
|
2056
2060
|
try { socket.emit('list'); } catch {}
|
package/dist/index.html.gz
CHANGED
|
Binary file
|