← Commit history

Publish 2.0.324

John Lauer ·ebfc334593 ·1mo ago ·parent 79ff456
3 files changed +5−3
package.json+1−1
@@ -1,6 +1,6 @@ {   "slug": "pup-bridge",-  "version": "2.0.323",+  "version": "2.0.324",   "type": "app",   "description": "The pup SKILL PACK \u2014 the AI skills that teach a cloud/container AI how to drive the Adom Desktop Puppeteer (pup) bridge (browser_* verbs): the everyday `pup` skill plus focused sub-skills for windows/sessions/tabs, screenshots+recording, browsers+Chrome install, and driving the Adom wiki. Installs into ~/.claude/skills + ~/.codex/skills. DOCS ONLY \u2014 this is NOT the bridge runtime. The bridge itself (the Node program that drives the browser) runs on the DESKTOP: Adom Desktop bundles it and auto-installs/updates it, and it's published separately on the Releases tab as adom-bridge-puppeteer-v<ver>.zip. The pkg version is kept in lockstep with the Release version so the page's max version row always carries BOTH a pkg tarball (skills) and a runtime zip (bridge) \u2014 a skills-only or runtime-only bump on the top row breaks constraint installs. TL;DR: pkg install = the skills for your AI; the bridge = the Release zip, which Adom Desktop manages for you.",   "keywords": [
page.json+1−1
@@ -4,7 +4,7 @@   "slug": "pup-bridge",   "title": "Pup - Puppeteer Bridge",   "brief": "pup is the AI's own browser: a real, full Chrome on the user's desktop that the AI fully controls (a sandbox, not the user's signed-in browser). Rides Bridge; pup_* verbs open windows and tabs, navigate, screenshot, and eval JS.",-  "version": "2.0.323",+  "version": "2.0.324",   "tags": [     "skills",     "pup",
tools/pup-dashboard+3−1
@@ -361,7 +361,9 @@ async function load(){     try{ await fetch('api/demo/start',{method:'POST'}); }catch(e){}     if(poll) clearInterval(poll); poll=setInterval(tick,700); tick();   };-  fetch('api/demo/state',{cache:'no-store'}).then(r=>r.json()).then(d=>{ if(d.running){ if(poll)clearInterval(poll); poll=setInterval(tick,700); tick(); } }).catch(function(){});+  // attach to a demo that is running (or starts) regardless of who launched it: a light 3s heartbeat+  // flips on the fast poller whenever a demo is live, so the transport bar always appears.+  setInterval(function(){ if(poll) return; fetch('api/demo/state',{cache:'no-store'}).then(r=>r.json()).then(d=>{ if(d.running){ poll=setInterval(tick,700); tick(); } }).catch(function(){}); }, 3000); })(); load(); setInterval(load,15000); </script>`;