app
Pup - the AI's own browser
Public Made by Adomby adom
pup gives your AI a real browser on your desktop that it drives completely, in the background, signed in as you: windows that never jump in front of your work, one shared profile that learns your logins, and every window labeled on the taskbar with its AI thread's name.
← Commit history
plan: correct the desktop recorder row (pup owns the HUD recorder ab documents; ask ab for a native screen recorder)
1 file changed
+4−3
docs/PLAN-rust-port.md+4−3@@ -84,7 +84,7 @@ or npm dependency today; right column is what replaces it. | Native clicks, hover, UI automation (`rawTrustedClick`, `pup_assisted_click`) | `desktop_click`, `desktop_hover`, `desktop_ui_click`, `desktop_ui_watch`, `desktop_ui_events` | Already delegated. | | User idle (`osIdleMs`) | `desktop_user_idle_ms` | Already delegated. | | Toasts, captions, consent buttons | `notify_user`, `notify_dismiss`, `notify_response`, `desktop_caption` | Already delegated. |-| Desktop recording verbs pup re-exports: `desktop_recorder_open/close`, `desktop_record_start/stop/status/list`, `detectFFmpeg`, `remuxWebmAddDuration` | ab's own `desktop_record_window_start`, `desktop_record_screen_start` family | **Dropped from pup.** pup keeps only tab recording (CDP screencast), which ab cannot do. |+| The consent-gated desktop recorder: `desktop_recorder_open/close`, `desktop_record_start/stop/status/list`, `recorder.html`, `detectFFmpeg`, `remuxWebmAddDuration` | **Ask ab for `desktop_record_screen_start` with the consent HUD**, next to its native `desktop_record_window_start` (WGC, mp4, no ffmpeg). pup keeps answering the old verbs until ab ships it, then drops them. | Not a copy of ab code: pup inherited this from ab's originally bundled puppeteer bridge, and ab's recording skill still documents it as ab's feature while pup's verb prefix answers it (verified on winvm 2026-09-05). It captures the screen through a Chrome window (`getDisplayMedia`, MediaRecorder, VP9 webm) and needs ffmpeg on the box to write the duration header, a first-run dependency new users do not have. | | Clipboard image + text write (`copyCaptureToClipboard`, PowerShell STA helper) | **Ask ab for `clipboard_set {image, text}`** | Until then it lives in `pup-host-win`. | | Hydrogen API calls (`hydrogenGet/Post`) | `hd_api` | Already delegated for one route; the rest follow. | | Version probe of ab (`probeAdVersion`) | `bridge_info` | Already delegated. |@@ -97,11 +97,12 @@ Net effect: after the port the only OS-specific code pup owns is `pup-host-win` and clipboard until ab takes them, plus HWND-from-pid helpers) and it is a few hundred lines, the size of fusion's `os-win`. -**Four ab issues to file before Phase 1 starts** (so they can land in parallel):+**Five ab issues to file before Phase 1 starts** (so they can land in parallel): 1. `desktop_send_to_bottom {hwnd}` (SetWindowPos HWND_BOTTOM | SWP_NOACTIVATE), or a `zorder:"bottom"` option on `desktop_set_window_state`. 2. `clipboard_set {image?: path|b64, text?}` multi-format write. 3. `desktop_register_app_identity` leaves `IconResource` NULL in HKCU (measured), so callers write it themselves. 4. `desktop_list_windows` rows should carry the stamped `appId`, so callers do not PowerShell `SHGetPropertyStoreForWindow`.+5. `desktop_record_screen_start/stop` with the consent HUD, natively (WGC, mp4), so the recorder ab's own skill describes stops living in pup's Chrome window and stops needing ffmpeg. Plus one question: does `prewarm.assets: ["chrome-for-testing"]` actually download CfT today? ## 4. The crate map@@ -195,7 +196,7 @@ equivalents. Kyle's mac has a Dock; ab's mac side decides what the Dock shows. | 13040–14950 DASHBOARD_HTML (inline JS app) | `pup-dashboard/assets/dashboard.html` verbatim | 1,900 | | 14950–20080 the 85 verb cases | `pup-verbs`, one module per family | 5,100 | | 20080–21080 HTTP server, routes, OPTIONS, proxy | `adom-pup-bridge` main + `pup-dashboard` | 1,000 |-| 21080–21940 ffmpeg, recorder window, desktop and tab recording | `pup-record` (tab only); desktop recording deleted in favour of ab | 860 |+| 21080–21940 ffmpeg, recorder window, desktop and tab recording | `pup-record`: tab recording for good, the HUD screen recorder until ab ask 5 ships | 860 | | `chrome.js` | `pup-browser` | 1,067 | | `credential_vault.js`, `card_vault.js` | `pup-vault` | 621 | | `win32.js` | `pup-host-win` | 180 |