all repos — sz-chrome-remote-extension @ 066f50b9cdb60ad3d4f61ba0598ac9683d8ae446

pi-chrome, patched to drive a signed-in browser on another host through a broker, with an MCP server

066f50b9
pi-chrome 0.11.1: chrome_tap (CDP touch), smoother trustedScroll, cdp auto-recover

- chrome_tap tool: real browser-trusted touchstart/touchend via
  Input.dispatchTouchEvent for sites that gate on TouchEvent (mobile-
  first PWAs, swipe carousels). Always uses CDP; banner appears.
- trustedScroll: per-step delta capped at ~80px, n=6..60 steps with a
  bell-shaped weight curve, 22-52ms sleep between events so IntersectionObserver and rAF samples get gradient updates (fixes
  intersection-visibility / smooth-scroll tests).
- cdp() wrapper auto-detects stale debugger sessions (tab nav,
  DevTools toggle, manual cancel) and re-attaches+retries once
  instead of throwing 'Debugger is not attached'. Fixes intermittent
  failures during automated test sweeps.
Tianren Dong tianrendong.dtr@gmail.com
Wed, 13 May 2026 01:48:36 -0400
07cf31df
pi-chrome 0.11.0: smart-auto trusted mode default + rename to Pi Chrome Connector

Trusted-input mode default flips from 'off' to 'auto':
- Synthetic events still run first for every chrome_* call.
- If a click produced no page change AND the target's label looks like a
  user-activation-gated affordance (play/copy/share/sign-in/etc), or the
  page just emitted NotAllowedError / 'transient activation required',
  the call is silently retried via chrome.debugger (CDP).
- Typing auto-retries when the input value didn't change at all
  (editor rejected synthetic input).
- Result carries autoRetried=true + autoRetryReason + syntheticAttempt
  so callers / agents see the upgrade happened.
- Yellow debugger banner now appears only for the retry, not every call.

Companion extension renamed 'Pi Existing Chrome Profile Bridge' →
'Pi Chrome Connector' (manifest, action title, SW client name, README,
slash-command notify strings). One-time chrome://extensions reload
needed to pick up the new name; auto-reload mechanism handles the rest.

/chrome-doctor explains the active mode and what smart-retry does.
/chrome-trusted picker shows 'auto (current)' first; on-mode now warned
as 'banner permanently visible'.
chrome_click / chrome_type tool descriptions explain auto-retry.
Tianren Dong tianrendong.dtr@gmail.com
Wed, 13 May 2026 01:43:33 -0400
6478feb0
pi-chrome 0.10.2: interactive /chrome-trusted picker

- No-arg /chrome-trusted now shows ui.select picker with current mode +
  tradeoff for each option (on/off/auto/status)
- First-time on transition asks ui.confirm with banner warning
- Permission missing emits a clear ui.notify with fix instructions
- Direct args (/chrome-trusted on|off|auto|status) still work
Tianren Dong tianrendong.dtr@gmail.com
Wed, 13 May 2026 01:38:41 -0400
6ddb6007
pi-chrome 0.10.1: chrome_key modifiers param for trusted chords (Cmd+V etc)
Tianren Dong tianrendong.dtr@gmail.com
Wed, 13 May 2026 01:29:51 -0400
6dd4b2b0
pi-chrome 0.10.0: trusted-input mode via chrome.debugger (CDP)

Add opt-in CDP path so chrome_* tools can dispatch browser-trusted input
(isTrusted=true, satisfies user-activation gates: clipboard, fullscreen,
file picker, autoplay). Default remains synthetic events; no behavior
change unless trusted mode is enabled.

Companion extension:
- new "debugger" permission in manifest (one-time re-approval prompt in
  chrome://extensions on update)
- attach/detach lifecycle per tab with idle-detach (15s) and listener
  for onDetach (incl. canceled_by_user)
- trustedClick / trustedHover / trustedType / trustedFill / trustedKey /
  trustedScroll / trustedDrag use Input.dispatchMouseEvent +
  Input.dispatchKeyEvent through chrome.debugger.sendCommand, reusing
  humanized timing, in-rect coord variance, pointer continuity, Shift
  chord for uppercase, per-key cadence
- trusted.mode / trusted.status bridge actions

Pi side:
- /chrome-trusted slash command (on / off / auto / status)
- trusted=true param on chrome_click, chrome_type, chrome_fill,
  chrome_key, chrome_hover, chrome_drag, chrome_scroll
- /chrome-doctor probes chrome.debugger availability and reports current
  trusted mode + attached tabs
- README documents trusted-input mode and tradeoffs
Tianren Dong tianrendong.dtr@gmail.com
Wed, 13 May 2026 01:23:54 -0400
33110e80
pi-chrome: humanize synthetic input + anti-automation test suite

Bump 0.8.0 → 0.9.1.

Companion extension (service_worker.js):
- humanise pointer paths: easing Bezier-ish interpolation w/ wobble, 12–42
  steps, 4–18 ms gaps; pointer position persisted across calls
- click point picked inside element rect, not dead center
- pointer events fill movementX/Y, screenX/Y, pressure (0.5 on down),
  pointerId, width/height, tilt, composed
- click sequence: humanMoveTo → pointerdown → focus → 45–140 ms hold →
  pointerup → mouseup → click
- per-character typing: keydown → keypress → beforeinput → value mutate
  (or execCommand for contenteditable) → input → keyup, with 25–95 ms
  hold + 35–140 ms inter-key; auto Shift chord for uppercase/symbols
- pressKeyInPage emits same cadence + handles printable insert / Backspace
- hoverPage: humanised path + 80–220 ms dwell
- dragPage: full HTML5 sequence (dragstart/drag/dragenter/dragover/
  dragleave/drop/dragend) with shared DataTransfer + pointer continuity
- new scrollPage: wheel events with front-loaded momentum-shaped deltas
- self-reload on version drift: SW reads x-pi-chrome-version header,
  reloads when older than pi-chrome

Pi side (index.ts):
- new chrome_scroll tool
- PI_CHROME_VERSION read from package.json (and re-read on every /next
  so future bumps take effect without pi restart)
- /chrome-doctor escalates version mismatch to top-line ✗ error and
  skips downstream capability probes when stale
- /next response carries x-pi-chrome-version header for SW self-heal

Test suite (test-suite/):
- 28 challenge pages each catching a different synthetic-event tell:
  isTrusted, webdriver/fingerprint, mouse entropy/timing/coords,
  pointer pressure/continuity, per-char cadence + framework invariants,
  user activation, honeypots, focus order, wheel scroll, drag+
  DataTransfer, contenteditable+Selection, paste/clipboard, native
  select, hover dwell, React valueTracker, keyboard modifiers, touch
  events, stack-trace fingerprint, viewport-edge clicks, mousemove
  rate, scroll momentum, IntersectionObserver visibility
- shared _lib.js exposes window.__verdict + writes localStorage so
  index.html dashboard aggregates results
- notes/bypass-ideas.md documents fixes still needed per challenge
Tianren Dong tianrendong.dtr@gmail.com
Wed, 13 May 2026 01:05:46 -0400
d78081aa
Update pi-packs installer and package names
Tianren Dong tianrendong.dtr@gmail.com
Tue, 12 May 2026 23:53:16 -0400
2206c554
Track pi-chrome package source
Tianren Dong tianrendong.dtr@gmail.com
Fri, 08 May 2026 14:15:53 -0400