v2.35.0
What's new
type() anti-detect (task 4109)
Browser.type(text, selector=...) probabilistically routes long text through the real system-clipboard paste path when BOTH gates pass:
len(text) > TYPE_PASTE_MIN_CHARS(500)random() < TYPE_PASTE_PROBABILITY(0.625)
Otherwise falls through to per-char Ceki.typeText. A paste event with inputType=insertFromPaste looks like a human pasting — not a perfect per-key bot rhythm. Constants at module scope; paste() and the branch share a private _hotkey_paste_into() helper.
Also since v2.26.0
copy()/paste(selector, text)via real OS clipboard (synthetic Ctrl+C/Ctrl+V) — tasks 4091, 4098.call-humanCLI + SDK wrapper — task 4019.- Contract MCP tools:
my_jobs→my_events,call-human,progresscommand (status correction + comment, description untouched) — tasks 3001, 4019, 2527. ceki contract create --reviewer/--qa/--participant→users[](typeshort, role_id) — tasks 2465, 2494.
Full diff: v2.26.0...v2.35.0