@wendongfly/myhi 1.0.100 → 1.0.101
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 +35 -0
- package/dist/package.json +1 -1
- package/package.json +1 -1
package/dist/admin.html
CHANGED
|
@@ -76,6 +76,18 @@
|
|
|
76
76
|
</div>
|
|
77
77
|
<div id="op-msg" class="status-msg" style="display:none"></div>
|
|
78
78
|
|
|
79
|
+
<!-- 在线用户 -->
|
|
80
|
+
<div class="card">
|
|
81
|
+
<h3>在线用户</h3>
|
|
82
|
+
<div id="online-users"><div class="row" style="color:#6e7681">加载中...</div></div>
|
|
83
|
+
</div>
|
|
84
|
+
|
|
85
|
+
<!-- 活跃会话 -->
|
|
86
|
+
<div class="card">
|
|
87
|
+
<h3>活跃会话</h3>
|
|
88
|
+
<div id="active-sessions"><div class="row" style="color:#6e7681">加载中...</div></div>
|
|
89
|
+
</div>
|
|
90
|
+
|
|
79
91
|
<!-- 用户管理 -->
|
|
80
92
|
<div class="card">
|
|
81
93
|
<h3>用户管理</h3>
|
|
@@ -154,6 +166,29 @@ async function refresh() {
|
|
|
154
166
|
btn.disabled = true; btn.classList.remove('glow'); btn.textContent = '已是最新';
|
|
155
167
|
}
|
|
156
168
|
|
|
169
|
+
// 在线用户
|
|
170
|
+
const ouEl = document.getElementById('online-users');
|
|
171
|
+
if (!d.onlineUsers?.length) {
|
|
172
|
+
ouEl.innerHTML = '<div class="row" style="color:#6e7681">无在线用户</div>';
|
|
173
|
+
} else {
|
|
174
|
+
ouEl.innerHTML = d.onlineUsers.map(u =>
|
|
175
|
+
`<div class="row"><span>${esc(u.name)}</span><span style="color:#6e7681">${esc(u.role)}</span></div>`
|
|
176
|
+
).join('');
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// 活跃会话
|
|
180
|
+
const asEl = document.getElementById('active-sessions');
|
|
181
|
+
if (!d.sessions?.length) {
|
|
182
|
+
asEl.innerHTML = '<div class="row" style="color:#6e7681">无活跃会话</div>';
|
|
183
|
+
} else {
|
|
184
|
+
asEl.innerHTML = d.sessions.map(s => {
|
|
185
|
+
const tag = s.mode === 'agent'
|
|
186
|
+
? '<span style="display:inline-block;font-size:0.7rem;padding:0.1rem 0.4rem;border-radius:4px;background:rgba(124,58,237,0.2);color:#a78bfa">Agent</span>'
|
|
187
|
+
: '<span style="display:inline-block;font-size:0.7rem;padding:0.1rem 0.4rem;border-radius:4px;background:rgba(63,185,80,0.2);color:#3fb950">PTY</span>';
|
|
188
|
+
return `<div class="row"><span>${tag} ${esc(s.title)} <span style="color:#6e7681">${esc(s.owner||'')}</span></span><span style="color:#6e7681">${s.viewers}人</span></div>`;
|
|
189
|
+
}).join('');
|
|
190
|
+
}
|
|
191
|
+
|
|
157
192
|
// 用户列表
|
|
158
193
|
renderUsers(d.users || []);
|
|
159
194
|
|
package/dist/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@wendongfly/myhi","version":"1.0.
|
|
1
|
+
{"name":"@wendongfly/myhi","version":"1.0.100","description":"Web-based terminal sharing with chat UI — control your terminal from phone via LAN/Tailscale","type":"module","main":"dist/index.js","bin":{"myhi":"bin/myhi.js"},"files":["bin/","dist/"],"scripts":{"start":"node dist/index.js","dev":"node --watch src/server.js","build":"node scripts/build.js","postinstall":"node -e \"try{require('fs').chmodSync(require('path').join(__dirname,'bin','myhi.js'),0o755)}catch(e){}\""},"keywords":["terminal","web-terminal","claude","claude-code","tailscale","pty","remote-terminal","chat-ui"],"author":"wendongfly","license":"MIT","repository":{"type":"git","url":""},"engines":{"node":">=18.0.0"},"dependencies":{"node-pty":"^1.0.0","socket.io-client":"^4.8.3"},"devDependencies":{"@vercel/ncc":"^0.38.4","esbuild":"^0.27.4","express":"^4.18.2","multer":"^2.1.1","qrcode":"^1.5.4","qrcode-terminal":"^0.12.0","socket.io":"^4.8.1","socket.io-client":"^4.8.3","terser":"^5.46.1","xterm":"^4.19.0","xterm-addon-fit":"^0.5.0","xterm-addon-web-links":"^0.6.0"}}
|
package/package.json
CHANGED