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
Update 11 file(s)
2 files changed
+16−5
SKILL.md+10−5@@ -50,11 +50,16 @@ assistant in the world**. The engine of that goal is the shared durable **adom-y - **Surf as adom-you by default.** Every pup window on adom-you contributes every login it makes to the shared credential store. The more windows surf as adom-you, the better the username/password database gets, and over time pup can automatically sign in to every website it has ever seen.-- **Isolation is the exception, not a style choice.** Pass `isolated:true` (or a separate profile)- ONLY when the task genuinely needs a clean jar: testing logged-out views, acting as a different- user, untrusted pages. An isolated window's logins are thrown away: they build nothing.-- The dashboard shows a "surfing as adom-you" chip per window and an adom-you count in the header:- if your window says "NOT adom-you", have a reason.+- **Isolation is the exception, not a style choice — and it is REASON-GATED (v2.0.101).**+ `isolated:true` without an `isolationReason` (min 10 chars: why this window must NOT be+ adom-you) is refused with `isolation_reason_required`. Legit reasons: testing logged-out+ views, acting as a different user, untrusted pages. `webSecurity:false` and+ `wikiView:"public"` carry their own built-in reason. An isolated window's logins are thrown+ away: they build nothing.+- A non-adom-you window shows the ANONYMOUS identity tile in the toolbar (the pup four-dot mark+ on a dark disc, where signed-in windows show the user's avatar) so a not-you window is visible+ at a glance. The dashboard additionally shows a "surfing as adom-you" chip per window: if your+ window says "NOT adom-you", you stated a reason to get it. ### ALWAYS say SAVE (John's rule)
dev-skills/pup-taskbar-identity/ralph_floaty.sh+6@@ -4,6 +4,12 @@ # instant overlay, capture -> toast, drawings fade. TGT=AdomLapper; ROUNDS=${1:-3}; fail=0 ab(){ adom-bridge-cli --target $TGT "$@" 2>&1; }+# v2.0.95: the floaty pencil is OFF by default (John: the corner zone fights app-header buttons).+# The ralph enables it for the run and restores the user's prior value afterwards.+setset(){ P=$(K="$1" V="$2" python3 -c "import json,os;body=json.dumps({'action':'set-setting','key':os.environ['K'],'value':os.environ['V']});print(json.dumps({'command':'curl.exe -s -X POST http://127.0.0.1:64230/dashboard/action -H \"Content-Type: application/json\" -d \"'+body.replace('\"','\\\\\"')+'\"','reason':'floaty ralph toggles the pencil setting for the test'}))"); ab shell_execute "$P" --ai-thread "floaty-ralph" >/dev/null 2>&1; }+prior=$(ab shell_execute '{"command":"curl.exe -s http://127.0.0.1:64230/health","reason":"floaty ralph reads the current pencil setting to restore it after"}' --ai-thread "floaty-ralph" 2>/dev/null | python3 -c "import sys,json;d=json.load(sys.stdin);h=json.loads(d.get('stdout') or '{}');print('on' if (h.get('toolbar') or {}).get('floaty') else 'off')" 2>/dev/null)+setset tbFloatyPencil on+trap '[ "$prior" = "off" ] && setset tbFloatyPencil off' EXIT 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 # settle: URL stable across 2 polls 3s apart AND readyState complete (auto-login nav finished)