← Commit history

Publish 2.0.544

John Lauer ·6e0b0d9479 ·1mo ago ·parent bb697fa
2 files changed +4−4
package.json+2−2
@@ -1,6 +1,6 @@ {   "slug": "pup-bridge",-  "version": "2.0.543",+  "version": "2.0.544",   "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": [@@ -147,5 +147,5 @@       "prompt": "Download the puppeteer-bridge zip from the wiki and walk me through server.js"     }   ],-  "changelog": "The extension lane presents the user's INSTALLED Chrome, on the wire and in JS. Measured via nbe on AdomLapper: the user's Chrome is 152 and sends Chromium;v=152, Not?A_Brand;v=24, Google Chrome;v=152, while Chrome for Testing 148 sent Not/A)Brand;v=99, Chromium;v=148 and analog.com's edge denied it as real Chrome passed on the same IP over the same protocol. The lane now rewrites User-Agent, Sec-CH-UA and Sec-CH-UA-Full-Version-List to the installed version with real Chrome's brand order and GREASE (consumerBrandsHeader pins the exact header), and a document_start MAIN-world shim (baked at staging) mirrors navigator.userAgent and userAgentData. The CDP lane's metadata uses the same order and GREASE, so both lanes match the user's Chrome."+  "changelog": "JS identity shim that actually holds: navigator.userAgentData is a NEW object on every access in Chrome 148 (measured: navigator.userAgentData === navigator.userAgentData is false), so a property defined on one instance was lost and userAgentData.brands still read Not/A)Brand/99 Chromium/148 while the wire said 152. The shim now installs a Navigator.prototype.userAgentData getter that wraps the real object in a Proxy (brands, fullVersionList, getHighEntropyValues, toJSON), and userAgent/appVersion on the prototype too. Plus laneStockFlags (default off): an experiment lever that launches the lane with only the firewall guards (no QUIC, no Cast/mDNS listener) and everything else stock, so the TLS ClientHello is real Chrome's, for edges that still deny after every header matches (analog.com)." }
page.json+2−2
@@ -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.543",+  "version": "2.0.544",   "tags": [     "skills",     "pup",@@ -167,5 +167,5 @@       "pup-bridge verbs are invoked through the adom-bridge CLI, not through a binary this package installs, so prefix rules cannot reach them."     ]   },-  "changelog": "The extension lane presents the user's INSTALLED Chrome, on the wire and in JS. Measured via nbe on AdomLapper: the user's Chrome is 152 and sends Chromium;v=152, Not?A_Brand;v=24, Google Chrome;v=152, while Chrome for Testing 148 sent Not/A)Brand;v=99, Chromium;v=148 and analog.com's edge denied it as real Chrome passed on the same IP over the same protocol. The lane now rewrites User-Agent, Sec-CH-UA and Sec-CH-UA-Full-Version-List to the installed version with real Chrome's brand order and GREASE (consumerBrandsHeader pins the exact header), and a document_start MAIN-world shim (baked at staging) mirrors navigator.userAgent and userAgentData. The CDP lane's metadata uses the same order and GREASE, so both lanes match the user's Chrome."+  "changelog": "JS identity shim that actually holds: navigator.userAgentData is a NEW object on every access in Chrome 148 (measured: navigator.userAgentData === navigator.userAgentData is false), so a property defined on one instance was lost and userAgentData.brands still read Not/A)Brand/99 Chromium/148 while the wire said 152. The shim now installs a Navigator.prototype.userAgentData getter that wraps the real object in a Proxy (brands, fullVersionList, getHighEntropyValues, toJSON), and userAgent/appVersion on the prototype too. Plus laneStockFlags (default off): an experiment lever that launches the lane with only the firewall guards (no QUIC, no Cast/mDNS listener) and everything else stock, so the TLS ClientHello is real Chrome's, for edges that still deny after every header matches (analog.com)." }\ No newline at end of file