agent control layer: vision endpoint (qwen2.5vl:7b), tap/swipe/text/launch, fleet actions, onboard retry sweep, MCP server :8095
This commit is contained in:
@@ -239,8 +239,8 @@ function renderFleet() {
|
||||
<div class="bar"><div style="width:${mt}%; background:linear-gradient(90deg,#22c55e,#84cc16)"></div></div>
|
||||
</div>
|
||||
<div class="flex gap-1.5 flex-wrap">
|
||||
<button onclick="doVnc('${d.mac}')" class="text-xs font-bold px-3 py-1.5 rounded bg-cyan-500/30 text-cyan-200 hover:bg-cyan-500/50">📺 LIVE SCREEN</button>
|
||||
<button onclick="doTerm('${d.mac}')" class="text-[10px] px-2 py-1 rounded bg-emerald-500/20 text-emerald-300 hover:bg-emerald-500/40">TERMINAL</button>
|
||||
<button onclick="doVnc('${d.mac}')" class="text-[10px] px-2 py-1 rounded bg-cyan-500/20 text-cyan-300 hover:bg-cyan-500/40">VNC</button>
|
||||
<button onclick="doOnboard('${d.mac}')" class="text-[10px] px-2 py-1 rounded bg-fuchsia-500/20 text-fuchsia-300 hover:bg-fuchsia-500/40">ONBOARD</button>
|
||||
<button onclick="doShell('${d.mac}')" class="text-[10px] px-2 py-1 rounded bg-zinc-700/50 hover:bg-zinc-600">SHELL</button>
|
||||
<button onclick="doShot('${d.mac}')" class="text-[10px] px-2 py-1 rounded bg-zinc-700/50 hover:bg-zinc-600">SCREENSHOT</button>
|
||||
@@ -248,6 +248,10 @@ function renderFleet() {
|
||||
<button onclick="doLabel('${d.mac}')" class="text-[10px] px-2 py-1 rounded bg-zinc-700/50 hover:bg-zinc-600">LABEL</button>
|
||||
<button onclick="doKill('${d.mac}')" class="text-[10px] px-2 py-1 rounded bg-red-500/20 text-red-400 hover:bg-red-500/40">KILL</button>
|
||||
</div>
|
||||
<div class="mt-2 cursor-pointer rounded overflow-hidden border border-zinc-700 group relative" onclick="doVnc('${d.mac}')" title="click for the full live screen">
|
||||
<img class="shot w-full block" data-mac="${d.mac}" style="height:120px;object-fit:cover;background:#000" src="/api/device/${d.mac}/screenshot/latest" onerror="this.style.opacity=.35">
|
||||
<div class="absolute bottom-1 right-1 text-[9px] bg-black/70 text-cyan-300 px-1.5 py-0.5 rounded opacity-0 group-hover:opacity-100">▶ full screen</div>
|
||||
</div>
|
||||
</div>`;
|
||||
}).join("");
|
||||
}
|
||||
@@ -459,6 +463,12 @@ function humanize(sec) {
|
||||
document.getElementById("modal").addEventListener("click", (e) => { if (e.target.id === "modal") closeModal(); });
|
||||
setInterval(() => { document.getElementById("clock").textContent = new Date().toLocaleTimeString(); }, 1000);
|
||||
setInterval(loadProxies, 15000);
|
||||
// keep every card's mini-screen fresh (~4s; backend caches a new shot every 8s)
|
||||
setInterval(() => {
|
||||
document.querySelectorAll("img.shot").forEach(img => {
|
||||
img.src = "/api/device/" + img.dataset.mac + "/screenshot/latest?t=" + Date.now();
|
||||
});
|
||||
}, 4000);
|
||||
initCharts();
|
||||
connect();
|
||||
loadProxies();
|
||||
|
||||
Reference in New Issue
Block a user