← Commit history

Publish 2.0.327

John Lauer ·198b8225f7 ·1mo ago ·parent 64894c8
3 files changed +9−10
package.json+1−1
@@ -1,6 +1,6 @@ {   "slug": "pup-bridge",-  "version": "2.0.326",+  "version": "2.0.327",   "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.326",+  "version": "2.0.327",   "tags": [     "skills",     "pup",
tools/pup-dashboard+7−8
@@ -73,14 +73,13 @@ function censusThread(j) { // tagged dock:pup-bridge, and SUBMIT the phrase. New threads ONLY; never resume/target an existing // tid. On any failure the page falls back to copying, so the user is never stranded. async function sendToNewThread(phrase) {-  if (!SAY.includes(phrase)) return { ok: false, why: 'unknown phrase' };-  const mk = await hpost('/ai-threads/new', { name: 'Pup - say it', tags: ['dock:pup-bridge'] });-  if (!(mk.status >= 200 && mk.status < 300)) return { ok: false, why: 'Could not reach the AI panel (' + (mk.status || mk.error) + ')' };-  const sid = mk.json && (mk.json.sid || mk.json.id);-  if (!sid) return { ok: false, why: 'AI panel did not return a thread id' };-  const run = await hpost('/ai-threads/run-prompt', { sid, prompt: phrase, submit: true });-  if (run.status >= 200 && run.status < 300 && !(run.json && run.json.ok === false)) return { ok: true, sid };-  return { ok: false, why: 'Thread opened but the prompt was refused (' + (run.status || run.error) + ')' };+  // EMERGENCY PARK (dock thread, 2026-08-24): the fleet Send-to-AI success path CRASHED the ah dev+  // shell on ConfRoomROG within ~30s of the run-prompt call. Until the main ah build thread+  // certifies the /ai-threads/new + run-prompt flow, pup's backend does NOT touch the control API at+  // all. It answers parked; the page's failure path (error toast + copy fallback) carries the user,+  // so Send to AI still copies the phrase. Un-park when the broadcast says the flow is certified.+  if (!SAY.includes(phrase)) return { ok: false, parked: true, why: 'unknown phrase' };+  return { ok: false, parked: true, why: 'Send to AI is temporarily parked fleet-wide (a control-API crash is under triage); the phrase was copied to your clipboard instead.' }; }  let TOOL_VERSION = '0';