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
NEW skill pup-taskbar-progress + install/package wiring for the taskbar progress-bar feature (v2.0.289)
3 files changed
+77−2
install.sh+2−1@@ -40,7 +40,8 @@ deploy_into() { install_skill pup-taskbar-states skills/pup-taskbar-states/SKILL.md install_skill pup-progress skills/pup-progress/SKILL.md install_skill pup-why-cft skills/pup-why-cft/SKILL.md- echo " -> $BASE (pup + 10 sub-skills)"+ install_skill pup-taskbar-progress skills/pup-taskbar-progress/SKILL.md+ echo " -> $BASE (pup + 11 sub-skills)" } echo "Installing adom-desktop-puppeteer-bridge skills:"
package.json+2−1@@ -40,7 +40,8 @@ "dockbar.json", "docs/img/dock-pup.svg", "hero-v9.png",- "skills/pup-why-cft/SKILL.md"+ "skills/pup-why-cft/SKILL.md",+ "skills/pup-taskbar-progress/SKILL.md" ], "scripts": { "install": "./install.sh",
skills/pup-taskbar-progress/SKILL.mdadded+73@@ -0,0 +1,73 @@+---+name: pup-taskbar-progress+user-invocable: true+description: "Parent skill: pup. How pup signals it is WORKING on a window — a DETERMINATE progress bar painted right on the window's Windows taskbar button, sized to how long that operation usually takes, INSTEAD of the old orange flash. pup keeps a running average of every operation's duration (persisted) and fills the bar over that estimate: the bar starts at the EARLIEST point of the operation and ends at the LATEST. Built-in cases: applying a window's taskbar icon (from open until the icon actually lands) and taking a screenshot; any operation can be wrapped. Controlled by the `taskbarActivity` setting (progress | flash | off, default progress). Read this to understand the taskbar bar you see, to change/disable it, or to wrap a new operation with a bar. Trigger words: taskbar progress bar, progress bar on taskbar, taskbar activity, replace the flash, orange flash, taskbarActivity, verb timing, average duration, how long a screenshot takes, icon apply progress, progress instead of flash, pup progress bar, determinate progress."+---++# pup — the taskbar progress bar (activity signal)++When pup works on a window, it shows a **determinate progress bar on that window's Windows taskbar+button** — filling from 0 toward done over the time the operation usually takes — instead of the old+orange taskbar flash. This is the `taskbarActivity` setting, default **`progress`**.++## What you see, and why it is honest++- pup keeps a **running average of how long each operation takes** (per operation name, e.g.+ `icon-apply`, `screenshot`), persisted to `~/.adom/pup-verb-timing.json` so the averages survive+ restarts and sharpen over time (recent runs weighted).+- The bar **fills over that estimate**, but **caps at ~92% until the work actually finishes**, then+ jumps to 100% and clears — so it never claims done before it is. Start at the EARLIEST point of the+ operation, end at the LATEST.+- If an operation runs longer than its average, the bar holds near the top rather than lying; the+ next run's average absorbs the new timing.++## The two built-in bars++1. **Icon apply** — a window's taskbar icon is applied ASYNC (open → resolve the OS handle → stamp+ the AUMID → render the name tile → nudge the shell). The bar runs **from the moment the window+ opens until its icon actually lands**, sized to the average icon-apply time. This is the bar you+ see right after opening a window, while its name tile is being painted.+2. **Screenshot** — a bar for the length of a `pup_screenshot` capture, sized to the average+ screenshot time.++Any other operation can get one (see the dev note).++## The setting: `taskbarActivity`++`pup_configure {taskbarActivity: "progress" | "flash" | "off"}` (or the pup dashboard → gear →+**Taskbar activity signal**):++| value | behaviour |+|---|---|+| **`progress`** (default) | the determinate progress bar described above. Suppresses pup's automatic orange flash. |+| `flash` | the OLD orange taskbar highlight (`openFlash` on open, `autoFlash` on a mutating verb). No progress bar. |+| `off` | neither — pup signals activity on the taskbar in no way. |++Notes:+- **Windows only.** macOS/Linux have no taskbar, so the setting is stored but inert.+- A STOP of a leftover flash, and a human explicitly clicking "flash" in the dashboard, still work+ regardless of the setting — only pup's own *automatic* flashes are gated off in `progress`/`off`.+- Independent of `agentActivity` (the broader "an AI is driving this window" indeterminate strip);+ `taskbarActivity` governs the determinate, operation-sized bar and whether the flash is used.++## Talk to pup++- "use progress bars on the taskbar instead of the flash" → already the default (`taskbarActivity:+ progress`); if it was changed, `pup_configure {taskbarActivity:"progress"}`.+- "bring back the orange flash" → `pup_configure {taskbarActivity:"flash"}`.+- "stop showing anything on the taskbar when you work" → `pup_configure {taskbarActivity:"off"}`.++## Dev note — wrap a new operation with a bar++In `src/server.js`, wrap any awaited work so a determinate bar shows for its life, timed to the+running average of that op name:++```js+const result = await withTaskbarProgress(sessionId, 'my-op', () => doTheWork());+```++`withTaskbarProgress` no-ops unless the setting is `progress` (and on Windows, not `minimalTouch`).+It records the real duration to `recordTiming('my-op', ms)` so the estimate self-tunes. For a+multi-phase async flow whose end is not a single awaited promise (like icon-apply), use the+`startIconApplyProgress(sessionId)` / `markIconApplied(sessionId)` pattern: start the bar at the+earliest point, and call the mark when the flow's final step confirms.