fix(browser): composite background agent tabs, actionable refusals, timed pointer paths - #8291
Conversation
A tab view that is in no window has no compositor surface, so CDP mouse input on it never acknowledges and screenshots never capture. The agent's tab was left that way whenever the user viewed another tab or had not opened the browser panel: clicks failed or stalled five seconds and screenshots failed. Each chat's agent tab is now parked invisibly in the main window, adopted in place when the panel shows it, and released on every tab teardown path.
A click refused because an overlay covers the target now lists the overlay's own snapshot controls, so the agent dismisses it and retries the same id without another snapshot. A click that lands on a nested control names that control's id. Only real overlays (dialogs, modals, fixed or sticky layers) list controls.
…paths browser_drag takes optional via points and a durationMs, and browser_hover can target a viewport point with the same route, moving with no button pressed. Pages that react to pointer speed or position (sliders, physics, canvas hover, cursor-following games) can now be driven the way Claude computer use and OpenAI's CUA allow. A plain drag keeps its exact previous pace; batches refuse timed paths so they cannot outlast the batch watchdog.
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
|
There was a problem hiding this comment.
All reported issues were addressed across 11 files
Tip: instead of fixing issues one by one fix them all with cubic
Re-trigger cubic
|
…s tracked across scopes - Timed drags and hover routes stop as soon as their tool call is cancelled; a drag still releases the button through its existing cleanup. - A coordinate hover refuses durationMs without via points instead of silently moving straight to the target. - A scope migration carries the chat's agent tab registration with it, so the migrated chat's old agent tab is released when it switches tabs. - Overlay controls are found through shadow roots and with any tag casing.
|
@cubic-dev-ai review this PR |
@waleedlatif1 I have started the AI code review. It will take a few minutes to complete. |
There was a problem hiding this comment.
All reported issues were addressed across 11 files
Tip: instead of fixing issues one by one fix them all with cubic
Re-trigger cubic
…tabs in the main window - An already-aborted drag sends no input, and an abort during the settle hold takes the cancellation cleanup instead of dropping. - A coordinate hover re-checks the active tab right before it moves. - Parking an agent tab hands keyboard focus back to whichever of the Sim renderer or the visible page held it. - An agent tab detached from a secondary window is parked in the main window, which outlives it. - A framed target covered by a parent-page overlay lists that overlay's controls.
|
@cubic-dev-ai review this PR |
@waleedlatif1 I have started the AI code review. It will take a few minutes to complete. |
There was a problem hiding this comment.
All reported issues were addressed across 11 files
Reply with feedback, questions, or to request a fix.
Fix all with cubic | Re-trigger cubic
The coordinate hover captures the navigation epoch before its page probes and rejects a cross-document navigation before moving the pointer, as browser_click_at and browser_drag do. The overlay helper skips the empty registry slots earlier snapshots leave.
|
@cubic-dev-ai review this PR |
@waleedlatif1 I have started the AI code review. It will take a few minutes to complete. |
Summary
browser_dragtakes optionalviapoints anddurationMs, andbrowser_hovercan target a viewport point along the same route with no button pressed, for sliders, physics, canvas hover, and cursor-following pages. A plain drag keeps its exact previous pace; batches refuse timed pathsType of Change
Testing
check:audits, docs manifest passCompanion: simstudioai/mothership#528
Checklist