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
dev-skills/pup-taskbar-identity/ralph_floaty.sh+12−7@@ -1,18 +1,23 @@ #!/bin/bash-# Ralph for the floaty pencil: pup_floaty_click (the test seam) -> flag -> sweep -> annotate-# overlay on that tab, then Esc exits. N rounds; asserts the full production chain each time.+# Floaty + speed ralph (v2.0.73): click -> INSTANT overlay (precached, no sweep), quick capture ->+# flash + toast within ~2s (700ms harvest + screenshot), drawings fade out after. TGT=AdomLapper; ROUNDS=${1:-3}; fail=0 ab(){ adom-bridge-cli --target $TGT "$@" 2>&1; } for r in $(seq 1 $ROUNDS); do ab pup_open_window '{"sessionId":"rf","url":"https://wiki.adom.inc/adom/pup-bridge","foreground":false}' --ai-thread "floaty-ralph" >/dev/null 2>&1 sleep 9- ck=$(ab pup_floaty_click '{"sessionId":"rf"}' --ai-thread "floaty-ralph" | python3 -c "import sys,json;d=json.load(sys.stdin);print(d.get('success'))" 2>/dev/null)- sleep 8 # sweep cadence+ ab pup_floaty_click '{"sessionId":"rf"}' --ai-thread "floaty-ralph" >/dev/null 2>&1+ sleep 1 # INSTANT now: client-side start ov=$(ab pup_eval '{"sessionId":"rf","expr":"document.getElementById(\"__pup_annotate\") ? \"yes\" : \"no\""}' --ai-thread "floaty-ralph" | python3 -c "import sys,json;print(json.load(sys.stdin).get('result'))" 2>/dev/null)- esc=$(ab pup_eval '{"sessionId":"rf","expr":"(() => { window.dispatchEvent(new KeyboardEvent(\"keydown\",{key:\"Escape\"})); return document.getElementById(\"__pup_annotate\") ? \"stuck\" : \"exited\"; })()"}' --ai-thread "floaty-ralph" | python3 -c "import sys,json;print(json.load(sys.stdin).get('result'))" 2>/dev/null)+ # quick capture: emit a mouse-up result, expect toast within ~2.5s+ ab pup_eval '{"sessionId":"rf","expr":"window.__pupAnnotateResult = { done: true, quick: true, shapes: 1, seq: 1, ts: Date.now(), bbox: { x: 80, y: 80, w: 260, h: 170 } }; \"emit\""}' --ai-thread "floaty-ralph" >/dev/null 2>&1+ sleep 2.5+ tst=$(ab pup_eval '{"sessionId":"rf","expr":"document.getElementById(\"__pup_ann_toast\") ? \"toast\" : \"no-toast\""}' --ai-thread "floaty-ralph" | python3 -c "import sys,json;print(json.load(sys.stdin).get('result'))" 2>/dev/null)+ sleep 3.5+ fade=$(ab pup_eval '{"sessionId":"rf","expr":"document.getElementById(\"__pup_annotate\") ? \"still-there\" : \"faded\""}' --ai-thread "floaty-ralph" | python3 -c "import sys,json;print(json.load(sys.stdin).get('result'))" 2>/dev/null) ab pup_close_window '{"sessionId":"rf"}' --ai-thread "floaty-ralph" >/dev/null 2>&1 sleep 3- st="r$r click=$ck overlay=$ov esc=$esc"- if [ "$ck" = "True" ] && [ "$ov" = "yes" ] && [ "$esc" = "exited" ]; then echo " PASS $st"; else echo " FAIL $st"; fail=$((fail+1)); fi+ st="r$r overlay-instant=$ov toast=$tst fade=$fade"+ if [ "$ov" = "yes" ] && [ "$tst" = "toast" ] && [ "$fade" = "faded" ]; then echo " PASS $st"; else echo " FAIL $st"; fail=$((fail+1)); fi done echo "FLOATY RALPH DONE | FAILURES: $fail"