← Commit history

NEW skill pup-taskbar-progress + install/package wiring for the taskbar progress-bar feature (v2.0.289)

John Lauer ·38110df544 ·2mo ago ·parent aba8020
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.