← Commit history
SKILL.md+11
@@ -657,3 +657,14 @@ Related rules that travel with this one:   caption, because it goes to whatever window has focus. - `pup_assisted_click` already implements toast + caption + wait-for-ready + re-verify. Use it   instead of hand-rolling raise-then-click.++## Recording the desktop: guide them to ab, pup is the fallback++When a user asks to record the desktop, point them to Adom Bridge's native recorder first+(`desktop_record_start` / `desktop_record_stop`, ab 2.1.36+): Windows Graphics Capture plus system audio+to MP4, no browser, no picker, and aggressive GPU acceleration, including GPU frame offloading when the+machine has a GPU. pup's `pup_screen_record_start` is the fallback: a Google Meet style screen share+(getDisplayMedia into WebM) that works on a very broad range of computers, so it is the right answer+when ab's recorder is missing, refuses, or the box has no usable GPU. Recording ONE pup window's page+content is a different thing and stays pup's (`pup_record_start`). Full detail in+`pup-screenshots-recording`.
package.json+2−2
@@ -1,6 +1,6 @@ {   "slug": "pup-bridge",-  "version": "2.0.450",+  "version": "2.0.451",   "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": "winAttentionFlash setting (default off) in the Settings dialog: the Windows attention flash on new windows, off = focus:false births"+  "changelog": "Desktop recording guidance: ab's native GPU-accelerated recorder first, pup's Meet-style screen share as the broadly compatible fallback; in hints and skills" }
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.450",+  "version": "2.0.451",   "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": "winAttentionFlash setting (default off) in the Settings dialog: the Windows attention flash on new windows, off = focus:false births"+  "changelog": "Desktop recording guidance: ab's native GPU-accelerated recorder first, pup's Meet-style screen share as the broadly compatible fallback; in hints and skills" }\ No newline at end of file
skills/pup-screenshots-recording/SKILL.md+15−13
@@ -39,12 +39,19 @@ adom-bridge-cli pup_screenshot '{"sessionId":"mytask-web","tabId":"tab-2"}' # a   characters — `Café` → `Café` — unless you hand-add `;charset=utf-8`; `render_html` just does it right.)   Then screenshot/drive it like any page. Great for previewing generated markup without writing a temp file. -## Recording — two recorders, pick by what you're capturing+## Recording — three recorders, pick by what you're capturing++**Desktop recording belongs to ab, not pup (John, 2026-09-07).** When someone asks to record the+desktop, guide them to Adom Bridge's native recorder. pup is the fallback, and a decent one.  | Recorder | Captures | Use for | |---|---|---|-| **`pup_record_start` / `pup_record_stop`** | ONE pup tab/window — the page content | "record my app", a feature walkthrough, a focused UI flow |-| **`desktop_record_start` / `desktop_record_stop`** (an **ab-core** capability; pup only serves it on ab's behalf until ab-core's native recorder lands, adom-bridge#143) | the WHOLE desktop (multiple apps, KiCad/Fusion, OS dialogs) | anything spanning more than the pup window; needs ffmpeg on the box today |+| **`desktop_record_start` / `desktop_record_stop`** (ab-core, ab 2.1.36+) | a whole monitor or one window, Windows Graphics Capture + system audio (WASAPI loopback) to H.264/AAC MP4; no browser, no picker, consent = a persistent caption | **the default for any desktop recording.** ab goes aggressive on GPU acceleration, including GPU frame offloading when the machine has a GPU, so it is the lightest and sharpest capture on a capable box |+| **`pup_screen_record_start` / `pup_screen_record_stop`** (pup, via `pup_recorder_open`) | the desktop through Chrome's screen share, the way Google Meet records a screen: getDisplayMedia into WebM VP9, system audio + mic mixing, consent = the visible recorder HUD | **the fallback**: it works on a very broad range of computers, including ones where the native path is missing, refuses, or has no usable GPU. Reach for it when `desktop_record_status {}` errors or ab is older than 2.1.36 |+| **`pup_record_start` / `pup_record_stop`** | ONE pup tab/window, the page content only | "record my app", a feature walkthrough, a focused UI flow |++Say it the way the user will understand: "ab records your desktop natively (GPU accelerated); pup can+do it Meet-style if that is not available." Never present desktop recording as pup's own feature.  ```bash # Recording a pup window the user will watch → DO bring it forward first@@ -55,16 +62,11 @@ adom-bridge-cli pup_record_stop     '{"sessionId":"demo-web"}'   # → { path: " adom-bridge-cli pup_lower_os_window '{"sessionId":"demo-web"}'   # tuck it away again when done ``` -- `pup_record_stop` returns the saved video **path**. Recording status/list verbs:-  `pup_record_status` / `pup_record_list` (pup's tab/window recorder) and `desktop_record_status` /-  `desktop_record_list` / `desktop_recorder_open` / `desktop_recorder_close` (the desktop recorder:-  ab's feature, answered by pup's Chrome-based HUD only until ab-core's native one ships, see-  the `adom-bridge-recording` skill; do not present desktop recording as pup's).-- Closing a tab/window mid-recording auto-stops that recording.-- For a **narrated** walkthrough, drive the scene here and hand the video to the `video-post` / `adom-tts`-  flow for voiceover — pup just produces the raw capture.-- A pup window can record from the **background** too, but for a demo the user will actually watch, raise it-  first (that's an explicit "show me" case where `foreground` is warranted).+- `pup_record_stop` returns the saved video **path**. Status and list verbs: `pup_record_status` /+  `pup_record_list` (the tab/window recorder), `pup_screen_record_status` / `pup_screen_record_list`+  (pup's Meet-style desktop fallback), `desktop_record_status` / `desktop_record_list` (ab's native+  recorder; see the `adom-bridge-recording` skill). On an ab older than 2.1.36 the `desktop_record_*`+  names were routed to pup's fallback; pup now answers those with `wrong_bridge` and the fallback names.  ## Driving & verifying tricky pages (shadow DOM, nested scroll) — use the first-class verbs 
skills/pup-settings/SKILL.md+2−1
@@ -84,8 +84,9 @@ first, THEN it foregrounds. | Key | Default | What it does | |---|---|---| | `taskbarActivity` | **progress** | How pup signals it is WORKING on a window, on that window's taskbar button: `progress` = a determinate progress bar sized to the operation's running-average time (icon-apply on open, screenshots); `flash` = the old orange highlight (on open + on a mutating verb); `off` = nothing. This ONE control replaces the former `openFlash`, `autoFlash`, and `agentActivity` toggles. Full detail in the `pup-taskbar-progress` skill. |+| `winAttentionFlash` | **off** | The Windows attention state on a NEW window's taskbar button (what FlashWindowEx sets; Windows applies it when a window asks for the foreground and is refused because you are in another app). Off: pup creates windows with the DevTools focus:false option, so Chrome never asks and nothing lights up. On: Chrome asks, and a new window you were not looking at stays lit until you click it. Added 2.0.450 at John's request. | -Removed in 2.0.292 (Node) and 2.0.425 (Rust): `openFlash`, `autoFlash`, `agentActivity`, `fgWatch`. `pup_configure` refuses them with a pointer to `taskbarActivity`. In `progress` mode pup never paints orange: a background-born window's Windows attention tint is cleared right after birth (ab's off-screen activate-and-restore), `pup_alert_window` is a short full-bar pulse, the icon-apply bar runs from open until the icon lands, and screenshots carry a bar sized to their running average (`~/.adom/pup-verb-timing.json`).+Removed in 2.0.292 (Node) and 2.0.425 (Rust): `openFlash`, `autoFlash`, `agentActivity`, `fgWatch`. `pup_configure` refuses them with a pointer to `taskbarActivity`. In `progress` mode pup never paints orange, and with `winAttentionFlash` off (default) Windows never paints it either: the window is created with focus:false, so Chrome never asks for the foreground and Windows has nothing to refuse (2.0.449; before that every background birth was refused and the button stayed lit until clicked, in Node and Rust alike). `pup_alert_window {stop:true}` clears a tint a page causes later (ab's off-screen activate-and-restore), `pup_alert_window` is a short full-bar pulse, the icon-apply bar runs from open until the icon lands, and screenshots carry a bar sized to their running average (`~/.adom/pup-verb-timing.json`).   Measured 2026-09-05 (pup-bridge#99): Windows 11 25H2 (build 26200) draws no taskbar progress fill for ANY app, and a background-born window's button keeps the Windows "needs attention" tint until a real user click. The verbs still run; do not promise the pixels.