← Commit history

Publish 2.0.383

John Lauer ·864034d8b1 ·1mo ago ·parent a706d56
2 files changed +19−1
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.382",+  "version": "2.0.383",   "tags": [     "skills",     "pup",
skills/pup-progress/SKILL.md+18
@@ -64,3 +64,21 @@ pup_progress {mode:"off"}          # the crawl is done — never leave a stale b    several windows, give each its own progress only if each genuinely has its own long task. 4. Progress is Windows-only and skipped in minimal-touch mode; calling it elsewhere is a safe    no-op, so you never need to platform-check first.++## Measured progress on pup's own slow verbs (v2.0.383, Bridge SDK #59/#64)++pup reports its own slow work in the SDK's measured-progress shape, so a bar can be drawn from it:++- **Terminal frame**: `pup_open_window` returns `progress` with `phase` (`cold_start` when a browser+  process was spawned, `open_window` when a window joined a running browser), `percent: 100`,+  `elapsedSec` (actual), `estimatedSec` (the median of THIS machine's rolling history for that+  start kind), `confidence` (`measured` once 3+ samples exist, else `estimated`) and `startKind`.+- **Live rows**: `pup_readiness` (the fast status verb, `statusVerb` everywhere) returns `active[]`,+  one row per in-flight phase: opens in flight, the Chrome-for-Testing download (percent + ETA from+  the real byte rate), a consent toast waiting on the user (`blockedBy`), or a browser dialog+  (`blockedBy`). Empty `active[]` means idle. Poll it once a second while a slow verb runs.+- **Window etiquette** (SDK #63): every open/raise/lower response carries+  `windowEtiquette: "background" | "foreground"` (the key to branch on; `placement` stays as the+  legacy alias), and a bare `foreground:true` is refused with `errorCode: foreground_reason_required`.+- `pup_describe` exposes `progressContract` (status verb, slow verbs, blockedBy phases) and the+  timing history (`timings`) the estimates come from.