@wendongfly/myhi 1.3.190 → 1.3.192
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/admin.html +182 -67
- package/dist/chat.html +88 -65
- package/dist/grid.html +2 -1
- package/dist/index.html +403 -30
- package/dist/index.js +4 -4
- package/dist/index.min.js +66 -65
- package/dist/lib/machine.js +5 -2
- package/dist/lib/prefs.js +51 -0
- package/dist/login.html +175 -163
- package/package.json +1 -1
package/dist/chat.html
CHANGED
|
@@ -10,15 +10,21 @@
|
|
|
10
10
|
<link rel="apple-touch-icon" href="/icon.png">
|
|
11
11
|
<title>myhi 会话</title>
|
|
12
12
|
<script src="/lib/machine.js" data-session></script>
|
|
13
|
+
<script src="/lib/prefs.js"></script>
|
|
13
14
|
<script src="/sio-client/socket.io.min.js"></script>
|
|
15
|
+
<script src="/theme.js"></script>
|
|
14
16
|
<script>
|
|
15
17
|
(function(){try{
|
|
16
|
-
var t=localStorage.getItem('myhi_theme')||'dark';
|
|
18
|
+
var t=localStorage.getItem('myhi_theme')||window.MYHI_DEFAULT_THEME||'dark';
|
|
17
19
|
var f=localStorage.getItem('myhi_font')||'medium';
|
|
18
20
|
var r=document.documentElement;
|
|
19
21
|
if(t&&t!=='dark') r.setAttribute('data-theme',t);
|
|
20
22
|
r.setAttribute('data-font',f);
|
|
21
|
-
|
|
23
|
+
var em=new URLSearchParams(location.search).get('embed');
|
|
24
|
+
if(em==='1') r.classList.add('embed');
|
|
25
|
+
// 首页电脑端工作台右侧嵌入:保留本页顶栏,左侧已有任务列表 → 藏掉分屏/切换/返回;
|
|
26
|
+
// 页面里的链接(如「首页 ⚙ 设置」)在整个窗口打开,别在右侧小框里再套一个首页
|
|
27
|
+
if(em==='ws'){ r.classList.add('embed-ws'); var bs=document.createElement('base'); bs.target='_top'; document.head.appendChild(bs); }
|
|
22
28
|
}catch(e){}})();
|
|
23
29
|
</script>
|
|
24
30
|
<style>
|
|
@@ -54,6 +60,7 @@
|
|
|
54
60
|
html[data-font="large"] { font-size: 19.5px; }
|
|
55
61
|
/* 分屏内嵌模式(?embed=1):隐藏本页顶栏,让每个窗格更紧凑(外层 grid.html 提供窗格头) */
|
|
56
62
|
html.embed #top-bar { display: none; }
|
|
63
|
+
html.embed-ws #grid-btn, html.embed-ws [onclick="openSwitchSheet()"], html.embed-ws [onclick="goBack()"] { display: none !important; }
|
|
57
64
|
/* 分屏是 PC 大屏功能,手机端(触屏)隐藏入口 */
|
|
58
65
|
@media (pointer: coarse) { #grid-btn { display: none !important; } }
|
|
59
66
|
|
|
@@ -204,7 +211,6 @@
|
|
|
204
211
|
@media (hover: none) { .raw-copy { opacity: 0.85; } }
|
|
205
212
|
/* AI 工具的原始输出默认不显示(设置→聊天→显示 打开;终端会话的命令输出不受影响) */
|
|
206
213
|
body.hide-toolout .msg-raw.tool-out { display: none; }
|
|
207
|
-
.setting-toggle.off { opacity: 0.45; pointer-events: none; }
|
|
208
214
|
/* 消息里其他带框内容(代码块/表格/diff/工具详情…)同款复制按钮,见 attachCopyBtns */
|
|
209
215
|
.cpw, .cp-host { position: relative; }
|
|
210
216
|
.cp-btn { user-select: none; }
|
|
@@ -223,7 +229,8 @@
|
|
|
223
229
|
.msg-synthetic .syn-body { white-space: pre-wrap; font-family: 'SF Mono', 'Cascadia Code', 'Consolas', monospace; font-size: 0.75rem; line-height: 1.5; color: var(--muted); background: var(--surface); border: 1px solid var(--border); border-radius: 8px; padding: 0.5rem 0.75rem; max-height: 320px; overflow-y: auto; word-break: break-word; }
|
|
224
230
|
|
|
225
231
|
/* ── 输入栏 ─────────────────────────────── */
|
|
226
|
-
|
|
232
|
+
/* 输入区与对话同底色、不画分隔线:输入框自带圆角边框,浮在对话下方即可(原来一条贯穿的横线 + 浅色底带显得割裂) */
|
|
233
|
+
#input-area { background: var(--bg); flex-shrink: 0; padding: 0.5rem 0.75rem 0.35rem; }
|
|
227
234
|
#input-area.no-shortcuts { padding-bottom: max(0.5rem, env(safe-area-inset-bottom)); }
|
|
228
235
|
#input-box { background: var(--bg); border: 1px solid var(--border); border-radius: 12px; transition: border-color 0.2s; overflow: hidden; position: relative; }
|
|
229
236
|
#img-preview { display: none; align-items: center; gap: 0.5rem; padding: 0.5rem 0.75rem; border-bottom: 1px solid var(--surface2); background: var(--surface); }
|
|
@@ -302,7 +309,7 @@
|
|
|
302
309
|
#readonly-overlay { display: none; text-align: center; padding: 0.6rem; font-size: 0.8rem; color: var(--muted); background: var(--surface); }
|
|
303
310
|
|
|
304
311
|
/* ── 快捷键栏 ───────────────────────────── */
|
|
305
|
-
#shortcut-bar { background: var(--
|
|
312
|
+
#shortcut-bar { background: var(--bg); padding: 0.35rem 0.5rem; padding-bottom: max(0.35rem, env(safe-area-inset-bottom)); flex-shrink: 0; overflow: hidden; }
|
|
306
313
|
#shortcut-bar > div { display: flex; align-items: center; gap: 0.35rem; overflow-x: auto; scrollbar-width: none; }
|
|
307
314
|
#shortcut-bar > div::-webkit-scrollbar { display: none; }
|
|
308
315
|
.sk { background: var(--surface2); color: var(--text); border: 1px solid var(--border); border-radius: 6px; padding: 0.3rem 0.55rem; font-size: 0.75rem; font-family: 'SF Mono', 'Consolas', monospace; cursor: pointer; white-space: nowrap; flex-shrink: 0; user-select: none; -webkit-user-select: none; touch-action: manipulation; }
|
|
@@ -313,7 +320,7 @@
|
|
|
313
320
|
/* ── 设置面板 ───────────────────────────── */
|
|
314
321
|
#settings-backdrop { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.5); z-index: 60; }
|
|
315
322
|
#settings-backdrop.open { display: block; }
|
|
316
|
-
#settings-panel { position: fixed; top: 0; right: -360px; width: 340px; max-width: 92vw; height: 100%; background: var(--surface); border-left: 1px solid var(--border); z-index: 61; transition: right 0.25s ease; overflow-y: auto; padding: 1rem; }
|
|
323
|
+
#settings-panel { position: fixed; top: 0; right: -360px; width: 340px; max-width: 92vw; height: 100%; background: var(--surface); border-left: 1px solid var(--border); z-index: 61; transition: right 0.25s ease; overflow-y: auto; padding: 1rem; box-sizing: border-box; }
|
|
317
324
|
#settings-panel.open { right: 0; }
|
|
318
325
|
.panel-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 0.6rem; font-size: 1rem; font-weight: 600; }
|
|
319
326
|
.panel-close { background: none; border: none; color: var(--muted); font-size: 1.2rem; cursor: pointer; }
|
|
@@ -330,6 +337,18 @@
|
|
|
330
337
|
.seg-row { display: flex; gap: 0.35rem; flex-wrap: wrap; }
|
|
331
338
|
.seg { flex: 1; min-width: 3.2rem; background: var(--surface2); color: var(--text2); border: 1px solid var(--border); border-radius: 8px; padding: 0.45rem 0.3rem; font-size: 0.8rem; cursor: pointer; white-space: nowrap; }
|
|
332
339
|
.seg.active { background: var(--purple); color: #fff; border-color: var(--purple); }
|
|
340
|
+
/* 设置里「名称 + 分段选择」一行 */
|
|
341
|
+
.set-line { display: flex; align-items: center; justify-content: space-between; gap: 0.6rem; padding: 0.45rem 0; font-size: 0.85rem; }
|
|
342
|
+
.set-line > span { flex: 0 1 auto; min-width: 3.5rem; }
|
|
343
|
+
.set-line small { display: block; font-size: 0.68rem; color: var(--muted); }
|
|
344
|
+
.set-line .seg-row { flex: 1 1 auto; max-width: 13.5rem; flex-wrap: nowrap; }
|
|
345
|
+
.set-line .seg { min-width: 0; padding: 0.38rem 0.2rem; font-size: 0.76rem; }
|
|
346
|
+
.set-task-hint { font-size: 0.74rem; color: var(--muted); line-height: 1.5; margin-bottom: 0.6rem; }
|
|
347
|
+
.set-task-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.45rem; }
|
|
348
|
+
.set-task-grid button { background: var(--surface2); color: var(--text); border: 1px solid var(--border); border-radius: 8px; padding: 0.6rem 0.5rem; font-size: 0.82rem; cursor: pointer; text-align: left; }
|
|
349
|
+
.set-task-grid button:hover { border-color: var(--purple); }
|
|
350
|
+
.set-foot { font-size: 0.72rem; color: var(--muted); line-height: 1.55; margin-top: 1rem; padding-top: 0.7rem; border-top: 1px solid var(--border); }
|
|
351
|
+
.set-foot a { color: var(--blue); }
|
|
333
352
|
.setting-toggle input[type=checkbox] { width: 36px; height: 20px; appearance: none; -webkit-appearance: none; background: var(--border); border-radius: 10px; position: relative; cursor: pointer; transition: background 0.2s; }
|
|
334
353
|
.setting-toggle input[type=checkbox]:checked { background: var(--green2); }
|
|
335
354
|
.setting-toggle input[type=checkbox]::after { content: ''; position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; background: #fff; border-radius: 50%; transition: left 0.2s; }
|
|
@@ -624,34 +643,16 @@
|
|
|
624
643
|
<div id="settings-panel">
|
|
625
644
|
<div class="panel-header"><span>设置</span><button class="panel-close" onclick="closeSettings()">✕</button></div>
|
|
626
645
|
<div id="settings-tabs">
|
|
627
|
-
<button class="stab active" data-tab="
|
|
628
|
-
<button class="stab" data-tab="chat">聊天</button>
|
|
646
|
+
<button class="stab active" data-tab="chat">聊天</button>
|
|
629
647
|
<button class="stab" data-tab="bar">快捷栏</button>
|
|
630
|
-
<button class="stab" data-tab="
|
|
648
|
+
<button class="stab" data-tab="task" id="stab-task">本任务</button>
|
|
631
649
|
</div>
|
|
632
|
-
<div class="setting-group" data-stab="
|
|
633
|
-
<div style="font-size:0.8rem;color:var(--text2);margin:0.1rem 0 0.35rem">主题</div>
|
|
634
|
-
<div id="seg-theme" class="seg-row">
|
|
635
|
-
<button class="seg" data-theme="system">跟随系统</button>
|
|
636
|
-
<button class="seg" data-theme="dark">深色</button>
|
|
637
|
-
<button class="seg" data-theme="light">浅色</button>
|
|
638
|
-
<button class="seg" data-theme="black">纯黑</button>
|
|
639
|
-
</div>
|
|
640
|
-
<div style="font-size:0.8rem;color:var(--text2);margin:0.6rem 0 0.35rem">字号</div>
|
|
641
|
-
<div id="seg-font" class="seg-row">
|
|
642
|
-
<button class="seg" data-font="small">小</button>
|
|
643
|
-
<button class="seg" data-font="medium">中</button>
|
|
644
|
-
<button class="seg" data-font="large">大</button>
|
|
645
|
-
</div>
|
|
646
|
-
</div>
|
|
647
|
-
<div class="setting-group" data-stab="chat" style="display:none">
|
|
650
|
+
<div class="setting-group" data-stab="chat">
|
|
648
651
|
<h4>显示</h4>
|
|
649
|
-
<
|
|
650
|
-
<
|
|
651
|
-
<
|
|
652
|
-
<label class="setting-toggle"><span
|
|
653
|
-
<label class="setting-toggle"><span>显示工具输出内容(AI 执行命令/读文件的原始结果)</span><input type="checkbox" id="set-toolout"></label>
|
|
654
|
-
<label class="setting-toggle" id="row-rawclip"><span> └ 工具输出只显示前 8 行(可展开)</span><input type="checkbox" id="set-rawclip" checked></label>
|
|
652
|
+
<div class="set-line"><span>思考过程</span><div id="seg-think" class="seg-row"><button class="seg" data-v="hide">隐藏</button><button class="seg" data-v="fold">折叠</button><button class="seg" data-v="open">展开</button></div></div>
|
|
653
|
+
<div class="set-line"><span>工具调用</span><div id="seg-tools" class="seg-row"><button class="seg" data-v="fold">折叠</button><button class="seg" data-v="open">展开</button></div></div>
|
|
654
|
+
<div class="set-line"><span>工具输出<small>AI 执行命令/读文件的原始结果</small></span><div id="seg-toolout" class="seg-row"><button class="seg" data-v="hide">隐藏</button><button class="seg" data-v="clip">前8行</button><button class="seg" data-v="all">全部</button></div></div>
|
|
655
|
+
<label class="setting-toggle" id="row-parse"><span>把终端里的 Claude 输出整理成聊天样式</span><input type="checkbox" id="set-parse" checked></label>
|
|
655
656
|
</div>
|
|
656
657
|
<div class="setting-group" data-stab="chat" style="display:none">
|
|
657
658
|
<h4>输入</h4>
|
|
@@ -675,15 +676,20 @@
|
|
|
675
676
|
</div>
|
|
676
677
|
<div id="sk-visible-list" style="display:grid;grid-template-columns:1fr 1fr 1fr;gap:0.15rem 0.6rem;margin-top:0.5rem"></div>
|
|
677
678
|
</div>
|
|
678
|
-
<div class="setting-group" data-stab="
|
|
679
|
-
<
|
|
680
|
-
<div
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
679
|
+
<div class="setting-group" data-stab="task" style="display:none">
|
|
680
|
+
<div class="set-task-hint">这些设置只对当前任务(或它所在的项目)生效,快捷栏里隐藏了的也能从这里打开。</div>
|
|
681
|
+
<div class="set-task-grid">
|
|
682
|
+
<button onclick="closeSettings();openModelSheet()">🤖 模型</button>
|
|
683
|
+
<button onclick="closeSettings();openGuardSheet()">🛡 隐私护栏</button>
|
|
684
|
+
<button onclick="closeSettings();openSecretsSheet()">🔑 密钥</button>
|
|
685
|
+
<button onclick="closeSettings();openFollowUpSheet()">🔄 自动跟进</button>
|
|
686
|
+
<button onclick="closeSettings();showMemory()">🧠 记忆</button>
|
|
687
|
+
<button onclick="closeSettings();openSkillSheet()">🧩 技能</button>
|
|
688
|
+
<button onclick="closeSettings();openInboxSheet()">📥 草稿箱</button>
|
|
689
|
+
<button onclick="closeSettings();openGitSheet()">⬆ 提交代码</button>
|
|
690
|
+
</div>
|
|
686
691
|
</div>
|
|
692
|
+
<div class="set-foot">这里的设置会同步到你登录的其他设备。外观(主题 / 字号)、本机显示名、语音、版本升级与重启在 <a href="/?settings=1">首页 ⚙ 设置</a>。</div>
|
|
687
693
|
</div>
|
|
688
694
|
|
|
689
695
|
<!-- QR弹窗 -->
|
|
@@ -1217,7 +1223,7 @@
|
|
|
1217
1223
|
let settings = loadSettings();
|
|
1218
1224
|
|
|
1219
1225
|
function loadSettings() { try { return { ...DEFAULT_SETTINGS, ...JSON.parse(localStorage.getItem('myhi_chat_settings')) }; } catch { return { ...DEFAULT_SETTINGS }; } }
|
|
1220
|
-
function saveSettings() { localStorage.setItem('myhi_chat_settings', JSON.stringify(settings)); }
|
|
1226
|
+
function saveSettings() { localStorage.setItem('myhi_chat_settings', JSON.stringify(settings)); window.myhiPrefsPush?.(); } // 同步到其他设备
|
|
1221
1227
|
|
|
1222
1228
|
// ── 外观:主题 & 字号(跨页面共用 localStorage myhi_theme / myhi_font)──
|
|
1223
1229
|
const THEME_META = { dark: '#0d1117', light: '#ffffff', black: '#000000', system: '#0d1117' };
|
|
@@ -1235,7 +1241,7 @@
|
|
|
1235
1241
|
syncAppearanceUI();
|
|
1236
1242
|
}
|
|
1237
1243
|
function syncAppearanceUI() {
|
|
1238
|
-
const t = localStorage.getItem('myhi_theme') || 'dark';
|
|
1244
|
+
const t = localStorage.getItem('myhi_theme') || window.MYHI_DEFAULT_THEME || 'dark';
|
|
1239
1245
|
const f = localStorage.getItem('myhi_font') || 'medium';
|
|
1240
1246
|
document.querySelectorAll('#seg-theme .seg').forEach(b => b.classList.toggle('active', b.dataset.theme === t));
|
|
1241
1247
|
document.querySelectorAll('#seg-font .seg').forEach(b => b.classList.toggle('active', b.dataset.font === f));
|
|
@@ -3585,7 +3591,8 @@
|
|
|
3585
3591
|
overlay.appendChild(wrap);
|
|
3586
3592
|
};
|
|
3587
3593
|
|
|
3588
|
-
window.openSettings = function() { document.getElementById('settings-backdrop').classList.add('open'); document.getElementById('settings-panel').classList.add('open'); syncSettingsUI();
|
|
3594
|
+
window.openSettings = function() { document.getElementById('settings-backdrop').classList.add('open'); document.getElementById('settings-panel').classList.add('open'); syncSettingsUI(); const t0 = localStorage.getItem('myhi_settings_tab');
|
|
3595
|
+
applySettingsTab(['bar', 'task'].includes(t0) && !(t0 === 'task' && currentSession?.mode !== 'agent') ? t0 : 'chat'); };
|
|
3589
3596
|
// 设置抽屉分类页签(1.3.174:一屏只看一类,不再长条堆叠)
|
|
3590
3597
|
function applySettingsTab(tab) {
|
|
3591
3598
|
document.querySelectorAll('#settings-tabs .stab').forEach(b => b.classList.toggle('active', b.dataset.tab === tab));
|
|
@@ -4122,35 +4129,51 @@
|
|
|
4122
4129
|
function syncSettingsUI() {
|
|
4123
4130
|
syncAppearanceUI();
|
|
4124
4131
|
document.getElementById('set-parse').checked = settings.parseOutput;
|
|
4125
|
-
|
|
4126
|
-
|
|
4127
|
-
document.getElementById('
|
|
4128
|
-
document.getElementById('
|
|
4129
|
-
|
|
4132
|
+
// 「整理终端输出」只对终端模式的 Claude 会话有用;「本任务」入口只对 AI 会话有用
|
|
4133
|
+
const isAgent = currentSession?.mode === 'agent';
|
|
4134
|
+
document.getElementById('row-parse').style.display = isAgent ? 'none' : '';
|
|
4135
|
+
document.getElementById('stab-task').style.display = isAgent ? '' : 'none';
|
|
4136
|
+
syncDisplaySegs();
|
|
4130
4137
|
applyToolOut();
|
|
4131
4138
|
syncEnterModeUI();
|
|
4132
4139
|
syncSkModeUI();
|
|
4133
4140
|
}
|
|
4134
4141
|
document.getElementById('set-parse').addEventListener('change', (e) => { settings.parseOutput = e.target.checked; saveSettings(); });
|
|
4135
|
-
|
|
4136
|
-
document.
|
|
4137
|
-
document.getElementById('set-thinkcollapse').addEventListener('change', (e) => { settings.thinkCollapsed = e.target.checked; saveSettings(); });
|
|
4138
|
-
// 工具输出显隐:关着时「只显示前 8 行」没意义,置灰
|
|
4139
|
-
function applyToolOut() {
|
|
4140
|
-
document.body.classList.toggle('hide-toolout', !settings.showToolOut);
|
|
4141
|
-
document.getElementById('row-rawclip')?.classList.toggle('off', !settings.showToolOut);
|
|
4142
|
-
}
|
|
4142
|
+
// AI 工具输出显隐(body.hide-toolout 藏掉 .msg-raw.tool-out;终端会话的命令输出不受影响)
|
|
4143
|
+
function applyToolOut() { document.body.classList.toggle('hide-toolout', !settings.showToolOut); }
|
|
4143
4144
|
applyToolOut();
|
|
4144
|
-
|
|
4145
|
-
|
|
4146
|
-
|
|
4147
|
-
|
|
4148
|
-
|
|
4149
|
-
|
|
4150
|
-
|
|
4151
|
-
|
|
4152
|
-
|
|
4153
|
-
}
|
|
4145
|
+
// 显示设置:三组分段选择,各对应原来的一两个开关
|
|
4146
|
+
// 思考过程 隐藏/折叠/展开 = showThinking + thinkCollapsed;工具调用 折叠/展开 = collapseTools;
|
|
4147
|
+
// 工具输出 隐藏/前 8 行/全部 = showToolOut + rawClip
|
|
4148
|
+
function displayState() {
|
|
4149
|
+
return {
|
|
4150
|
+
think: !settings.showThinking ? 'hide' : (settings.thinkCollapsed !== false ? 'fold' : 'open'),
|
|
4151
|
+
tools: settings.collapseTools ? 'fold' : 'open',
|
|
4152
|
+
toolout: !settings.showToolOut ? 'hide' : (settings.rawClip !== false ? 'clip' : 'all'),
|
|
4153
|
+
};
|
|
4154
|
+
}
|
|
4155
|
+
function syncDisplaySegs() {
|
|
4156
|
+
const st = displayState();
|
|
4157
|
+
for (const [id, key] of [['seg-think', 'think'], ['seg-tools', 'tools'], ['seg-toolout', 'toolout']]) {
|
|
4158
|
+
document.querySelectorAll('#' + id + ' .seg').forEach(b => b.classList.toggle('active', b.dataset.v === st[key]));
|
|
4159
|
+
}
|
|
4160
|
+
}
|
|
4161
|
+
document.querySelectorAll('#seg-think .seg').forEach(b => b.addEventListener('click', () => {
|
|
4162
|
+
settings.showThinking = b.dataset.v !== 'hide';
|
|
4163
|
+
if (b.dataset.v !== 'hide') settings.thinkCollapsed = b.dataset.v === 'fold';
|
|
4164
|
+
saveSettings(); syncDisplaySegs();
|
|
4165
|
+
}));
|
|
4166
|
+
document.querySelectorAll('#seg-tools .seg').forEach(b => b.addEventListener('click', () => {
|
|
4167
|
+
settings.collapseTools = b.dataset.v === 'fold'; saveSettings(); syncDisplaySegs();
|
|
4168
|
+
}));
|
|
4169
|
+
document.querySelectorAll('#seg-toolout .seg').forEach(b => b.addEventListener('click', () => {
|
|
4170
|
+
const was = displayState().toolout;
|
|
4171
|
+
settings.showToolOut = b.dataset.v !== 'hide';
|
|
4172
|
+
if (b.dataset.v !== 'hide') settings.rawClip = b.dataset.v === 'clip';
|
|
4173
|
+
saveSettings(); syncDisplaySegs(); applyToolOut();
|
|
4174
|
+
// 显示方式变了:已渲染的输出块按新默认重新量(隐藏时量不出高度;用户手动点过的展开/收起也重置)
|
|
4175
|
+
if (settings.showToolOut && was !== b.dataset.v) chatArea.querySelectorAll('.msg-raw.tool-out').forEach(m => { delete m.dataset.open; rawClipSync(m); });
|
|
4176
|
+
}));
|
|
4154
4177
|
|
|
4155
4178
|
window.restartMyhi = async function() {
|
|
4156
4179
|
if (!confirm('确认重启 myhi 服务?\n重启期间连接会短暂中断,页面将自动重连。')) return;
|
package/dist/grid.html
CHANGED
|
@@ -7,9 +7,10 @@
|
|
|
7
7
|
<title>myhi</title>
|
|
8
8
|
<script src="/lib/machine.js"></script>
|
|
9
9
|
<script src="/sio-client/socket.io.min.js"></script>
|
|
10
|
+
<script src="/theme.js"></script>
|
|
10
11
|
<script>
|
|
11
12
|
(function(){try{
|
|
12
|
-
var t=localStorage.getItem('myhi_theme')||'dark';
|
|
13
|
+
var t=localStorage.getItem('myhi_theme')||window.MYHI_DEFAULT_THEME||'dark';
|
|
13
14
|
var f=localStorage.getItem('myhi_font')||'medium';
|
|
14
15
|
var r=document.documentElement;
|
|
15
16
|
if(t&&t!=='dark') r.setAttribute('data-theme',t);
|